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)
{
	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");
					notes = "<div style='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

					//var center = new GPoint(cLong, cLat);
					//map.addOverlay(new GPolyline(points, "#FF0000", 3, 1));
					points = [];					

					// Center map+marker based on bounding box algorithm
					var lowestZoom = 12;
					if (type == 'state') lowestZoom = 4;
					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);
				} // end: for each polygon
			}
			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)
{
	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");
					notes = "<div style='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

					//var center = new GPoint(cLong, cLat);
					map.addOverlay(new GPolyline(points, "#FF0000", 3, 1));
					points = [];					

					// Center map+marker based on bounding box algorithm
					var lowestZoom = 12;
					if (type == 'state') lowestZoom = 4;
					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);
				} // end: for each polygon
			}
			catch(e)
			{
				alert("Some error occured during program processing:" + e) ;
			}       
		}
	}
	request.send(null);
}