iconOr = new GIcon();
iconOr.image = "/maps/images/markerOr.png";
iconOr.shadow = "/maps/images/shadow50.png";
iconOr.iconSize = new GSize(20, 34);
iconOr.shadowSize = new GSize(37, 34);
iconOr.iconAnchor = new GPoint(9, 34);
iconOr.infoWindowAnchor = new GPoint(9, 2);
iconOr.infoShadowAnchor = new GPoint(18, 25);

function getPoly(zip,type,city,state,centered)
{
	var request = GXmlHttp.create();
	var url = '/maps/polygonXML.php?zip='+zip+'&type='+type+'&city='+city+'&state='+state;
	var points = [];
	var boundaries = [];

	request.open("GET", url, true);
	request.onreadystatechange = function() 
	{
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML.documentElement;
			try
			{
				var numPolys = xmlDoc.childNodes.length;
				for (var i = 0; i < numPolys; i++)
				{
					var numPoints = parseInt(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes.length);
					var notes = xmlDoc.getElementsByTagName("polygon"+i).item(0).getAttribute("notes");
					if(type=="county"){
						if(state=='AK') insert = "View borough border";
						else if(state=='LA') insert = "View parish border";
						else insert = "View county border";

						notes = "<div style='width: 200px; text-align: center; font-face: arial; font-size: 12px;'>" + notes + "<BR>(<A href='javascript:fnBorder();'>" + insert + "</A>)</div>";
					}if(type=="zip"){
						notes = "<div style='width: 200px; text-align: center; font-face: arial; font-size: 12px;'>" + notes + "<BR>(<A href='javascript:fnBorder();'>View zipcode border</A>)</div>";
					}else{//<div style='font-face: arial; font-size: 12px; white-space: nowrap;'>
						notes = "<div style='width: 200px; text-align: center; font-face: arial; font-size: 12px;'>" + notes + "</div>";
					}

					for (var k = 0; k < numPoints; k++)
					{
						var lat = parseFloat(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes[k].getAttribute("lat"));
						var lng = parseFloat(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes[k].getAttribute("lng"));
						var point = new GPoint(lng, lat);
						points.push(point);

						// Determining boundaries of polygones:
						var marker = new GMarker(point);
						boundaries[boundaries.length] = marker;
						
						// Break up polylines for firefox
						if (k % 225 == 0 && k != 0)
						{
							//map.addOverlay(new GPolyline(points, "#FF0000", 3, 1));
							points = [];
						}
					} // for each point

					//map.addOverlay(new GPolyline(points, "#FF0000", 3, 1));
					points = [];					
					
				} // end: for each polygon
				try
				{	
					// Center map+marker based on bounding box algorithm
					var lowestZoom = 12;
					if (type == 'state') lowestZoom = 6;
					var bounds = arrayBounds(boundaries);
					var center_lat = (bounds.getNorthEast().lat() +	bounds.getSouthWest().lat()) / 2.0;
					var center_lng = (bounds.getNorthEast().lng() +	bounds.getSouthWest().lng()) / 2.0;
					var center = new GLatLng(center_lat, center_lng);
					var minZoom = map.getBoundsZoomLevel(bounds);	
					if (minZoom > lowestZoom) minZoom = lowestZoom;
					map.setCenter(center,minZoom);

					marker = createMarker(center, notes, iconOr);
					map.addOverlay(marker);
					GEvent.trigger(marker,'click');
				}
				catch(e)
				{
					document.getElementById('map').style.display = 'none';
					document.getElementById('gLegend').style.display = 'none';
					document.getElementById('staticMap').style.display = 'block';
					document.getElementById('staticLegend').style.display = 'block';
				}
			}
			catch(e)
			{
				//alert("Some error occured during program processing:" + e) ;
			}       
		}
	}
	request.send(null);
}
function createMarker(point, label, icon)
{
	  var marker = new GMarker(point, icon);
	  var html = label;
	  GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	  });
	  return marker;
}
// Return a GMap bounds object the size of an array of markers
function arrayBounds(ary)
{
   // compute the bounds for an array of markers
	var bounds = new GLatLngBounds();
	if (ary && ary.length > 0)
	{
		for (var i = 0; i < ary.length; i++)
		{
			var marker = ary[i];
         if (marker) 
			{
				bounds.extend(marker.getPoint());
			}
		}
	}
	return bounds;
}
function getPolyBorder(zip,type,city,state,centered)
{
	var request = GXmlHttp.create();
	var url = '/maps/polygonXML.php?zip='+zip+'&type='+type+'&city='+city+'&state='+state;
	var points = [];
	var boundaries = [];
	var p;

	request.open("GET", url, true);
	request.onreadystatechange = function() 
	{
		if (request.readyState == 4)
		{
			var xmlDoc = request.responseXML.documentElement;
			try
			{
				var numPolys = xmlDoc.childNodes.length;
				for (var i = 0; i < numPolys; i++)
				{
					var numPoints = parseInt(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes.length);
					var notes = xmlDoc.getElementsByTagName("polygon"+i).item(0).getAttribute("notes");
					notes = "<div style='font-face: arial; font-size: 12px; white-space: nowrap;'>" + notes + "</div>";

					for (var k = 0; k < numPoints; k++)
					{
						var lat = parseFloat(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes[k].getAttribute("lat"));
						var lng = parseFloat(xmlDoc.getElementsByTagName("polygon"+i).item(0).childNodes[k].getAttribute("lng"));
						var point = new GLatLng(lat, lng);
						points.push(point);

						// Determining boundaries of polygones:
						//var marker = new GMarker(point);
						//boundaries[boundaries.length] = marker;
						//map.addOverlay(marker);
						
						// Break up polylines for firefox
						if (k % 225 == 0 && k != 0)
						{
							p = new GPolyline(points, "#FF0000", 3, 1)
							map.addOverlay(p);
							points = [];
						}
					} // for each point

					p = new GPolyline(points, "#FF0000", 3, 1)
					map.addOverlay(p);
					points = [];					
					
				} // end: for each polygon
				
			}
			catch(e)
			{
				//alert("Some error occured during program processing:" + e) ;
			}       
		}
	}
	request.send(null);
}