var infoTextMaxWidth = 300;			// When there is a marker for the infowindow, this is the max width
var defaultZoom = 12;				// Default zoom level

function loadGoogleMaps(startLat, startLong, startZoom, draggable, infotext, mapDiv, multipleMarkers, typeOnderwijs)		// draggable -> boolean, can the marker be moved, infotext -> html text for info window
{
	if(startLat == undefined)
		startLat = 51.922623;

	if(startLong == undefined)
		startLong = 4.470748;

	if(startZoom == undefined)
		startZoom = defaultZoom;

	if(mapDiv == undefined)
		mapDiv = 'map';	
	
	if (GBrowserIsCompatible() && document.getElementById(mapDiv))
	{
		/* Create a new Google maps object */
        var map = new GMap2(document.getElementById(mapDiv));
		
		/* Set the startpoint of the map */
		map.setCenter(new GLatLng(startLat, startLong), startZoom);
		var center = map.getCenter();

		/* Map zoom and scroll buttons */
		map.addControl(new GSmallMapControl());
		
		/* Map type selector buttons */
		map.addControl(new GMapTypeControl());

		var icon = new GIcon();
		icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		icon.iconSize = new GSize(12, 20);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6, 20);
		icon.infoWindowAnchor = new GPoint(5, 1);
		
		/* If no multipleMarkers array is provided, just put one marker on the map*/
		if (multipleMarkers == undefined)
		{
			if(draggable)
			{
				/* Place a draggable marker */
				var marker = new GMarker(center, {draggable: true, bouncy: false});

				GEvent.addListener(marker, "dragstart", function()
				{
					map.closeInfoWindow();
				});

				GEvent.addListener(marker, "dragend", function()
				{
					newPosition = marker.getPoint();
					document.getElementById("edumap_coord_lat").value = newPosition.lat().toString();
					document.getElementById("edumap_coord_long").value = newPosition.lng().toString();
					//marker.openInfoWindowHtml("Nieuwe positie gezet");
				});
			}
			else
			{
				/* Place a marker (not draggable) */
				//var marker = new GMarker(center, {draggable: false, icon: icon});
				var marker = new GMarker(center, {draggable: false});
		
				/* Add an infowindow for this marker */
				if(infotext != undefined)
				{
					/*GEvent.addListener(marker, "mouseover", function()
					{
						map.openInfoWindowHtml(center,infotext,{maxWidth: infoTextMaxWidth}); 
					});

					GEvent.addListener(marker, "mouseout", function()
					{
						map.closeInfoWindow(); 
					});*/

					GEvent.addListener(marker, "click", function()
					{
						/*alert('tet'); 
						document.getElementById('test').value = 'ffff';*/

						map.openInfoWindowHtml(center,infotext,{maxWidth: infoTextMaxWidth});
					});
				}
			}

			map.addOverlay(marker);
		}
		else /* Else print all the markers in the given array on the map */
		{
			if(multipleMarkers.length > 0)
			{
				for(i=0; i<multipleMarkers.length; i++)
				{
					if (multipleMarkers[i] != undefined && (typeOnderwijs == i || typeOnderwijs == 5))
					{					
						for(j=0; j<multipleMarkers[i].length; j++)
						{
							newPos = new GLatLng(multipleMarkers[i][j][0], multipleMarkers[i][j][1]);
							map.addOverlay(createMarker(newPos, icon, multipleMarkers[i][j][2]));
						}
					}
				}
			}
		}
	}
}

function createMarker(point, icon, text)
{
	var marker = new GMarker(point, {draggable: false, icon: icon});

	/* Add an infowindow for this marker */
	if(text != undefined)
	{
		/*GEvent.addListener(marker, "mouseover", function()
		{
			marker.openInfoWindowHtml(text); 
		});

		GEvent.addListener(marker, "mouseout", function()
		{
			marker.closeInfoWindow(); 
		});*/

		GEvent.addListener(marker, "click", function()
		{
			marker.openInfoWindowHtml(text); 
		});
	}

	return marker;
}

