var map;
var gdir;
var map = false;

function RPInit()
{
	if (GBrowserIsCompatible())
	{		
		map = new GMap2(document.getElementById("map_canvas"));
		var start = new GLatLng(50.920766,6.032076);
		map.setCenter(start, 7);
		map.addControl(new GMapTypeControl(1));
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl(250));
		new GKeyboardHandler(map);
		map.enableDoubleClickZoom();
		
		var ovSize = new GSize(540, 400)
		var ovMap = new GOverviewMapControl(ovSize);
		map.addControl(ovMap);
		ovMap.hide();
		
		gdir = new GDirections(map, document.getElementById("directions"));
			
		GEvent.addListener(gdir, "load", onGDirectionsLoad);
		GEvent.addListener(gdir, "error", handleErrors);
		
		map.zoomIn();map.zoomIn();map.zoomIn();map.zoomIn();map.zoomIn();
	}
}

function handleErrors()
{				
	switch (gdir.getStatus().code)
	{
		case G_GEO_BAD_REQUEST:
			alert("De aanvraag kon niet worden voldaan. Foutcode " + gdir.getStatus().code);
			break;
		case G_GEO_SERVER_ERROR:
			alert("De aanvraag kon niet succesvol worden voldaan door een onbekende fout.\nFoutcode " + gdir.getStatus().code);
			break;
		case G_GEO_MISSING_QUERY:
			alert("De HTTP 'q' parameter mist of heeft geen waarde. Mogelijk heeft u geen vertrekadres en/of aankomst adres opgegeven.\nFoutcode " + gdir.getStatus().code);
			break;
		case G_GEO_UNKNOWN_ADDRESS:
			alert("Eén van de opgegeven adressen is onbekend. Dit kan komen omdat het adres redelijk nieuw is, of omdat het adres niet bestaat.\nFoutcode " + gdir.getStatus().code); 
			break;
		case G_GEO_UNAVAILABLE_ADDRESS:
			alert("Door juridische en/of contractuele redenen kan er geen route gegeven worden voor de gegeven lokaties.\nFoutcode " + gdir.getStatus().code);
			break;
		case G_GEO_UNKNOWN_DIRECTIONS:
			alert("Helaas kunnen wij geen route berekenen tussen de twee door u op gegeven lokaties. Dit kan komen omdat er geen route is, of omdat er geen data beschikbaar is.\nFoutcode " + gdir.getStatus().code);
			break;
		case G_GEO_BAD_KEY:
			alert("De gegeven Google Maps API key is ongeldig of komt niet overeen met het gegeven domein.\nFoutcode " + gdir.getStatus().code);
			break;
		
			
		default:
			alert("Er is een onbekende fout opgetreden. Probeert u deze pagina te herladen.");
	}
}

function onGDirectionsLoad()
{
	document.getElementById('routeplanner').style.display = 'block';
}

function RPsetDirections()
{	
	gdir.load("from: " + document.getElementById('fromAddress').value + " to: " + document.getElementById('toAddress').value, { "locale": "nl" });	
}

function RPhideMap()
{	
	document.getElementById('map_canvas').style.display = 'none';
	document.getElementById('showMap').disabled = 'disabled';
}

function RPmarkedMap(clat, clon, mlat, mlon, zoom)
{
	if (GBrowserIsCompatible())
	{		
		var map = new GMap2(document.getElementById("markedMap"));
        	map.setCenter(new GLatLng(clon, clat), zoom);

		var point = new GLatLng(mlon, mlat);
		map.addOverlay(new GMarker(point));
	}
}
