var map=null;
var gLat=null;
var gLng=null;
var gZoom=null;

function initGoogleMapSpot() 
{      
	if(GBrowserIsCompatible())
	{        			
		/*Init Map*/
		map = new google.maps.Map2(document.getElementById("map_canvas_spot"));
		initCenter();
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());			
		map.setMapType(G_HYBRID_MAP);  
		//map.enableScrollWheelZoom();
		
		if(document.getElementById("debug_map"))
		{
			GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) 
			{  
				setHtmlMessage(latlng);
			});
		}
		var url="/googlemap.php?idSpot="+document.getElementById("idSpot").value;
		GDownloadUrl(url, function(data, responseCode) 
		{  
			var xml = GXml.parse(data);  
			var spots = xml.documentElement.getElementsByTagName("spot");  
			var zones = xml.documentElement.getElementsByTagName("zone");  
			
			/*Init Point*/
			for (var i = 0; i<spots.length; i++) 
			{    
				var xmlMarker=spots[i];
				map.addOverlay(createSpot(xmlMarker, zones));  
				gLat=xmlMarker.getAttribute("centerlat");
				gLng=xmlMarker.getAttribute("centerlng");
				gZoom=xmlMarker.getAttribute("zoom");
				setCenterByGlobal();
			}
		});			
	}    
}    

function initGoogleMapHome() 
{      
	if(GBrowserIsCompatible())
	{        			
		/*Init Map*/
		map = new google.maps.Map2(document.getElementById("map_canvas"));
		initCenter();
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		//map.addControl(new GOverviewMapControl());			
		map.setMapType(G_HYBRID_MAP);  
		//map.enableScrollWheelZoom();
		
		if(document.getElementById("debug_map"))
		{
			GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) 
			{  
				setHtmlMessage(latlng);
			});
		}
		
		GDownloadUrl("/googlemap.php", function(data, responseCode) 
		{  
			var xml = GXml.parse(data);  
			var spots = xml.documentElement.getElementsByTagName("spot");  
			var zones = xml.documentElement.getElementsByTagName("zone");  
			
			/*Init Point*/
			for (var i = 0; i<spots.length; i++) 
			{    
				map.addOverlay(createSpot(spots[i], zones));  
			}
		});			
	}    
}    

function setHtmlMessage(latlng)
{
	if(document.getElementById("debug_map"))
	{
		var myHtml="<b>center : </b>"+map.getCenter().toString()+"<br/>";
		myHtml+="<b>zoom : </b>"+map.getZoom().toString()+"<br/>";	
		myHtml+="<b>point : </b>"+latlng.toString()+"<br/>";
		document.getElementById("debug_map").innerHTML=myHtml;
	}
}

function createSpot(xmlMarker, xmlZones) 
{  
	var xmlZone=getElementById(xmlZones,parseInt(xmlMarker.getAttribute("idzone")));		
	var zoneLevel=parseInt(xmlZone.getAttribute("zoom"));
	var point=new GLatLng(parseFloat(xmlMarker.getAttribute("lat")),parseFloat(xmlMarker.getAttribute("lng")));    		
	
	markerOptions = { icon:getIcon(xmlMarker.getAttribute("is-windsurf"),xmlMarker.getAttribute("is-kite")) };
	var marker = new GMarker(point, markerOptions);  

	GEvent.addListener(marker, "click", function() 
	{    
		zoomOrPrintMessage(xmlZone, zoneLevel, xmlMarker, point);			
	});		
	/*
	GEvent.addListener(marker, "mouseover", function(latlng) 
	{    
		zoomOrPrintMessage(xmlZone, zoneLevel, xmlMarker, point);
	});*/		
	return marker;
}	

function getIcon(isWindsurf,isKitesurf)
{
	var myIcon = new GIcon(G_DEFAULT_ICON);
    if(isWindsurf=="true")
		myIcon.image = "/img/spotwindsurf.jpg";
	else if(isKitesurf=="true")
		myIcon.image = "/img/spotkite.jpg";
	myIcon.iconSize=new GSize(32, 32);
	return(myIcon);
}

function zoomOrPrintMessage(xmlZone, zoneLevel, xmlMarker, point)
{
	if(map.getZoom()<zoneLevel)
	{
		setCenter(xmlZone.getAttribute("centerlat"), xmlZone.getAttribute("centerlng"), zoneLevel);
		map.savePosition();
	}
	else
	{
		gLat=xmlMarker.getAttribute("centerlat");
		gLng=xmlMarker.getAttribute("centerlng");
		gZoom=xmlMarker.getAttribute("zoom");
		var myHtml = "";	
		if(xmlMarker.getAttribute("online")=="1")
		{
			myHtml+="<table width='500' cellpadding='3' cellspacing='0'>";
			myHtml+="<tr>";
			myHtml+="<td>";
			myHtml+="<div id='para'>";	
			myHtml+=xmlMarker.getAttribute("title") + " &agrave; <b>"+xmlMarker.getAttribute("name")+" - "+xmlMarker.getAttribute("country")+"</b><br/>";    
			myHtml+="<a href='javascript:setCenterByGlobal()'>Zoomer</a> sur le spot<br/>";
			myHtml+="<b>Navigation : </b>"+xmlMarker.getAttribute("type-navigation")+"<br/>";
			myHtml+="<b>Meilleur p&eacute;riode : </b>"+xmlMarker.getAttribute("date-bestperiode")+"<br/>";
		    if(xmlMarker.getAttribute("is-windsurf")=="true")
				myHtml+="<img src='/img/spotwindsurf.jpg' border='0'/>";
		    if(xmlMarker.getAttribute("is-kite")=="true")
				myHtml+="<img src='/img/spotkite.jpg' border='0'/>";
			myHtml+="<a href='"+xmlMarker.getAttribute("path")+"?from=map'>En savoir plus sur ce spot</a><br/>";
			myHtml+=getEndHtml(zoneLevel);
			myHtml+="</div>";
			myHtml+="</td>";
			myHtml+="<td>";
			myHtml+="<a href='"+xmlMarker.getAttribute("path")+"?from=map_photo'><img src=\'"+xmlMarker.getAttribute("photo")+"\' width='160' border='0'/></a>";			
			myHtml+="</td>";			
			myHtml+="</tr>";
			myHtml+="</table>";
		}
		else
		{
			myHtml+="<div id='para'>";	
			myHtml+= xmlMarker.getAttribute("title") + " &agrave; <b>"+xmlMarker.getAttribute("name")+" - "+xmlMarker.getAttribute("country")+"</b><br/>";    
			myHtml+="<a href='javascript:setCenterByGlobal()'>Zoomer</a> sur le spot<br/>";		
			myHtml+=getEndHtml(zoneLevel);
			myHtml+="</div>";
		}			
		map.openInfoWindowHtml(point, myHtml);		
	}		
}

function getEndHtml(zoneLevel)
{
	var myHtml = "";
	myHtml+="<br/>";
	if(map.getZoom()==zoneLevel)				
		myHtml+="<a href='javascript:initCenter()'>Retour sur la vue monde</a>";
	else
	{
		myHtml+="<a href='javascript:backMap()'>Retour sur la vue zone</a><br/>";
		myHtml+="<a href='javascript:initCenter()'>Retour sur la vue monde</a>";
	}
	return(myHtml);
}	
	
function getElementById(nodeList,idValue)
{
	for (var i = 0; i<nodeList.length; i++)
	{
		//alert(nodeList[i].getAttribute("id"));
		if(parseInt(nodeList[i].getAttribute("id"))==idValue)
		{
			return(nodeList[i]);
		}
	}
	return(null);
}
	
function initCenter()
{
	if(map!=null)
	{
		map.setCenter(new GLatLng(23.241346102386135, 14.4140625), 2); 
		map.closeInfoWindow();
	}
}

function setCenterByGlobal()
{
	if(gLat!=null && gLng!=null && gZoom!=null)
		setCenter(gLat, gLng, gZoom);
}

function setCenter(lat, lng, zoom)
{
	if(map!=null)
	{
		map.setCenter(new GLatLng(parseFloat(lat), parseFloat(lng)), parseInt(zoom));
		map.closeInfoWindow();
	}
}
	
function backMap()
{
	if(map!=null)
	{
		map.returnToSavedPosition();
		map.closeInfoWindow();
	}
}
