﻿var adjoinersStore;
var adjoinerFeature;
var adjoinerGraphics;
var closeAdjoinersHandle;
var mapRedrawHandle;
var adjoiningPID = "";

function doAdjoiners(PID) {

    map.infoWindow.hide();

    adjoiningPID = PID;

    map.graphics.clear();
    var graphicLayersIds = map.graphicsLayerIds;
    dojo.forEach(graphicLayersIds, function(layerId) {
        var glayer = map.getLayer(layerId);
        glayer.clear();
    });


    dojo.byId("details-sidebar-header").innerHTML = "";
   

    dojo.byId("details-sidebar-content").innerHTML = idworkingDivHTML;
    showPanel("details-sidebar");


    // first find the parcel

    // Set up query tasks
    var queryTask = new esri.tasks.QueryTask(searchURL + "/" + parcels_layerID);

    // Set up query for surrounding parcels
    var query = new esri.tasks.Query();
    query.outFields = this.outFields;
    query.where = "CYPAR = '" + PID + "'";
    query.returnGeometry = true;
    queryTask.execute(query, function(results) {
        adjoinerFeature = results.features[0];
        var aTask = new findAjoiningParcelsTask();
        aTask.doQuery(adjoinerFeature.geometry);
    });
}

function findAjoiningParcelsTask() {

    this.parcelHightlightSymbol;
    this.adjoinersHighlightSymbol;
    this.adjoinersSelectedSymbol;
    this.originalGeometry;

    this.outFields = parcels_return_fields;
    this.doQuery = function(geometry) {

        // Set up query tasks
        queryTaskSurroundingParcels = new esri.tasks.QueryTask(searchURL + "/" + parcels_layerID);

        // Reference proxy page
        esriConfig.defaults.io.proxyUrl = proxyPage;
        esriConfig.defaults.io.alwaysUseProxy = false;

        this.orginalGeometry = geometry;

        // Set up query for surrounding parcels
        querySurroundingParcels = new esri.tasks.Query();
        querySurroundingParcels.outFields = this.outFields;
        querySurroundingParcels.returnGeometry = true;
        querySurroundingParcels.geometry = geometry;
        querySurroundingParcels.spatialRelationship = esri.tasks.Query.SPATIAL_REL_TOUCHES;
        queryTaskSurroundingParcels.execute(querySurroundingParcels, adjoiners_onComplete);

    }
    
}

function adjoiners_onComplete(results) {

    // highlight symbol
    var symbol =  new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
                  new dojo.Color([255, 0, 0]), 3);

    var aPin = adjoinerFeature.attributes["CYPAR"];


    var s = [];
  
    // write out the header rows
    s.push("<div class=\"gray\">");
    s.push("<table cellspacing=\"1\" cellpadding=\"2\" border=\"0\" width=\"100%\">");
    s.push("<tr class=\"h1\"><td>&nbsp;</td><td>PIN</td><td>Owner</td><td>Value</td></tr>");

    // Add result features to map and table
    var j = 0;
    for (var i = 0, il = results.features.length; i < il; i++) {


        var pin = results.features[i].attributes["CYPAR"];
        var owner = results.features[i].attributes["OWNER"];
        var totalval = results.features[i].attributes["FINAL_VALUE"];

        var cssClass = "r1";
        if (i % 2 == 0)
            cssClass = "r2";

        var markerURL = "images/markers/marker" + (i+1) + ".png";

        s.push("<tr class='" + cssClass + "'><td><img src=\"" + markerURL + "\" alt=\"" + (i + 1) + "\"/></td><td>" + pin + "</td><td>" + owner + "</td><td>" + dojo.currency.format(totalval, { currency: "USD", places: 0 }) + "</td></tr>");

        //console.debug("cursor: " + i);
        var curFeature = results.features[i];
        var graphic = curFeature;
        

        //Add result feature to map
        // Create template for the info window
        var parcels_content = parcelBrief(graphic, j);
        infoTemplate = new esri.InfoTemplate("Adjacent to: " + adjoiningPID, parcels_content);

        //Add result feature to map
        var clone = new esri.Graphic(graphic.toJson())     
        clone.setSymbol(parcelSelectedSymbol);        
        map.graphics.add(clone);

        // get center
        var fExtent = graphic.geometry.getExtent();
        var centerPt = new esri.geometry.Point;
        centerPt = fExtent.getCenter();

        // add the point to the map       
        var mSym = new esri.symbol.PictureMarkerSymbol(markerURL, 20, 34);
        var gPt = new esri.Graphic(centerPt, mSym, graphic.attributes, infoTemplate);
        map.graphics.add(gPt);

    }
        
    s.push("</table></div>");

    var aHTML = s.join("");


    // set up the header
    var exportCmd = function() {
        var items = []; //all items to be stored in data store
        for (var i = 0, il = results.features.length; i < il; i++) {
            items.push(results.features[i].attributes); //append each attribute list as item in store
        }

        //Create data object to be used in store
        var data = {
            items: items
        };

        var iframeDocument = dojo.isIE ? printingHiddenFrame.contentWindow.document : printingHiddenFrame.contentDocument;
        iframeDocument.getElementById("exportData").value = dojo.toJson(data);
        iframeDocument.getElementById("export").submit();
    };

    dojo.connect(dojo.byId("adjoinersExport"), "onclick", exportCmd);
    dojo.connect(dojo.byId("adjoinersExportLink"), "onclick", exportCmd);

    dojo.byId("details-sidebar-content").innerHTML = aHTML;
    dojo.byId("details-sidebar-adjoiners").style.display = "block";
    showPanel("details-sidebar");

    currentResultSet = results;

    try {
        var fullExt = esri.graphicsExtent(map.graphics.graphics);
        if (fullExt != null)
            map.setExtent(fullExt.expand(1.5));
    } catch (Error) {
        console.warn("An Error occurred in the application in routine 'zoomToSelected'", Error);
    }
    
   
}




