// Function shamelessly copied from googles documentation
// http://www.google.com/apis/maps/documentation/#Controls

var map;

function onLoad(name) {
    // Click Handling
    //
    // When you click the map, we create a new marker at that point. When you
    // click a marker, we remove it from the map.
      
    map = new GMap(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    //map.centerAndZoom(new GPoint(-102.832,56.4625), 14);
    //map.centerAndZoom(new GPoint(-73.88597,42.81879), 3);
    map.centerAndZoom(new GPoint(-102.832,56.4625), 14);




          if (GBrowserIsCompatible()) {
      
    GEvent.addListener(map, 'click', 
		       function(overlay, point) {
	if (overlay) {
            map.removeOverlay(overlay);
	} else if (point) {
            newMarker = new GMarker(point);
            newMarker.id = "LayPoint";
            map.addOverlay(newMarker);
	}
    });

    if( name>0 ) {
	getData(name);
    }

         } else {
            document.getElementById("map").innerHTML+="<p><center><b>Browser Not Compatible</b></center></p>\n";
            document.getElementById("map").innerHTML+="<p>We are sorry, but the browser that you are using is not compatible with the Google Map API.</p>\n";
            document.getElementById("map").innerHTML+="<p>Have you considered using <a href=\"http://www.mozilla.com\">firefox</a>?</p>\n";
         }


}

function getData(name) {
    var request = GXmlHttp.create();
    request.open('GET', '/map/get/'+name, true);
    request.onreadystatechange = function() {
	if (request.readyState == 4) {
	    var xmlDoc = request.responseXML;
	    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
	    for (var i = 0; i < markers.length; i++) {
		var point = new GPoint(
		     parseFloat(markers[i].getAttribute("lng")),
		     parseFloat(markers[i].getAttribute("lat")));
		var marker = new GMarker(point);
		marker.id = "LayPoint";
		map.addOverlay(marker);
	    }
	    markers = xmlDoc.documentElement.getElementsByTagName("start");
	    if (markers.length > 0 ) {
		map.centerAndZoom(new GPoint(markers[0].getAttribute("lng"),
					     markers[0].getAttribute("lat")),
				  markers[0].getAttribute("zoom"));

	    }
	}
    }
    request.send(null);
}


function writeForm(map) {
    var center = map.getCenterLatLng();
    var zoomLevel = map.getZoomLevel();

    document.getElementById("formData").innerHTML = "";
    document.getElementById("formData").innerHTML+=
	"<input name=\"numPoints\" type=\"hidden\" value=\"" +
        map.overlays.length+"\">";
    for (var i =0; i<map.overlays.length; i++) {
	if (map.overlays[i].id == "LayPoint") {
	    document.getElementById("formData").innerHTML+=
		"<input name=\"lng"+i+"\" type=\"hidden\" value=\"" +
                map.overlays[i].point.x+"\">";
	    document.getElementById("formData").innerHTML+=
		"<input name=\"lat"+i+"\" type=\"hidden\" value=\"" +
                map.overlays[i].point.y+"\">";
	}
    }

    document.getElementById("formData").innerHTML+="<input name=\"centerLong\" type=\"hidden\" value=\""+center.x+"\">";
    document.getElementById("formData").innerHTML+="<input name=\"centerLat\" type=\"hidden\" value=\""+center.y+"\">";
    document.getElementById("formData").innerHTML+="<input name=\"zoomlevel\" type=\"hidden\" value=\""+zoomLevel+"\">";

    document.pointData.submit();
}

    



function clearMap(map) {
    for (var i=map.overlays.length-1; i>=0 ; i--) {
	if (map.overlays[i].id == "LayPoint") {
	    map.removeOverlay(map.overlays[i]);
	}
    }
}

function centerMap(map) {
    var middleX = 0;
    var middleY = 0;
    for (var i=0;i<map.overlays.length ; i++) {
	if (map.overlays[i].id == "LayPoint") {
	    middleX += map.overlays[i].point.x;
	    middleY += map.overlays[i].point.y;
	}
    }
    map.centerAtLatLng(new GPoint(middleX/map.overlays.length,middleY/map.overlays.length));
}


function getUserRoute(selectButton) {
    var mapID=selectButton.options[selectButton.selectedIndex].value;
    getData(mapID);
}



