	var map;
	var xmlHttpInfo;
	var sortinformation_ = new Array();
	var dcontrol;
	var firstTime = true;

	var markericons = new Array();
	var markercolors = new Array();
	var step;
	var icons;
	var numicons = 20;
	var iconfraction;

	var prompt_;

	var useraddress;
	var gcoder = new GClientGeocoder();
	var addressmarker;
	var bmarker;

	var sjcityoverlay;
	var cdoverlay;

	var Legend;
	var List;
	var Menu;
	var nameoverlay;

	var statusmessage = "Drag red marker to find more benchmarks";

	var OldListBackcolor = "#FFFFFF";

	var searchwindow;

   var PGradius = 1;          // radius in miles of polygon vertices 
   var PGcolor = '#007700';   // polygon color blue 
   var PGwidth = 3;           // width pixels 
   var PGtrans = 0.4;         // transparency 0 - 1 
   var d2r = Math.PI/180;     // degrees to radians 
   var r2d = 180/Math.PI;     // radians to degrees 
   var PGsides = 36;          // number of sides of polygon 
                              // (use 36 for circle) 
   var PGstart = 0;

   var markercircle;

function drawPolygon(lat,lng,PGsides) { 


   if (PGsides%2 == 1) { 
     PGstart = (0.5 - 2/PGsides) * Math.PI; 
   } else { 
     PGstart = (0.5 - 1/PGsides) * Math.PI; 
   }; 
   var PGlat = (PGradius/3963)*r2d;     // using 3963 miles 
                                        // as earth's radius 
   var PGlng = PGlat/Math.cos(lat*d2r); 
   var PGpoints = []; 
   for (var i=-1; i < PGsides; i++) { 
      var theta = 2*i*Math.PI/PGsides + PGstart; 
      PGx = lng + (PGlng * Math.cos(theta)); 
      PGy = lat + (PGlat * Math.sin(theta)); 
      PGpoints.push(new GPoint(PGx,PGy)); 
   }; 
   markercircle = new GPolyline(PGpoints,PGcolor,PGwidth,PGtrans);
   map.addOverlay(markercircle); 



} 

    function resizemap() {
	//document.getElementById("map_canvas").style.height = String(SJJS.Utilities.getBodyHeight() - 20) + "px";
	//document.getElementById("map_canvas").style.width = String(SJJS.Utilities.getBodyWidth() - 20) + "px";
    }

    function initialize() {
	SJJS.using("SJJS.GMap.Overlays.GISOverlay");
	SJJS.using("SJJS.GMap.Controls.GList");
	SJJS.using("SJJS.GMap.Controls.GLegend");
	SJJS.using("SJJS.GMap.Controls.GMenuBar");
	SJJS.using("SJJS.GMap.Controls.Label");

      if (GBrowserIsCompatible()) {
	//document.getElementById("map_canvas").style.height = String(SJJS.Utilities.getBodyHeight() - 20) + "px";
	//document.getElementById("map_canvas").style.width = String(SJJS.Utilities.getBodyWidth() - 20) + "px";
        map = new GMap2(document.getElementById("map_canvas"));
	map.setCenter(new GLatLng(37.313477473067, -121.880502070713), 11); 
        map.addControl(new GLargeMapControl3D());
	map.addMapType(G_PHYSICAL_MAP);
	map.setMapType(G_NORMAL_MAP);
	map.addControl(new GScaleControl());

	geoXml2 = new GGeoXml("http://www.sanjoseca.gov/gis/kml/csj_boundary.kml");
	map.addOverlay(geoXml2);

	bmarker = new GMarker(new GLatLng(37.313477473067, -121.880502070713), {draggable: true});
	map.addOverlay(bmarker);
	drawPolygon(37.313477473067, -121.880502070713, 30);
	GEvent.addListener(bmarker, "dragend", function(latlng) {
		map.removeOverlay(markercircle);
		drawPolygon(latlng.lat(), latlng.lng(), 30);
		sjcityoverlay.changeData("locator_data/benchmarks_wd.asp?lat=" + latlng.lat() + "&lng=" + latlng.lng());
	});
	cdoverlay = new GISOverlay("locator_data/councildistricts_byid.asp?cdid=-1", "locator_data/councildistricts_style.asp");
	//map.addOverlay(cdoverlay);

	sjcityoverlay = new GISOverlay("locator_data/benchmarks_wd.asp?lat=37.313477473067&lng=-121.880502070713", "locator_data/benchmarks_style.asp", "locator_data/benchmarks_desc.asp");
	//sjcityoverlay = new GISOverlay("locator_data/capitalprojects_data.asp", "locator_data/capitalprojects_style.asp", "locator_data/capitalprojects_description.asp");

	Legend = new SJJS.GMap.Controls.GLegend("Legend", "150px");
	map.addControl(Legend);
	List = new GList();
	map.addControl(List);
	Menu = new SJJS.GMap.Controls.GMenuBar(map);
	map.addControl(Menu);

	searchwindow = new SJJS.GMap.Controls.GWindow({width:400, height:250, top:300, left:350, title:"Search By", hidden:false, titlecolor: "#eaeaea", titlebackgroundcolor:"#003366", backgroundimage:"url('http://www.sanjoseca.gov/images/leftnav_bg.gif')"});

	searchwindow.addContentDom(document.getElementById("searchdiv"));

	GEvent.addListener(List, "mouseoveritem", function(name) {
		OldListBackcolor = List.getDivByName(name).style.backgroundColor;

		var featurearray = sjcityoverlay.getFeaturesByName(name);
		var x;

		List.getDivByName(name).style.backgroundColor = sjcityoverlay.getFeatureHighlightColor(featurearray[0]).getHex();
		for (x = 0; x < featurearray.length; x++)
		{
			sjcityoverlay.highlightFeature(featurearray[x], true);
		}
	});
	GEvent.addListener(List, "mouseoutitem", function(name) {
		List.getDivByName(name).style.backgroundColor = OldListBackcolor;

		var featurearray = sjcityoverlay.getFeaturesByName(name);
		var x;

		for (x = 0; x < featurearray.length; x++)
		{
			sjcityoverlay.highlightFeature(featurearray[x], false);
		}
	});
	GEvent.addListener(List, "clickitem", function(name) {
		var featurearray = sjcityoverlay.getFeaturesByName(name);

		GEvent.trigger(featurearray[0], "click", featurearray[0].getLatLng())

		map.setCenter(featurearray[0].getLatLng());
	});


	GEvent.addListener(sjcityoverlay, "styleloaded", function() {
		var temparray = sjcityoverlay.getGroupNames();

		for (var x = 0; x < temparray.length; x++) {
			Legend.AddEntry(temparray[x],{iconhtml:sjcityoverlay.getLegendIcon(temparray[x]), name:temparray[x], hascheck:false, checked:true});
		}

		/*GEvent.addListener(Legend, "entrycheck", function(checked, entryname) {
			if (checked) {
				sjcityoverlay.ShowGroup(entryname);
			}
			else {
				sjcityoverlay.RemoveGroup(entryname);
			}
		});*/
	});
		

	sjcityoverlay.addEventToMarkers("mouseover", function(latlng) {
		var featurename = sjcityoverlay.getFeatureName(this);
		OldListBackcolor = List.getDivByName(featurename).style.backgroundColor;
		List.getDivByName(featurename).style.backgroundColor = sjcityoverlay.getFeatureHighlightColor(this).getHex();

		if (nameoverlay !== null && nameoverlay !== undefined)
		{
			map.removeOverlay(nameoverlay);
			nameoverlay = null;
		}

		nameoverlay = new SJJS.GMap.Controls.Label(featurename, latlng);
		map.addOverlay(nameoverlay);
	});

	sjcityoverlay.addEventToPolylines("mouseover", function() {
		var featurename = sjcityoverlay.getFeatureName(this);
		OldListBackcolor = List.getDivByName(featurename).style.backgroundColor;
		List.getDivByName(featurename).style.backgroundColor = sjcityoverlay.getFeatureHighlightColor(this).getHex();

		if (nameoverlay !== null && nameoverlay !== undefined)
		{
			map.removeOverlay(nameoverlay);
			nameoverlay = null;
		}

		nameoverlay = new SJJS.GMap.Controls.Label(featurename, this.getVertex(0));
		map.addOverlay(nameoverlay);
	});
	sjcityoverlay.addEventToFeatures("mouseout", function() {
		List.getDivByName(sjcityoverlay.getFeatureName(this)).style.backgroundColor = OldListBackcolor;

		if (nameoverlay !== null && nameoverlay !== undefined)
		{
			map.removeOverlay(nameoverlay);
			nameoverlay = null;
		}
	});
	GEvent.addListener(sjcityoverlay, "featureadded", function(name, id) {
		List.addEntry(name);
		List.setSortByName(name, name);
	});
	GEvent.addListener(sjcityoverlay, "featureremoved", function(name, id) {
		var temparray = sjcityoverlay.getMarkerNames();
		var tempcount = 0;

		for (var x = 0; x < temparray.length; x++) {
			if (temparray[x] === name) {
				tempcount++;
			}
		}

		if (tempcount === 1) {
		}
		List.removeEntry(name);
	});


	map.addOverlay(sjcityoverlay);

	Menu.addMenu("ViewID", "View");
	Menu.addMenu("ToolsID", "Tools");
	Menu.addMenu("HelpID", "Help");

	Menu.addCheckItem("ListID", "List", "ViewID", false);
	Menu.addCheckItem("LegendID", "Legend", "ViewID", true);

	Menu.addItem("ResetID", "Reset Map", "ToolsID");
	Menu.addItem("SearchID", "Search", "ToolsID");

	Menu.addItem("DisclaimerID", "Disclaimer", "HelpID");

	GEvent.addListener(sjcityoverlay, "begindownload", function() {
		Menu.setStatus("<img src='Loading3.gif' /> Loading data...");
	});
	GEvent.addListener(sjcityoverlay, "enddownload", function() {
		Menu.setStatus(statusmessage);
		List.sortList(false);
	});

	GEvent.addListener(Menu, "itemclicked", function(id) {
		switch (id)
		{
			case "ResetID":
				map.setCenter(new GLatLng(37.313477473067, -121.880502070713), 11);
			break;
			case "SearchID":
				searchwindow.show();
			break;
			case "DisclaimerID":
				alert("The City of San Jose does not guarantee map accuracy in depicting current conditions. The maps provided are for general information purposes and are not intended for design purposes at this time.");
			break;
		}
	});
	GEvent.addListener(Menu, "itemchecked", function(id) {
		switch (id)
		{
			case "ListID":
				List.show();
			break;
			case "LegendID":
				Legend.show();
			break;
		}
	});
	GEvent.addListener(Menu, "itemunchecked", function(id) {
		switch (id)
		{
			case "ListID":
				List.hide();
			break;
			case "LegendID":
				Legend.hide();
			break;
		}
	});
      }
    }

