function routeMap(gMap, centre, kmlActual, kmlPlan, kmlSuggest)
{
	this.gMap = gMap;
	this.centre = centre;
	this.kmlActual = kmlActual;
	this.kmlPlan = kmlPlan;
	this.kmlSuggest = kmlSuggest;
}

function routeMapItem(kml, visible) {
	this.kml = kml;
	this.visible = visible;
}

function getLocations(centre) {
    var map = oRouteMap.gMap;
    map.setCenter(oRouteMap.centre);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
	map.addOverlay(oRouteMap.kmlActual.kml);
    map.addOverlay(oRouteMap.kmlPlan.kml);
	map.addOverlay(oRouteMap.kmlSuggest.kml);
	centreMap();
	
    //$("#message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));
    
    //*** ADDING POINT ***//
    // Add a click listener for map clicks
    GEvent.addListener(map, "click", function(overlay, latlng) {
        if (latlng) {
            var myHtml = "<form action=\"test.html\" method=\"get\" id=\"add-location\">" + $("#add-location-template").html()
            myHtml += "<input type=\"hidden\" name=\"latitude\" id=\"latitude\" value=\"" + latlng.lat() + "\" />";
            myHtml += "<input type=\"hidden\" name=\"longitude\" id=\"longitude\" value=\"" + latlng.lng() + "\" /></form>";
			map.openInfoWindowHtml(latlng, myHtml);
        }
    });
    
}

function centreMap() {
	if (oRouteMap.kmlActual.kml.hasLoaded())
	{
		oRouteMap.kmlActual.kml.gotoDefaultViewport(oRouteMap.gMap);
		oRouteMap.gMap.setZoom(4);
	} else {
		setTimeout('centreMap()', 1000);
	}
}

function addPoint() {
    if ($("#add-location").validate().form())
	{
		var name = $('#add-location :input[name=name]').val();    
	    var email = $('#add-location :input[name=email]').val();
		var location = $('#add-location :input[name=location]').val();
	    var lat = $('#add-location :input[name=latitude]').val();
	    var lng = $('#add-location :input[name=longitude]').val();
	    var point = new GLatLng(lat, lng);
	    var marker = new GMarker(point); 
		var url = "/route";   
	
		$.post(url, { name: name, email: email, lat: lat, lng: lng, location: location });        
		
	    marker.bindInfoWindowHtml("<p>Details of your suggestion:</p><ul><li>Name:" + name + "</li><li>Location: " + location + "</li></ul>");
	    oRouteMap.gMap.closeInfoWindow();  
	    oRouteMap.gMap.addOverlay(marker);
	}   
}

function toggleRoute(val) {
	var route;
	switch(val) {
		case 'actual':
			route = oRouteMap.kmlActual;
			break;
		case 'plan':
			route = oRouteMap.kmlPlan;
			break;
		case 'suggest':
			route = oRouteMap.kmlSuggest;
			break;
		default:
			route = null;
	}
	if (route.visible) {
		oRouteMap.gMap.removeOverlay(route.kml);
		route.visible = false;
	} else {
		oRouteMap.gMap.addOverlay(route.kml);
		route.visible = true;
	}
}