﻿// JScript File
var subdivTimer = 0;
var subdivToSearch = "";

function cleanSubdivisionList()
{
    document.getElementById('selSubdivisions').options.length = 0;
}

function getSubdivsionNames(subdivision) {
    //cleanout anything in the current list
    cleanSubdivisionList();
    
    //clear out the timer
    clearTimeout(subdivTimer);
    
    //set the search string
    subdivToSearch = subdivision.toUpperCase();
    if (subdivision.length < 3) {
        return;
    }            

    //Don't fire the function until the user has paused for half a second
    //this should help eliminate needless trips back to the server
    //subdivTimer = setTimeout(function, 500);
    subdivTimer = setTimeout(function(){
        showSubdivisionBusy();
        var params = {"subdivision":'"' + subdivision.toUpperCase() + '"', "searchMethod":"0"};
        dojo.xhrGet(
        {
            url: "./wsSearches.asmx/GetSubdivisionNameMatches",
            handleAs: "json",
            contentType: "application/json; charset=utf-8",
            content: params,
            load: OnSubdivisionComplete,
            error: function(error,args){console.warn("error!",error);}
        });
    }, 800);
    
}
        
function OnSubdivisionComplete(results) {
    //cleanSubdivisionList();
    
    var newResults = dojo.fromJson(results);
    var lBox = dojo.byId("selSubdivisions");

    for (var i=0, il=newResults.length; i<il; i++) {
        var subdiv = newResults[i];
        if (subdiv != null) {
            var y=document.createElement('option');
            y.text=subdiv.SUBDIVISION_NAME;
            y.value=subdiv.OBJECT_ID;
            lBox.add(y);
        }
    }
    
    //hide the busy graphic
    hideSubdivisionBusy();               
}

function setSubdivisonText() {
    var subdivs = document.getElementById('selSubdivisions');
    var subdivName = subdivs.options[subdivs.selectedIndex].text;
    document.getElementById("txtSubdivisionName").value = subdivName;
}

function locateSubdivision() {
    var subdivName = document.getElementById('selSubdivisions').text;
    var subdivID = document.getElementById("selSubdivisions").value;
    document.getElementById("txtSubdivisionName").text = subdivName;
    var params = {"objectID":'"' + subdivID + '"'};
    dojo.xhrGet(
    {
        url: "./wsSearches.asmx/GetSubdivisionPolygon",
        handleAs: "json",
        contentType: "application/json; charset=utf-8",
        content: params,
        load: OnSubdivisionPolygonComplete,
        error: function(error,args){console.warn("error!",error);}
    });    
}

function OnSubdivisionPolygonComplete(results) {
    map.graphics.clear();
    var polyPoints = dojo.fromJson(results);
    var allPoints = new Array;
    for (i = 0, pointCount = polyPoints.length; i < pointCount; i++) {
        var thisPolyPoint = polyPoints[i];
        var thisPoint = new esri.geometry.Point(thisPolyPoint.X, thisPolyPoint.Y, map.spatialReference)
        allPoints[i] = thisPoint;
    }

    var subdivPolygon = new esri.geometry.Polygon();
    subdivPolygon.addRing(allPoints);
    subdivPolygon.spatialReference = map.spatialReference;

    //set the graphic symbology
    var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_NULL, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([128,0,0,1]), 3), new dojo.Color([255,255,0,0.1]));

    // Add the polygon to map
    //var symbol = new esri.symbol.SimpleFillSymbol().setStyle(esri.symbol.SimpleFillSymbol.STYLE_SOLID);
    polygonGraphic = new esri.Graphic(subdivPolygon, symbol);
    map.graphics.add(polygonGraphic);
    
    var subdivExtent = new esri.geometry.Extent(polygonGraphic.geometry.getExtent().xmin, polygonGraphic.geometry.getExtent().ymin, polygonGraphic.geometry.getExtent().xmax, polygonGraphic.geometry.getExtent().ymax, map.spatialReference)
    map.setExtent(subdivExtent.expand(1.2));
}
function showSubdivisionBusy() {
    var x = dojo.byId("divSubdivisionBusy");
    x.style.left = "17px";
    x.style.top = "84px";
    x.style.visibility = "visible";
    x.style.display = "block";
}

function hideSubdivisionBusy() {
    var x = dojo.byId("divSubdivisionBusy");
    x.style.visibility = "hidden";
    x.style.display = "none";    
}
