function test_google_map_onload_event() {
	if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("gmap-container"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
	}
}


var markers = Array();

function google_map_onload_event() {
	if (GBrowserIsCompatible()) {
		var xml_url = here_url + "/coordinate_info.xml";
		var coordinate_info_xml = get_response_text(xml_url);
		var coordinate_info = xml_from_string(coordinate_info_xml);

		var member_info_records = coordinate_info.getElementsByTagName(
															   "member-info");
																	   
		// Initialize the map and the bounds object
		var map = new GMap2(document.getElementById("gmap-container"));

        var base_icon = new GIcon();
        base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        base_icon.iconSize = new GSize(20, 32);
        base_icon.shadowSize = new GSize(37, 34);
        base_icon.iconAnchor = new GPoint(9, 32);
        base_icon.infoWindowAnchor = new GPoint(9, 2);
        base_icon.infoShadowAnchor = new GPoint(18, 25);
		
		var points = Array();
		var icon_cache = Array();
		for (var a = 0; a < member_info_records.length; a++)
		{
			var result;
			var member_info = member_info_records[a];
			result = member_info.getElementsByTagName("lat");
			var lat = result[0].firstChild.nodeValue;
			result = member_info.getElementsByTagName("lng");
			var lng = result[0].firstChild.nodeValue;
			result = member_info.getElementsByTagName("info-url");
			var details_url = result[0].firstChild.nodeValue;
			result = member_info.getElementsByTagName("title");
			var title = result[0].firstChild.nodeValue;
			result = member_info.getElementsByTagName("icon");
			var icon_url = result[0].firstChild.nodeValue;

			var point = new GLatLng(lat, lng, 0);			
			points.push(point);

			var icon;
			if ( icon_cache[icon_url] )
			{
				icon = icon_cache[icon_url];
			}
			else
			{
				icon = new GIcon(base_icon);
				icon.image = icon_url;
				icon_cache[icon_url] = icon;
			};

			
			var marker_opts = new Object();
			marker_opts.title = title;
			marker_opts.icon = icon;
			
			var marker = new GMarker(point, marker_opts);
			marker.member_details_url = details_url;
			marker.vdp_icon_url = icon_url;			
			GEvent.addListener( marker, "click", click_marker );

			markers.push(marker);
		}

		// Calculate the bounds
		var bounds = new GLatLngBounds(points[0], points[0]);

		for (var a = 1; a < points.length; a++)
		{
			bounds.extend(points[a]);
		}

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		//var marker = new GMarker(bounds.getCenter());
		//map.addOverlay(marker);

		// Center and zoom the map to contain all points
		
		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);
		map.addControl(new GLargeMapControl());
		
		// http://www.google.com/uds/solutions/localsearch/reference.html#_searchformhinttext
		var ls_options = new Object();
		ls_options.searchFormHint = "Geben Sie Ihre Adresse ein!";
		ls_options.resultList = google.maps.LocalSearch.RESULT_LIST_SUPPRESS;

		map.addControl(new google.maps.LocalSearch(ls_options),
					   new GControlPosition(G_ANCHOR_BOTTOM_RIGHT,
											new GSize(10,20)));

		for (var a = 0; a < points.length; a++)
		{
			map.addOverlay(markers[a]);			
		};
	}
	else
	{
		alert("Die Karte kann von Ihrem Browser nicht angezeigt werden!");
		window.location = "http://www.praeparation.de";
	}
}

var last_marker = null;

function click_marker()
{
	var url = this.member_details_url;
	var member_details_div = document.getElementById("member-details");
	replace_element_content_from_url(member_details_div, url, true, null);
	this.setImage(here_url + '/vdp_active?png=1');

	if ( last_marker )
	{
		last_marker.setImage(last_marker.vdp_icon_url);
	}

	last_marker = this;	
}

function set_gmap_filter(radio_button)
{
	var active_icon_url = radio_button.value;

	if ( active_icon_url == '__all__')
	{	   			
		for (var a = 0; a < markers.length; a++)
		{
			markers[a].show();
		}
	}
	else
	{
		for (var a = 0; a < markers.length; a++)
		{
			if ( markers[a].vdp_icon_url == active_icon_url )
			{
				markers[a].show();
			}
			else
			{
				markers[a].hide();
			}
		}
	}
}
		
				




function catch_geocode_result( point )
{
	if ( point ) {
		var marker = new GMarker(point);
		map.addOverlay(marker);
		
		GEvent.addListener(marker, "click",
						   function()
						   {
							   marker.openInfoWindowHtml(info_html);
						   } );
		
		self.points.push(point);
			
		// If we have geocoded all addresses, finalize the map.
		if ( points.length == info.length ) {
				finalize_map();
		}	
	}
}

function finalize_map()
{
	// Calculate the bounds
	var p0 = points.pop();
	var p1 = points.pop();

	alert("Finalize");
	var bounds = new GLatLngBounds(p0, p1);

	for (var a = 0; a < points.length; a++)
	{
		bounds.extend(points[a]);
	}

	// Center and zoom the map to contain all points
	map.setCenter(bounds.getCenter());
	map.setZoom(map.getBoundsZoomLevel(bounds));
	
	var mapControl = new GMapTypeControl();
	map.addControl(mapControl);
	map.addControl(new GLargeMapControl());
}


