
var GoogleMap;
var gdir;
var geocoder = null;
var addressMarker;

function GoogleMaps(){}

	GoogleMaps.init = function()
	{
      if (GBrowserIsCompatible()) 
      {      
     	
        GoogleMap = new GMap2(document.getElementById("Googlemap"));
        gdir = new GDirections(GoogleMap, document.getElementById("directionsCache"));
        
        GEvent.addListener(gdir, "load", GoogleMaps.handleLoad);
        GEvent.addListener(gdir, "error", GoogleMaps.handleError);

		//GoogleMap.setCenter("Willem dreeslaan 396, 2729 NK, Zoetermeer", GoogleMap.getZoom() + zoomfactor);
		GoogleMap.setCenter(new GLatLng(52.062506, 4.531587), 12)

        //GoogleMaps.setDirections("Nieuwehaven 208-A, 2801 ED, Gouda", "Willem dreeslaan 396, 2729 NK, Zoetermeer", "nl");
      }		
	}
	
	GoogleMaps.setDirections = function(fromAddress, toAddress, locale)
	{
		//alert(fromAddress + " " + toAddress + " " + locale);
		gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": locale });
	}
	
	GoogleMaps.validate = function(o)
	{
		return (
			checkString(o.from_street,"Straat") &&
			checkString(o.from_zipcode,"Postcode") &&
			checkString(o.from_city,"Plaats") &&
			checkString(o.to_street,"Straat") &&
			checkString(o.to_zipcode,"Postcode") &&
			checkString(o.to_city,"Plaats")
		);
	}
	
	GoogleMaps.getRoute = function()
	{
		var d = document.frmRoute;
		if (GoogleMaps.validate(d))
		{
			$("#googleError").hide();
			GoogleMaps.setDirections(d.from_street.value + ", " + d.from_zipcode.value + ", " + d.from_city.value, d.to_street.value + ", " + d.to_zipcode.value + ", " + d.to_city.value, "nl");
		}
	}
	
	
	GoogleMaps.handleLoad = function()
	{
		var n = gdir.getNumRoutes();
		var o = gdir.getRoute(0);

		var nSteps = o.getNumSteps();
		var s = "<p><h2>Routebeschrijving</h2></p><table id=tDirection border=0 cellspacing=0 cellpadding=0 width=100%>";
		s += "<thead><tr><td>#</td><td>Beschrijving</td><td>Duur</td><td>Afstand</td></thead><tbody>";

		for (var i = 0; i < nSteps; i++)
		{
			var oStep = o.getStep(i);
			var sDescription = oStep.getDescriptionHtml();
			var sDistance = oStep.getDistance();
			var sDuration = oStep.getDuration();
			
			sClass = "";
			if (i % 2 == 0) 
			{ 
				sClass = "class=odd"; 
			}

			s += "<tr " + sClass + "><td>" + (i+1) + "</td><td>" + sDescription + "</td><td align=\"right\">" + sDuration.html + "</td><td align=\"right\">" + sDistance.html + "</td></tr>";
		}
		
		s += "</tbody></table></p>";
	
	  $("#directions").show();
      $("#directions").html(s);
	}
	
	GoogleMaps.handleError = function()
	{
		var sC = gdir.getStatus().code;
		var sE = "";
		
		switch (sC) 
		{
			case G_GEO_UNKNOWN_ADDRESS:
				
				sE = ""
				break;	
				
			case G_GEO_SERVER_ERROR:
			
				sE = ""
				break;	
			
			case G_GEO_MISSING_QUERY:

				sE = ""
				break;	
			
			case G_GEO_BAD_KEY:

				sE = ""
				break;	
				
			case G_GEO_BAD_REQUEST:

				sE = ""
				break;
				
			default:
				
				sE = "Een onbekende fout is opgetreden."
				break;	
		}
		
		showError('Het is niet gelukt om de route te bereken. Probeer een andere route in te stellen.');
		//alert("Foutmelding: " + sE);
	}

//window.onload = GoogleMaps.init;
window.onunload = GUnload;

function showError(s)
{
	$("#googleError").html(s);	
	$("#googleError").show();
}