var localisationSilencieuse = false;

 /**
 * trouveLocalisationSimplifie : Localisation et affichage d'un marqueur à partir des données de la page
 *
 * Fonction qui permet de centrer la map suivant le formulaire de recherche (ou des hidden)
 * Si on posséde la latitude et la longitude, on zoom directement avec ces données
 * sinon, on doit géocaliser, à partir des autres informations (Pays, adresse, ville, cp)
 *
 * @author Mathieu VIEL <viel@benchmark.fr>
 *
 * @return Void
 */
function trouveLocalisationSimplifie() {
	var adresse = "";
	if(document.getElementById('f_adressegmap')) {
		var adresse = document.getElementById('f_adressegmap').value;
	}
	var ville = "";
	if(document.getElementById('f_valuevillegmap')) {
		var ville = document.getElementById('f_valuevillegmap').value;
	}
	var cp = "";
	if(document.getElementById('f_valuecpgmap')) {
		var cp = document.getElementById('f_valuecpgmap').value;
	}
	var pays = "";
	if(document.getElementById('f_valuepaysgmap')) {
		var pays = document.getElementById('f_valuepaysgmap').value;
	}
	var coordonnee_map_x = "";
	if(document.getElementById('f_valuecoordonneegmap_longitude')) {
		if(document.getElementById('f_valuecoordonneegmap_longitude').value != 'null'){
			var coordonnee_map_x = document.getElementById('f_valuecoordonneegmap_longitude').value;
		}
	}
	var coordonnee_map_y = "";
	if(document.getElementById('f_valuecoordonneegmap_latitude')) {
		if(document.getElementById('f_valuecoordonneegmap_latitude').value != 'null'){
			var coordonnee_map_y = document.getElementById('f_valuecoordonneegmap_latitude').value;
		}
	}

	var uneadresse = "";
	var zoomDefinitif = 0;

	if(pays != "" && ville != "" && cp != "" && adresse != "") {
		uneadresse = adresse + " , " + ville + " , " + cp + " , " + pays;
		zoomDefinitif = _zoom_adresse;
	} else if(pays != "" && ville != "" && adresse != "") {
		uneadresse = adresse + " , " + ville + " , " + pays;
		zoomDefinitif = _zoom_adresse;
	} else if(pays != "" && ville != "" && cp != "") {
		uneadresse = ville + " , " + cp + " , " + pays;
		zoomDefinitif = _zoom_ville;
	} else if(pays != "" && ville != "") {
		uneadresse = ville + " , " + pays;
		zoomDefinitif = _zoom_ville;
	} else if(pays != "") {
		uneadresse = pays;
		zoomDefinitif = _zoom_pays;
	}
	
	if(coordonnee_map_x != "" && coordonnee_map_y != "" && typeof(coordonnee_map_x)!= 'undefined' && typeof(coordonnee_map_x)!= 'undefined') {
		centre_de_la_carte_coordonnee = new GLatLng(coordonnee_map_y,coordonnee_map_x);
		if(typeof(le_marqueur) != 'undefined'){
			le_marqueur.closeInfoWindow();
			le_marqueur.setPoint(centre_de_la_carte_coordonnee);
		}
		map_globale.setCenter(centre_de_la_carte_coordonnee);
		if(typeof(document.getElementById('f_valuezoomgmap')) != 'undefined' && document.getElementById('f_valuezoomgmap').value != "") {
			map_globale.setZoom(document.getElementById('f_valuezoomgmap').value);
		} else {
			map_globale.setZoom(_zoom);
		}

		if(document.getElementById('f_valuecoordonneegmap_longitude') && document.getElementById('f_valuecoordonneegmap_latitude')){
			document.getElementById('f_valuecoordonneegmap_longitude').value = coordonnee_map_x;
			document.getElementById('f_valuecoordonneegmap_latitude').value = coordonnee_map_y;
			document.getElementById('f_valuezoomgmap').value = map_globale.getZoom();
		}
	} else {
		if (geocoder) {
			geocoder.getLatLng(uneadresse,
				function(point) {
					if (!point) {
						if(typeof(localisationSilencieuse) == 'undefined' || !localisationSilencieuse) {
							alert("Impossible de localiser : \"" + uneadresse + "\"");
						}
					} else {
						if(typeof(le_marqueur) != 'undefined'){
							le_marqueur.closeInfoWindow();
							le_marqueur.setPoint(point);
							verifieMarqueur(true);
						}
						map_globale.setCenter(point);
						map_globale.setZoom(zoomDefinitif);
						if(document.getElementById('f_valuecoordonneegmap_longitude') && document.getElementById('f_valuecoordonneegmap_latitude')){
							document.getElementById('f_valuecoordonneegmap_longitude').value = point.lng();
							document.getElementById('f_valuecoordonneegmap_latitude').value = point.lat();
							document.getElementById('f_valuezoomgmap').value = map_globale.getZoom();
						}
					}
				}
			);
		}
	}
}

 /**
 * trouveLocalisationSimplifieSilencieuse : version silencieuse de trouveLocalisationSimplifie()
 *
 * Fonction qui permet de centrer la map sur une adresse (sans alerte)
 *
 * @author Mathieu VIEL <viel@benchmark.fr>
 *
 * @return Void
 */
function trouveLocalisationSimplifieSilencieuse() {
	localisationSilencieuse = true;
	trouveLocalisationSimplifie();
}

 /**
 * trouveLocalisationTresSimplifie : version très simplifiée de trouveLocalisationSimplifie()
 *
 * Fonction qui permet de centrer la map sur une adresse
 *
 * @author Mathieu VIEL <viel@benchmark.fr>
 *
 * @return Void
 */
function trouveLocalisationTresSimplifie(adresse,zoom) {
	if (geocoder) {
		geocoder.getLatLng(
			adresse,
			function(point) {
				if (!point) {
					if(typeof(localisationSilencieuse) == 'undefined' || !localisationSilencieuse) {
  						alert("Impossible de localiser : \"" + adresse + "\"");
  					}
				} else {
  					map_globale.setCenter(point, zoom);
  					if(typeof(le_marqueur) != 'undefined'){
  						le_marqueur.closeInfoWindow();
						le_marqueur.setPoint(point);
						verifieMarqueur(false);
					}
				}
			}
		);
	}
}

 /**
 * trouveLocalisationTresSimplifieSilencieuse : version silencieuse de trouveLocalisationTresSimplifie()
 *
 * Fonction qui permet de centrer la map sur une adresse (sans alerte)
 *
 * @author Mathieu VIEL <viel@benchmark.fr>
 *
 * @return Void
 */
function trouveLocalisationTresSimplifieSilencieuse() {
	localisationSilencieuse = true;
	trouveLocalisationTresSimplifie();
}

 /**
 * trouveLocalisations : Localisation et affichage d'un ensemble de marqueurs ou d'un marqueur parmis un ensemble
 *
 * Fonction qui permet de localiser et d'affichager un ensemble de marqueur, contenu dans la page en hidden
 * Si on rentre une valeur au paramétre 'numeroRecherche', on ne cherchera à localiser
 * que ce marqueur
 *
 * @param Integer nombrePoint Nombre de point à localiser
 * @param Integer numeroRecherche Numéro du point si on ne cherche qu'un seul point
 * @param Integer zoomMin A partir de quelle taille de zoom on peut voir le marker
 * @param Integer zoomMax Jusqu'à quelle taille de zoom on peut voir le marker
 * @return Void
 */
function trouveLocalisations(nombrePoint,numeroRecherche,zoomMin,zoomMax) {
	var ville = '';
	var adresse = '';
	var pays = '';
	var detail = '';
	var avis = '';

	// Recherche d'un point spécifique
	if(nombrePoint==1) numeroRecherche = 1;
	if(numeroRecherche) {
		var numero = document.getElementById('f_numerogmap'+numeroRecherche).value;
		ville = document.getElementById('f_villegmap'+numeroRecherche).value;
		adresse = document.getElementById('f_adressegmap'+numeroRecherche).value;
		pays = document.getElementById('f_paysgmap'+numeroRecherche).value;
		detail = document.getElementById('f_detailgmap'+numeroRecherche).innerHTML;
		avis = document.getElementById('f_avisgmap'+numeroRecherche).innerHTML;
		trouveLocalisation(nombrePoint,numero,adresse,ville,pays,detail,avis,true);
	}
	// Recherche de tous les points : boucle sur le nombre de résultat pour ajouter un point
	else {
		for(var indice=1;indice<=nombrePoint;indice++) {

			if (document.getElementById('f_detailgmap'+indice) != null)
				detail = document.getElementById('f_detailgmap'+indice).innerHTML;
			if (document.getElementById('f_avisgmap'+indice) != null)
				avis = document.getElementById('f_avisgmap'+indice).innerHTML;

			if (document.getElementById('f_longitudegmap'+indice) != null && document.getElementById('f_latitudegmap'+indice) != null) {
				var longitude = document.getElementById('f_longitudegmap'+indice);
				var latitude = document.getElementById('f_latitudegmap'+indice);
				point = new GLatLng(latitude,longitude);
				var marker = createMarker(point,numero,detail,avis,affiche,false,zoomMin,zoomMax);
			}else{
				var numero = document.getElementById('f_numerogmap'+indice).value;
				if (document.getElementById('f_villegmap'+indice) != null)
					ville = document.getElementById('f_villegmap'+indice).value;
				if (document.getElementById('f_adressegmap'+indice) != null)
					adresse = document.getElementById('f_adressegmap'+indice).value;
				if (document.getElementById('f_paysgmap'+indice) != null)
					pays = document.getElementById('f_paysgmap'+indice).value;
				trouveLocalisation(nombrePoint,numero,adresse,ville,pays,detail,avis,false);
			}

		}
	}
}

 /**
 * trouveLocalisation : Localisation et affichage d'un marqueur à partir des données entrés en paramétre
 *
 * Fonction qui permet de centrer la map suivant les valeurs passées en paramétre
 * On doit géocaliser, à partir des paramétres (Pays, adresse, ville, cp)
 * On affiche le marqueur ainsi trouvé
 *
 * @param Integer Numéro unique du marqueur à localiser
 * @param String adresse Adresse du point à localiser
 * @param String Ville Ville du marqueur à localiser
 * @param Array tabOnglet Tableau contenant les onglets à afficher au niveau du marqueur
 * @param Boolean Affiche Affiche t'on le popup ou pas quand on clic sur le marqueur
 * @param Integer zoomMin A partir de quelle taille de zoom on peut voir le marker
 * @param Integer zoomMax Jusqu'à quelle taille de zoom on peut voir le marker
 * @return Void
 */
function trouveLocalisation(numero,adresse,ville,pays,tabOnglet,affiche,zoomMin,zoomMax) {
//
	var uneadresse = "";
	adresse = '"' + adresse + '"';
	if (pays != ""){uneadresse = pays;}
	if (geocoder) {
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// 1. Recherche du pays
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		geocoder.getLatLng(uneadresse,
			function(point) {
				if (!point) {
					document.getElementById('message_gmap').innerHTML = document.getElementById('message_gmap').innerHTML + '<br>' + "Le pays \"" + uneadresse + "\" n'a pas été trouvé";
				}
				else {
					// Set le centre si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
					//if(!_point_gmap_cookie || !_conserve_info_cookie) map_globale.setCenter(point);

					// Set le zoom si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
					//if(!_zoom_gmap_cookie || !_conserve_info_cookie) map_globale.setZoom(_zoom_pays);


					//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					// 2. Recherche de la ville
					//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					if (ville != ""){
						uneadresse = ville + " , " + uneadresse;
						geocoder.getLatLng(uneadresse,
							function(point) {
								if (!point) {
									document.getElementById('message_gmap').innerHTML = document.getElementById('message_gmap').innerHTML + '<br>' + "La ville \"" + uneadresse + "\"  n'a pas été trouvée";
								}
								else {
									// Set le centre si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
									//if(!_point_gmap_cookie || !_conserve_info_cookie) map_globale.setCenter(point);

									// Set le zoom si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
									//if(!_zoom_gmap_cookie) map_globale.setZoom(_zoom_ville);

									//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
									// 3. Recherche de la position
									//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
									if (adresse != ""){
										uneadresse = adresse + " , " + uneadresse;
										geocoder.getLatLng(uneadresse,
											function(point) {
												if (!point) {
													//document.getElementById('message_gmap').innerHTML = "Nous sommes désolé, nous ne pouvons pas, pour le moment, localiser ce lieux dans cette ville.";
													//if(affiche) alert("L'adresse de ce restaurant n'a pas été trouvée par l'application GoogleMap.");
												}
												else {


													// Set le centre si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
													//if(!_point_gmap_cookie || !_conserve_info_cookie) map_globale.setCenter(point);

													// S'il n'y a qu'un seul résultat et qu'on souhaite afficher la bulle, on met le zoom au niveau de l'adresse
													//if(affiche) {
													//	// Set le zoom si la valeur en cookie est définie ou que la sauvegarde des infos en cookie n'est pas activé
													//	if(!_zoom_gmap_cookie) map_globale.setZoom(_zoom_adresse);
													//}
												}
												// Ajout du marqueur
												var marker = createMarker(point,numero,tabOnglet,affiche,false,zoomMin,zoomMax);
											});
									}
								}
							});
					}
				}

			}
		);
	}
}

 /**
 * creerMarkerDepuisTableau : Création d'un ensemble de marqueur
 *
 * Fonction qui permet de créer les points sur la carte (GMarker)
 * à partir d'un tableau Js, défini par une méthode de l'objet ObjGoogleMap
 *
 * @param Array $tableauPoints Tableau contenant les informations sur les points
 * à afficher (Voir l'objet ObjGoogleMap pour la définition du tableau)
 * @return Void
 * @see ObjGoogleMap::ajouteMarqueur
 * @see ObjGoogleMap::ajouteListeMarqueur
 * @see ObjGoogleMap::setListeMarqueur
 * @author Olivier Reyt <reyt@benchmark.fr>
 * @since 1.00 - 19/10/2007 Olivier Reyt <reyt@benchmark.fr>
 */
function creerMarkerDepuisTableau(tableauPoints){
	for(var i = 0; i<tableauPoints.length; i++) {
		var point 	= new GLatLng(tableauPoints[i].latitude,tableauPoints[i].longitude);
		var numero 	= i+1;
		var onglet 	= new Array();
		var affiche = false;
		var icone 	= null;
		if (typeof(tableauPoints[i].onglets) != 'undefined'){
			affiche = true;
			var liste_onglets = tableauPoints[i].onglets;
			for (cle_onglet in liste_onglets) {
				var infos_onglet = liste_onglets[cle_onglet];
				onglet[cle_onglet] = new Array();
				/*
				onglet[cle_onglet][0] = infos_onglet['cle'];
				onglet[cle_onglet][1] = infos_onglet['donnees'];
				*/
				
				onglet[cle_onglet]['cle'] = infos_onglet['cle'];
				onglet[cle_onglet]['donnees'] = infos_onglet['donnees'];
				onglet[cle_onglet]['titre'] = '';
				if (typeof(infos_onglet['titre']) != 'undefined'){
					onglet[cle_onglet]['titre'] = infos_onglet['titre'];
				}
				onglet[cle_onglet]['type'] = 'html';
				if (typeof(infos_onglet['type']) != 'undefined'){
					onglet[cle_onglet]['type'] = infos_onglet['type'];
				}
			}
		}
		if (typeof(tableauPoints[i].affiche) != 'undefined') {
			if (tableauPoints[i].affiche=='false') {
				affiche = false;
			}
		}
		if (typeof(tableauPoints[i].icone) != 'undefined'){
			//Traitement du (éventuel) tableau icone pour le rendre exploitable
			if(typeof(tableauPoints[i].icone[0]['cle'])!='undefined'){
				icone = new Array();
				for (cle_info in tableauPoints[i].icone) {
					
					if(undefined!=tableauPoints[i].icone[cle_info]['donnees'][0]){
						if(typeof(tableauPoints[i].icone[cle_info]['donnees'][0]['cle'])!='undefined'){
							icone[tableauPoints[i].icone[cle_info]['cle']] = new Array();
							for (cle_info_bis in tableauPoints[i].icone[cle_info]['donnees']) {
								icone[tableauPoints[i].icone[cle_info]['cle']][tableauPoints[i].icone[cle_info]['donnees'][cle_info_bis]['cle']] = tableauPoints[i].icone[cle_info]['donnees'][cle_info_bis]['donnees'];
							}
						}else{
							icone[tableauPoints[i].icone[cle_info]['cle']] = tableauPoints[i].icone[cle_info]['donnees'];
						}
					}else{
						icone[tableauPoints[i].icone[cle_info]['cle']] = tableauPoints[i].icone[cle_info]['donnees'];
					}
				}
			}else{
				icone = tableauPoints[i].icone;
			}
		}

		createMarker(point,numero,onglet,affiche,null,null,null,icone);
	}
}




 /**
 * createMarker : Création d'un marqueur
 *
 * Fonction qui permet de créer les points sur la carte (GMarker)
 *
 * @param GLatLng $point Coordonnées (latitude et longitude) du point
 * @param Integer $numero Numéro unique du point
 * @param Array 	$tabOnglet Tableau contenant les informations des onglets, du type
 * Array[i][0] = Nom de l'onglet, Array[i][1] = Informations compris dans l'onglet
 * @param dropEnable todo
 * @param Integer zoomMin A partir de quelle taille de zoom on peut voir le marker
 * @param Integer zoomMax Jusqu'à quelle taille de zoom on peut voir le marker
 * @param String nouveauIcone Nom de l'icone, si on veut ne pas utiliser celui par défaut
 * NB : le param nouveauIcone peut etre soit le chemin de l'icone, soit un tableau contenant :
 * le chemin de l'icone, les valeurs pour iconSize, les valeurs pour les Anchor
 * les valeurs de infoWindowAnchor seront les memes que celles pour iconAnchor
 * exemple :
 * nouveauIcone = array('cheminIcone'=>le chemin de l'icone
 *				'tailleIcone'=>array(largeur,hauteur)
 *				'positionAncre'=>array(x,y)
 *				)
 * @return GMarker Retourne le marqueur créé
 */
function createMarker(point,numero,tabOnglet,affiche,dropEnable,zoomMin,zoomMax,nouveauIcone) {

	// Définition des style d' icones
	var icone = new GIcon();
	
	if(typeof(nouveauIcone['cheminIcone'])!="undefined"){
		icone.image = nouveauIcone['cheminIcone'];
		icone.iconSize = new GSize(nouveauIcone['tailleIcone'][0],nouveauIcone['tailleIcone'][1]);
		icone.iconAnchor = new GPoint(nouveauIcone['positionAncre'][0],nouveauIcone['positionAncre'][1]);
		icone.infoWindowAnchor = new GPoint(nouveauIcone['positionAncre'][0],nouveauIcone['positionAncre'][1]);		
	}else{
		//@TODO Image png spécifique à l'application
		if (nouveauIcone){
			icone.image = nouveauIcone;
		}
		else {
			icone.image = _chemin_icone+'camera.png';
		}
		icone.iconSize = new GSize(25,20);
		icone.iconAnchor = new GPoint(14,14);
		icone.infoWindowAnchor = new GPoint(14,14);
	}	

	//document.writeln (point);

	// Action sur le clic
	var marker = new GMarker(point, icone);

	if (dropEnable){
		// @TODO code marker droppable
	}

	// S'il n'existe pas d'onglet, on ne passe pas par la gestion des onglets
	// et l'icone n'est pas cliquable
	if (tabOnglet.length>0){
		// tabOnglet => n onglet
		var infoTabs = [];
		// On fait une boucle for sur tabOnglet (le for each ne fonctionne pas sous IE)
		for(var i = 0 ; i < tabOnglet.length ; i++) {
			//var Onglet = new GInfoWindowTab(tabOnglet[i][0],tabOnglet[i][1]);
			var onglet_donnnees = tabOnglet[i]['donnees'];
			if (tabOnglet[i]['type']=='ajax') {
				// Si l'onglet est de type Ajax, on exécute
				// l'Url passée comme données
				$.ajax({
					type: "GET",
					async : false,
					url: onglet_donnnees,
					success: function(msg) {
						onglet_donnnees = msg;
					}
				});
			}
			var Onglet = new GInfoWindowTab(tabOnglet[i]['cle'], onglet_donnnees);
			infoTabs.push(Onglet);
		}
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowTabsHtml(infoTabs);
		});

	}

	// Permet d'acceder à la variable globale map_globale
	if (map_globale != null){
		if (zoomMin != null){
			if (zoomMax != null){
				mgr.addMarker(marker, zoomMin, zoomMax);
			}else{
				mgr.addMarker(marker, zoomMin);
			}
		}else{
			map_globale.addOverlay(marker);
		}
	}

	if (affiche) {
		marker.openInfoWindowTabsHtml(infoTabs);
	}


	// Modification du style des onglets
	if (tabOnglet.length>0){
		GEvent.addListener(map_globale, "infowindowopen", function() {

			var divs = map_globale.getContainer().getElementsByTagName("div");
			for(var i = 0; i<divs.length; i++) {
				var height = divs[i].style.height;
				var width = divs[i].style.width;

				// Un onglet est un bloc de longueur 103px sur 24px de haut
				if(width=="103px" && height=="24px") {
					var newLabel = divs[i].innerHTML;
					var newText = "";
					if(newLabel!="") {
						var newText = '<span class="tabLink">' + newLabel + '</span>';
						divs[i].innerHTML = newText;
					}
					else {
						divs[i].innerHTML = "";
					}
				}
			}
		});
	}

	return marker;
}

 /**
 * afficheLocalisation : Localisation d'un marqueur à partir de son numéro
 *
 * Fonction qui permet de localiser un des marqueurs et de l'afficher
 * en fonction du numéro entré en paramétre
 *
 * @param Integer numero Numéro du marqueur à afficher
 * @return Void
 */
function afficheLocalisation(numero) {
	var nombrePoint = document.getElementById('f_pointgmap').value;
	trouveLocalisations(nombrePoint,numero);
}

 /**
 * verifieMarqueur : Ajoute le marqueur au besoin
 *
 * Fonction qui permet d'ajouter le marqueur
 *
 * @return Void
 */
function verifieMarqueur(verification_adresse) {
	if(
		(typeof(le_marqueur) != 'undefined'
		&& !verification_adresse
		&& typeof(plus_de_marqueur) != 'undefined'
		&& typeof(ajout_marqueur_dynamique) != 'undefined'
		&& ajout_marqueur_dynamique)
		||
		(typeof(le_marqueur) != 'undefined'
		&& verification_adresse
		&& document.getElementById('f_adressegmap')
		&& document.getElementById('f_adressegmap').value != ''
		&& typeof(plus_de_marqueur) != 'undefined'
		&& typeof(ajout_marqueur_dynamique) != 'undefined'
		&& ajout_marqueur_dynamique)
	) {
		map_globale.addOverlay(le_marqueur);
		plus_de_marqueur = false;
		if(typeof(message_validation_auto) != 'undefined' && message_validation_auto) {
			ouvreInfoWindowHtml();
		}
	}
}


 /**
 * set les champs hidden de la Gmap (lng,lat,zoom) | utiliser dans le drag end par exemple...
 *
 *
 * @return Void
 */
function setCoordonneeGmap(point) {
	longitude = point.lng();
	latitude = point.lat();
	zoom  = map_globale.getZoom();
	if (zoom != '' & longitude!= '' & latitude != '') {
		if(document.getElementById('f_valuecoordonneegmap_longitude') != 'undefined' && document.getElementById('f_valuecoordonneegmap_latitude') != 'undefined'){
			document.getElementById('f_valuecoordonneegmap_longitude').value = longitude;
			document.getElementById('f_valuecoordonneegmap_latitude').value = latitude;
			document.getElementById('f_valuezoomgmap').value = zoom;
		}
	}
	map_globale.setCenter(point);
}

 /**
 * valideCarte : Teste la validation d'une carte
 *
 * Cette fonction permet de vérifier la validdation d'une carte google
 * en fonction des paramétres entrés
 *
 * ATTENTION : ne pas changer ordre des tests !
 *
 * @param longitude Longitude du point central de la carte
 * @param latitude latitude du point central de la carte
 * @param zoom Zoom par défaut sur la carte
 * @return Boolean Carte valide ou pas ?
 */
function valideCarte(longitude,latitude,zoom) {
	var retour = false;
	// si je viens de la bulle
	if (longitude){
		var je_viens_de_la_bulle=true;
	}
	// si il n'y a pas de marqueur
	if (typeof(plus_de_marqueur)!='undefined' && plus_de_marqueur){
		alert("Cliquez sur la carte afin d'ajouter un marqueur");
		var longitude = '';
		var latitude = '';
		var zoom  = '';
		retour = false;
	// si je viens du bouton valider et qu'il y a un marqueur
	}else if (!longitude){
		var position = le_marqueur.getPoint();
		var longitude = position.lng();
		var latitude = position.lat();
		var zoom  = map_globale.getZoom();
		var je_viens_de_la_bulle=false;
	}
	// derniere verif position !
	if (zoom != '' & longitude!= '' & latitude != '') {
		document.getElementById('f_longitude').value = longitude;
		document.getElementById('f_latitude').value = latitude;
		document.getElementById('f_zoom').value = zoom;
		retour = true;
	}else{
		retour = false;
	}
	if (retour){
		document.leform.submit();
	}
}

 /**
 * ecrireCookie : Ecrire les informations googlemap dans un cookie
 *
 * Fonction qui permet créer un cookie et d'y ecrire les informations
 * concernant la carte googlemap et ses paramétres
 *
 * @return Void
 */
function ecrireCookie(nom, valeur){
	var argv=ecrireCookie.arguments;
	var argc=ecrireCookie.arguments.length;
	var expires=(argc > 2) ? argv[2] : null;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie=nom+"="+escape(valeur)+
	((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
	((path==null) ? "" : ("; path="+path))+
	((domain==null) ? "" : ("; domain="+domain))+
	((secure==true) ? "; secure" : "");
}

 /**
 * getCookieVal : Retourne une valeur du cookie
 *
 * Fonction qui permet d'accéder à une valeur du cookie
 *
 * @return String retourne la valeur demandée
 */
function getCookieVal(offset){
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1) endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

 /**
 * getCookieVal : Lit l'ensemble d'un cookie
 *
 * Fonction qui permet d'accéder à l'ensemble des informations du cookie
 *
 * @param String nom Nom du cookie dont on veut les informations
 * @return String | NULL retourne la valeur du cookie ou NULL si pas de cookie
 */
function lireCookie(nom){
	var arg=nom+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen){
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) break;
	}
	return null;
}