var boolGetFeatureInfo = false;
var strUncheckedLayers = "";
var strQueryLayer = "";
var strQueryLayerTitle = "";

function initializeSelectAllStatus()
{
    if (document.getElementById("frmLegend"))
    {
        var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
        var objChkLegendContextLayer = document.getElementById("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.getElementById("frmLegend").radQuery)
    {
        // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
        if ((document.getElementById("frmLegend").radQuery.length == null) || (document.getElementById("frmLegend").radQuery.length == undefined))
            document.getElementById("frmLegend").radQuery.style.display = "none";
        else
        {
            // Loop through all the radio buttons and hide them.
            for (var intCounter = 0; intCounter < document.getElementById("frmLegend").radQuery.length; intCounter ++)
                document.getElementById("frmLegend").radQuery[intCounter].style.display = "none";
        }
    }
}

function showQueryRadioButtons()
{
    var boolMapit = false
    var boolQueryAvailable = false;;
    var intCounterRadio = 0;
    var objTblCell = null;
    var objChkLegendDataLayer = null;
    var objChkLegendContextLayer = null;

    // Verify if the legend is available. If not, map is likely invalid then exit the procedure.
    if (!document.getElementById("frmLegend"))
        return;
    else
    {
        objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
        objChkLegendContextLayer = document.getElementById("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.getElementById("frmLegend").radQuery)
        {
            // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
            if ((document.getElementById("frmLegend").radQuery.length == null) || (document.getElementById("frmLegend").radQuery.length == undefined))
                document.getElementById("frmLegend").radQuery.style.display = "";
            else
                document.getElementById("frmLegend").radQuery[intCounterRadio].style.display = "";

            if (!boolQueryAvailable)
                boolQueryAvailable = true;

            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.getElementById("frmLegend").radQuery)
                var objTempRadio = ((document.getElementById("frmLegend").radQuery.length == null) || (document.getElementById("frmLegend").radQuery.length == undefined)) ? document.getElementById("frmLegend").radQuery : document.getElementById("frmLegend").radQuery[intCounterRadio];

            // Check to see if the layer is enabled. If so, show the radio button.
            if (!objTempCheck.disabled)
            {
                objTempRadio.style.display = "";

                if (!boolQueryAvailable)
                    boolQueryAvailable = true;
            }

            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.getElementById("frmLegend").radQuery)
                var objTempRadio = ((document.getElementById("frmLegend").radQuery.length == null) || (document.getElementById("frmLegend").radQuery.length == undefined)) ? document.getElementById("frmLegend").radQuery : document.getElementById("frmLegend").radQuery[intCounterRadio];

            // Check to see if the layer is enabled. If so, show the radio button.
            if (!objTempCheck.disabled)
            {
                objTempRadio.style.display = "";

                if (!boolQueryAvailable)
                    boolQueryAvailable = true;
            }

            intCounterRadio ++;
        }
    }

    // Display a message if not layers are available fore querying.
    if (!boolQueryAvailable)
        alert(strNoQueryableLayers);
}

function resetAllQueryButtons()
{
    var intCounter = 0;
    var objDivQueryImage = null;

    // Verify if the legend is available. If not, map is likely invalid then exit the procedure.
    if (!document.getElementById("frmLegend"))
        return;

    if (document.getElementById("frmLegend").radQuery)
    {
        // Check to see if there is only 1 radio button (1 radio button gives an undefined length count).
        if ((document.getElementById("frmLegend").radQuery.length == null) || (document.getElementById("frmLegend").radQuery.length == undefined))
            document.getElementById("frmLegend").radQuery.checked = false;
        else
        {
            // Loop through all the radio buttons and deselect them.
            for (var intCounter = 0; intCounter < document.getElementById("frmLegend").radQuery.length; intCounter ++)
                document.getElementById("frmLegend").radQuery[intCounter].checked = false;
        }
    }
}

function prepareGetFeatureInfo(pRadQueryLayer, pStrQueryLayerTitle)
{
    pRadQueryLayer.checked = true;

    // Close the popup div.
    removePopUp("divGetFeatureInfoPopUp");

    // Set the layer to query.
    strQueryLayer = pRadQueryLayer.value;
    strQueryLayerTitle = pStrQueryLayerTitle;
}

// Show the legend.
function showLegend(pObjDiv, pNumMapID, pScale)
{
    if ((pObjDiv == null) || (pObjDiv == undefined))
        return;

    var strSRS = null
    if (objMap.getProjection() != null)
        strSRS = objMap.getProjection();
    else
        strSRS = strDefaultProjection;

    var strUrl = "./jsp/showSliderLegend.jsp";
    var strUrlParams = "mapID=" + pNumMapID + "&scale=" + pScale + "&srs=" + strSRS + "&startup=" + boolInitializingMap + "&lang=" + strLang;

    // Create a new XML HTTP object for AJAX operation.
    var oTempXmlHttp = getNewXmlHTTPObject();

    // Process the AJAX request.
    if (!isXmlHTTPNull(oTempXmlHttp))
    {
        logMsg("Retrieving legend data. url: " + encodeURIComponent(strUrl + "?" + strUrlParams), "info", "sliderLegend.js (getLegend)");
        doXMLRequest(oTempXmlHttp, strUrl, strUrlParams, "post", false, "application/x-www-form-urlencoded");
    }

    // Get the response from the request.
    var strResponse = oTempXmlHttp.responseText.split("|");

    oTempXmlHttp = null;

    // Show the legend in the div.
    pObjDiv.innerHTML = strResponse[0];

    // If an error message is available, display it to the user.
    if (strResponse[1] != "")
        alert(strResponse[1]);
}

function updateLegend(pStrLayersShow, pStrLayersHide)
{
    // Verify if the legend is available. If not, map is likely invalid then exit the procedure.
    if (!document.getElementById("frmLegend"))
        return;

    var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
    var objHidLegendDataLayer = document.getElementById("frmLegend").hidLegendDataLayer;
    var objChkLegendContextLayer = document.getElementById("frmLegend").chkLegendContextLayer;
    var objHidLegendContextLayer = document.getElementById("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];

            // Ensure that the data for the layer is available.
            if (strLayersShow.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") >= 0)
            {
                // Enable the checkbox if disabled and change text style.
                if (objTempCheck.style.display.toUpperCase() != "NONE")
                {
                    // Check to see if the layer is to be displayed.
                    if (objTempCheck.disabled)
                        objTempCheck.disabled = false;
                    document.getElementById("tblRowLegendData" + intCounter).className = "enabledText";
                    document.getElementById("tblRowLegendData" + intCounter).title = "";

                    // Place a checkmark in the checkbox.
                    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("tblRowLegendData" + intCounter).className = "disabledText";
                document.getElementById("tblRowLegendData" + intCounter).title = strLayerNotWithinScale;

                // Remove the disabled layer from the list of unchecked layers.
                if (strUncheckedLayers.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase()) >= 0)
                    strUncheckedLayers = strUncheckedLayers.replace(new RegExp("," + objTempHidden.value, "ig"), "");
            }
            else
                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];

            // Ensure that the data for the layer is available.
            if (strLayersShow.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase() + ",") >= 0)
            {
                // Enable the checkbox if disabled and change text style.
                if ((objTempCheck.style.display.toUpperCase() != "NONE") && (objTempCheck.disabled))
                {
                    // Check to see if the layer is to be displayed.
                    if (objTempCheck.disabled)
                        objTempCheck.disabled = false;
                    document.getElementById("tblRowLegendContext" + intCounter).className = "enabledText";
                    document.getElementById("tblRowLegendContext" + intCounter).title = "";

                    // 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";
                document.getElementById("tblRowLegendContext" + intCounter).title = strLayerNotWithinScale

                // Remove the disabled layer from the list of unchecked layers.
                if (strUncheckedLayers.toUpperCase().indexOf("," + objTempHidden.value.toUpperCase()) >= 0)
                    strUncheckedLayers = strUncheckedLayers.replace(new RegExp("," + objTempHidden.value, "ig"), "");
            }
            else
                objTempCheck.checked = false;
        }
    }
}

function doLegendSelectAll(pObjCheckBox)
{
    var objChkLegendMapitLayer = document.getElementById("frmLegend").chkLegendMapitLayer;
    var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
    var objChkLegendContextLayer = document.getElementById("frmLegend").chkLegendContextLayer;

    if (document.getElementById("divLegendDataLayers").style.display.toUpperCase() != "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.style.display.toUpperCase() != "NONE") && (!objTempCheck.disabled))
                    objTempCheck.checked = pObjCheckBox.checked;
            }
        }
    }

    if (document.getElementById("divLegendContextLayers").style.display.toUpperCase() != "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.style.display.toUpperCase() != "NONE") && (!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.toUpperCase() == "NONE")
        document.getElementById("divArrow").style.display = "";
}

function doLegendCheckBox(pObjCheckBox, pStrLayer)
{
    if ((!pObjCheckBox.checked) || (document.getElementById("chkLegendSelectAll").checked))
        document.getElementById("chkLegendSelectAll").checked = false;

    // Show the arrow that points the user to click on the refresh button.
    if (document.getElementById("divArrow").style.display.toUpperCase() == "NONE")
        document.getElementById("divArrow").style.display = "";
}

function doRefreshMap()
{
    // Hide the arrow that points the user to click on the refresh button.
    if (document.getElementById("divArrow").style.display == "")
        document.getElementById("divArrow").style.display = "none";

    var strSelectedLayers = getIncludedLayers().join("").trim();

    // Ensure that at least one layer is selected. If more than one layer is selected,
    // Verify that the user does not make a WMS request that is too long.
    if (strSelectedLayers.length == 0)
        return;
    else if (strSelectedLayers.length > 4000)
    {
        alert(strWMSTooLongMsg);
        return;
    }

    // Ensure that at least one layer is selected.
    if (strSelectedLayers.length > 0)
    {
        // Refresh the map.
        refreshMap(null, getExcludedLayers().join(","), false);
    }
    else
        alert(strNoLayersError);
}

function getIncludedLayers()
{
    var intCounter;
    var arryIncludeLayers = new Array;

    var objChkLegendMapitLayer = document.getElementById("frmLegend").chkLegendMapitLayer;
    var objHidLegendMapitLayer = document.getElementById("frmLegend").hidLegendMapitLayer;
    var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
    var objHidLegendDataLayer = document.getElementById("frmLegend").hidLegendDataLayer;
    var objChkLegendContextLayer = document.getElementById("frmLegend").chkLegendContextLayer;
    var objHidLegendContextLayer = document.getElementById("frmLegend").hidLegendContextLayer;

    // Get the mapit layer checkbox and build layer to exclude.
    if (objChkLegendMapitLayer)
        if (objChkLegendMapitLayer.checked)
            arryIncludeLayers.push(objHidLegendMapitLayer.value);

    // 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 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];

            // Check to see if the checkbox is hidden, unchecked or disabled. If so, the layer is hidden.
            if ((objTempCheck.style.display.toUpperCase() != "NONE") && objTempCheck.checked)
                arryIncludeLayers.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.style.display.toUpperCase() != "NONE") && objTempCheck.checked)
                arryIncludeLayers.push(objTempHidden.value);
        }
    }

    // Return an array of excluded layers based on unselected checkboxes.
    return arryIncludeLayers.reverse();
}

function getExcludedLayers()
{
    var intCounter;
    var arryExcludeLayers = new Array;

    var objChkLegendMapitLayer = document.getElementById("frmLegend").chkLegendMapitLayer;
    var objHidLegendMapitLayer = document.getElementById("frmLegend").hidLegendMapitLayer;
    var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
    var objHidLegendDataLayer = document.getElementById("frmLegend").hidLegendDataLayer;
    var objChkLegendContextLayer = document.getElementById("frmLegend").chkLegendContextLayer;
    var objHidLegendContextLayer = document.getElementById("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 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 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];

            // Check to see if the checkbox is hidden, unchecked or disabled. If so, the layer is hidden.
            if ((objTempCheck.style.display.toUpperCase() == "NONE") || !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.style.display.toUpperCase() == "NONE") || !objTempCheck.checked || objTempCheck.disabled)
                arryExcludeLayers.push(objTempHidden.value);
        }
    }

    // Return an array of excluded layers based on unselected checkboxes.
    return arryExcludeLayers.reverse();
}

function getHiddenLayers()
{
    var intCounter;
    var arryHiddenLayers = new Array;

    var objChkLegendMapitLayer = document.getElementById("frmLegend").chkLegendMapitLayer;
    var objHidLegendMapitLayer = document.getElementById("frmLegend").hidLegendMapitLayer;
    var objChkLegendDataLayer = document.getElementById("frmLegend").chkLegendDataLayer;
    var objHidLegendDataLayer = document.getElementById("frmLegend").hidLegendDataLayer;
    var objChkLegendContextLayer = document.getElementById("frmLegend").chkLegendContextLayer;
    var objHidLegendContextLayer = document.getElementById("frmLegend").hidLegendContextLayer;

    // Get the mapit layer checkbox and build layer to exclude.
    if (objChkLegendMapitLayer)
        if (!objChkLegendMapitLayer.checked)
            arryHiddenLayers.push(objChkLegendMapitLayer.value);

    // 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 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];

            // Check to see if the checkbox is hidden, unchecked or disabled. If so, the layer is hidden.
            if ((objTempCheck.style.display.toUpperCase() != "NONE") && !objTempCheck.checked && !objTempCheck.disabled)
                arryHiddenLayers.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.style.display.toUpperCase() != "NONE") && !objTempCheck.checked && !objTempCheck.disabled)
                arryHiddenLayers.push(objTempHidden.value);
        }
    }

    // Return an array of hidden layers based on unselected checkboxes.
    return arryHiddenLayers.reverse();
}

function isMapitSelected()
{
    return ((document.getElementById("chkLegendMapitLayer") != undefined) && (document.getElementById("chkLegendMapitLayer").checked));
}

function getMapitfilter()
{
    return document.getElementById("hidLegendMapitLayer").value + ":SESSIONID = '" + strSessionID + "'";
}
