// load Google Maps
function loadGoogleMaps(xml_path, wrapper_id)
{
	var gm_xml_path		= !xml_path ? '/http/addresses_xml.php' : xml_path;
	var gm_wrapper_id	= !wrapper_id ? 'result_map' : wrapper_id;
	
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById(gm_wrapper_id));
		
		if (map)
		{
			// map.setCenter(new GLatLng(37.4419, -122.1419), 13);
			var geocoder = new GClientGeocoder();
			// geocoder.setBaseCountryCode("nl");
			
			var mapTypeControl = null;
			
			// add controls
			// map.addControl(new GMapTypeControl());
			// map.addControl(new GLargeMapControl());
			 map.addControl(new GSmallZoomControl3D());
			 
			
			GDownloadUrl(gm_xml_path, function(data, responseCode)
			{
				var xml = GXml.parse(data);
				
				// store markers in markers array
				var markers = xml.documentElement.getElementsByTagName("marker");

				// create marker icon
				var icon = new GIcon();
				icon.image = "/img/maps_marker.gif";
				icon.iconSize = new GSize(20, 19);
				icon.iconAnchor = new GPoint(0, 20);
				icon.infoWindowAnchor = new GPoint(5, 1);

				var latlngbounds = new GLatLngBounds();

				// loop over the markers array
				var total_markers = markers.length;
				for ( var i = 0; i < markers.length; i++)
				{
					var address = markers[i].getAttribute("address");
					var html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
					var label = markers[i].getAttribute("label");
					showAddress(map, geocoder, address, html, label, icon, latlngbounds, total_markers);
				}
			});
		}
	}
}

// showAddress
function showAddress(map, geocoder, address, html, label, icon, latlngbounds, total_markers)
{
	geocoder.getLatLng(address, function(point)
	{
		if (!point)
		{
			// alert(address + " niet gevonden");
		}
		else
		{
			latlngbounds.extend(point);
			// set centre using the calculated values
			
			if (total_markers == 1)
			{
				map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)-10); // added zoomlevel -1 by Marco: to show always all the icons on the map					
			}
			else {
				map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)-2); // added zoomlevel -1 by Marco: to show always all the icons on the map
			}
			

			var marker = createMarker(point, html + '<br/>' + address, icon);
			map.addOverlay(marker);
		}
	});
}

// Create marker and set up event window
function createMarker(point, html, icon)
{
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function()
	{
		marker.openInfoWindowHtml(html);
	});
	
	return marker;
}
