//------------------------------------------------------------------------------------//
// PROGRAMME : gMap.js
// DESCRIPTION : Fonctions permettant la gestion Google Map
// HISTORIQUE DES VERSIONS :
// V0.1 - 22/08/2007 - Léonard - Création
// V0.2 - 29/11/2007 - Léonard - Passage en statique
//------------------------------------------------------------------------------------//

//var icon = new GIcon();
//icon.image = url_site+"/charte/renard-carto.gif";
//icon.shadow = "";
//icon.iconSize = new GSize(43, 28);
//icon.shadowSize = new GSize(38, 42);
//icon.iconAnchor = new GPoint(19, 37);
//icon.infoWindowAnchor = new GPoint(19, 19);
var point = new GLatLng(48.849545,2.352448);
var lezoom = 15;
var maps = Object();
var map;
var nb_tentative_sta = Object();
/*
maps['map'] = Object();
maps['map']['gMap'] = null;
maps['map']['divName'] = 'map';
maps['top_map'] = Object();
maps['top_map']['gMap'] = null;
maps['top_map']['divName'] = 'top_map';
*/
function loadMap(name,zoom) 
{
	if (GBrowserIsCompatible()) 
	{
		maps[name] = Object();
		maps[name]['points'] = Array();
		maps[name]['center_set'] = false;
    	map = new GMap2(document.getElementById(name));
    	GEvent.addDomListener(document.getElementById(name), "DOMMouseScroll", wheelZoom);
		GEvent.addDomListener(document.getElementById(name), "mousewheel", wheelZoom);
		map.addControl(new GScaleControl());
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.clearOverlays();
		if (zoom==null){zoom=lezoom;}
		map.setCenter(point, zoom);
		map.setMapType(G_NORMAL_MAP);
		maps[name]['gMap'] = map;
  	}
	nb_tentative_sta[name] = Object();
}
function wheelZoom(e) {

	map = maps[e.currentTarget.id]['gMap'];

	if(e.cancelable)
	{
		e.preventDefault();
	}
	(e.detail || -e.wheelDelta) < 0 ? map.zoomIn('', false, true): map.zoomOut('', true);
	return (false);
}
/*
function createMarker(point,html) 
{
	var marker = new GMarker(point, icon);
	var options = { maxWidth: 50 };
	GEvent.addListener(marker, "mouseover", function() {
	  marker.openInfoWindowHtml(html,{ maxWidth: 150 });
	});
	GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml(html,{ maxWidth: 150 });
	});
	return marker;
}
*/
function myzoom(zoom, mapName) 
{
	map = maps[mapName]['gMap'];
	zoom > 0 ? map.zoomIn('', false, true): map.zoomOut('', true);
}
function mymove(a,b,mapName) 
{
	map = maps[mapName]['gMap'];
	map.panDirection(a,b);
}
function changeType(type,mapName)
{
	map = maps[mapName]['gMap'];
	if(type=='satellite')
	{
		map.setMapType(G_SATELLITE_MAP);
	}
	if(type=='map')
	{
		map.setMapType(G_NORMAL_MAP);
	}
	if(type=='hybrid')
	{
		map.setMapType(G_HYBRID_MAP);
	}
}
var markers = Object();
function createMarker(address, markerText, mapName,lgt,lat,adresse_sta,pays,zoom)
{
	lepoint = null;
	if ((lgt != null) && (lat != null))
	{
		if ((lgt != 0) && (lat != 0))
		{
			lepoint = new GLatLng(lat,lgt);
			nb_tentative_sta[mapName][adresse_sta] = 0;
		}
	}
	if (lepoint == null)
	{
		var localisator = new GClientGeocoder();
		nb_tentative_sta[mapName][adresse_sta] = 0;
		localisator.getLatLng(address, addMarker);
	} 
	else
	{
		addMarker(lepoint);
	}
	function addMarker(point)
	{
		map = maps[mapName]['gMap'];
		if (point == null)
		{
			//si aucun point n'est trouvé, on recherche avec l'adresse de la station
			if (nb_tentative_sta[mapName][adresse_sta] <= 1)
			{
				var localisator = new GClientGeocoder();
				nb_tentative_sta[mapName][adresse_sta]++;
				localisator.getLatLng(adresse_sta, addMarker);
			}
			else if (nb_tentative_sta[mapName][adresse_sta] <= 2)
			{
				var localisator = new GClientGeocoder();
				nb_tentative_sta[mapName][adresse_sta]++;
				zoom=5;
				localisator.getLatLng(pays, addMarker);
			}
			else
			{
				//alert("Introuvable : "+adresse_sta);		
			}	
		}
		else
		{
//			var marker = new GMarker(point, icon);
			var marker = new GMarker(point);
			//registerMarker(point, markerText);
			GEvent.addListener(marker, "mouseover", function() {
//			  marker.openInfoWindowHtml(markerText,{ maxWidth: 150,maxHeight:50 });
			  marker.openInfoWindowHtml(markerText);
			});
			GEvent.addListener(marker, "click", function() {
//			  marker.openInfoWindowHtml(markerText,{ maxWidth: 150,maxHeight:50 });
			  marker.openInfoWindowHtml(markerText);
			});
			map.addOverlay(marker);
			if (!maps[mapName]['center_set'])
			{
				if (zoom==null){zoom=lezoom;}
				map.setCenter(point, zoom);
//				marker.openInfoWindowHtml(markerText,{ maxWidth: 150,maxHeight:50 });
				marker.openInfoWindowHtml(markerText);
				maps[mapName]['center_set'] = true;
			}
		}
	}
}
/*
function setAutoZoom(mapName,markers)
{
	map = maps[mapName]['gMap'];
//	markers = maps[mapName]['points'];
	var bounds = new GLatLngBounds();
	alert(markers.length);
	//for each (mark in maps[mapName]['points'])
	for (var ind=0; ind < markers.length; ind++) 
	{
	
		bounds.extend(markers[ind].point);
		//bounds.extend(mark.point);
	}
	map.setZoom(map.getBoundsZoomLevel(bounds));
	map.setCenter(bounds.getCenter());
}
*/

