/**************************************************************
* Trouve plusieurs positions à partir d'une adresse
**************************************************************/
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);
			}
			
		}
	}
}

/**************************************************************
* Trouve une position à partir d'une adresse
* affiche : doit-on ouvrir le popup?
**************************************************************/
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);
											});
									}
								}
							});
					}
				}
				
			}
		);
	}
}


/**************************************************************
* Fonction de création de points et utilisation des icones
* Affiche : doit-on ouvrir le popup ou pas ?
**************************************************************/
function createMarker(point,numero,tabOnglet,affiche,dropEnable,zoomMin,zoomMax) {

	// Définition des style d' icones
	var icone = new GIcon();
	//@TODO Image png spécifique à l'application
	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 
	}
	
	// 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++) {
		infoTabs.push(new GInfoWindowTab(tabOnglet[i][0],tabOnglet[i][1]));
	}
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowTabsHtml(infoTabs);
	});
	
	// Permet d'ecceder à 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
	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;
}


/**************************************************************
* Affiche une localisation sur la carte à partir du numéro
**************************************************************/
function afficheLocalisation(numero) {
	var nombrePoint = document.getElementById('f_pointgmap').value;
	trouveLocalisations(nombrePoint,numero);
}

/**************************************************************
* Supprime un marqueur	
**************************************************************/
function supprimeMarqueur() {
	plus_de_marqueur = true;
	map_globale.removeOverlay(le_marqueur)
	map_globale.closeInfoWindow();
}

/**************************************************************
* Valide Si position + zoom ... (True)	
* sinon retourne False
* ne pas changer ordre des tests !
**************************************************************/
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 (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();
	}
}



/**************************************************************
* Fonctions ecrireCookie & lireCookie
**************************************************************/
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" : "");
}

function getCookieVal(offset){
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1) endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

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;
}