﻿// We need to globally store the number of identify requests going out because ESRI doesn't tell us which service they come back from.
var identifyCt = 0;

function setIdentify() {
	resetTools();
	mapconnections.push(dojo.connect(map, "onClick", doIdentify));
}

function doIdentify(evt) {
    //statusBox._addStatus("search", "Retrieving Data");
    identifyCt = 0;
	prepResultBox();
	identifyLayer.clear();
	var symbol = new esri.symbol.PictureMarkerSymbol('http://'+serverAddress + sitePath+'/sharedfiles/images/pushpin.png', 100, 100);
	var geometry = evt.mapPoint;
	identifyLayer.add(new esri.Graphic(geometry, symbol));
	//resultPanel._addResults("some test results...");
	
	//Set up the result panel
	resultPanel._clearAll();
	var localScale = document.getElementById("dispscale").value;
	
	resultPanel._addLayer("Development Activities", 0);
    resultPanel._addScaleDependentLayer("Property", 0, 35000);
    resultPanel._addLayer("Zoning", 0);
	
	for (service in view.services) {
	    var activeLayers = Array();

	    
	    
	    if (view.services[service].id == "Development_Activities") {

	        activeLayers.push(Number(view.services[service].layers[layer].layerId));
	        for (layer in view.services[service].layers) {
	            //resultPanel._addLayer(view.services[service].layers[layer].layerName, view.services[service].layers[layer].layerId);
	            if (view.services[service].layers[layer].minScale == 0 || localScale < view.services[service].layers[layer].minScale) {
	                activeLayers.push(Number(view.services[service].layers[layer].layerId));
	            }
	        }
	    }
	    else if (view.services[service].id == "Imagery") {

	    }
	    else {
	        for (layer in view.services[service].layers) {

	            if (view.services[service].layers[layer].layerName.indexOf("Road  Text") < 0 &&
	                    view.services[service].layers[layer].layerName.indexOf("Road Text") < 0 &&
	                    view.services[service].layers[layer].layerName.indexOf("Anno") != view.services[service].layers[layer].layerName.length-4) {

	                //alert("adding layer: " + view.services[service].layers[layer].layerName + " index: " + view.services[service].layers[layer].layerName.indexOf("Road Text"));

	                if (view.services[service].layers[layer].minScale == 0 || localScale < view.services[service].layers[layer].minScale) {
	                    //alert(view.services[service].id + ": " + view.services[service].layers[layer].layerId);
	                    activeLayers.push(Number(view.services[service].layers[layer].layerId));
	                    if (!view.services[service].layers[layer].ignore) {
	                        resultPanel._addLayer(view.services[service].layers[layer].layerName, view.services[service].layers[layer].layerId);
	                    }
	                } else if (!view.services[service].layers[layer].ignore && localScale >= view.services[service].layers[layer].minScale) {
	                    // Add layers that are not visible at the current scale
	                    // Exceptions for property layers
	                    if (view.services[service].id != "Property" || (view.services[service].layers[layer].layerName == "Property Research" || view.services[service].layers[layer].layerName == "Road Casings")) {
	                        resultPanel._addScaleDependentLayer(view.services[service].layers[layer].layerName, view.services[service].layers[layer].layerId, view.services[service].layers[layer].minScale);
	                    }
	                }

	            }
	        }
	    }
		//alert("active layers for " + view.services[service].id + ": " + activeLayers);
	    if (activeLayers.length > 0) {
	        statusBox._addStatus("identify" + identifyCt, "Retrieving " + view.services[service].id.replace("_", " ") + " Data");
	        identifyCt++;
		    // Do the identify task
		    var identifyTask = new esri.tasks.IdentifyTask(view.services[service].url);
		    identifyParams.geometry = evt.mapPoint;
		    identifyParams.mapExtent = map.extent;
		    identifyParams.layerIds = activeLayers;
		    //alert("identifyCt ->: " + identifyCt);
		    identifyTask.execute(identifyParams, handleIdentifyResult);
		}
	}

}

function handleIdentifyResult(results) {

    identifyCt--;
    //alert("identifyCt: " + identifyCt + "if: " + (identifyCt <= 0));
    statusBox._removeStatus("identify" + identifyCt);

    resultPanel._addResults(results);
}