
var map;
var ignore = 0;

function onLoad() {

	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(47, -100), 3);
	
	map.enableDoubleClickZoom(); 
	map.enableContinuousZoom();


	addAllListeners();

	loadPoints();

}

function addAllListeners() {

	GEvent.addListener(map, "moveend", function() {
		//prompt ('moveend', map.getCenter());
		if (ignore == 1) {
			ignore = 0;
			return;
		}
		map.clearOverlays();
		loadPoints();
	});



	
}

function removeAllListeners(){

	GEvent.clearListeners(map, "moveend");
	GEvent.clearListeners(map, "movestart");

}


function createMarker(point, infoWindowHtml, zoom) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
  	ignore = 1;
  	

  	map.closeInfoWindow();
  	
    marker.openInfoWindowTabsHtml(infoWindowHtml);
    
    var map2 = new GMap2(document.getElementById("map2"));
    map2.addControl(new GSmallMapControl());
    map2.setCenter(point);
    map2.setZoom(zoom);
    var zoomedMarker = new GMarker(point);
    map2.addOverlay(zoomedMarker);

  	
  });
  return marker;
}



function loadPoints() {

	var request = GXmlHttp.create();
		
	var center = map.getCenter();
	var bounds = map.getBounds();
	var span = bounds.toSpan();

	var minLat = center.lat() - (span.lat() / 2);
	var maxLat = center.lat() + (span.lat() / 2);
	var minLng = center.lng() - (span.lng() / 2);
	var maxLng = center.lng() + (span.lng() / 2);

	var xmlUrl = "/xml/GetReportPoints.php?minLat=" + minLat + "&minLng=" + minLng + "&maxLat=" + maxLat + "&maxLng=" + maxLng;
		
//	prompt('', xmlUrl); 

	request.open("GET", xmlUrl, true);
			
	request.onreadystatechange = function() {

	  if (request.readyState == 4) {

		var xmlDoc = request.responseXML;
			
		var markerElements = xmlDoc.documentElement.getElementsByTagName("marker");
		
		for (var i = 0; i < markerElements.length; i++) {

	  		var point = new GLatLng(parseFloat(markerElements[i].getAttribute("lat")),
						parseFloat(markerElements[i].getAttribute("lng")));

			var zoom = parseFloat(markerElements[i].getAttribute("zoom"));
								   
  		
	  		
	  		var infoWindowHtml1 ="<IFRAME SRC=\"tab1.php?r=" + markerElements[i].getAttribute("id") + "\" WIDTH=400 HEIGHT=230 frameborder=0></IFRAME>";
			var infoWindowHtml2 ="<div id=\"map2\"></div>";

	  		var infoTabs = [
			  new GInfoWindowTab("Detail", infoWindowHtml1),
			  new GInfoWindowTab("Zoom", infoWindowHtml2)
			];
	  		
	  		map.addOverlay(createMarker(point, infoTabs, zoom));
	  		
		}
		
		}

	}

request.send(null);	
	
}
