function addZoning(){
	var zoningUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Zoning/MapServer";
	zoningMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(zoningUrl, null, 1.00, null);

	GEvent.addListener(zoningMap, "load", function(zoningov){
		gmap.addOverlay(zoningov);

	});

	//Get the JSON response from the mapservice
	esri.arcgis.gmaps.JSONRequest(zoningUrl, zoningJson);

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(zoningUrl + "/legend", zoningLegend);
}

function addParcels(){
	var parcelUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Parcels/MapServer";
	parcelsMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(parcelUrl, null, 1.00, null);

	GEvent.addListener(parcelsMap, "load", function(parcelsov){
		gmap.addOverlay(parcelsov);
	});

	//Get the JSON response from the mapservice
	esri.arcgis.gmaps.JSONRequest(parcelUrl, parcelJson);

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(parcelUrl + "/legend", parcelLegend);
}

function addBoundaries(){
	var boundariesUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Boundaries/MapServer";
	boundariesMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(boundariesUrl, null, 0.75, null);

	GEvent.addListener(boundariesMap, "load", function(boundariesov){
		gmap.addOverlay(boundariesov);
	});

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(boundariesUrl + "/legend", boundariesLegend);
}

function addTrails(){
	var trailsUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Trails/MapServer";
	trailsMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(trailsUrl, null, 1.00, null);

	GEvent.addListener(trailsMap, "load", function(trailsov){
		gmap.addOverlay(trailsov);
	});

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(trailsUrl + "/legend", trailsLegend);
}

function addParks(){
	var parksUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Parks/MapServer";
	parksMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(parksUrl, null, 1.00, null);

	GEvent.addListener(parksMap, "load", function(parksov){
		gmap.addOverlay(parksov);
	});

	//Get the JSON response from the mapservice
	esri.arcgis.gmaps.JSONRequest(parksUrl, parksJson);

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(parksUrl + "/legend", parksLegend);
}

function addLanduse(){
	var landuseUrl = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_Landuse/MapServer";
	landuseMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(landuseUrl, null, 1.00, null);

	GEvent.addListener(landuseMap, "load", function(landuseov){
		gmap.addOverlay(landuseov);
	});

	//Get the JSON response from the mapservice
	esri.arcgis.gmaps.JSONRequest(landuseUrl, landuseJson);

	//Legend JSON
	esri.arcgis.gmaps.JSONRequest(landuseUrl + "/legend", landuseLegend);
}

function toggleParcels(){
	if($('input[name=parcels]').is(':checked')){
		//alert('Parcels ON');	
		parcelsMap.show();	
	}else{
		//alert('Parcels OFF')
		parcelsMap.hide();
	}	
}

function toggleBoundaries(){
	if($('input[name=boundaries]').is(':checked')){
		//alert('Boundaries ON');	
		boundariesMap.show();	
	}else{
		//alert('Boundaries OFF')
		boundariesMap.hide();
	}	
}

function toggleZoning(){
	if($('input[name=zoning]').is(':checked')){
		//alert('Zoning ON');	
		zoningMap.show();	
	}else{
		//alert('Zoning OFF')
		zoningMap.hide();
	}	
}

function toggleTrails(){
	if($('input[name=trails]').is(':checked')){
		//alert('Trails ON');	
		trailsMap.show();	
	}else{
		//alert('Trails OFF')
		trailsMap.hide();
	}	
}

function toggleParks(){
	if($('input[name=parks]').is(':checked')){
		//alert('Parks ON');	
		parksMap.show();	
	}else{
		//alert('Parks OFF')
		parksMap.hide();
	}	
}

function toggleLanduse(){
	if($('input[name=landuse]').is(':checked')){
		//alert('Landuse ON');	
		landuseMap.show();	
	}else{
		//alert('Landuse OFF')
		landuseMap.hide();
	}	
}


function executeAddressFind(searchText){
	mapExtension.removeFromMap(gOverlays);
	params.searchText = searchText;
	findAddressTask.execute(params, findCompleteCallback);
}

function findCompleteCallback(results){
	// Add results to the map display
	gOverlays = mapExtension.addToMap(results);
	
	if (results.findResults.length > 1) {
		alert(results.findResults.length + ' address(es) found');
	}

	var bnds = new GLatLngBounds();
	// Calculate the extent of the results
	for (var x = 0; x < results.findResults.length; x++){
		var findResult = results.findResults[x];
		var feat = findResult.feature;
		var geom = feat.geometry;
		var point = feat.geometry[0];
		
		var ll = point.getLatLng();
		bnds.extend(ll);
		
			
		//var polygon = feat.geometry[0];
		
		//var fBnds = polygon.getBounds();

		//if (bnds==undefined) {
		//	//If the extent hasn't been defined yet, initialize it
		//	bnds = fBnds;
		//} else {
		//	//Expand the extent based on each polygon
		//	var ptSW = fBnds.getSouthWest();
		//	bnds.extend(ptSW);
		//	var ptNE = fBnds.getNorthEast();
		//	bnds.extend(ptNE);
		//}
	}

	//var parcelCenter = bnds.getCenter();
	//var parcelZoomLevel = gmap.getBoundsZoomLevel(bnds);
	
	// Zoom to the results
	//gmap.setCenter(parcelCenter, parcelZoomLevel);
	
	var addressCenter = bnds.getCenter();
	var addressZoomLevel = 18;
	if (results.findResults.length > 1) {
		var addressZoomLevel = gmap.getBoundsZoomLevel(bnds);
	}
	gmap.setCenter(addressCenter, addressZoomLevel);
}


//**Depracated**
function executeGoogleGeocode(addr){
	geocoder = new GClientGeocoder();
	
	// Constrain the geocoder //
	
	var sw = new GLatLng(39.86, -105.30);
	var ne = new GLatLng(40.10, -105.05);
	
	var gcBounds = new GLatLngBounds(sw, ne);
	
	geocoder.setViewport(gcBounds);
	
	
	
	geocoder.getLatLng(addr, function(point) {
		if (!point){
			alert('Address Not Found');	
		}
		else {
			theX = point.lng();
			theY = point.lat();
			
			gmap.addOverlay(new GMarker(point));
			
			gmap.setCenter(point, 17);		
		}
	})
	
}


//**scale dependency
function zoningJson(response) {
	//This will get the minscale of the first layer[0] in the mapservice
	//	Set this to a global var
	zoningMinScale = response.layers[0].minScale;
	//alert(response.layers[0].minScale);
}

function parcelJson(response) {
	//This will get the minscale of the first layer[0] in the mapservice
	//	Set this to a global var
	parcelMinScale = response.layers[0].minScale;
	//alert(response.layers[0].minScale);
}

function parksJson(response) {
	//This will get the minscale of the first layer[0] in the mapservice
	//	Set this to a global var
	parkMinScale = response.layers[0].minScale;
	//alert(response.layers[0].minScale);
}

function landuseJson(response) {
	//This will get the minscale of the first layer[0] in the mapservice
	//	Set this to a global var
	landuseMinScale = response.layers[0].minScale;
	//alert(response.layers[0].minScale);
}

//**LEGEND
function zoningLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashZoningLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}

	//	See: http://www.mojavelinux.com/articles/javascript_hashes.html
	//	and: http://www.javascriptkata.com/2007/03/29/how-to-use-javascript-hashes/
}

function toggleZoningLegend() {
	document.getElementById('zoningLegendDIV').innerHTML = "";
	if (document.getElementById('zoningLegArrow').title == "Expand Legend") {
		for (var v in hashZoningLegend) {
			//alert('key is: ' + v + ', value is: ' + hashZoningLegend[v]);
			var img = getLegendImage(hashZoningLegend[v], "Zoning");
			document.getElementById('zoningLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('zoningLegArrow').title = "Collapse Legend";
		document.getElementById('zoningLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('zoningLegArrow').title = "Expand Legend";
		document.getElementById('zoningLegArrow').src = "images/expand.png";
	}
}

function parcelLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashParcelLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}
}

function toggleParcelLegend() {
	document.getElementById('parcelLegendDIV').innerHTML = "";
	if (document.getElementById('parcelsLegArrow').title == "Expand Legend") {
		for (var v in hashParcelLegend) {
			//alert('key is: ' + v + ', value is: ' + hashZoningLegend[v]);
			var img = getLegendImage(hashParcelLegend[v], "Parcels");
			document.getElementById('parcelLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('parcelsLegArrow').title = "Collapse Legend";
		document.getElementById('parcelsLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('parcelsLegArrow').title = "Expand Legend";
		document.getElementById('parcelsLegArrow').src = "images/expand.png";
	}
}

function boundariesLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashBoundaryLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}
}

function toggleBoundariesLegend() {
	document.getElementById('boundariesLegendDIV').innerHTML = "";
	if (document.getElementById('boundariesLegArrow').title == "Expand Legend") {
		for (var v in hashBoundaryLegend) {
			var img = getLegendImage(hashBoundaryLegend[v], "Boundaries");
			document.getElementById('boundariesLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('boundariesLegArrow').title = "Collapse Legend";
		document.getElementById('boundariesLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('boundariesLegArrow').title = "Expand Legend";
		document.getElementById('boundariesLegArrow').src = "images/expand.png";
	}
}

function trailsLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashTrailsLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}
}

function toggleTrailsLegend() {
	document.getElementById('trailsLegendDIV').innerHTML = "";
	if (document.getElementById('trailsLegArrow').title == "Expand Legend") {
		for (var v in hashTrailsLegend) {
			var img = getLegendImage(hashTrailsLegend[v], "Trails");
			document.getElementById('trailsLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('trailsLegArrow').title = "Collapse Legend";
		document.getElementById('trailsLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('trailsLegArrow').title = "Expand Legend";
		document.getElementById('trailsLegArrow').src = "images/expand.png";
	}
}

function parksLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashParksLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}
}

function toggleParksLegend() {
	document.getElementById('parksLegendDIV').innerHTML = "";
	if (document.getElementById('parksLegArrow').title == "Expand Legend") {
		for (var v in hashParksLegend) {
			var img = getLegendImage(hashParksLegend[v], "Parks");
			document.getElementById('parksLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('parksLegArrow').title = "Collapse Legend";
		document.getElementById('parksLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('parksLegArrow').title = "Expand Legend";
		document.getElementById('parksLegArrow').src = "images/expand.png";
	}
}

function landuseLegend(response) {
	//Loop through each layer and each legend item and create a multi-dimensional array that holds legend/label pairs
	var i = 0;
	for (i = 0; i < response.layers.length; i++) {
		//alert(response.layers[i].layerName);
		var j = 0;
		for (j=0;j<response.layers[i].legend.length;j++) {
			//alert(response.layers[i].legend[j].label);
			//alert(response.layers[i].legend[j].url);
			hashLanduseLegend[response.layers[i].legend[j].label] = i + ":" + response.layers[i].legend[j].url;
		}
	}
}

function toggleLanduseLegend() {
	document.getElementById('landuseLegendDIV').innerHTML = "";
	if (document.getElementById('landuseLegArrow').title == "Expand Legend") {
		for (var v in hashLanduseLegend) {
			var img = getLegendImage(hashLanduseLegend[v], "Landuse");
			document.getElementById('landuseLegendDIV').innerHTML += "&nbsp;" + img + "&nbsp;" + v + "<BR>";
		}
		document.getElementById('landuseLegArrow').title = "Collapse Legend";
		document.getElementById('landuseLegArrow').src = "images/collapse.png";
	} else {
		document.getElementById('landuseLegArrow').title = "Expand Legend";
		document.getElementById('landuseLegArrow').src = "images/expand.png";
	}
}

// Function to get the legend image and label.  Need to get the image URL and build it's path
//	http://www.townofsuperiormapping.com/ArcGIS/rest/services/Superior/TOS_Boundaries/MapServer/0/images/E722E
//	NOTE: for this to work, we need to have the individual symbols named in the MXD.
function getLegendImage(img, lyr) {
	var src;

	var splitStr = img.split(":");
	//The layer number and legend image are separated by a :, therefore [0]is the layer id and [1] is the image url
	src = "http://www.townofsuperiormapping.com/ArcGIS3/rest/services/TOS_" + lyr + "/MapServer/" + splitStr[0] + "/images/" + splitStr[1];

	var imgTag = "<img src='" + src + "' width='16' height='16' align='top' />";


	return imgTag;
}


