//ID de la region est situer dans le gabarit article
//<![CDATA[
// Déclaration des variables Google
	var map = null;
	var geocoder = null;
	var icon = new GIcon();
// Déclaration des variables de calcul
	var totallat=0;
	var totallng=0;
	var cptadr=0;
	var lstadr="";
	var zoom = 15;
	var minlat=180;
	var minlng=180;
	var maxlat=-180;
	var maxlng=-180;
	var mess="";
// Coordonnées du centre par défaut, Tour Eiffel, Paris, France
	var latdefault=48.85817876694892;
	var lngdefault=2.2944259643554688;

// Gestion des pictos
	icon.image = "squelettes/img/puce_map.gif";
	icon.shadow = "squelettes/img/mm_20_shadow.png";
	icon.iconSize = new GSize(30, 30);
	icon.shadowSize = new GSize(40, 40);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);	

// Chargement de la map à la lecture de page
	function load()
	{
		if (GBrowserIsCompatible())
		{
			map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(latdefault, lngdefault), 5);
// Attribut d'affichage : zoom et type d'affichage (plan, satellite, mixte). Attention, certains points peuvent se cacher dessous
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			geocoder = new GClientGeocoder();
			 for (cpt=0;cpt<region[id_region].length;cpt++)
			{
				showAddress(region[id_region][cpt],cpt);			
			} 
			
		}
	}

// Création d'un point sur la map
	function showAddress(address,fcpt)
	{
		var latitude=0;
		var longitude=0;
		var retour="";
// si les coordonnées sont connues, pas de geolocalisation 
		if ((address.latitude!="")&&(address.longitude!=""))
		{
			//alert (fcpt + " geo ok");
			latitude=address.latitude+0;
			longitude=address.longitude+0;
			var point = new GLatLng(latitude, longitude);
			var markerAgence = createMarker(point,cptadr,address,fcpt, false);
			map.addOverlay(markerAgence);
			lstadr=lstadr + retour;
		}
		else
		{
// si les coordonnées ne sont pas connues, tentative de geolocalisation 
	      	if (geocoder)
			{
				geocoder.getLatLng(
					address.adresse,
					function(point)
					{
// si la geocalisation n'a pas marché, invite à modifier l'adresse de recherche
						if (!point)
						{
							//alert (fcpt + " geo non trouvé");
							retour=(fcpt+1) + ") " + address.adresse + " non trouvé. Revoir l'adresse de recherche de l'indice " + fcpt + "<br />" ;
							lstadr=lstadr + retour;
						}
						else
						{
// si la geocalisation a marché, invite à modifier les coordonnées du lieu
							//alert (fcpt + " geo trouvé");
							var markerAgence = createMarker(point,cptadr,address,fcpt, true);
							map.addOverlay(markerAgence);
							retour=(fcpt+1) + ") " + address.adresse + " => latitude : " + point.lat() + " longitude : " + point.lng() + ". Renseigner le fichier point_region.js pour la region "+region
							lstadr=lstadr + retour;
						}
					}
				);
			}
		}
	}

	function createMarker(point, number, adr, ffcpt, geolocalisation)
	{
		var marker = new GMarker(point,icon);
		var adraff = "";
		cptadr++;

// Constitution du html du rollover
		if (adr.Logo!="") adraff = adraff + '<img src="squelettes/img/logo_google_map/'+adr.Logo+'"/ alt="">';
		if (adr.AfficheVille!="") adraff = adraff + '<p class="google_ville">'+adr.AfficheVille+'</p>';
		if (adr.AfficheAdr1!="") adraff = adraff + adr.AfficheAdr1 + "<br />";
		if (adr.AfficheAdr2!="") adraff = adraff + adr.AfficheAdr2 + "<br />";
		if (adr.AfficheCP!="") adraff = adraff + adr.AfficheCP + "<br />";
		if (adr.AfficheTel!="") adraff = adraff + "T&eacute;l. " + adr.AfficheTel + "<br />";

// cumul pour calculer le centre de la carte
		totallat=totallat+point.lat();
		totallng=totallng+point.lng();

		if (point.lat()<minlat) minlat=point.lat();
		if (point.lat()>maxlat) maxlat=point.lat();

		if (point.lng()<minlng) minlng=point.lng();
		if (point.lng()>maxlng) maxlng=point.lng();

// mise en place de l'évènement rollover
		GEvent.addListener(marker, "mouseover", function() 
			{
				marker.openInfoWindowHtml('<div class="logo_google">'+adraff+'</div>');//+'<img src="squelettes/img/logoNormandieGoogle.gif"/ alt="R&eacute;gion Normandie">'
			}
		);
		return marker;
	}

// Centre la map et zoom en faisant en sorte que tous les points soient visibles
	function CenterMap()
	{
		var ok=false;
// Si aucune coordonnées valides
		if ((totallat==0)&&(totallng==0))
		{
			map.setCenter(new GLatLng(latdefault, lngdefault), 5);
		}
		else
		{
// sinon, centrer la carte sur la moyenne des points
// et vérification que tous les points trouvés sont sur la carte en fonction du zoom
			while ((zoom>4)&&(!ok)) 
			{
				zoom--;
				//alert (zoom);
				nbok=0;
				map.setCenter(new GLatLng(totallat/cptadr, totallng/cptadr), zoom);
				var bounds = map.getBounds();
				var southWest = bounds.getSouthWest();
				var northEast = bounds.getNorthEast();

				if (southWest.lat() <= minlat) nbok++;
				if (northEast.lat() >= maxlat) nbok++;
				if (southWest.lng() <= minlng) nbok++;
				if (northEast.lng() >= maxlng) nbok++;
				if (nbok==4) ok=true;
			}
			//map.setCenter(new GLatLng(totallat/cptadr, totallng/cptadr), zoom-1);
		}
// S'il y a un message, affichage sous la map => invite à modifier soit la recherche, soit les coordonnées
		document.getElementById("lstadresse").innerHTML = lstadr;
// Arrête le timer
		Stop();
	}

// Fonction d'attente : attends 1 s les retours de calculs et coordonnées afin de centrer la map
	function Timer()
	{
		//Boucle de 1 seçondes (1000 miliseçondes)
		timeoutID = window.setTimeout("CenterMap()",1000);
	}

// Fonction d'arrêt du timer
	function Stop()
	{
		//Arret de la boucle
		window.clearTimeout(timeoutID);
	}

    //]]>