/*javascript for NLWISZoomBar Widget
*/

function NLWISZoomBarWUpdateScale(nNlwisZoomBarLevels)
{
    CWCDHTML_ShowLayer("ActivityLayer");

    aHiddenVars = new Array(5);

    aHiddenVars[0] = new Array(2);
    aHiddenVars[0][0] =  "NAV_CMD";
    aHiddenVars[0][1] = "SCALE_ZOOM";

    aHiddenVars[1] = new Array(2);
    aHiddenVars[1][0] =  "SCALE_ZOOM";
    aHiddenVars[1][1] = goCWCJSAPI.SCALE_ZOOM;

    aHiddenVars[2] = new Array(2);
    aHiddenVars[2][0] =  "PROCESS_NLWISZOOMBAR";
    aHiddenVars[2][1] = "1";

    aHiddenVars[3] = new Array(2);
    aHiddenVars[3][0] = "NLWISZOOMBAR_LEVELS";
    aHiddenVars[3][1] = nNlwisZoomBarLevels;

    aHiddenVars[4] = new Array(2);
    aHiddenVars[4][0] = "NLWISZOOMBAR_MAXWIDTHFACTOR";
    aHiddenVars[4][1] = goCWCJSAPI.SCALE_MAXWIDTHFACTOR;

    szOnLoad = 'NLWISZoomBarWProcessed()';

    goCWCJSAPI.CallServer(szOnLoad, aHiddenVars);
    return true;
}

function NLWISZoomBarWProcessed()
{
    goCWCJSAPI.MapExtentsUpdated()

    var doc = goCWCJSAPI.GetDocumentObject();
    if(doc.forms[0].UPDATE_NLWISZOOMBAR_SCALES)
    {
        aNlwisZoomBarLevels = doc.forms[0].UPDATE_NLWISZOOMBAR_SCALES.value.split(",");
        nNlwisZoomBarCurrentScale = doc.forms[0].UPDATE_NLWISZOOMBAR_CURRENTSCALE.value;
        NLWISZoomBarWUpdateDisplay();

    }

    return true;
}

function NLWISZoomBarWUpdateDisplay()
{
    if (!goCWCJSAPI.oMap.scale) {
        nCurrentScale = nNlwisZoomBarCurrentScale;
    } else {
        nCurrentScale = goCWCJSAPI.oMap.scale;
    }
    if (typeof(aNlwisZoomBarLevels) == "string") {
        aScale = aNlwisZoomBarLevels.split(",");
    } else {
        aScale = aNlwisZoomBarLevels;
    }
    nMaxScale = aScale[0];
    nMinScale = aScale[aScale.length - 1];
    var nIncreaseTo = nMaxScale;          //set properly later on
    var nDecreaseTo = nMinScale;

    nCurrentZoomLevel = 0; //index of current scale
    nCurrentScaleDiff = nMaxScale - nMinScale;

    for(var j=0;j < aScale.length;j++)
    {
        if(Math.abs(nCurrentScale - aScale[j]) < nCurrentScaleDiff)
        {
            nCurrentScaleDiff = Math.abs(nCurrentScale - aScale[j]);
            nCurrentZoomLevel = j; //set index of current zoom value

            if(aScale[j+1] != null) //set scale value of [+] button
                nIncreaseTo = aScale[j+1];
            else
                nIncreaseTo = aScale[aScale.length-1];

            if(aScale[j-1] != null) //set scale value of [-] button
                nDecreaseTo = aScale[j-1];
            else
                nDecreaseTo = aScale[0];
        }
    }

    zoomBarList = document.getElementById(oNlwisZoomBarParentElementId).getElementsByTagName("ul")[0];
    bZoomOutSet = false;
    bZoomInSet = false;
    indexCounter = 0;
    for (var i=0;i<zoomBarList.childNodes.length;i++) {
        zoomBarNode = zoomBarList.childNodes[i];
        if (zoomBarNode.nodeName.toLowerCase() == "li" && zoomBarNode.className == "zoomlevel") {
            if (zoomBarNode.firstChild && zoomBarNode.firstChild.nodeName.toLowerCase() == "a") {
                zoomBarNodeLink = zoomBarNode.firstChild;
                if (zoomBarNodeLink.className == "zoomPlusMinus") {
                    if (bZoomOutSet != true ) {
                        zoomBarNodeLink.href = "javascript: clickScaleValue("+nDecreaseTo+");";
                        bZoomOutSet = true;
                        continue;
                    }
                    if (bZoomInSet != true ) {
                        zoomBarNodeLink.href = "javascript: clickScaleValue("+nIncreaseTo+");";
                        bZoomInSet = true;
                        continue;
                    }
                } else if (zoomBarNode.firstChild.className.indexOf("zoomBtn") != -1) {
                    if (indexCounter == nCurrentZoomLevel) {
                        zoomBarNodeLink.className = "zoomBtnActive";
                        zoomBarNodeLink.alt = "";
                        zoomBarNodeLink.href = "javascript: clickScaleValue(null);";
                    } else {
                        zoomBarNodeLink.className = "zoomBtn";
                        zoomBarNodeLink.alt = aScale[indexCounter];
                        zoomBarNodeLink.href = "javascript: clickScaleValue("+aScale[indexCounter]+");";
                    }
                    indexCounter++;
                }
            }
        }
    }

}

