//<![CDATA[

var gmarkers = [];
var htmls = [];
var i = 0;
var map;
var geocoder = null;
var homeIcon = new GIcon();
var redIcon = new GIcon();
//var greenIcon = new GIcon();
//var blueIcon = new GIcon();
//var purpleIcon = new GIcon();
var currentMarker;
var homeMarkerPopup;
var currentID;
var highlightCircle;
var pc = null;
var red;
//var purple;
var blue;
var green;
var timer = 0;
var homeMarker = null;
var firstDrop = false;

homeIcon.shadow = "assets/flag.shadow.png";
homeIcon.iconSize = new GSize(32, 32);
homeIcon.shadowSize = new GSize(59, 32);
homeIcon.iconAnchor = new GPoint(11, 32);
homeIcon.infoWindowAnchor = new GPoint(12, 15);
homeIcon.infoShadowAnchor = new GPoint(18, 25);
homeIcon.image = "assets/flag.png";

redIcon.shadow = "images/shadow-colourS.png";
redIcon.iconSize = new GSize(15, 26);
redIcon.shadowSize = new GSize(29, 26);
redIcon.iconAnchor = new GPoint(7, 25);
redIcon.infoWindowAnchor = new GPoint(9, 2);
redIcon.infoShadowAnchor = new GPoint(18, 25);
redIcon.image = "images/colourBS.png";

function onResizeHandler() {

	clearTimeout(timer);
	timer=setTimeout("ResizeMap()",500);

}

function onRefreshHandler() {

	clearTimeout(timer);
	timer=setTimeout("refreshMap()",1000);

}

function onshowAddressMarkerHandler(point) {

	clearTimeout(timer);
	timer=setTimeout("showAddress(point)",2000);

}

function ResizeMap() {
	var myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myHeight = document.body.clientHeight;
	}
	$('map').setStyle({height:  (myHeight - 230) + 'px'});
	//$('mtoolbar').setStyle({left:  ($('map').getDimensions().width + 10 ) + 'px'});

	if (map) {
		//debugger;
		map.checkResize();
		//centerHome();
	}
}

var bounds; //= new GLatLngBounds();

function fit(){
	map.panTo(bounds.getCenter()); 
	map.setZoom(map.getBoundsZoomLevel(bounds));
}

function drawCircle(center, radius, nodes, liColor, liWidth, liOpa, fillColor, fillOpa)
{
// Esa 2006
	//calculating km/degree
	var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
	var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;
	bounds = new GLatLngBounds();

	//Loop 
	var points = [];
	var step = parseInt(360/nodes)||10;
	for(var i=0; i<=360; i+=step) {
		var pint = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), center.lng() + (radius/lngConv * Math.sin(i * Math.PI/180)));
		points.push(pint);
		bounds.extend(pint); //this is for fit function
	}
	fillColor = fillColor||liColor||"#0055ff";
	liWidth = liWidth||2;
	var poly = new GPolygon(points,liColor,liWidth,liOpa,fillColor,fillOpa);
	map.addOverlay(poly);
}


function createMarker(point, siteNames, siteAddress, mtype, ID) {
	//var icon = new GIcon(baseIcon);
	//alert("images/colour00" + mtype + ".png");
	//icon.image = "images/colour00" + mtype + ".png";

	var marker = new GMarker(point, redIcon);

	if (mtype.indexOf("1") > -1) {
		red++;
	} else if (mtype.indexOf("2") > -1) {
		blue++;
	} else if (mtype.indexOf("4") > -1) {
		green++;
	} else {	
		green++;
	}
	//var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
		//marker.openInfoWindowHtml(html);
		var headsection = "<H2>xyzzy</H2>";
		currentMarker = marker;
		currentID = ID;
		highlightCurrentMarker();
		var headsection = "<H2>xyzzy</H2>";
		var contentsection = "xyzzy";

		//var finalAddress = "";
		var finalSiteNames = headsection.replace("xyzzy", "Site Name/Aliases") + siteNames.replace(/~/g,"<BR />")
		
		if (siteAddress) {
			var finalAddress = headsection.replace("xyzzy", "Address") + siteAddress;
		}

		//finalListTypes = headsection.replace("xyzzy", "Address") + "<UL>" + finalAddress + "</UL>" ;

		var latC = homeMarker.getPoint().lat();
		var lngC = homeMarker.getPoint().lng();
		
		//var buyMessage = "<p>Want to know more?<br>Order a <b>Detailed Risk Assessment</b>. <div style='margin-left: 45px;'><A href='" + orderLink + "?address=" + address + "'><img src='assets/learnmoregrsm.png' border=0'></A></div>"
		var buyMessage = "<div><B>Get more details on this site:<B><br/><A href='javascript:goOrderPage();'><img  id='popupOrder' onMouseOver='javascript:RollOver(\"popupOrder\",\"assets/OrderReportBl.gif\")' onMouseOut='javascript:RollOver(\"popupOrder\",\"assets/OrderReportGr.gif\")' src='assets/OrderReportGr.gif'></A></div>"

		var TlcLatLng = map.fromContainerPixelToLatLng(new GPoint(0,0),true);
		var TlcDivPixel = map.fromLatLngToDivPixel(TlcLatLng);
		var pointDivPixel = map.fromLatLngToDivPixel(point);
		var pointContainerPixel = subGPoints(pointDivPixel, TlcDivPixel); 

		var x1 = pointContainerPixel.x
		var y1 = pointContainerPixel.y
		//debugger;
		Popups.show(finalSiteNames + finalAddress + "<BR />" + buyMessage, x1, y1);
		
	});
	return marker;
}

function showAddressRefresh() {
	var point = new GLatLng(lat, lng);
	map.setCenter(point, map.getZoom());
	//homePoint = point;
	map.clearOverlays();
	showAddressMarker(point);
	onRefreshHandler();

}

function showAddress(inAddress) {
	if (geocoder) {
		document.getElementById('intropop').style.display='none';
		map.clearOverlays();
		bounds = null;
		firstDrop = true;
		geocoder.getLocations(inAddress,function(response) {
			if (!response || response.Status.code != 200) {
				if (response.Status.code == 500) {
					alert("Google is reporting an unknown server error trying to find this address. Please try again in a moment when Google Maps is working correctly.");
				} else if (response.Status.code == 400) {
					alert("Google cannot understand the address " + inAddress + ". Please check to make sure everythingis spelled correctly. Also make sure there is a comma between the street address, city, state and ZIP code.");
				} else if (response.Status.code == 602) {
					alert("Google cannot understand the address " + inAddress + ". It could also be a new area that Google Maps does not have yet. Please check to make sure everythingis spelled correctly. Also make sure there is a comma between the street address, city, state and ZIP code.");
				} else if (response.Status.code == 603) {
					alert("Google thinks it found the address " + inAddress + ", but it cannot be used due to legal or contractual reasons.");
				}
			} else {
				place = response.Placemark[0];
				point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
				address = place.address
				
				document.getElementById('geocode').value = address
				document.getElementById('lat').value = point.lat()
				document.getElementById('lng').value = point.lng()
				showAddressMarker(point);
				onRefreshHandler();
				//var qString = "?address=" + address + "&lat=" + point.lat() + "&lng=" + point.lng();
				//makeHttpRequest("addresspostback.aspx" + qString, 'alertAddressCallbackContents')
				
			}
		
		});
	}
}

function showAddressMarker(homePoint) {
	//debugger;
	homeMarker = new GMarker(homePoint, {icon: homeIcon});
	map.addOverlay(homeMarker);
}

function centerHome() {
	if (homeMarker) {
		map.setCenter(homeMarker.getPoint(), map.getZoom());
	}
}

function moveMapEnd() {

	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var Lat1 = northEast.lat();
	var Lat2 = southWest.lat();
	var Lng1 = northEast.lng();
	var Lng2 = southWest.lng();

	if (homeMarker) {
		if (homeMarker.getPoint().lng() > Lng2 && homeMarker.getPoint().lng() < Lng1 && homeMarker.getPoint().lat() < Lat1 && homeMarker.getPoint().lat() > Lat2) {
			//document.getElementById("homeicon").style.display="none";
		} else {
			//document.getElementById("homeicon").style.display="inline";
		}
		//var homeMarker = new GMarker(homePoint, {icon: homeIcon, draggable: true});
		//map.addOverlay(homeMarker);
	} else {
		//document.getElementById("homeicon").style.display="none";
	}

}

function refreshMap() {
	//if (map.getZoom() > 10) {
	if (homeMarker) {
		document.getElementById("loading").style.display="inline";
		//debugger;
		
		// Hide/Show notes
		var a1 = $('map').getDimensions().width;
		document.getElementById("loading").style.left = ((a1 / 2) - 55) +  "px";
		document.getElementById("zoom_in").style.display="none";
		//document.getElementById("timeout").style.display="none";
		document.getElementById("alot_of_sites").style.display="none";

		// Get map bounds and home center and make querystring

		// Define the map bounds within to search for sites
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var Lat1 = northEast.lat();
		var Lat2 = southWest.lat();
		var Lng1 = northEast.lng();
		var Lng2 = southWest.lng();

		var LatC = homeMarker.getPoint().lat();
		var LngC = homeMarker.getPoint().lng();
	
		//debugger;
		//Build QueryString
		var QS = "DataLoader_Home.aspx";
		QS += "?Lat1=" + Lat1;
		QS += "&Lat2=" + Lat2;
		QS += "&Lng1=" + Lng1;
		QS += "&Lng2=" + Lng2;
		QS += "&LatC=" + LatC;
		QS += "&LngC=" + LngC;		
		QS += "&address=" + address;
		//QS += "&key=" + key;

		GDownloadUrl(QS, function(data, responseCode) {
			//debugger;
			var foundID=false;
			red = 0;
			//purple = 0;
			green = 0;
			blue = 0;
			map.clearOverlays();
			
			if (homeMarker) {
				map.addOverlay(homeMarker);
			} 
			
			var xml = GXml.parse(data);
			var masterNode = xml.childNodes.item(0);
			var stats = masterNode.childNodes.item(0);
			//var siteCount = stats.getAttribute("sitecount");
			//var timeout = stats.getAttribute("timeout");
			//if (timeout == "true") {
			//	document.getElementById("timeout").style.display="inline";
			//	document.getElementById("timeout").style.left = ((a1 / 2) - 55) +  "px";
			//}
			//if (siteCount < 250) {
				var markers = masterNode.childNodes.item(1);
				if (markers) {
					//if (siteCount > 150) {
						//document.getElementById("alot_of_sites").style.visibility="visible";
					//	document.getElementById("alot_of_sites").style.display="inline";
					//} else {
						//document.getElementById("alot_of_sites").style.visibility="hidden";
					//	document.getElementById("alot_of_sites").style.display="none";
					//}
					var siteCount = markers.childNodes.length
					for (var i = 0; i < markers.childNodes.length; i++) {
						var markerNode = markers.childNodes.item(i);
						if (markerNode.nodeName == "marker") {
							var point = new GLatLng(parseFloat(markerNode.getAttribute("lat")), parseFloat(markerNode.getAttribute("lng")));
							var label = markerNode.getAttribute("label");
							var mtype = markerNode.getAttribute("type");
							var siteAddress = markerNode.getAttribute("address");
							var siteNames = markerNode.getAttribute("sitenames");
							var ID = markerNode.getAttribute("ID");
							var marker = createMarker(point, siteNames, siteAddress, mtype, ID);
							//point, sitetypes, mtype, ID
							if (ID == currentID) {
								currentMarker = marker;
								currentID = ID;
								if (Popups.isOpen()) {
									highlightCurrentMarker();
								}
								foundID = true;
							}
							map.addOverlay(marker);    
						}
					}
				}
			//} else {
			//	map.clearOverlays();
			//	document.getElementById("zoom_in").style.display="inline";
			//}
			if (foundID == false) {
				currentMarker = null;
				currentID = null;
				Popups.hide();
				//document.getElementById("address").innerHTML = "Click a site to find out more about it.";
				//document.getElementById("details").innerHTML = "&nbsp;";
			}
				

			// Get number of marker and popup warning if there are a lot
			//document.getElementById("numsites").innerHTML = "Number of Sites: " + siteCount;
			
			document.getElementById("riskasessment").style.display="inline";
			
			var cColor = "";
			if (red > 0) { 
				cColor = "#ff0000";
				document.getElementById("riskgraphic").src = "assets/highriskbutton.jpg"
				document.getElementById("risknotice").innerHTML = "High Risk";
				//document.getElementById("risknotice").style.color="#ff0000"
			//} else if (purple > 0) {
			//	cColor = "#ff00ff";
			//	document.getElementById("risknotice").innerHTML = "Medium Risk";
			//	document.getElementById("risknotice").style.color="#ff00ff"
			} else if (blue > 0) {
				cColor = "#0000ff";
				document.getElementById("riskgraphic").src = "assets/mediumriskbutton.jpg"
				document.getElementById("risknotice").innerHTML = "Medium Risk";
				//document.getElementById("risknotice").style.color="#ff00ff"
			} else {
				cColor = "#00ff00";
				document.getElementById("riskgraphic").src = "assets/lowriskbutton.jpg"
				document.getElementById("risknotice").innerHTML = "Low Risk";
				//document.getElementById("risknotice").style.color="#00ff00"
			}			
			
			drawCircle(homeMarker.getPoint(), 0.805, 40,cColor,2,1,0,0);
			fit();
			
			//document.getElementById("high").innerHTML = "High Risk: " + red;
			//document.getElementById("medium").innerHTML = "Medium Risk: " + blue;
			//document.getElementById("low").innerHTML = "Low Risk: " + green;
			//document.getElementById("verylow").innerHTML = "Very Low Risk: " + green;

			//var fld = document.getElementById('geocode').value;
			var fld = address;

			//document.getElementById("riskaddress").innerHTML = fld;
			document.getElementById('risksection').style.display='inline';

			
			if (firstDrop) {
				//homeMarker.openInfoWindowHtml("<B>" + fld + "<BR><BR><img src='assets/infoS.png' align=left>You can click-drag the home<br>flag marker if Google did not<br>place it in the correct location.");
				fld = fld.replace(/,/,"<BR />")

				//homeMarker.openInfoWindowHtml("<p><B>" + fld + "</B></p><img src='assets/infos2.png' align=left style='margin-right: 10px;'><p>Click one of the markers on <br />the map to get additional data.</p>");
				var TlcLatLng = map.fromContainerPixelToLatLng(new GPoint(0,0),true);
				var TlcDivPixel = map.fromLatLngToDivPixel(TlcLatLng);
				var pointDivPixel = map.fromLatLngToDivPixel(homeMarker.getPoint());
				var pointContainerPixel = subGPoints(pointDivPixel, TlcDivPixel); 

				var x1 = pointContainerPixel.x
				var y1 = pointContainerPixel.y
				Popups.show("<p><B>" + fld + "</B></p><table cellpadding=5 width=100%><tr><td valign=top><img src='assets/infos.gif'></td><td valign=top>Click one of the markers on the map to get additional data.</td></tr></table>", x1, y1);
				homeMarkerPopup = true;
				firstDrop = false;
				var qString = "?address=" + address + "&lat=" + point.lat() + "&lng=" + point.lng() + "&count=" + siteCount;
				makeHttpRequest("addresspostback.aspx" + qString, 'alertAddressCallbackContents')

			}
			
			if (green > 0 || blue > 0 || red >> 0) {
				//document.getElementById("pie").style.display="";
				//var pievalues=[green, blue, red];
				//pc.setValues(pievalues);
				//pc.printTo("pie");
			} else {
				//document.getElementById("pie").style.display="none";
			}
		document.getElementById("loading").style.display="none";
		});
	}
	//} else {
	//	map.clearOverlays();
	//	document.getElementById("zoom_in").style.display="inline";
	//}
	
}

function subGPoints(a,b) {
        return new GPoint(a.x-b.x, a.y-b.y);
      }      

function getSiteTypeDesc(siteType) {
	var rv = "";
	switch(siteType.toUpperCase()) {
		case "GENERATOR": 
			rv="<p style='font-weight:bold;'>Hazardous Waste Generator <a href='javascript:go_anchor(\"faq_content\", \"gen\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "ERNS":
			rv="<p style='font-weight:bold;'>Emergency Response Notification Site <a href='javascript:go_anchor(\"faq_content\", \"erns\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "LUST":
			rv="<p style='font-weight:bold;'>Leaking Underground Storage Tank <a href='javascript:go_anchor(\"faq_content\", \"lust\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "AST":
			rv="<p style='font-weight:bold;'>Above Ground Tank <a href='javascript:go_anchor(\"faq_content\", \"ust\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "BROWN":
			rv="<p style='font-weight:bold;'>Brownfield Site <a href='javascript:go_anchor(\"faq_content\", \"brown\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "CERCLIS":
			rv="<p style='font-weight:bold;'>Superfund Database <a href='javascript:go_anchor(\"faq_content\", \"npl\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "CONTROLS":
			rv="<p style='font-weight:bold;'>Engineering and Institutional Controls <a href='javascript:go_anchor(\"faq_content\", \"eng\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "CORRACTS":
			rv="<p style='font-weight:bold;'>Corrective Actions Suggested or Performed <a href='javascript:go_anchor(\"faq_content\", \"gen\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "DEED":
			rv="<p style='font-weight:bold;'>Deed Restrictions <a href='javascript:go_anchor(\"faq_content\", \"deed\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "EMISSIONS":
			rv="<p style='font-weight:bold;'>Low Volume Air Emissions <a href='javascript:go_anchor(\"faq_content\", \"air\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "HAZMAT":
			rv="<p style='font-weight:bold;'>Hazardous Materials Data <a href='javascript:go_anchor(\"faq_content\", \"hazmat\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "HAZNET":
			rv="<p style='font-weight:bold;'>Hazardouse Materials Transporters <a href='javascript:go_anchor(\"faq_content\", \"haznet\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "NPL":
			rv="<p style='font-weight:bold;'>National Priority List <a href='javascript:go_anchor(\"faq_content\", \"npl\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "SLIC":
			rv="<p style='font-weight:bold;'>Spill, Leak, Investigation or Cleanup <a href='javascript:go_anchor(\"faq_content\", \"slic\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "SWIS":
			rv="<p style='font-weight:bold;'>Solid Waste Landfill <a href='javascript:go_anchor(\"faq_content\", \"landfill\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "TSD":
			rv="<p style='font-weight:bold;'>Treatment, Storage or Disposal <a href='javascript:go_anchor(\"faq_content\", \"gen\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "UST":
			rv="<p style='font-weight:bold;'>Underground Storage Tank <a href='javascript:go_anchor(\"faq_content\", \"ust\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "WELLS":
			rv="<p style='font-weight:bold;'>Water Well <a href=''><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
		case "SWLF":
			rv="<p style='font-weight:bold;'>Solid Waste Landfill <a href='javascript:go_anchor(\"faq_content\", \"landfill\");'><img src='assets/qmark2.jpg' border=0></a></p>";
			break;
	}
	
	return rv;

}

function highlightCurrentMarker(){
	var markerPoint = currentMarker.getPoint();

	var polyPoints = Array();
	if (highlightCircle) {
		map.removeOverlay(highlightCircle);
	}

	var mapNormalProj = G_NORMAL_MAP.getProjection();
	var mapZoom = map.getZoom();
	var clickedPixel = mapNormalProj.fromLatLngToPixel(markerPoint, mapZoom);

	var polySmallRadius = 10;

	var polyNumSides = 20;
	var polySideLength = 18;

	for (var a = 0; a<(polyNumSides+1); a++) {
		var aRad = polySideLength*a*(Math.PI/180);
		var polyRadius = polySmallRadius; 
		var pixelX = clickedPixel.x + polyRadius * Math.cos(aRad);
		var pixelY = clickedPixel.y + polyRadius * Math.sin(aRad);
		var polyPixel = new GPoint(pixelX,pixelY);
		var polyPoint = mapNormalProj.fromPixelToLatLng(polyPixel,mapZoom);
		polyPoints.push(polyPoint);
	}
	// Using GPolygon(points,  strokeColor?,  strokeWeight?,  strokeOpacity?,  fillColor?,  fillOpacity?)
	highlightCircle = new GPolygon(polyPoints,"#000000",2,0.0,"#FF0000",.5);
	map.addOverlay(highlightCircle);
}


//]]>