﻿// GeoDecisions GeoPRIME ArcGIS Server Address Search tool version 0.1
// Uses the geoDecisions.config.searchConfig to build the tooltip and the locators associated with the address search
// Adam Conner 3/12/09
function addressSearchBuilder()
{
    new dijit.Tooltip({
        connectId: ["addressText"],
        label: geoDecisions.config.searchConfig.geoCode.toolTipText
    });
    var addressListen = dojo.connect(dijit.byId("addressText"), "onClick", function(){
		geoDecisions.hideListeners();
		dojo.connect(dijit.byId("addressText"), "onClick", function(){
			geoDecisions.hideListeners();
		});
		dojo.byId("addressText").value = "";
		dojo.disconnect(addressListen);
		dojo.connect(dojo.byId("addressText"),"keypress",keyListen);
    });
}

function keyListen(evt)
{
	if (evt.keyCode == dojo.keys.ENTER)
	{
		geoCode();
	}
}

function geoCode()
{
	geoDecisions.map.graphics.clear();
    var locator = new esri.tasks.Locator(geoDecisions.config.searchConfig.geoCode.geoCodeUrl);
    
    var address = {
          Street : dojo.byId("addressText").value
        };
    locator.addressToLocations(address,[],geoResults);    
}

function geoResults(candidates)
{
		if (candidates.length > 0) 
		{
			var candidate;
			var symbol = new esri.symbol.SimpleMarkerSymbol();
			var winscore = candidates[0].score;
			
			symbol.setStyle(eval(geoDecisions.config.searchConfig.geoCode.symbolStyle));
			symbol.setColor(eval(geoDecisions.config.searchConfig.geoCode.symbolColor));
			
			var points = new esri.geometry.Multipoint(geoDecisions.map.spatialReference);
			
			for (var i = 0, il = candidates.length; i < il; i++) {
				candidate = candidates[i];
				if (candidate.score > winscore - 1) {
					var attributes = {
						address: candidate.address,
						score: candidate.score
					};
					var graphic = new esri.Graphic(candidate.location, symbol, attributes);
					geoDecisions.map.graphics.add(graphic);
					geoDecisions.map.graphics.add(new esri.Graphic(candidate.location, new esri.symbol.TextSymbol(attributes.address).setOffset(0, 8)));
					points.addPoint(candidate.location);
				}
			}
			geoDecisions.map.setExtent(points.getExtent().expand(2));
		}
		else
		{
			dijit.byId('toast').setContent('No Results Found, please search using a different address', 'warning', '500');
        	dijit.byId('toast').show();
		}
}


