﻿dojo.require("dijit.dijit"); // optimize: load dijit layer
dojo.require("dijit.layout.AccordionContainer");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.Toolbar");
dojo.require("dijit.ColorPalette");
dojo.require("dijit.Tooltip");
dojo.require("esri.map");
dojo.require("esri.toolbars.navigation");
dojo.require("esri.layers.agstiled");
dojo.require("esri.toolbars.draw");
dojo.require("dojo.parser");
dojo.require('dojo.fx');
dojo.require("dojo.NodeList-fx");
dojo.require("dijits.overview.OverviewMap");

var map, timer, view, navToolbar, tb, tbProx, tbSelect, tbMeasure;
var overviewMapDijit;
var identifyTask, identifyParams, identifyIdx;
var mapconnections = [];
var viewServiceCt = 0;
var drawingLayer, selectLayer, identifyLayer, showLayer;
var drawingColor;
var defMapService;
var resultPanel;
var statusBox;
var proximityPoint;
var addressLabelIds;
var zoomDirectionIn = true;

function init() {

    esriConfig.defaults.map.slider = { right: "10px", top: "50px", width: null, height: "100px" };
	
	SetPageLayout();
	toggleResultBox(false);
	togglePrintBox(false);
	toggleMeasureBox(false);
	toggleScaleBox(false);
	toggleLatLongBox(false);
	
	drawingColor = new dojo.Color([0,0,0]);

	statusBox = new NGCJS.StatusBox(dojo.byId("statusbox"), dojo.byId("statusmsg"));
	statusBox._addStatus("map", "Loading Map");

	map = new esri.Map("map", {
	    nav: false
	});
	//map.isScrollWheelZoom = true;
	navToolbar = new esri.toolbars.Navigation(map);

	//dojo.byId("accordian").setAttribute('displayed', 'on');

	locator = new esri.tasks.Locator(locatorServiceUrl);
	
	
	// Event handlers
	dojo.connect(dojo.byId("accordian_tab"),'onclick',toggleAccordian);
	dojo.connect(window, "onresize", handleResize);
	dojo.connect(map, "onLoad", initFunctionality);
	dojo.connect(dojo.byId("viewmenu"), "onchange", loadView);
	dojo.connect(dojo.byId("statemenu"), "onchange", loadMap);
	dojo.connect(navToolbar, "onExtentHistoryChange", extentHistoryChangeHandler);
	dojo.connect(map, "onExtentChange", displayScale);
	//dojo.connect(map, "onMouseMove", displayLocation);

	setUpSearchButtons();

	// Load the saved maps menu
	if (document.getElementById('statemenu')) {
	    jsel.loadStateData(document.getElementById('statemenu'), "0");
	}
	// Load the default map view
    jsel.loadData(document.getElementById('viewmenu'), defaultView);
    
    //alert("testing: "+view.services["default"].id);

    identifyIdx = 0;

    // Hide all the drawing tool options
    setDrawopt("");

    // Show the IE print warning
    dojo.isIE ? dojo.style(dojo.byId("ieprintwarning"), "display", "block") : dojo.style(dojo.byId("ieprintwarning"), "display", "none");
}


function setUpSearchButtons() {
    dojo.connect(dojo.byId("owner"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doOwnerSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("street_number"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doStreetSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("street_name"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doStreetSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("taxacct"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doTaxAcctSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("plat"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doPlatSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("wssc"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doWSSCSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("taxmap"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doTaxMapSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("park"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doParkSearch();
            return false;
        } else {
            return true;
        }
    });
    dojo.connect(dojo.byId("street_type"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doStreetSearch();
            return false;
        } else {
            return true;
        }
    });
    
    dojo.connect(dojo.byId("case_number"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doDAMSCaseSearch();
            return false;
        } else {
            return true;
        }
    });

    dojo.connect(dojo.byId("searchC"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doDAMSGeoSearch();
            return false;
        } else {
            return true;
        }
    });

    dojo.connect(dojo.byId("miscB"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            doDAMSMiscSearch();
            return false;
        } else {
            return true;
        }
    });

    dojo.connect(dojo.byId("dispscale"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            setScale();
            return false;
        } else {
            return true;
        }
    });

    dojo.connect(dojo.byId("mapx"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            setLocation();
            return false;
        } else {
            return true;
        }
    });

    dojo.connect(dojo.byId("mapy"), "onkeypress", function(evt) {
        var keyCode = null;

        if (evt.which) {
            keyCode = evt.which;
        } else if (evt.keyCode) {
            keyCode = evt.keyCode;
        }
        if (13 == keyCode) {
            setLocation();
            return false;
        } else {
            return true;
        }
    });
}


function initFunctionality(map){

    //identify proxy page to use if the toJson payload to the geometry service is greater than 2000 characters.
    //If this null or not available the buffer operation will not work.  Otherwise it will do a http post to the proxy.
    esriConfig.defaults.io.proxyUrl = "/pgatlas/proxy.ashx";
    esriConfig.defaults.io.alwaysUseProxy = false;
    
    // Add the drawing layer
    drawingLayer = new esri.layers.GraphicsLayer();
    map.addLayer(drawingLayer);
    map.reorderLayer(drawingLayer,1);
    
    // Add the select layer
    selectLayer = new esri.layers.GraphicsLayer();
    map.addLayer(selectLayer);
    map.reorderLayer(selectLayer,1);
    
    // Add the identify layer
    identifyLayer = new esri.layers.GraphicsLayer();
    map.addLayer(identifyLayer);
    map.reorderLayer(identifyLayer, 1);

    // Add the identify layer
    showLayer = new esri.layers.GraphicsLayer();
    map.addLayer(showLayer);
    map.reorderLayer(showLayer, 1);

    // Add the plat_hilite layer
    platLayer = new esri.layers.GraphicsLayer();
    map.addLayer(platLayer);
    map.reorderLayer(platLayer, 1);

    // Set up the map legend
	legend = new NGCJS.Legend(dojo.byId("toc"), {url:"global"});
	legend.setMap(map);
	// Set up the result panel
	resultPanel = new NGCJS.ResultPanel(dojo.byId("resultlist"));
	
	// Add all the esri toolbars
	tb = new esri.toolbars.Draw(map);
        //        tb.setDrawAntiClockwisePolygons(true);
        //        tb.setReturnLineAsPolyline(false);
    dojo.connect(tb, "onDrawEnd", addGraphic);
    tbSelect = new esri.toolbars.Draw(map);
    dojo.connect(tbSelect, "onDrawEnd", doSelect);
    tbSelectDAMS = new esri.toolbars.Draw(map);
    dojo.connect(tbSelectDAMS, "onDrawEnd", doSelectDAMS);
    //alert("tbSelectDAMS: "+tbSelectDAMS);
	tbProx = new esri.toolbars.Draw(map);
    dojo.connect(tbProx, "onDrawEnd", doProxSearch);
    tbMeasure = new esri.toolbars.Draw(map);
    dojo.connect(tbMeasure, "onDrawEnd", doMeasure);
    tbZoom = new esri.toolbars.Draw(map);
    dojo.connect(tbZoom, "onDrawEnd", doCustomZoom);
    tbLatLong = new esri.toolbars.Draw(map);
    dojo.connect(tbLatLong, "onDrawEnd", displayLocation);
	// Open up the accordian
	toggleAccordian( null, true );
	
	// Set up identify task
	identifyParams = new esri.tasks.IdentifyParameters();
    identifyParams.tolerance = 3;
    identifyParams.returnGeometry = true;
    //identifyParams.layerIds = [0];
    identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;

    statusBox._removeStatus("map");

    setOverview();


}

function clearDynamicMapLayers() {
    //map.removeAllLayers();
    //alert("layers - before!: " + map.layerIds + "(" + map.layerIds.length + ")");
    //for (ridx = 0; ridx < map.layerIds.length;  ridx++) {
    while( map.layerIds.length > 0 ){
        //alert("removing: " + map.layerIds[ridx]);
        map.removeLayer(map.getLayer(map.layerIds[0]));
    }
    //alert("layers - after: " + map.layerIds);
    // Add the drawing layer
}

function setOverview() {
    var layer = new esri.layers.ArcGISDynamicMapServiceLayer(overviewServiceUrl);
    layer.setImageFormat("png24");

    var createOverviewMap = function() {
        overviewMapDijit = new dijits.overview.OverviewMap({
            map: map,
            baseLayer: layer,
            width: 300,
            height: 250,
            attachTo: "bottom-right",
            expandFactor: 2.5
        });
        overviewMapDijit.startup();
        dojo.style(dojo.byId("status"), "display", "none");
    };

    if (layer.loaded) {
        createOverviewMap();
    }
    else {
        dojo.connect(layer, "onLoad", createOverviewMap);
    }
}

function handleResize() {
	//clear any existing resize timer
	clearTimeout(timer);
	//create new resize timer with delay of 500 milliseconds
	timer = setTimeout(function() { SetPageLayout(); map.resize(); }, 500);
}

function toggleAccordian( evt, pShow ) {

//    var display = dojo.byId("accordian").getAttribute('displayed');
//
//	if (pShow === undefined && display == 'on') {
//		pShow = false;
//	}
//	else if (pShow === undefined && display != 'on') {
//		pShow = true;
//	}
//	
//	if ( !pShow ) {
//		//dojo.toggleClass("accordian_contents", "hidden");
//		dojo.query('#accordian_contents').wipeOut({
//			duration: 50
//		}).play();
//		dojo.byId("accordian").setAttribute('displayed', 'off');
//		dojo.style("accordian_btn", "backgroundImage", "url(App_Themes/Default/Images/accordian-tab_closed.gif)");
//	}else{
//		dojo.query('#accordian_contents').wipeIn({
//			duration: 50
//		}).play();
//		dojo.byId("accordian").setAttribute('displayed', 'on');
//		dojo.style("accordian_btn", "backgroundImage", "url(App_Themes/Default/Images/accordian-tab.gif)");
    //	}

    if (pShow === undefined && dojo.query('#accordian_contents').style('display') == 'block') {
        pShow = false;
    } else if (pShow === undefined && dojo.query('#accordian_contents').style('display') == 'none') {
        pShow = true;
    }

    if (!pShow) {
        dojo.query('#accordian_contents').style('display', 'none');
        dojo.style("accordian_btn", "backgroundImage", "url(App_Themes/Default/Images/accordian-tab_closed.gif)");
    } else {
        dojo.query('#accordian_contents').style('display', 'block');
        dojo.style("accordian_btn", "backgroundImage", "url(App_Themes/Default/Images/accordian-tab.gif)");
    }
}

function prepResultBox(){
	// Add loading graphic here
	dojo.byId("resultlist").innerHTML = "<div class='loading'>Loading...</div>";
	toggleResultBox( true );
}

function toggleResultBox( pShow ){
	if ( !pShow ) {
		dojo.query('#resultbox').style('display','none');
	}else{
		dojo.query('#resultbox').style('display','block');
	}
}

function extentHistoryChangeHandler() {
	dijit.byId("zoomprev").disabled = navToolbar.isFirstExtent();
	//dijit.byId("zoomnext").disabled = navToolbar.isLastExtent();
}

// Utility functions
// --------------------------------------------------------------------------------------
function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return result;
}

function SetPageLayout(){
	var mapBox = dojo.coords(document.body);
	
	// Set the map height
	mapBox.h -= dojo.coords("header").h;
	//mapBox.h -= dojo.coords("hdrTitle").h;
	mapBox.h -= dojo.coords("navigation").h;
	mapBox.h -= dojo.coords("toolbar").h;
	mapBox.h -= dojo.coords("footer").h;
	mapBox.h -= 1;

	mapBox.w -= 1;
	
	dojo.marginBox("map",mapBox);
	
	// Copy the map for the resultbox
	var resultBox = dojo.coords("map");
	resultBox.h -= 100;
	resultBox.w -= 100;
	resultBox.t = 50;
	resultBox.l = 50;
	dojo.marginBox("resultbox",resultBox);
	
	// Copy the map for the accordian
	var accordianBox = dojo.coords("map");
	
	// Maintain the accordian's default width set in the css
	//accordianBox.w = dojo.coords("accordian").w;
	accordianBox.w = accordianWidth;
	
	//alert("accordian height: "+accordianBox.h);
	toggleAccordian( null, true );
	var acc = dijit.byId("accordian_contents");
	acc.resize({h: accordianBox.h, w: accordianBox.w});
	acc.layout();
	//toggleAccordian( null, false );

	//dojo.style("resultsButton", "left", ((mapBox.w - dojo.style("resultsButton", "width")) - 40));
}

function loadView( evt ){
    try {
        clearDynamicMapLayers();
        console.log( "loading view: "+evt.target.value );
        statusBox._addStatus( "view", "Loading View" );
        esri.request({
            url: viewServiceUrl,
            content: {
                f: "json",
                view: evt.target.value,
		lu: currentUserLogin
            },
            callbackParamName: "callback",
            load: dojo.partial(function(response) {
            view = response;
                scaleServicePtr = 0;
                scaleIdPtr = 0;
                loadScales();
                //loadServices();
            }),
            error: function(err) {
                console.error("Unable to get view information" + err);
            }
        });
    } 
    catch (e) {
        console.error(e);
    }
}

function setDef() {
    //alert("Setting layer definition");
    statusBox._addStatus("visibility", "Updating Map Layers");
    var caseWhere = "";

    // Build the where clause
    var whereCt = 0;
    dojo.forEach(dojo.query(".damsstatus"), function(input) {
        //alert("value: " + input.value);
        if (input.checked) {
            if (caseWhere != "") {
                caseWhere += " OR ";
            }
            caseWhere += input.value;
            whereCt++;
        }
    });
    
    // Eliminate the where clause if all are checked
    //alert(" whereCt: " + whereCt + " len: " + dojo.query(".damsstatus").length);
    if (whereCt == dojo.query(".damsstatus").length) {
        caseWhere = "";
    }

    //alert("caseWhere: " + caseWhere);
    
    // Add the where clause for all layers
    var layerDefinitions = [];
    for (idx = 0; idx < defMapService.layerInfos.length; idx++) {
        layerDefinitions[idx] = caseWhere;
    }
    //layerDefinitions[20] = "ROAD_TYPE = 'I' OR ROAD_TYPE = 'S'";
    defMapService.setLayerDefinitions(layerDefinitions);
}

function statusSelect(pElement) {
    //alert(pElement.innerHTML);
    if (pElement.innerHTML == "Select All") {
        dojo.forEach(dojo.query(".damsstatus"), function(input) {
            input.checked = true;
        });
        pElement.innerHTML = "Select None";
    } else {
        dojo.forEach(dojo.query(".damsstatus"), function(input) {
            input.checked = false;
        });
        pElement.innerHTML = "Select All";
    }
}


// This accomodates ESRI's lack of a scale addribute in the layer object. 
// Scale is queried from the map service for each layer and inserted into the view object.
var scaleServicePtr = 0;
var scaleIdPtr = 0;

function loadScales() {
    //var viewScale = response;

    esri.request({
        url: view.services[scaleServicePtr].url + "/" + view.services[scaleServicePtr].layers[scaleIdPtr].layerId,
        content: {
            f: "json"
        },
        callbackParamName: "callback",
        load: dojo.partial(function(result) {

            if (!view.services[scaleServicePtr].layers[scaleIdPtr].ignore) {
                //alert(result.name+": " + result.minScale + ", " + result.maxScale);
                view.services[scaleServicePtr].layers[scaleIdPtr].minScale = result.minScale;
                view.services[scaleServicePtr].layers[scaleIdPtr].maxScale = result.maxScale;
            }
            if (scaleIdPtr < view.services[scaleServicePtr].layers.length - 1) {
                scaleIdPtr++;
                loadScales();
            } else if (scaleServicePtr < view.services.length - 1) {
                scaleServicePtr++;
                scaleIdPtr = 0;
                loadScales();
            } else {
                loadServices();
            }
        }),
        error: function(err) {
        console.error("Unable to get layer scale information" + err + " Service: " + scaleServicePtr + " Layer: " + scaleIdPtr);
            if (scaleIdPtr < view.services[scaleServicePtr].layers.length - 1) {
                scaleIdPtr++;
                loadScales();
            } else if (scaleServicePtr < view.services.length - 1) {
                scaleServicePtr++;
                scaleIdPtr = 0;
                loadScales();
            } else {
                loadServices();
            }
        }
    });
}

function loadServices( ){
    statusBox._removeStatus( "view" );
    statusBox._addStatus( "service", "Retrieving Data" );
	console.log("loading services");
	
    //Clear out the old stuff
    for( layerId in map.layerIds ){
        map.removeLayer(map.getLayer(map.layerIds[layerId]));
        //alert(map.layerIds[layerId]);
        //alert("id:"+map.getLayer(layerId).id+"url: "+map.getLayer(layerId).url);
    }
    //map.removeAllLayers();
    tocHTML = "";
    dojo.byId("toc").innerHTML = tocHTML;
    jsel.removeChildren(document.getElementById("selectLayer"));
    var tempLayer;
    for (i in view.services) {
        console.log(i + ": " + view.services[i].id);
        urlWorkaround = view.services[i].url;
        //urlWorkaround = urlWorkaround.replace("162.84.98.238", "10.5.5.246");
        //alert("loading layer: " + urlWorkaround);
        tempLayer = new esri.layers.ArcGISDynamicMapServiceLayer(urlWorkaround, {
            id: view.services[i].id,
            visible: false
        });
        //tempLayer.setImageFormat("png24");
        viewServiceCt++;
        if (view.services[i].id == "Development_Activities") {
            //alert("Default Layer Found");
            defMapService = tempLayer;
        }
        map.addLayer(tempLayer);
        dojo.connect(tempLayer, "onUpdate", function() {
            if (viewServiceCt <= 1) {
                statusBox._removeStatus("service");
                statusBox._removeStatus("visibility");

                viewServiceCt = 0;
            } else {
                viewServiceCt--;
            }
            var localScale = document.getElementById("dispscale").value;
            for (i in view.services) {
                for (j in view.services[i].layers) {
                    // There's probably an easier way to do this but max/min scales are confusing the hell out of me right now
                    if (view.services[i].layers[j].minScale == 0 && view.services[i].layers[j].maxScale == 0) {
                        dojo.removeClass(dojo.byId(i + "_" + j), "disabled");
                    } else if (view.services[i].layers[j].minScale > 0 && view.services[i].layers[j].maxScale <= 0) {
                        if (localScale > view.services[i].layers[j].minScale) {
                            //alert("layer "+i+"_"+j+" should be disabled");
                            dojo.addClass(dojo.byId(i + "_" + j), "disabled");
                        }
                        if (localScale <= view.services[i].layers[j].minScale) {
                            //alert("layer "+i+"_"+j+" should be disabled");
                            dojo.removeClass(dojo.byId(i + "_" + j), "disabled");
                        }
                    } else if (view.services[i].layers[j].maxScale > 0 && view.services[i].layers[j].minScale <= 0) {
                        if (localScale < view.services[i].layers[j].maxScale) {
                            //alert("layer "+i+"_"+j+" should be disabled");
                            dojo.addClass(dojo.byId(i + "_" + j), "disabled");
                        } else {
                            dojo.removeClass(dojo.byId(i + "_" + j), "disabled");
                        }
                    } else {
                        if (localScale >= view.services[i].layers[j].maxScale && localScale <= view.services[i].layers[j].minScale) {
                            //alert("layer "+i+"_"+j+" should be disabled");
                            dojo.removeClass(dojo.byId(i + "_" + j), "disabled");
                        } else {
                            dojo.addClass(dojo.byId(i + "_" + j), "disabled");
                        }
                    }
                }
            }
        });
        for( j in view.services[i].layers ) {
            if ((!view.services[i].layers[j].ignore) && (view.services[i].layers[j].legend.length > 0) && view.services[i].id != "Imagery") {
                //alert("layer: "+view.services[i].layers[j].layerId + "(" + view.services[i].layers[j].layerName + ") ["+view.services[i].layers[j].legend.length+"]");
                // Create layer menu item in select menu
                jsel.createOpt(view.services[i].url+"/"+view.services[i].layers[j].layerId, view.services[i].layers[j].layerName, document.getElementById("selectLayer"), "");
                
            }
        }
    }
}

function resetTools(pOption){
    dojo.query(".custbtndown").removeClass("custbtndown");
    dojo.query(".drawbtndown").removeClass("drawbtndown");
	navToolbar.deactivate();
	tb.deactivate();
	tbSelect.deactivate();
	tbSelectDAMS.deactivate();
	tbProx.deactivate();
	tbMeasure.deactivate();
	tbZoom.deactivate();
	dojo.forEach(mapconnections, dojo.disconnect);
	if (pOption === undefined) {
	    toggleMeasureBox(false);
	}
	toggleScaleBox(false);
	toggleLatLongBox(false);
	map.setMapCursor('default');
}

function toggleScaleBox(pShow) {
    if (!pShow) {
        dojo.query('#scalebox').style('display', 'none');
    } else {
    dojo.query('#scalebox').style('display', 'block');
    }
}

function toggleLatLongBox(pShow) {
    if (!pShow) {
        dojo.query('#latlongbox').style('display', 'none');
    } else {
        dojo.query('#latlongbox').style('display', 'block');
    }
}

function clearMap() {
    resultPanel._clearAll();
    resultPanel._writeResults();
    selectLayer.clear();
    identifyLayer.clear();
    showLayer.clear();
    platLayer.clear();

}

function selectAllMulti(pId) {
    var selectBox = document.getElementById(pId);
    //alert(selectBox.options.length);
    for (var idx = 0; idx < selectBox.options.length; idx++) {
        //alert(idx);
        //alert(selectBox.options[0].selected);
        selectBox.options[idx].selected = true;
    }
}

function isDams(pLayerName) {
    //alert("calling isDams: " + pLayerName);

//    result = dojo.forEach(arrDamsLayers, function(damsLayer) {
//        //alert(damsLayer + " == " + pLayerName);
//        if (damsLayer == pLayerName) {
//            return true;
//        }
//    });

    //alert(result);

    //alert("testing: "+arrDamsLayers);

    for (damsIdx in arrDamsLayers) {
        //alert(arrDamsLayers[damsIdx] + " == " + pLayerName);
        if (arrDamsLayers[damsIdx] == pLayerName) {
            return true;
        }
    }
    
    return false;
}

dojo.addOnLoad(init);