var boolGetFeatureInfo = false;
var strQueryLayer = "";
var strQueryLayerTitle = "";

function initializeSelectAllStatus()
{
    if (document.frmLegend)
    {
        var objChkLegendDataLayer = document.frmLegend.chkLegendDataLayer;
        var objChkLegendContextLayer = document.frmLegend.chkLegendContextLayer;

        var intCounter = 0;
        var boolSelectAll = true;

        // Ensure that there are data layers.
        if (objChkLegendDataLayer)
        {
            // Get a count of data layer checkboxes.
            var intCheckCount = ((objChkLegendDataLayer.length == null) || (objChkLegendDataLayer.length == undefined)) ? 1 : objChkLegendDataLayer.length;

            // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
            if (intCheckCount == 1)
                boolSelectAll = objChkLegendDataLayer.checked;
            else
            {
                // Loop through the data layer checkboxes and get the layer name.
                for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
                {
                    if ((boolSelectAll) && (!objChkLegendDataLayer[intCounter].disabled))
                        boolSelectAll = objChkLegendDataLayer[intCounter].checked;
                }
            }
        }

        // If all data layer checkboxes have been checked so far, process the context layers.
        if (boolSelectAll)
        {
            // Ensure that there are context layers.
            if (objChkLegendContextLayer)
            {
                // Get a count of context layer checkboxes.
                var intCheckCount = ((objChkLegendContextLayer.length == null) || (objChkLegendContextLayer.length == undefined)) ? 1 : objChkLegendContextLayer.length;

                // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
                if (intCheckCount == 1)
                    boolSelectAll = objChkLegendContextLayer.checked;
                else
                {
                    // Loop through the context layer checkboxes and get the layer name.
                    for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
                    {
                        if ((boolSelectAll) && (!objChkLegendContextLayer[intCounter].disabled))
                            boolSelectAll = objChkLegendContextLayer[intCounter].checked;
                    }
                }
            }
        }

        // Set the status of the "select all" check box.
        document.getElementById("chkLegendSelectAll").checked = boolSelectAll;
    }
}

function hideQueryRadioButtons()
{
    if (document.frmLegend.radQuery)
    {
        // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
        if ((document.frmLegend.radQuery.length == null) || (document.frmLegend.radQuery.length == undefined))
            document.frmLegend.radQuery.style.display = "none";
        else
        {
            // Loop through all the radio buttons and hide them.
            for (var intCounter = 0; intCounter < document.frmLegend.radQuery.length; intCounter ++)
                document.frmLegend.radQuery[intCounter].style.display = "none";
        }
    }
}

function showQueryRadioButtons()
{
    var boolMapit = false;
    var intCounterRadio = 0;
    var objTblCell = null;
    var objChkLegendDataLayer = document.frmLegend.chkLegendDataLayer;
    var objChkLegendContextLayer = document.frmLegend.chkLegendContextLayer;

    var intRows = 0;

    // Check to see if there is a Mapit layer that is loaded. If so, show the radio button. An extra row is added to the data layers
    // so we must accomodate for this.
    if ((document.getElementById("tblRowMapit") != null) && (document.getElementById("tblRowMapit") != undefined))
    {
        if (document.frmLegend.radQuery)
        {
            // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
            if ((document.frmLegend.radQuery.length == null) || (document.frmLegend.radQuery.length == undefined))
                document.frmLegend.radQuery.style.display = "";
            else
                document.frmLegend.radQuery[intCounterRadio].style.display = "";

            intCounterRadio ++;
        }

        intRows = document.getElementById("tblLegendDataLayers").rows.length - 1;
    }
    else
        intRows = document.getElementById("tblLegendDataLayers").rows.length;

    // Loop through the data table rows to determine if a query button is availble.
    // If so, "turn off" the button.
    for (var intCounter = 0; intCounter < intRows; intCounter ++)
    {
        // Get the cell with the layer name.
        objTblCell = document.getElementById("tblRowLegendDataQuery" + intCounter);

        // Check to see if the layer has a radio button associated to it.
        if (objTblCell.innerHTML.trim().length > 0)
        {
            // Check to see if there is only 1 data layer row (1 data layer row gives an undefined length count).
            var objTempCheck = ((objChkLegendDataLayer.length == null) || (objChkLegendDataLayer.length == undefined)) ? objChkLegendDataLayer : objChkLegendDataLayer[intCounter];

            if (document.frmLegend.radQuery)
                var objTempRadio = ((document.frmLegend.radQuery.length == null) || (document.frmLegend.radQuery.length == undefined)) ? document.frmLegend.radQuery : document.frmLegend.radQuery[intCounterRadio];

            // Check to see if the layer is enabled. If so, show the radio button.
            if (!objTempCheck.disabled)
                objTempRadio.style.display = "";

            intCounterRadio ++;
        }
    }

    // Loop through the context table rows to determine if a query button is availble.
    // If so, "turn off" the button.
    for (var intCounter = 0; intCounter < document.getElementById("tblLegendContextLayers").rows.length; intCounter ++)
    {
        // Get the cell with the layer name.
        objTblCell = document.getElementById("tblRowLegendContextQuery" + intCounter);

        // Check to see if the layer has a radio button associated to it.
        if (objTblCell.innerHTML.trim().length > 0)
        {
            // Check to see if there is only 1 context layer row (1 context layer row gives an undefined length count).
            var objTempCheck = ((objChkLegendContextLayer.length == null) || (objChkLegendContextLayer.length == undefined)) ? objChkLegendContextLayer : objChkLegendContextLayer[intCounter];

            if (document.frmLegend.radQuery)
                var objTempRadio = ((document.frmLegend.radQuery.length == null) || (document.frmLegend.radQuery.length == undefined)) ? document.frmLegend.radQuery : document.frmLegend.radQuery[intCounterRadio];

            // Check to see if the layer is enabled. If so, show the radio button.
            if (!objTempCheck.disabled)
                objTempRadio.style.display = "";

            intCounterRadio ++;
        }
    }
}

function resetAllQueryButtons()
{
    var intCounter = 0;
    var objDivQueryImage = null;

    if (document.frmLegend.radQuery)
    {
        // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
        if ((document.frmLegend.radQuery.length == null) || (document.frmLegend.radQuery.length == undefined))
            document.frmLegend.radQuery.checked = false;
        else
        {
            // Loop through all the radio buttons and deselect them.
            for (var intCounter = 0; intCounter < document.frmLegend.radQuery.length; intCounter ++)
                document.frmLegend.radQuery[intCounter].checked = false;
        }
    }
}

function prepareGetFeatureInfo(pStrQueryLayer, pStrQueryLayerTitle)
{
    // Close the popup div.
    removePopUp("divGetFeatureInfoPopUp");

    // Set the layer to query.
    strQueryLayer = pStrQueryLayer;
    strQueryLayerTitle = pStrQueryLayerTitle;
}
/*
// Show the legend.
function showLegend(pObjDiv, pNumMapID, pScale)
{
    if ((pObjDiv == null) || (pObjDiv == undefined))
        return;

    var strUrl = "./jsp/showSliderLegend.jsp?mapID=" + pNumMapID + "&scale=" + pScale + "&startup=" + boolInitializingMap + "&lang=" + strLang + "&browser="+gblStrBrowserMode;

    // Create a new XML HTTP object for AJAX operation.
    var oTempXmlHttp = getNewXmlHTTPObject();

    // Process the AJAX request.
    if (!isXmlHTTPNull(oTempXmlHttp))
    {
        logMsg("Retrieving legend data. url: " + escape(strUrl), "info", "sliderLegend.js (getLegend)");
        doXMLRequest(oTempXmlHttp, strUrl, "post", false);
    }

    // Show the legend in the div.
    pObjDiv.innerHTML = oTempXmlHttp.responseText;

    oTempXmlHttp = null;
}
*/
function updateLegend(pStrLayersShow, pStrLayersHide)
{
    var objChkLegendDataLayer = document.frmLegend.chkLegendDataLayer;
    var objHidLegendDataLayer = document.frmLegend.hidLegendDataLayer;
    var objChkLegendContextLayer = document.frmLegend.chkLegendContextLayer;
    var objHidLegendContextLayer = document.frmLegend.hidLegendContextLayer;

    var strLayersShow = "," + pStrLayersShow + ",";
    var strLayersHide =  "," + pStrLayersHide + ",";

    // Ensure that there are data layers.
    if (objChkLegendDataLayer)
    {
        // Get a count of data layer checkboxes.
        var intCheckCount = ((objChkLegendDataLayer.length == null) || (objChkLegendDataLayer.length == undefined)) ? 1 : objChkLegendDataLayer.length;

        // Loop through the data layer checkboxes.
        for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
        {
            // Check to see if there is only 1 data layer row (1 data layer row gives an undefined length count).
            var objTempCheck = (intCheckCount  == 1) ? objChkLegendDataLayer : objChkLegendDataLayer[intCounter];
            var objTempHidden = (intCheckCount  == 1) ? objHidLegendDataLayer : objHidLegendDataLayer[intCounter];

            // Check to see if the layer is to be displayed.
            if (strLayersShow.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") >= 0)
            {
                // Enable the checkbox if disabled and change text style.
                if (objTempCheck.disabled)
                {
                    objTempCheck.disabled = false;
                    document.getElementById("tblRowLegendData" + intCounter).className = "enabledText";

                    if (document.getElementById("divQueryData" + intCounter) != undefined)
                        document.getElementById("divQueryData" + intCounter).style.display = "";
                }

                // Place a checkmark in the checkbox.
                objTempCheck.checked = true;
            }
            else if (strLayersHide.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") < 0)
            {
                objTempCheck.disabled = true;
                document.getElementById("tblRowLegendData" + intCounter).className = "disabledText";

                if (document.getElementById("divQueryData" + intCounter) != undefined)
                    document.getElementById("divQueryData" + intCounter).style.display = "none";

                // Remove the checkmark in the checkbox.
                objTempCheck.checked = false;
            }
        }
    }

    // Ensure that there are context layers.
    if (objChkLegendContextLayer)
    {
        // Get a count of context layer checkboxes.
        var intCheckCount = ((objChkLegendContextLayer.length == null) || (objChkLegendContextLayer.length == undefined)) ? 1 : objChkLegendContextLayer.length;

        // Loop through the context layer checkboxes.
        for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
        {
            // Check to see if there is only 1 context layer row (1 context layer row gives an undefined length count).
            var objTempCheck = (intCheckCount  == 1) ? objChkLegendContextLayer : objChkLegendContextLayer[intCounter];
            var objTempHidden = (intCheckCount  == 1) ? objHidLegendContextLayer : objHidLegendContextLayer[intCounter];

            // Check to see if the layer is to be displayed.
            if (strLayersShow.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") >= 0)
            {
                // Enable the checkbox if disabled and change text style.
                if (objTempCheck.disabled)
                {
                    objTempCheck.disabled = false;
                    document.getElementById("tblRowLegendContext" + intCounter).className = "enabledText";

                    if (document.getElementById("imgQueryContext" + intCounter) != undefined)
                        document.getElementById("imgQueryContext" + intCounter).style.display = "";
                }

                // Show the checkbox with a selection.
                objTempCheck.checked = true;
            }
            else if (strLayersHide.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") < 0)
            {
                // Disable the checkbox, the clear selection and change text style.
                objTempCheck.checked = false;
                objTempCheck.disabled = true;
                document.getElementById("tblRowLegendContext" + intCounter).className = "disabledText";

                if (document.getElementById("imgQueryContext" + intCounter) != undefined)
                    document.getElementById("imgQueryContext" + intCounter).style.display = "none";
            }
        }
    }
}

function doLegendSelectAll(pObjCheckBox)
{
    var objChkLegendMapitLayer = document.frmLegend.chkLegendMapitLayer;
    var objChkLegendDataLayer = document.frmLegend.chkLegendDataLayer;
    var objChkLegendContextLayer = document.frmLegend.chkLegendContextLayer;

    if (document.getElementById("divLegendDataLayers").style.display != "none")
    {
        // Get mapit layer checkbox and add/remove selection.
        if (objChkLegendMapitLayer)
            objChkLegendMapitLayer.checked = pObjCheckBox.checked;

        // Ensure that there are data layers.
        if (objChkLegendDataLayer)
        {
            // Get a count of data layer checkboxes.
            var intCheckCount = ((objChkLegendDataLayer.length == null) || (objChkLegendDataLayer.length == undefined)) ? 1 : objChkLegendDataLayer.length;

            // Loop through the data layer checkboxes and add/remove selection.
            for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
            {
                // Check to see if there is only 1 data layer row (1 data layer row gives an undefined length count).
                var objTempCheck = (intCheckCount  == 1) ? objChkLegendDataLayer : objChkLegendDataLayer[intCounter];

                if (!objTempCheck.disabled)
                    objTempCheck.checked = pObjCheckBox.checked;
            }
        }
    }

    if (document.getElementById("divLegendContextLayers").style.display != "none")
    {
        // Ensure that there are data layers.
        if (objChkLegendContextLayer)
        {
            // Get a count of context layer checkboxes.
            var intCheckCount = ((objChkLegendContextLayer.length == null) || (objChkLegendContextLayer.length == undefined)) ? 1 : objChkLegendContextLayer.length;

            // Loop through the context layer checkboxes and add/remove selection.
            for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
            {
                // Check to see if there is only 1 context layer row (1 context layer row gives an undefined length count).
                var objTempCheck = (intCheckCount  == 1) ? objChkLegendContextLayer : objChkLegendContextLayer[intCounter];

                if (!objTempCheck.disabled)
                    objTempCheck.checked = pObjCheckBox.checked;
            }
        }
    }

    // Show the arrow that points the user to click on the refresh button.
    if (document.getElementById("divArrow").style.display == "none")
        document.getElementById("divArrow").style.display = "";
}

function getExcludedLayers()
{
    var intCounter;
    var arryExcludeLayers = new Array;

    var objChkLegendMapitLayer = document.frmLegend.chkLegendMapitLayer;
    var objHidLegendMapitLayer = document.frmLegend.hidLegendMapitLayer;
    var objChkLegendDataLayer = document.frmLegend.chkLegendDataLayer;
    var objHidLegendDataLayer = document.frmLegend.hidLegendDataLayer;
    var objChkLegendContextLayer = document.frmLegend.chkLegendContextLayer;
    var objHidLegendContextLayer = document.frmLegend.hidLegendContextLayer;

    // Get the mapit layer checkbox and build layer to exclude.
    if (objChkLegendMapitLayer)
        if (!objChkLegendMapitLayer.checked)
            arryExcludeLayers.push(objChkLegendMapitLayer.value);

    // Ensure that there are context layers.
    if (objChkLegendDataLayer)
    {
        // Get a count of data layer checkboxes.
        var intCheckCount = ((objChkLegendDataLayer.length == null) || (objChkLegendDataLayer.length == undefined)) ? 1 : objChkLegendDataLayer.length;

        // Loop through the data layer checkboxes and build layers to exclude.
        for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
        {
            // Check to see if there is only 1 data layer row (1 data layer row gives an undefined length count).
            var objTempCheck = (intCheckCount  == 1) ? objChkLegendDataLayer : objChkLegendDataLayer[intCounter];
            var objTempHidden = (intCheckCount  == 1) ? objHidLegendDataLayer : objHidLegendDataLayer[intCounter];

            if (!objTempCheck.checked && !objTempCheck.disabled)
                arryExcludeLayers.push(objTempHidden.value);
        }
    }

    // Ensure that there are context layers.
    if (objChkLegendContextLayer)
    {
        // Get a count of context layer checkboxes.
        var intCheckCount = ((objChkLegendContextLayer.length == null) || (objChkLegendContextLayer.length == undefined)) ? 1 : objChkLegendContextLayer.length;

        // Loop through the context layer checkboxes and build layers to exclude.
        for (intCounter = 0; intCounter < intCheckCount; intCounter ++)
        {
            // Check to see if there is only 1 context layer row (1 context layer row gives an undefined length count).
            var objTempCheck = (intCheckCount  == 1) ? objChkLegendContextLayer : objChkLegendContextLayer[intCounter];
            var objTempHidden = (intCheckCount  == 1) ? objHidLegendContextLayer : objHidLegendContextLayer[intCounter];

            if (!objTempCheck.checked && !objTempCheck.disabled)
                arryExcludeLayers.push(objTempHidden.value);
        }
    }

    // Return an array of excluded layers based on unselected checkboxes.
    return arryExcludeLayers;
}

function isMapitSelected()
{
    return ((document.getElementById("chkLegendMapitLayer") != undefined) && (document.getElementById("chkLegendMapitLayer").checked));
}

function getMapitfilter()
{
    return document.getElementById("hidLegendMapitLayer").value + ":SESSIONID = '" + strSessionID + "'";
}
