// sets the initial size in a group of layers on page draw
// results in layer sizes responding to map size.

function LayerSetSizeInit()

{
    //alert('LayerSetSizeInit');
    nIETopNudge = 0;
    nIESizeNudge = 0;
    if(goCWCJSAPI.bIE)
    {
        nIETopNudge = 0;
        nIESizeNudge = 2;
    }

    var imgWidth = goCWCJSAPI.oMap.width;
    var imgHeight = goCWCJSAPI.oMap.height;
    var everythingWidth = imgWidth + 321;
    var mainTabContentHeight = imgHeight + 62;
    var infoTabFullHeight = imgHeight - 12 + nIESizeNudge;
    var sideTabContentHeight = imgHeight + nIESizeNudge;
    var bottomTabsTop = imgHeight + 37 - nIETopNudge;
    var layersContentHeight = imgHeight - 58 + nIESizeNudge;
    var sideTabHeight = imgHeight - 31 + nIESizeNudge;
    var infoTabBottomHeight = Math.floor(sideTabHeight *0.5);
    var infoTabTopHeight = Math.floor(sideTabHeight *0.5);
    var Print_Fit_Width = imgWidth + 96;
    var Print_Fit_Height = imgHeight + 51;

    var oLayer = CWCDHTML_GetLayer( 'divGeneral' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'layersContent' );
    if(oLayer)
    {
        oLayer.height = layersContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divLayers' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divQueries' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divNotes' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divInfo' );
    if(oLayer)
    {
         oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divInfoTop' );
    if(oLayer)
    {
        oLayer.height = infoTabTopHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divInfoBottom' );
    if(oLayer)
    {
        oLayer.height = infoTabBottomHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divInfoFull' );
    if(oLayer)
    {
        oLayer.height = infoTabFullHeight;
    }
 
    var oLayer = CWCDHTML_GetLayer( 'divPhoto' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divBlank' );
    if(oLayer)
    {
        oLayer.height = sideTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divQueriesTab' );
    if(oLayer)
    {
        oLayer.top = bottomTabsTop;
    }

    var oLayer = CWCDHTML_GetLayer( 'divInfoTab' );
    if(oLayer)
    {
        oLayer.top = bottomTabsTop;
    }

    var oLayer = CWCDHTML_GetLayer( 'divPhotoTab' );
    if(oLayer)
    {
        oLayer.top = bottomTabsTop;
    }

    // MainMapLayer
    var oLayer = CWCDHTML_GetLayer( 'divMaps' );
    if(oLayer)
    {
        oLayer.width = everythingWidth;
        oLayer.height = mainTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'divPrint' );
    if(oLayer)
    {
        oLayer.width = everythingWidth;
        oLayer.height = mainTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'printPreviewFrame' );
    if(oLayer)
    {
        oLayer.width = Print_Fit_Width;
        oLayer.height = Print_Fit_Height;
    }

    var oLayer = CWCDHTML_GetLayer( 'divHelp' );
    if(oLayer)
    {
        oLayer.width = everythingWidth;
        oLayer.height = mainTabContentHeight;
    }

    var oLayer = CWCDHTML_GetLayer( 'helpFrame' );
    if(oLayer)
    {
        oLayer.width = Print_Fit_Width;
        oLayer.height = Print_Fit_Height;
    }

    var oLayer = CWCDHTML_GetLayer( 'divTitleBar' );
    if(oLayer)
    {
        oLayer.width = everythingWidth;
    }

    var oLayer = CWCDHTML_GetLayer( 'MapTipsLayer' );
    if(oLayer)
    {
        MapTipsWPositionMapTips();
    }

    var oLayer = CWCDHTML_GetLayer( 'MapLayerDiv' );
    if(oLayer)
    {
        MapWPositionMapDHTML();
    }
}

function LayerStatusToChange()
{

    //alert('LayerStatusToChange');
    var nCount = 0;
    var offset = 0;
    var szLayerName = "";
    var szLayers = "";
    var szStatus = "";
    var szNewStatus = "";

    var doc = goCWCJSAPI.GetDocumentObject();//(this.bIE ) ? this.oContainer.document : this.oContainer.contentDocument;

    if(doc.forms[0].LAYERS_TO_CHANGE_STATUS)
    {
        szLayers = doc.forms[0].LAYERS_TO_CHANGE_STATUS.value;


    }
    //alert('mo3_jsapi:layers='+szLayers);
    //Count the number of occurences of the comma separator
    do
    {
        offset = szLayers.indexOf(',', offset);   
        nCount += (offset != -1)?1:0;

    }while (offset++ !=-1)
    nCount++;

    for (var i = 0; i < nCount; i++)
    {
        var nC = szLayers.indexOf(",");
        if(nC != -1)
        {
            iLayerIndex = parseInt(szLayers.substring(0, nC));
            szLayers = szLayers.substring(nC+1);
        }
        else
        {
            iLayerIndex = parseInt(szLayers);
        }

        szStatus = goCWCJSAPI.oMap.GetLayer(iLayerIndex).GetStatus();
        //alert('status='+szStatus)

        if(szStatus == "ON")
        {
            szNewStatus = "OFF";
        }
        else
        {
            szNewStatus = "ON";
        }

        goCWCJSAPI.oMap.GetLayer(iLayerIndex).SetStatus(szNewStatus);


        szStatus = goCWCJSAPI.oMap.GetLayer(iLayerIndex).GetStatus();
        //alert('status='+szStatus)

    }
}

function addGroupOnClickEvent(allLayersName)
{
    //alert('addGroupOnClickEvent');

    var oLayersContent = document.getElementById('layersContent');

    var i = 0;
    while(i < oLayersContent.childNodes.length)
    {
        //Get input element of the group
        var oGroup = oLayersContent.childNodes[i].firstChild;
        //alert(allLayersName[i]);

        if(goCWCJSAPI.bIE)
        {
            oGroup.attachEvent('onclick', ChangeGroupStatus);
            oGroup.group = allLayersName[i];
        }
        else
        {
            oGroup.addEventListener('click', ChangeGroupStatus, false);
            oGroup.group = allLayersName[i];
        }
        i++;
    }
}

var gszGroupLayers = Array();
function ChangeGroupStatus(evt)
{
    //alert('ChangeGroupStatus');
    var nCount = 0;
    var offset = 0;
    var szLayerInfo = "";
    var szLayers = "";
    var Status = "";
    var szNewStatus = "";
    var offset = 0;

    evt["target"] ? szGroupName = evt["target"]["group"] : szGroupName = evt["srcElement"]["group"];
    Status = evt["target"] ?  evt["target"]["checked"] : evt["srcElement"]["checked"];
    szNewStatus = Status ? "ON" : "OFF";

    var aszLayerNames = gszGroupLayers[szGroupName];
    for(var nLayerIndex in aszLayerNames)
    {
        // Update JSAPI layer
        var oLayer = goCWCJSAPI.oMap.GetLayerByName(aszLayerNames[nLayerIndex]);
        if(oLayer)
        {
            oLayer.SetStatus(szNewStatus);
        }

        // Update gaszLayerStatus (it's the COOKIE layer status)
		var i;
        for(var i = 0; i < gaszLayerStatus.length; i++)
        {
            if(gaszLayerStatus[i].substr(0,aszLayerNames[nLayerIndex].length+1) == aszLayerNames[nLayerIndex] + '|')
            {
                gaszLayerStatus[i] = aszLayerNames[nLayerIndex] + '|' +
                    (Status ? "1" : "0");
            }
        }
    }

    goCWCJSAPI.RefreshMap();

}


function initialize(allLayersName)
{
    goEventManager.registerForEvent( 'ON_QUERY', 'showInfoTab' );

    //alert('initializeForJSAPI');
    if(typeof goCWCJSAPI == "undefined")
    {
        return false;
    }

    goCWCJSAPI.RegisterEvent(MAP_SIZE_CHANGED, "LayerSetSizeInit");
    addGroupOnClickEvent(allLayersName);

}

