var myMap;
var oldMarker = null;
var oldID 	  = null;
var moz       = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined');

function initMap(rawxmlstring,controltype,currentID) 
{
	// Search map only - Use the default marker to init. the old one...
	if(controltype!='small')
	{
		oldID = currentID;
	}
	
	if (GBrowserIsCompatible()) 
	{
		function createMarker(point,icon,data) 
		{
			var marker = new GMarker(point,icon);
			
			// Search map only - Switch activated markers...
			if(controltype!='small')
			{
				GEvent.addListener(marker, "click", function() {
					if(oldMarker!=null)
						oldMarker.setImage("/en/images/map_icon_1.png");
					oldMarker = marker;
					marker.setImage("/en/images/map_icon_2.png");
					
					if(moz)	//Mozilla
						var LID = data.getElementsByTagName("LID")[0].textContent;
					else
						var LID = data.getElementsByTagName("LID")[0].text;
					var RI = document.getElementById("RI["+LID+"]");
					RI.src="/en/getlogo.php?id="+LID;
					
					if(oldID!=null)
						Hide('RD['+oldID+']');
					Show('RD['+LID+']');
					oldID=LID;
					});
			}
			
			return marker;
		}
	
		myMap = new GMap2(document.getElementById("container_frb"));
		if(controltype=='small')
			myMap.addControl(new GSmallMapControl());
		else
		{
			myMap.addControl(new GLargeMapControl());
			myMap.addControl(new GMapTypeControl());
		}

		var xml = GXml.parse(rawxmlstring);
		
		var center = xml.documentElement.getElementsByTagName("center");
		var latCenter = parseFloat(center[0].getAttribute("lat"));
		var lngCenter = parseFloat(center[0].getAttribute("lng"));
		var span = xml.documentElement.getElementsByTagName("span");
		var latSpan = parseFloat(span[0].getAttribute("lat"));
		var lngSpan = parseFloat(span[0].getAttribute("lng"));

		var the_bounds = new GLatLngBounds(
			new GLatLng(latCenter + latSpan/2, lngCenter - lngSpan/2),
			new GLatLng(latCenter - latSpan/2, lngCenter + lngSpan/2) );

		if(controltype=='small')
			var zlevel = myMap.getBoundsZoomLevel(the_bounds) + 1;
		else
			var zlevel = myMap.getBoundsZoomLevel(the_bounds);
		if (zlevel < 3)
			zlevel = 3;
		myMap.setCenter(new GLatLng(latCenter, lngCenter), zlevel);
		
		var markers 	= xml.documentElement.getElementsByTagName("location");
		var icon    	= new GIcon(G_DEFAULT_ICON,"/en/images/map_icon_1.png");
		var icon_sel    = new GIcon(G_DEFAULT_ICON,"/en/images/map_icon_2.png");
		var newmarker;
		
		for (var i = 0; i < markers.length; i++)
		{
			var point = markers[i].getElementsByTagName("point");
			var pointlatlng = new GLatLng(parseFloat(point[0].getAttribute("lat")),
										  parseFloat(point[0].getAttribute("lng")));
			
			// Small map only - unique marker selected by default
			if(controltype=='small')
			{
				newmarker = createMarker(pointlatlng, icon_sel, markers[i]);
			}
			// Search map only - marker selection supported
			else
			{			
				if(moz)
					var LID = markers[i].getElementsByTagName("LID")[0].textContent;
				else
					var LID = markers[i].getElementsByTagName("LID")[0].text;
				
				// Selected marker creation...
				if(LID==currentID)
				{
					// Activate the default marker
					newmarker = createMarker(pointlatlng, icon_sel, markers[i]);

					// Use the default marker to init. the old one.
					oldMarker = newmarker;
					oldID     = LID;
				}
				// Non-selected marker creation...
				else
				{
					newmarker = createMarker(pointlatlng, icon, markers[i]);
				}
			}
			
			myMap.addOverlay(newmarker);
		}

	}
	else 
	{
		if(controltype!='small')
			alert("Désolé, les cartes ne sont pas compatibles avec votre fureteur!");
	}
}

