﻿

jQuery.preloadImages = function() {
    for (var i = 0; i < arguments.length; i++) {
        jQuery("<img>").attr("src", arguments[i]);
    }
}

jQuery.loadImageWLink = function(bigindex, control, source, link) {
    var control = jQuery(control);
    var images = source.split("!brk!");
    var lnks = link.split("!brk!");

    var li = control.find("li");
    for (var i = 0; i < images.length - 1; i++) {
        var vhtml = "";
        vhtml += "<a href=\"" + lnks[i] + "\">";
        vhtml += images[i];
        vhtml += "</a>";
        li.eq(i).html(vhtml);
        li.eq(i).attr("id", bigindex + "ad0" + (i + 1));
        li.eq(i).attr("class", "");
    }
    jQuery("#accordion ul.picBlock li img").fadeTo("fast", 0.7);
}

jQuery.loadImages = function(control, source) {
    var mCtrls = jQuery(control).find("img");
    if (mCtrls.length <= 0) return;
    var images = source.split("!brk!");
    for (var i = 0; i < mCtrls.length; i++) {
        mCtrls.eq(i).attr("src", images[i]);
    }
}

//this function becomes unnecessary after the image carousel is removed from home page.
jQuery.loadImages2 = function(control, source) {
    var mCtrls = jQuery(control).find("div.img");
    if (mCtrls.length <= 0) return;
    var images = source.split("!brk!");
    for (var i = 0; i < mCtrls.length; i++) {
        mCtrls.eq(i).html(images[i]);
        //mCtrls.eq(i).attr("src", images[i]);
    }
}


function getLeaf(url) {
    //alert(url);
    var first = url.indexOf("/");
    var last = url.lastIndexOf("/");
    if (first == 0) {
        if (last == url.length - 1) {
            return url;
        }
        else {
            return url.substring(last);
        }
    }
    if (last == url.length - 1) {
        first = url.indexOf("/", 10);
        return url.substring(first);
    }
    else {
        return url.substring(last);
    }
}

function disableBtn(control) {
    var src = control.attr("src");
    if (src.lastIndexOf("disable") < 0)
        control.attr("src", src.replace(".gif", "-disabled.gif"));
}

function enableBtn(control) {
    var src = control.attr("src");
    if (src.lastIndexOf("disable") >= 0)
        control.attr("src", src.replace("-disabled.gif", ".gif"));
}


var minPagingPosition = -48;

//set up carousel page indicator. returns # of pages
function setUpPaging(control, itemsPerPage, itemWidth) {
    var children = control.find("li");
    page = control.parent().find("span.paging");
    if (page != null) {
        //	alert(control.attr("id") + ", " + itemWidth);
        page.css("width", itemWidth * Math.ceil(children.length / itemsPerPage) + "px");
        return Math.ceil(children.length / itemsPerPage);
    }
    return -1;
}


function paging(control, next, currentP, maxP, itemWidth, circular) {
    //alert( currentP + ", " + maxP + ", " + itemWidth);

    //stop if reach the end
    if (!circular && next && currentP == maxP)
        return maxP;
    if (!circular && !next && currentP <= 1) return 1;
    //find paging position	
    var param = "background-position-x";
    if (control == null || control.html() == null) return -1;
    var length = control.css("width");
    var bgX = control.css(param);

    if (bgX == 'undefined' || bgX == null || bgX == "") {
        param = "background-position";
        bgX = control.css(param).split(" ")[0];
    }
    var position = Number(bgX.replace("px", ""));

    var init = (0 - itemWidth * Math.max(maxP - 1, 4));

    //if control circulates, and it reaches the end, circulate!
    if (circular && next && currentP == maxP) {
        control.css(param, init + "px");
        return 1;
    }
    //if control circulates, and it reaches the beginning, circulate!
    if (circular && !next && currentP == 1) {
        control.css(param, (init + (itemWidth * (maxP - 1))) + "px");
        return maxP;
    }
    //regular case paging
    if (next) {
        control.css(param, position + itemWidth + "px");
        return (currentP + 1) % (maxP + 1);
    }
    else {
        control.css(param, position - itemWidth + "px");
        return (currentP - 1) % (maxP + 1);
    }
}



function setUpDialog(control, height, autoOpen) {
    for (i = 0; i < control.length; i++) {
        var pWid = control.eq(i).find("img:first").attr("width") + 40;
        if (pWid < 450) pWid = 450;
        control.eq(i).dialog({
            overlay: {
                backgroundColor: '#000',
                opacity: 0.5
            },
            bgiframe: true,
            modal: true,
            autoOpen: autoOpen,
            dialogClass: 'dialog',
            resizable: false,
            width: pWid
        });
    }
    //	control.css("visibility", "visible");
}

/*******************************************************
Home page slider
*******************************************************/

function LoadImage(panel) {
    var index = panel.parent().attr("id") - 2;
    $pmg = panel.find("img.pImg");
    if ($pmg != null) {
        var ary;
        switch (index) {
            case 0:
                ary = array0;
                break;
            case 1:
                ary = array1;
                break;
            case 2:
                ary = array2;
                break;
            case 3:
                ary = array3;
                break;
        }
        if (ary != null) {
            var length = ary.length;
            var random = Math.floor(Math.random() * length)
            $pmg.attr("src", ary[random]);
        }
    }
}


function accordionSetup() {
    if (jQuery("#accordion").length <= 0) return;

    jQuery('#accordion div.acdPanel').click(function() {
        var position = jQuery(this).position().left;
        jQuery(this).parent().siblings().find("div.acdCt").hide();
        $next = jQuery(this).next();
        if ($next != null) {
            $next.toggle();
            if ($next.css("display") == "block")
                LoadImage($next);
        }
        if (position > 500) {
            jQuery(this).parent().effect("slide", { direction: "right" }, "normal");
        }
        else {
            jQuery(this).parent().effect("slide", { direction: "left" }, "normal");
        }
        if (jQuery(this).next().css("display") == "none") {
            jQuery(this).parent().parent().prev().find("div.acdCt").show("slide", { direction: "left" }, "fast");

            LoadImage(jQuery(this).parent().parent().prev().find("div.acdPanel").next());
        }
        if (jQuery(this).parent().find("div.acdCt").css("display") == "block")
            jQuery(this).css("background-image", "url(/images/icons/arrowWhite_rt.png)");
        else jQuery(this).css("background-image", "url(/images/icons/arrowWhite.png)");
        changeArrow(jQuery(this).parent());
        return false;
    });      //.next().hide();

    function changeArrow(thisPanel) {
        var panels = thisPanel.parent().siblings();
        var i = 0;
        for (i = 0; i < panels.length; i++) {
            var acdPanel = panels.eq(i).find("div.acdPanel");
            if (acdPanel.length == 0) continue;
            if (acdPanel.position().left < 500)
                acdPanel.css("background-image", "url(/images/icons/arrowWhite_rt.png)");
            else
                acdPanel.css("background-image", "url(/images/icons/arrowWhite.png)");
        }
    }

    //set up hint text
    jQuery("#sHint").css("left", "+" + (jQuery("#sHint").next().position().left + 440) + "px");
    jQuery("#accordion").mouseover(function() {
        jQuery("#sHint").css("left", "+" + (jQuery("#accordion").position().left + 440) + "px");
        if (jQuery("#sHint").css("display") == "none")
            jQuery("#sHint").show("slide");
    });



    //show photo on RGVB page
    var curURL = getLeaf(location.href);
    var index = curURL.lastIndexOf("#");
    if (index > 0) {
        curURL = curURL.substring(0, (index + 1));
    }
    var vLinks = jQuery("#accordion").find("div.vm");
    for (i = 0; i < vLinks.length; i++) {
        if (vLinks.eq(i).find("a:first").attr("href").lastIndexOf(curURL) >= 0) {
            LoadImage(vLinks.eq(i).parent());
        }
    }
} // end accordionSetup

function accordionExpandCurrent(currentLocation) {
    var currentLocation = getLeaf(currentLocation);
    var plinks = jQuery('#accordion div.info').find("a:plink");
    var panels = jQuery('#accordion div.acdCt');
    panels.eq(0).hide();
    for (i = 0; i < plinks.length; i++) {
        if (plinks.eq(i).attr("href") == currentLocation
			|| plinks.eq(i).attr("href") + "/" == currentLocation
			|| plinks.eq(i).attr("href") == currentLocation + "/") {
            panels.eq(i).show();
            LoadImage(panels.eq(i));
            return;
        }
    }
}

var blockReady = false;
function setPicBlock() {
    var $thumbnail = jQuery("#accordion ul.picBlock li");
    if ($thumbnail.length < 36 || blockReady) return;

    $thumbnail.hover(function() {
        var info = jQuery(this).attr("id") + "_info";
        jQuery(this).parent().parent().parent().find("div.info").hide();
        var control = jQuery("#" + info);
        var newhtml = control.html().replace("#img", "<img").replace("&gt;", ">");
        control.html(newhtml);
        control.show();
        jQuery(this).find("img").fadeTo("fast", 1);
    });

    $thumbnail.mouseleave(function() {
        jQuery(this).find("img").fadeTo("fast", 0.7);
        var info = jQuery(this).attr("id") + "_info";
        jQuery("#" + info).hide();
    });

    jQuery("#accordion ul.picBlock").mouseleave(function() {
        jQuery(this).parent().parent().find("div.info:first").show();
    });

    jQuery("#accordion ul.picBlock li img").fadeTo("fast", 0.7);

    blockReady = true;

}


/*******************************************************
Home bottom carousel
*******************************************************/
function setupHmCar() {
    var toAdd = 4 - jQuery("#hmCar li").length % 4;
    if (toAdd == 4) toAdd = 0;

    for (i = 0; i < toAdd; i++) {
        jQuery("#hmCar ul").append("<li>" + jQuery("#hmCar li").eq(i).html() + "</li>");
    }
    var pages = setUpPaging(jQuery("#hmCar"), 4, 12);
    //setUpCarousel("#hmCar", "#ISrt", "#ISlf", false, 4, 2, true, 500, false);
    var current = 1;
    function mycarousel_initCallback(carousel) {

        disableBtn(jQuery("#ISlf"));
        if (current == pages) disableBtn(jQuery("#ISrt"));
        jQuery("#ISlf").click(function() {
            if (jQuery(this).attr("src").lastIndexOf("disabled") <= 0) {
                carousel.prev();
                paging(jQuery("#hmCar").parent().find("span.paging"), false, current, pages, 12, false);
                current--;
                if (current <= 1) disableBtn(jQuery(this));
                enableBtn(jQuery("#ISrt"));
                if (current <= 1) disableBtn(jQuery(this));
            }
            return false;
        });

        jQuery("#ISrt").click(function() {
            if (jQuery(this).attr("src").lastIndexOf("disabled") <= 0) {
                carousel.next();
                paging(jQuery("#hmCar").parent().find("span.paging"), true, current, pages, 12, false);
                current++;
                if (current >= pages) disableBtn(jQuery(this));
                enableBtn(jQuery("#ISlf"));
                if (current >= pages) disableBtn(jQuery(this));
            }
            return false;
        });
    };

    jQuery('#hmCar').jcarousel({
        buttonPrevHTML: null,
        buttonNextHTML: null,
        scroll: 4,
        visible: 4,
        initCallback: mycarousel_initCallback
    });

    if (typeof ImgSlidePostLoader == 'function') {
        ImgSlidePostLoader();
    }
}
/*******************************************************
Quick Links Drop Down
*******************************************************/
function setUpDropDowns() {
    // positionDDL();
    function closeOthers(control) { // pass in null to close all drop downs.
        if (control != "#dp1") {
            jQuery("#dp1").hide();
            jQuery("#d1").attr("active", "false");
            jQuery("#d1").css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        }
        if (control != "#dp2") {
            jQuery("#dp2").hide();
            jQuery("#d2").attr("active", "false");
            jQuery("#d2").css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        }
        if (control != "#dp3") {
            jQuery("#dp3").hide();
            jQuery("#d3").attr("active", "false");
            jQuery("#d3").css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        }
        if (control != "#dp4") {
            jQuery("#dp4").hide();
            jQuery("#d4").attr("active", "false");
            jQuery("#d4").css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        }
        if (control != "#dp5") {
            jQuery("#dp5").hide();
            jQuery("#d5").attr("active", "false");
            jQuery("#d5").css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        }
    }
    function clickBG(control) {
        if (control.css("background-image") != null) {
            if (control.css("background-image").indexOf("Clicked") > 0)
                control.css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
            else
                control.css({ "background-image": "url(http://cityofpasadena.net/images/Pasadena_Clicked.gif)", "color": "#ffffff" });
        }
    }
    var ddlCtrl = jQuery("div.ddl");
    for (i = 0; i < ddlCtrl.length; i++) {
        ddlCtrl.eq(i).bind('mouseover', function() {
            if (jQuery(this).attr("active") != "true")
                jQuery(this).css({ "background-image": "url(http://cityofpasadena.net/images/Pasadena_Hover.gif)", "color": "#817d6d" });
        });
        ddlCtrl.eq(i).bind('mouseleave', function() {
            if (jQuery(this).attr("active") != "true")
                jQuery(this).css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
        });
        ddlCtrl.eq(i).bind('click', function() {
            var id = "#" + jQuery(this).attr("id");
            id = id.replace("#d", "#dp");
            closeOthers(id);
            if (jQuery(this).attr("active") != "true")
                jQuery(this).attr("active", "true");
            else
                jQuery(this).attr("active", "false");
            jQuery(jQuery(this).next()).toggle();
            clickBG(jQuery(this));
        });
    }

    jQuery("div.dPanel img.close").click(function() {
        jQuery(this).parent().parent().parent().hide();
        jQuery(this).parent().parent().parent().prev().attr("active", "false");
        jQuery(this).parent().parent().parent().prev().css({ "background-image": "url(http://cityofpasadena.net/images/ddlBG.png)", "color": "#817d6d" });
    });

    jQuery(document).click(function(event) {
        var target = jQuery(event.target);
        if (target.attr("class") == null || target.attr("class") != "ddl") {
            closeOthers(null);
        }
    });

}
/*******************************************************
Home page
*******************************************************/
function setUpHighlights() {
    var imgCar = jQuery("#imgCarHm");
    if (imgCar.length == 0) return;
    var pages = setUpPaging(imgCar, 1, 12);
    setUpCarousel("#imgCarHm", "#ISrt", "#ISlf", false, 1, 1, false, 500, false);

    var $lfBt = jQuery("#ISlf");
    var $rtBt = jQuery("#ISrt");
    if ($lfBt.length > 0 && $rtBt.length > 0) {
        if ($lfBt.attr("src").indexOf("disabled.gif") < 0)
            $lfBt.attr("src", $lfBt.attr("src").replace(".gif", "-disabled.gif"));
        var current = 1;

        $lfBt.click(function() {
            current = paging(jQuery(this).parent().find("span"), false, current, pages, 12, false);
            if (current == 1)
                disableBtn(jQuery(this));
            enableBtn($rtBt);

        });
        $rtBt.click(function() {
            current = paging(jQuery(this).parent().find("span"), true, current, pages, 12, false);
            if (current == pages)
                disableBtn(jQuery(this));
            enableBtn($lfBt);

        });
    }

    setUpDialog(jQuery("#diaPops").find("div"), 250, false);

    jQuery("#imgCarHm img").click(function() {
        var id = jQuery(this).attr("id");
        jQuery("#" + id.replace("dia", "pop")).dialog('open');
    });
}

function setUpHmNews() {
    if (isMobile != null && isMobile == "True") {
        jQuery("#fyiCar").css("float", "left");
    }
    else {
        jQuery("#fyiCar .lkbtn").css("display", "block");
        setUpCarousel("#fyiCar", "#newsDown", "#newsUp", true, 7, 4, true, 500, false);
    }
}
/*******************************************************
Carousel
*******************************************************/

function setUpCarousel(id, next, prev, vertical, visible, scroll, circular, spd, auto) {
    if (jQuery(id).length == 0) return;

    if (jQuery(id).find("li").length <= 1) {
        disableBtn(jQuery(next));
        disableBtn(jQuery(prev));
        return;
    }

    var autoSpd;
    if (auto) autoSpd = 3000;
    else autoSpd = 0;

    jQuery(id).jCarouselLite({
        btnNext: next,
        btnPrev: prev,
        vertical: vertical,
        visible: visible,
        scroll: scroll,
        circular: circular,
        speed: spd,
        auto: autoSpd
    });
}

function CoucilBanner(auto, interval) {
    var current = 1;

    var pages = setUpPaging(jQuery("#newCounBan"), 1, 15);
    var first = true;
    function mycarousel_initCallback(carousel) {

        jQuery('#CBrt').bind('click', function() {
            carousel.options.auto = 0;
            carousel.next();
            //current = paging($(this).parent().find("span"), true, current, pages, 15, false);
            return false;
        });

        jQuery('#CBlf').bind('click', function() {
            first = true;
            carousel.options.auto = 0;
            carousel.prev();
            current = paging(jQuery(this).parent().find("span"), false, current, pages, 15, false);

            return false;
        });
    };

    function mycarousel_itemLoadCallback(carouse) {
        if (!first) {
            current = paging(jQuery('div.DeptSlide').find("span.paging"), true, current, pages, 15, false);
        }
        first = false;
    }

    var jAuto;
    if (auto == "False") jAuto = 0;
    else if (interval == "Fast") jAuto = 3;
    else if (interval == "Slow") jAuto = 5;
    else jAuto = 4;

    jQuery('#newCounBan').jcarousel({
        buttonPrevHTML: '',
        buttonNextHTML: '',
        scroll: 1,
        auto: jAuto,
        visible: 1,
        initCallback: mycarousel_initCallback,
        itemLoadCallback: { onAfterAnimation: mycarousel_itemLoadCallback }
    });
}



/*******************************************************
Department Navigation
*******************************************************/
function setUpNavi() {
    var $subnavi = jQuery("#subnavi");
    if ($subnavi.length <= 0) return;
    //add expand arrow
    $subnavi.find("ul").parent().find("div.floatRt:first").css("display", "block");
    $subnavi.find("ul ul").parent().find("div.floatRt:first").css("display", "none");
    //add expand plus sign
    $subnavi.find("ul ul").parent().find("div div").attr("class", "plus");
    //highlightMenuItem($subnavi.find("a"));

    $subnavi.find("div.floatRt").click(function() {
        jQuery(this).parent().find("ul:first").toggle();
    });

    $subnavi.find("li div.floatLf").click(function() {
        if (jQuery(this).parent().parent().attr("id") == "subnavi")
            jQuery(this).parent().find("ul:first").toggle();
        else {
            var firDiv = jQuery(this).find("div:first");
            var firUl = jQuery(this).parent().find("ul:first");
            if (firDiv.attr("class") == "plus") {
                firDiv.attr("class", "minus");
                firUl.show();
            }
            else if (firDiv.attr("class") == "minus") {
                firDiv.attr("class", "plus");
                firUl.hide();
            }
        }
    });

    var $sLI = $subnavi.find("li");
    $sLI.hover(function() {
        if (jQuery(this).parent().find("ul").length >= 1)
            jQuery(this).find("span").show();
    });
    $sLI.mouseleave(function() {
        if (jQuery(this).parent().find("ul:first").css("display") != "block")
            jQuery(this).find("span").hide();
    });

} //end setUpNavi



function getLinkID(url) {
    //alert(url);
    var first = url.indexOf("ItemID=");
    var last = url.lastIndexOf("ItemID=") + 7;
    return url.substring(last);

}

function LinkItHL(id) {
    var links = jQuery("#subnavi").find("a");
    //	var currentLocation = getLeaf(document.location.href);
    for (i = 0; i < links.length; i++) {
        //get leaf url
        var currentHref = links.eq(i).attr("href");
        var currentLeafName = getLinkID(currentHref);

        if (currentLeafName == id) {
            //set leaf current class
            links.eq(i).attr("class", "current");
            //display the current li
            //display parent ul's
            links.eq(i).parent().parent().find("ul:first").css("display", "block");

            //if (links.eq(i).parent().parent().find("ul:first").length > 0) {
            var parent = links.eq(i).parent().parent().parent();
            while (parent.is("ul")) {
                parent.css("display", "block");
                //set collpase icon to expand icon for all li's
                if (parent.parent().find("div div").attr("class") == "plus")
                    parent.parent().find("div div").attr("class", "minus")

                parent = parent.parent().parent();
            }
            return;
        }
        //}
    }
}


function highlightMenuItem(currentLocation) {
    var links = jQuery("#subnavi").find("a");
    currentLocation = getLeaf(currentLocation);
    //	var currentLocation = getLeaf(document.location.href);
    for (i = 0; i < links.length; i++) {
        //get leaf url
        var currentHref = links.eq(i).attr("href");
        var currentLeafName = getLeaf(currentHref);
        if (currentLeafName.toUpperCase() == currentLocation.toUpperCase()
		|| currentLeafName.toUpperCase() + "/" == currentLocation.toUpperCase()
		|| currentLeafName.toUpperCase() == currentLocation.toUpperCase() + "/"
		) {
            //set leaf current class
            links.eq(i).attr("class", "current");
            //display the current li
            //display parent ul's
            links.eq(i).parent().parent().find("ul:first").css("display", "block");

            //if (links.eq(i).parent().parent().find("ul:first").length > 0) {
            var parent = links.eq(i).parent().parent().parent();
            while (parent.is("ul")) {
                parent.css("display", "block");
                //set collpase icon to expand icon for all li's
                if (parent.parent().find("div div").attr("class") == "plus")
                    parent.parent().find("div div").attr("class", "minus")

                parent = parent.parent().parent();
            }
            return true;
        }
        //}
    }
    return false;
}

/*******************************************************
Change Font Size
*******************************************************/
function sizeControl(control, panel) {
    control.click(function() {
        var fontsize = "";
        if (jQuery(this).attr("alt").lastIndexOf("small") >= 0)
            fontsize = "100%"; //"12px";
        else if (jQuery(this).attr("alt").lastIndexOf("medium") >= 0)
            fontsize = "102%"; // "14px";
        else if (jQuery(this).attr("alt").lastIndexOf("large") >= 0)
            fontsize = "104%"; //"16px";


        panel.find("a").css("font-size", fontsize);
        panel.find("div").css("font-size", fontsize);
        panel.find("li").css("font-size", fontsize);
        panel.find("p").css("font-size", fontsize);
        panel.css("font-size", fontsize);
        var src = jQuery(this).attr("src");

        //turn off other items
        var sibs = jQuery(this).parent().find("img");
        for (i = 0; i < sibs.length; i++) {
            sibs.eq(i).attr("src", sibs.eq(i).attr("src").replace("_on", "_off"));
        }

        //turn on clicked item
        jQuery(this).attr("src", src.substring(0, src.lastIndexOf("_")) + "_on.gif");
    });
}

function setupEmergency() {

    var ecnt = 0;
    function mycar_bfAnim(carousel) {
        ecnt++;
        if (ecnt > (jQuery('#eCar').find("li").length)) {
            jQuery('#eCar').hide();
            ecnt = 1;
        }
    }
    function mycar_AfAnim(carousel) {
        if (ecnt == 1) {
            jQuery('#eCar').fadeIn("slow");
        }
    }
    jQuery('#eCar').jcarousel({
        scroll: 1,
        buttonPrevHTML: '',
        buttonNextHTML: '',
        auto: 6,
        visible: 1,
        wrap: "last",
        itemLoadCallback: { onBeforeAnimation: mycar_bfAnim, onAfterAnimation: mycar_AfAnim }
    });
}

