﻿var layerCt;
var layerCtId;
var bufferGeo;

function doProxSearch(geometry){
	//Geometry Service Endpoint
	var symbol = new esri.symbol.SimpleMarkerSymbol();
	selectLayer.clear();
	var gsvc = new esri.tasks.GeometryService(geometryServiceUrl);


	dojo.connect(gsvc, "onBufferComplete", function(graphics) {
	var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol("dashdot", new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 0, 0, 0.25]));
	    var graphic = new esri.Graphic(graphics[0].geometry, symbol);
	    selectLayer.add(graphic);

	    // Zoom the map to the proximity result
	    var newExtent = graphics[0].geometry.getExtent();
	    newExtent.xmin -= zoomPointEnvelope;
	    newExtent.ymin -= zoomPointEnvelope;
	    newExtent.xmax += zoomPointEnvelope;
	    newExtent.ymax += zoomPointEnvelope;
	    newExtent.spatialReference = map.spatialReference;
	    map.setExtent(newExtent);

	    //Set up the result panel
	    prepResultBox();
	    resultPanel._clearAll();

	    layerCtId = 0;
	    layerCt = 0;
	    bufferGeo = graphics[0].geometry;
	    handleBufferResult();

	});

	var graphic = new esri.Graphic(geometry, symbol);
	proximityPoint = geometry;
	var params = new esri.tasks.BufferParameters();
	params.features = [ graphic ];
	
	params.distances = [ dojo.byId('bufferDistance').value ];
	params.unit = esri.tasks.BufferParameters.UNIT_STATUTE_MILE;
	params.bufferSpatialReference = map.spatialReference;
	gsvc.buffer(params);
}

function handleBufferResult() {
    var selObj = dojo.byId('bufferLayer');
    for (i = layerCt; i < selObj.options.length; i++) {
        if (selObj.options[i].selected) {
            //selectedArray[count] = selObj.options[i].value;
            //alert("value: " + selObj.options[i].value);
            //handleBufferResult(selObj.options[i].value);
            layerCtId = selObj.options[i].value;
            layerCt = i+1;
            queryProximityLayer();
            break;
        }
    }
}

function queryProximityLayer() {


    var queryTask = new esri.tasks.QueryTask(String(layerCtId));

    dojo.connect(queryTask, "onComplete", function(fset) {

        //alert("layerCtId: " + layerCtId);
        resultPanel._addLayer(dojo.byId('bufferLayer').options[layerCt - 1].text, String(layerCtId));

        //create symbol for selected features
        var symbol = new esri.symbol.SimpleMarkerSymbol();
        symbol.style = esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE;
        symbol.setSize(8);
        symbol.setColor(new dojo.Color([255, 255, 0, 0.5]));

        //var infoTemplate = new esri.InfoTemplate("Block: ${BLOCK}", "${*}");

        var resultFeatures = fset.features;
        for (var i = 0, il = resultFeatures.length; i < il; i++) {
            var graphic = resultFeatures[i];
            graphic.setSymbol(symbol);
            //graphic.setInfoTemplate(infoTemplate);
            selectLayer.add(graphic);
        }

        // Reformat ESRI's inconsistant results to conform with Identify model
        dojo.forEach(resultFeatures, function(layer) {
            layer["feature"] = layer;
            layer["layerName"] = dojo.byId('bufferLayer').options[layerCt - 1].text;

            layer["feature"].attributes["Distance"] = roundNumber((Math.floor(esri.geometry.getLength(proximityPoint, layer["feature"].geometry)) / 5280), 2) + " Miles";
        });

        resultPanel._addResults(resultFeatures);

        handleBufferResult();
    });

    statusBox._addStatus("search", "Retrieving Data");

    var query = new esri.tasks.Query();
    query.outFields = ["*"];
    query.returnGeometry = true;
    query.geometry = bufferGeo;
    queryTask.execute(query);

}
function clearProximity() {
    resultPanel._clearAll();
    resultPanel._writeResults();
    selectLayer.clear();
}