/** crée l'objet de requete AJAX **/
function createRequestObject()
{
	var xhr;
	if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Mozilla, Safari, et autres vrais browsers... :)
	else if(window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explozer :(
	return xhr;
}

/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### CALCUL DU PRIX  ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */

/** Cette fonction prend en paramètre les données utiles à la PSK de calcul du prix (et d'acompte), execute la PSK, rempli le récapitulatif et affiche le prix à côté du logement visé. Cette fonction recalcul aussi le prix après avoir ajouté un code promo dans le recap de la reservation **/
function calcul_prix(mode, code_station, code_residence, code_hebergement, nom_station, nom_residence, nb_adultes, nb_enfants, code_logement_debut, code_logement_fin, libelle_logement, descriptif_logement, date_debut, date_fin, infos_rubriques, prestas_choisies, iv, code_promo)
{
	// alert(
		// 'mode : ' 					+ mode 					+ '\n' + 
		// 'code_station : ' 			+ code_station 			+ '\n' + 
		// 'code_residence : ' 		+ code_residence 		+ '\n' + 
		// 'code_hebergement : ' 		+ code_hebergement 		+ '\n' + 
		// 'nom_station : ' 			+ nom_station 			+ '\n' + 
		// 'nom_residence : ' 			+ nom_residence 		+ '\n' + 
		// 'nb_adultes : ' 			+ nb_adultes 			+ '\n' + 
		// 'nb_enfants : ' 			+ nb_enfants 			+ '\n' + 
		// 'code_logement_debut : ' 	+ code_logement_debut 	+ '\n' + 
		// 'code_logement_fin : ' 		+ code_logement_fin 	+ '\n' + 
		// 'libelle_logement : ' 		+ libelle_logement 		+ '\n' + 
		// 'descriptif_logement : ' 	+ descriptif_logement 	+ '\n' + 
		// 'date_debut : ' 			+ date_debut 			+ '\n' + 
		// 'date_fin : ' 				+ date_fin 				+ '\n' + 
		// 'infos_rubriques : ' 		+ infos_rubriques 		+ '\n' + 
		// 'prestas_choisies : ' 		+ prestas_choisies 		+ '\n' + 
		// 'iv : ' 					+ iv 					+ '\n' + 
		// 'code_promo : ' 			+ code_promo
	// );
	
	if(mode != 'calc' && mode != 'recalc') mode = 'calc';
	
	var code_logement = code_logement_debut + code_logement_fin;
	var xhr_calcul_prix = createRequestObject();
	
	if(mode == 'recalc')
	{
		getId('prix_recap').style.marginTop = '0';
		getId('prix_recap').innerHTML = '<img src="site/media/descriptifs/loading.gif" id="load" alt="loading..." />';
		
		//Desactivation du bouton recalculer pour eviter les doubles validation
		var save_onclick = getId('recalculer_prix').onclick;
		getId('recalculer_prix').onclick = function() { void(0); }
		var save_style = getId('recalculer_prix').style.color;
		getId('recalculer_prix').style.color = '#000000';
		
		xhr_calcul_prix.open("POST", "site/includes/reservation/ajax_calcul_prix_recap_resa.php", true);
	}
	else
	{
		//affichage du bloc récap
		getId('votre_logement').style.display = 'none';
		getId('recapitulatif_prix').innerHTML = getId('cadre_temporaire').innerHTML;
		getId('recapitulatif_prix').style.display = 'block'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
		getId('recapitulatif_prix').style.visibility = 'visible';
		
		//affichage du mini bloc prix dans le logement concerné
		getId("prix_" + code_logement).style.display = 'block';
		getId("prix_" + code_logement).style.visibility = 'visible';
		
		//Desactivation du bouton recalculer pour eviter les doubles validation
		var save_button = desactiver_bouton('calculer_prix_' + code_logement, '#000000');
		
		xhr_calcul_prix.open("POST", "site/includes/produits/logements/ajax_calcul_prix.php", true);
	}
	
	xhr_calcul_prix.onreadystatechange = function()
	{
		if(xhr_calcul_prix.readyState == 4) // la réponse est arrivée
		{
			if(xhr_calcul_prix.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				if(mode == 'recalc')
				{
					var docXML = xhr_calcul_prix.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
					
					var retour_code_promo = docXML.getElementsByTagName("retour_code_promo");
					var prix_recap = 		docXML.getElementsByTagName("prix_recap");
					
					// alert(retour_code_promo[0].firstChild.nodeValue);
					
					getId('prix_recap').style.marginTop = '16px';
					getId('retour_code_promo').innerHTML = retour_code_promo[0].firstChild.nodeValue;
					getId('prix_recap').innerHTML = prix_recap[0].firstChild.nodeValue;
					getId('code_promo').value = '';
					
					//Réactivation du bouton recalculer seulement si la requête à aboutie
					getId('recalculer_prix').onclick = save_onclick;
					getId('recalculer_prix').style.color = save_style;//alert(xhr_calcul_prix.responseText);
				}
				else
				{
					//on injecte le recap dans le bloc prévu à cet effet
					getId('recapitulatif_prix').innerHTML = xhr_calcul_prix.responseText;
					getId('cadre_temporaire').style.display = 'none'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
					getId('cadre_temporaire').style.visibility = 'hidden';
					
					//on injecte le prix dans une div prévu à cet effet sur le logement concerné
					getId("prix_" + code_logement).innerHTML = getId('resultat_prix').innerHTML;
					
					//Réactivation du bouton valider seulement si la requête à aboutie
					reactiver_bouton('calculer_prix_' + code_logement, save_button);
				}
			}
			else
			{
				// alert('Error: returned status code ' + xhr_calcul_prix.status + ' ' + xhr_calcul_prix.statusText);
				xhr_calcul_prix.abort();
			}
		}
		// else alert('Error: returned readystate code ' + xhr_calcul_prix.readyState);
	}
	
	xhr_calcul_prix.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	var data = 'calculer='										+ code_logement;
		data += '&code_station_choisi='							+ code_station;
		data += '&code_residence_choisi='						+ code_residence;
		data += '&code_hebergement_choisi='						+ code_hebergement;
		data += '&station_choisi='								+ nom_station;
		data += '&residence_choisi='							+ nom_residence;
		data += '&code_logement_debut_' + code_logement + '='	+ code_logement_debut;
		data += '&code_logement_fin_' + code_logement + '='		+ code_logement_fin;
		data += '&libelle_logement_' + code_logement + '='		+ libelle_logement;
		data += '&descriptif_logement_' + code_logement + '='	+ descriptif_logement;
		data += '&date_debut_' + code_logement + '='			+ date_debut;
		data += '&date_fin_' + code_logement + '='				+ date_fin;
		data += '&nb_adultes_choisi='							+ nb_adultes;
		data += '&nb_enfants_choisi='							+ nb_enfants;
		data += '&infos_rubriques='								+ infos_rubriques;
		data += '&prestas_choisies_post='						+ prestas_choisies;
		data += '&iv='											+ iv;
		data += '&code_promo_' + code_logement + '='			+ code_promo;
	
	// if(mode == 'calc')
	if(prestas_choisies == '')
	{
		for (var i = 1; i <= nb_adultes; i++)
		{
			code_formule = getId('adulte_' + i + '_formule_' + code_logement).value;
			
			data += '&adulte_' + i + '_formule_' + code_logement + '=' + code_formule;
		}
		
		for (var i = 1; i <= nb_enfants; i++)
		{
			age = 			getId('enfant_' + i + '_age_' + code_logement).value;
			code_formule = 	getId('enfant_' + i + '_formule_' + code_logement).value;
			
			data += '&enfant_' + i + '_age_' + code_logement 		+ '=' + age;
			data += '&enfant_' + i + '_formule_' + code_logement 	+ '=' + code_formule;
		}
		
		//passage en paramètres des rubriques (cette méthode permet de récupérer les valeurs au moment du click sur le bouton calculer afin de tjs être à jour)
		var tab_string = getId('ajax_tab_rubriques').value; //contient un tableau de rubriques concaténé avec des virgules
		var ajax_tab_rubriques = tab_string.split(','); // on parse 
		
		for (var i = 0; i < ajax_tab_rubriques.length; i++) 
		{
			if(ajax_tab_rubriques[i] != '') //s'il n'y a aucune rubriques on rentrez pas
			{
				rubrique = 'liste_' + code_logement + '_' + ajax_tab_rubriques[i];
				
				// alert(rubrique);
				// alert("rubrique : \n" + rubrique + "\n\ndocument.getElementsByName(rubrique).item(0) : \n" + document.getElementsByName(rubrique).item(0));
				
				data += '&' + rubrique + '=' + document.getElementsByName(rubrique).item(0).selectedIndex; //ex: data += &liste_S2_929=2
			}
		}
	}
	
	// alert(data);
	
	xhr_calcul_prix.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** 
syntaxe foreach en JS (Afin d'aviter la concatenation du code source de la fonction dans la variable data, il faut créer un objet et non un array)
for (var cle in tab_rubriques)
{
	//alert(name);
	//alert(tab_rubriques[name]);
	data += "&"+cle+"="+tab_rubriques[cle];
}
**/


/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### MODULE DE RECHERCHE  ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */

/** fonctions pour le module de recherche **/
function recherche_ajax(id)
{
	// Type de vacances
	var type_vac;
	if (getId('type_vacances_E') && getId('type_vacances_E').checked)		type_vac = 'E'; // Mer
	else if (getId('type_vacances_O') && getId('type_vacances_O').checked)	type_vac = 'O'; // Montagne
	else if (getId('type_vacances_S') && getId('type_vacances_S').checked)	type_vac = 'O'; // Ski
	else if (getId('type_vacances_C') && getId('type_vacances_C').checked)	type_vac = 'C'; // Campagne
	else if (getId('type_vacances_V') && getId('type_vacances_V').checked)	type_vac = 'V'; // Ville
	else if (getId('type_vacances_T') && getId('type_vacances_T').checked)	type_vac = 'T'; // Tous
	
	// Listes déroulantes
	if (getId('recherche_pays'))	var pays = getId('recherche_pays');
	if (getId('recherche_region'))	var region = getId('recherche_region');
	if (getId('recherche_station'))	var station = getId('recherche_station');
	if (getId('station_residence'))	var residence = getId('station_residence');
	
	var selected_pays = pays.value;			// Code pays avant le rechargement de la liste
	var selected_region = region.value;		// Code region avant le rechargement de la liste
	var selected_station = station.value;	// Code station avant le rechargement de la liste
	
	var xhr_recherche = createRequestObject();
	
	xhr_recherche.onreadystatechange  = function()
	{
		if(xhr_recherche.readyState  == 4)
		{
			if(xhr_recherche.status  == 200)
			{
				// Objet permettant de gérer l'xml généré dans le script PHP
				var docXML = xhr_recherche.responseXML;
				
				var i;
				// var carte = getId('img_carte');
				
				// EVENEMENT TYPE VACANCES
				if (id == 'type_vacances_E' || id == 'type_vacances_S' || id == 'type_vacances_O' || id == 'type_vacances_C' || id == 'type_vacances_V' || id == 'type_vacances_T')
				{
					// Graissage du bouton radio sélectionné
					//var tab_type_vac = new Array('type_vacances_E', 'type_vacances_S', 'type_vacances_O', 'type_vacances_C', 'type_vacances_V', 'type_vacances_T');
					var tab_type_vac = new Array('type_vacances_E', 'type_vacances_O', 'type_vacances_C', 'type_vacances_V', 'type_vacances_T');
					
					// Gestion des labels type vacances selected
					getId('label_'+id).className = 'type_vacances_selected';
					for (i = 0; i < tab_type_vac.length; i++)
					{
						if (tab_type_vac[i] != id)
						{
							getId('label_'+tab_type_vac[i]).className = 'type_vacances';
						}
					}
					
					// Mise en mémoire des pays en tant que collection d'objets
					var code_pays = docXML.getElementsByTagName("code_pays");
					var libelle_pays = docXML.getElementsByTagName("libelle_pays");
					
					// Réinitialisation des listes déroulantes
					pays.options.length = 1;
					var trouve = false;
					for (i = 0; i < code_pays.length; i++)
					{
						// Remplissage de la liste des pays
						pays.options[i+1] = new Option(libelle_pays.item(i).firstChild.data, code_pays.item(i).firstChild.data);
						
						// Selection du pays déja selectionné si il se trouve dans la liste
						if (selected_pays != '')
						{
							if (trouve == false && pays.options[i+1].value == selected_pays)
							{
								trouve = true;
								pays.options[i+1].selected = true;
							}
						}
					}
					
					i = 0;
					// Selection de la France par défaut si aucun pays n'était selectionné avant le rechargement
					while (i < code_pays.length && trouve == false)
					{
						if (pays.options[i+1].value == 'FRA')
						{
							trouve = true;
							pays.options[i+1].selected = true;
						}
						
						i++;
					}
					
					// Rappel de la fonction pour recharger la liste des régions correspondant au pays selectionné
					recherche_ajax('recherche_pays');
				}
				else if (id == 'recherche_pays') // EVENEMENT LISTE PAYS
				{
					// Input hidden a '1' pour unset les sessions en cas de rechargement de la liste des produits
					getId('click_pays').value = '1';
					
					// Region par défaut
					if (docXML.getElementsByTagName("region_defaut").item(0).firstChild)
					{
						var region_defaut = docXML.getElementsByTagName("region_defaut").item(0).firstChild.data;
					}
					else var region_defaut = '';
					
					// Mise en mémoire des région en tant que collection d'objets
					var code_region = docXML.getElementsByTagName("code_region");
					var libelle_region = docXML.getElementsByTagName("libelle_region");
					
					// Réinitialisation des listes suivantes
					region.options.length = 1;
					residence.options.length = 1;
					var trouve = false;
					
					// Remplissage de la liste des régions
					for (i = 0; i < code_region.length; i++)
					{
						// Remplissage de la liste des régions
						region.options[i+1] = new Option(libelle_region.item(i).firstChild.data, code_region.item(i).firstChild.data);
						// Selection de la région déja selectionné si elle se trouve dans la liste
						if (selected_region != '')
						{
							// La dernieres condition n'est pas du tout sûr
							if (trouve == false && region.options[i+1].value == selected_region && selected_region != region_defaut)
							{
								//alert('selection avant chargement');
								trouve = true;
								region.options[i+1].selected = true;
								recherche_ajax('recherche_region');
							}
						}
					}
					
					i = 0;
					// Selection de la région par défaut si aucune region n'etait sélectionnée avant le chargement
					while (i < code_region.length && trouve == false)
					{
						if (region.options[i+1].value == region_defaut)
						{
							//alert('region par defaut');
							trouve = true;
							region.options[i+1].selected = true;
							recherche_ajax('recherche_region');
						}
						
						i++;
					}
					
					if (code_region.length == 1)
					{
						// Sélection automatique d'une région unique
						region.selectedIndex = 1;
						recherche_ajax('recherche_region');
					}
					else if (trouve == false)
					{
						// Cas ou aucune région n'était selectionné avant le chargement
						station.options.length = 1;
					}
					
					// Affichage de la carte correspondante
					// carte.src = "site/media/cartes/" + pays.value + ".png";
					// carte.useMap = "#map_" + pays.value;
				}
				else if (id == 'recherche_region') // EVENEMENT LISTE REGION
				{
					// Input hidden a '1' pour unset les sessions en cas de rechargement de la liste des produits
					getId('click_region').value = '1';
					
					// Mise en mémoire des stations en tant que collection d'objets
					var code_station = docXML.getElementsByTagName("code_station");
					var libelle_station = docXML.getElementsByTagName("libelle_station");
					
					//Réinitialisation des listes suivantes
					station.options.length = 1;
					residence.options.length = 1;
					if (region.selectedIndex != 0)
					{
						if (code_station.length > 0)
						{
							var trouve = false;
							//Remplissage de la liste des stations
							//station.options[0] = new Option('Choix de la station', '');
							for (i = 0; i < code_station.length; i++)
							{
								station.options[i+1] = new Option(libelle_station.item(i).firstChild.data, code_station.item(i).firstChild.data);
								if (selected_station != '')
								{
									if (trouve == false && station.options[i+1].value == selected_station)
									{
										trouve = true;
										station.options[i+1].selected = true;
										recherche_ajax('recherche_station');
									}
								}
							}
						}
						// else station.options[0] = new Option('Aucune station disponible', '');
					}
					else recherche_ajax('recherche_pays');
				}
				else if (id == 'recherche_station') // EVENEMENT LISTE STATION
				{
					getId('nom_region').value = docXML.getElementsByTagName("nom_region").item(0).firstChild.data;
					getId('nom_station').value = docXML.getElementsByTagName("nom_station").item(0).firstChild.data;
					
					// Input hidden a '1' pour unset les sessions en cas de rechargement de la liste des produits
					getId('click_station').value = '1';
					
					// Mise en mémoire des résidences en tant que collection d'objets
					var code_residence = docXML.getElementsByTagName("code_residence");
					var libelle_residence = docXML.getElementsByTagName("libelle_residence");
					var departement = docXML.getElementsByTagName("departement");
					
					// Réinitialisation de la liste des stations
					residence.options.length = 1;
					if (station.selectedIndex != 0)
					{
						if (code_residence.length > 0)
						{
							// Remplissage de la liste des résidences
							//residence.options[0] = new Option('Choix de la résidence', '');
							for (i=0;i<code_residence.length;i++)
							{
								residence.options[i+1] = new Option(libelle_residence.item(i).firstChild.data, code_residence.item(i).firstChild.data);	//Ajout des régions à la liste
							}
						}
					}
					else recherche_ajax('recherche_region');
				}
			}
			else alert("Error code " + xhr_recherche.status);
		}
	};
	
	// Méthode POST, exécution du script "ajax_recherche.php", mode asynchrone
	xhr_recherche.open("POST", "site/includes/recherche/ajax_recherche.php", true);
	
	xhr_recherche.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var obj = getId(id);
	var code_obj;
	
	// Valeurs postées
	if (id == 'type_vacances_E' || id == 'type_vacances_O' || id == 'type_vacances_S' || id == 'type_vacances_C' || id == 'type_vacances_V' || id == 'type_vacances_T')
	{
		code_obj = "type_vacances=" + obj.value;
	}
	else if (id == 'recherche_pays') 		code_obj = "pays=" + obj.value + "&type_vacances=" + type_vac;
	else if (id == 'recherche_region') 		code_obj = "region=" + obj.value;
	else if (id == 'recherche_station') 	code_obj = "station=" + obj.value;
	
	// Envoi de la requête
	xhr_recherche.send(code_obj);
}


/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### GRILLE DE PRIX  ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */

/** fonction pour l'affichage de la grille de prix **/
function afficherGrillePrix(elem, msg)
{
	if(verif_init_marche(elem) == false) return false;
	
	opacityOn();
	
	getId('grille_tarif').style.display = 'block';
	
	var inner_content = '';
	inner_content = '<div style="width: 932px; height: 500px; margin: 10px auto 0 auto; background-color: #FFFFFF;">';
	inner_content += '<img style="display: block; padding-top: 100px; margin: 0 auto 0 auto;" src="site/media/cartes/logo_lv.png" alt="loading" title="" />';
	inner_content += '<img style="display: block; padding-top: 50px; margin: 0 auto 0 auto;" src="site/media/cartes/ajax-loader.gif" alt="loading" title="" />';
	inner_content += '<p style="padding-top: 25px; text-align: center; font-size: 16px; font-weight: bold; color: #EF5D08;">'+msg+'</p>';
	inner_content += '</div>';
	
	getId('grille_tarif').innerHTML = inner_content;
	
	// alert("La résolution de votre écran est : " + screen.width + " x " + screen.height + "\n\n" + 
	// "screen.availWidth = " + screen.availWidth + " px\n" + 
	// "screen.availHeight = " + screen.availHeight + " px\n" + 
	// "window.innerWidth = " + window.innerWidth + " px\n" + 
	// "window.innerHeight = " + window.innerHeight + " px\n" + 
	// "document.body.offsetWidth = " + document.body.offsetWidth + " px\n" + 
	// "document.body.offsetHeight = " + document.body.offsetHeight + " px\n" + 
	// "document.documentElement.clientWidth = " + document.documentElement.clientWidth + " px\n" + 
	// "document.documentElement.clientHeight = " + document.documentElement.clientHeight + " px\n" + 
	// "screen.colorDepth = " + screen.colorDepth + " bits");
	
	var xhr_grille_prix = createRequestObject();
	
	xhr_grille_prix.onreadystatechange = function ()
	{
		if(xhr_grille_prix.readyState == 4)
		{
			if (xhr_grille_prix.status == 200)
			{
				var padding = window.innerWidth - document.documentElement.clientWidth;
				
				getId('grille_tarif').style.width = getId('grille_tarif').offsetWidth + 'px';
				
				getId('grille_tarif').innerHTML = xhr_grille_prix.responseText;
				
				if (getId('grille_tarif').offsetHeight > document.documentElement.clientHeight || getId('grille_tarif').offsetHeight == document.documentElement.clientHeight)
				{
					document.body.style.overflowY = 'hidden';
					
					if (navigator.appName != 'Microsoft Internet Explorer')
					{
						document.body.style.paddingRight = padding + 'px';
						getId('grille_tarif').style.width = (document.documentElement.clientWidth) + 'px';
					}
					else
					{
						getId('grille_tarif').style.left = ((document.documentElement.clientWidth - 955) / 2) + 'px';
						getId('grille_tarif').style.width = '972px';
						getId('grille_tarif').style.borderLeft = '1px solid #FFFFFF';
						getId('grille_tarif').style.borderRight = '1px solid #FFFFFF';
					}
					
					getId('grille_tarif').style.height = (document.documentElement.clientHeight) + 'px';
					getId('grille_tarif').style.overflowY = 'auto';
				}
			}
			else getId('grille_tarif').innerHTML = "Error: returned status code " + xhr_grille_prix.status + " " + xhr_grille_prix.statusText;
		}
	};
	
	xhr_grille_prix.open("POST", "site/includes/produits/descriptifs/ajax_grille_prix.php", true);
	xhr_grille_prix.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_grille_prix.send(null);
}


/** fonction pour l'affichage des pages de descriptifs (pays region domaine) **/
function afficherDescriptif(page)
{
	var xhr_descriptif = createRequestObject();
	
	xhr_descriptif.onreadystatechange = function ()
	{
		if(xhr_descriptif.readyState == 4)
		{
			if(xhr_descriptif.status == 200)
			{
				// getId('div_residence').className = 'hide';
				// getId('div_station').className = 'hide';
				getId('div_residence').style.display = 'none';
				getId('div_station').style.display = 'none';
				
				// getId('descriptif_ajax').innerHTML = xhr_descriptif.responseText;
				var docXML = xhr_descriptif.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
				
				var descriptif_ajax_xml = docXML.getElementsByTagName("descriptif");
				var descriptif_ajax = descriptif_ajax_xml[0].firstChild.nodeValue;
				
				getId('descriptif_ajax').innerHTML = descriptif_ajax;
				
				Slimbox.scanPage();
				
				// redimDescriptif();
				setTimeout('redimDescriptif()', 25);
			}
			else getId('descriptif_ajax').innerHTML = "Error: returned status code " + xhr_descriptif.status + " " + xhr_descriptif.statusText;
		}
	};
	
	xhr_descriptif.open("POST", "site/includes/produits/descriptifs/ajax_descriptif_" + page + ".php", true);
	xhr_descriptif.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_descriptif.send(null);
}


/* ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### ##### ##### ##### ##### ##### CARTES  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### */
/* ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */


carte_fullscreen = false;

/** fonction pour l'affichage de la carte région agrandie en plein ecran **/
function afficherCarteFullscreen(pays, region, saison, elem)
{
	if(verif_init_marche(elem) == false) return false;
	
	document.getElementsByTagName('html')[0].style.overflow = 'hidden'; // cache la barre de scroll
	
	opacityOn();
	
	window.scrollTo(0, 0);
	carte_fullscreen = true;
	
	getId('cartes_fullscreen').style.display = 'block';
	// getId('cartes_fullscreen').innerHTML = '<img id="logo_lv" src="site/media/cartes/logo_lv.png" alt="" /><br /><img id="gif_loading" src="site/media/cartes/ajax-loader.gif" alt="" /><br /><span class="ajax_loading">La Carte est en cours de Chargement,<br />Veuillez patienter...</span>';
	getId('cartes_fullscreen').innerHTML = getId('cartes_fullscreen_msg').innerHTML;
	
	var data = 'pays=' + pays + '&region=' + region + '&saison=' + saison;
	
	var xhr_carte = createRequestObject();
	
	xhr_carte.onreadystatechange = function()
	{
		if(xhr_carte.readyState == 4)
		{
			if (xhr_carte.status == 200)
			{
				var docXML = xhr_carte.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
				
				stations = docXML.getElementsByTagName("station"); // on récupere les informations des stations de la région ainsi que le contenu des infobulles
				var html = docXML.getElementsByTagName("template"); // on récupere le template de la page qui affiche la carte
				
				getId('cartes_fullscreen').innerHTML = html[0].firstChild.nodeValue;
				
				getId('img_grande_carte').style.visibility = 'visible';
				getId('img_grande_carte').src = 'site/media/cartes/' + pays + '/' + region + '_big.png'; // on affiche la carte correspondante
				
				// alert(xhr_carte.responseText);
				
				resize();
			}
			else alert(xhr_carte.status + " " + xhr_carte.statusText);
		}
	};
	
	xhr_carte.open("POST", "site/includes/cartes/ajax_cartes_fullscreen.php", true);
	xhr_carte.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_carte.send(data);
}

/** place les points sur la carte en fonction des coordonnées **/
function placerPoints()
{
	// on assigne des margin aux images/points représentant les stations; on les positionne
	for(var i = 0; i < stations.length; i++)
	{
		if(browserVersion() == 'Safari' || browserVersion() == 'Chrome') // Dans le cas de Safari et Chrome, on doit décaler les points
		{
			getId('station_' + stations[i].getAttribute('code')).style.margin = stations[i].getElementsByTagName('coordonnee_y')[0].firstChild.nodeValue + 'px 0px 0px ' + (stations[i].getElementsByTagName('coordonnee_x')[0].firstChild.nodeValue * 1 + getId('img_grande_carte').offsetLeft - 15) + 'px';
		}
		else getId('station_' + stations[i].getAttribute('code')).style.margin = stations[i].getElementsByTagName('coordonnee_y')[0].firstChild.nodeValue + 'px 0px 0px ' + stations[i].getElementsByTagName('coordonnee_x')[0].firstChild.nodeValue + 'px';
	}
}

/** fonction pour l'affichage de la carte région agrandie en plein ecran **/
function cacherCarteFullscreen()
{
	opacityOff();
	
	document.getElementsByTagName('html')[0].style.overflow = 'auto';
	
	getId('cartes_fullscreen').style.display = 'none';
	
	carte_fullscreen = false;
}



// INFOBULLES CARTES

/** variables globales **/
var manuel = false;
// var visibilite_bulle_carte = false; // La variable visibilite_bulle_carte nous dit si la bulle est visible ou non

/** fonction qui envoie la requette AJAX et affiche le résultat **/
/*
function handleAJAXReturn(element_id, xhr) // permet de vérifier si la réponse est arrivée et effectue le résultat
{
	if(xhr.readyState == 4) // la réponse est arrivée
	{
		if(xhr.status == 200) // code qui défini si la requête est OK , prêt à afficher
		{
			getId(element_id).innerHTML = xhr.responseText; // Utilisation du résultat
		}
		else alert('Error: returned status code ' + xhr.status + ', ' + xhr.statusText);
	}
}
*/

/** montre l'infobulle lors du survol des points de la carte **/
function montre_bulle(element_id, code_station)
{
	getId('liste_' + code_station).style.backgroundColor = '#F7E0A8';
	manuel = false;
	
	// if(visibilite_bulle_carte == false)
	// {
		
		for(var i = 0; i < stations.length; i++)
		{
			if(stations[i].getAttribute('code') == code_station) getId(element_id).innerHTML = stations[i].getElementsByTagName('infobulle')[0].firstChild.nodeValue;
		}
		
		getId(element_id).className = 'bulle_pleine';
		
		// visibilite_bulle_carte = true;
	// }
}

/** montre l'infobulle lors du survol de noms de stations de la liste **/
function montre_bulle_liste(element_id, code_station, x, y, img_id)
{
	manuel = true;
	
	// if(visibilite_bulle_carte == false)
	// {
		for(var i = 0; i < stations.length; i++)
		{
			if(stations[i].getAttribute('code') == code_station) getId(element_id).innerHTML = stations[i].getElementsByTagName('infobulle')[0].firstChild.nodeValue;
		}
		
		getId(element_id).className = 'bulle_pleine';
		
		// visibilite_bulle_carte = true;
		positionner_infobulle('curseur', x, y, img_id, 'liste');
		
	// }
}

/** cache les infobulles **/
function cache_bulle(element_id, code_station)
{
	getId('liste_' + code_station).style.backgroundColor = 'transparent';
	
	// if(visibilite_bulle_carte == true)
	// {
		getId(element_id).className = 'bulle_vide';
		
		getId(element_id).innerHTML = '';
		
		manuel = false;
		// visibilite_bulle_carte = false;
	// }
}

/** positionne le conteneur de l'infobulle **/
function positionner_infobulle(element_id, X, Y, img_id, circonstance)
{
	var position = findPos(img_id);
	var taille_carte = findSize(img_id);
	var cas = '';
	
	if(circonstance == 'image')
	{
		X -= position['X'];
		Y -= position['Y'];
	}
	
	if(X > taille_carte['X']/2) cas += 'D';
	else cas += 'G';
	if(Y > taille_carte['Y']/2) cas += 'B';
	else cas += 'H';
	
	var taille_bulle = findSize(element_id);
	
	switch(cas)
	{
		case 'GH':
			var posX = 23;
			
			var posY = -30;
			var triangle = 'site/media/cartes/triangle_g.gif';
			var margin = "25px 0 0 -15px";
			break;
		
		case 'DH':
			if(circonstance == 'image') var posX = -248;
			else var posX = -242;
			
			var posY = -30;
			var triangle = 'site/media/cartes/triangle_d.gif';
			var margin = "25px 0 0 225px";
			break;
		
		case 'GB':
			var posX = 23;
			
			var posY = -taille_bulle['Y'] + 30;
			var triangle = 'site/media/cartes/triangle_g.gif';
			var margin = (taille_bulle['Y'] - 35) + "px 0 0 -15px";
			break;
		
		case 'DB':
			if(circonstance == 'image') var posX = -248;
			else var posX = -242;
			
			var posY = -taille_bulle['Y'] + 30;
			var triangle = 'site/media/cartes/triangle_d.gif';
			var margin = (taille_bulle['Y'] - 35) + "px 0 0 225px";
			break;
	}
	
	if(navigator.appName != "Microsoft Internet Explorer" || document.documentElement.clientWidth > 0) // Si on est pas sous IExploZer
	{
		getId(element_id).style.left = position['X'] + X + posX + document.documentElement.scrollLeft + "px";
		getId(element_id).style.top = position['Y'] + Y + posY + document.documentElement.scrollTop + "px";
	}
	else 
	{
		getId(element_id).style.left = posX + position['X'] + X + document.body.scrollLeft + "px";
		getId(element_id).style.top = posY + position['Y'] + Y + document.body.scrollTop + "px";
	}
	
	if(getId('triangle'))
	{
		getId('triangle').src = triangle;
		getId('triangle').style.margin = margin;
	}
}

/** change la position du conteneur de l'infobulle lors du déplacement de la souris **/
function move(e)
{
	if(carte_fullscreen == true)
	{
		if(document.documentElement.scrollTop != 0) window.scrollTo(0, 0); /* document.documentElement.scrollTop = 0; */
		
		if(!manuel)
		{
			if(navigator.appName != "Microsoft Internet Explorer") positionner_infobulle('curseur', e.pageX, e.pageY, 'img_grande_carte', 'image');
			else positionner_infobulle('curseur', event.x, event.y, 'img_grande_carte', 'image');
		}
	}
}

/** change la taille de la colone de droite lors du redimensionnement de la page **/
function resize()
{
	if(carte_fullscreen == true)
	{
		getId('cartes_fullscreen').style.height = 'auto';
		getId('liste_pays').style.height = 'auto';
		
		if(findSize('cartes_fullscreen')['Y'] > document.documentElement.clientHeight - 6) getId('liste_pays').style.height = (document.documentElement.clientHeight - 20) + 'px';
	}
}

document.onmousemove = move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
window.onresize = resize; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.


/** non utilisée - récupere les actions sur les divers évenements (onclick, href...) d'un élément **/
function backup_action(e)
{
	// alert('hop');
	
	if(!e) var elem = window.event.srcElement;
	else var elem = e.target;
	
	// alert(getId('init_marche_ok').innerHTML);
	
	// alert('firstChild.nodeName : ' + div_init.firstChild.nodeName + "\n" + 'firstChild.nodeValue : ' + div_init.firstChild.nodeValue);
	
	var div_init = getId('init_marche_ok').firstChild;
	var init_marche_ok = parseInt(div_init.nodeValue);
	
	if(getId('init_marche').style.display == 'block' && init_marche_ok != 1)
	{
		// alert('nodeName : ' + elem.parentNode.nodeName + "\nid : " + elem.parentNode.id + "\nclassName : " + elem.parentNode.className + "\n\nnodeName : " + elem.parentNode.parentNode.nodeName + "\nid : " + elem.parentNode.parentNode.id + "\nclassName : " + elem.parentNode.className);
		
		if(elem.onclick)
		{
			// alert('backup_action : ' + elem.onclick);
			bkpOnclick = elem.onclick;
			elem.onclick = void(0);
			// alert('backup_action : ' + elem.onclick);
		}
		else delete bkpOnclick;
		
		if(elem.href)
		{
			// alert('backup_action : ' + elem.href);
			bkpHref = elem.href;
			elem.href = 'javascript: void(0);';
			// alert('backup_action : ' + elem.href);
		}
		else delete bkpHref;
		
		if(elem.onmouseup)
		{
			// alert('backup_action : ' + elem.onmouseup);
			bkpOnmouseup = elem.onmouseup;
			elem.onmouseup = void(0);
			// alert('backup_action : ' + elem.onmouseup);
		}
		else delete bkpOnmouseup;
		
		if(elem.onmousedown)
		{
			// alert('backup_action : ' + elem.onmousedown);
			bkpOnmousedown = elem.onmousedown;
			elem.onmousedown = void(0);
			// alert('backup_action : ' + elem.onmousedown);
		}
		else delete bkpOnmousedown;
	}
}

/** non utilisée - restore les actions sur les divers évenements (onclick, href...) d'un élément **/
function restore_action(e)
{
	// alert('hop');
	
	if(!e) var elem = window.event.srcElement;
	else var elem = e.target;
	
	if(getId('init_marche').style.display == 'block' && init_marche_ok != 1)
	{
		if(typeof bkpOnclick != "undefined")
		{
			elem.onclick = bkpOnclick;
			delete bkpOnclick;
		}
		if(typeof bkpHref != "undefined")
		{
			elem.href = bkpHref;
			delete bkpHref;
		}
		if(typeof bkpOnmouseup != "undefined")
		{
			elem.onmouseup = bkpOnmouseup;
			delete bkpOnmouseup;
		}
		if(typeof bkpOnmousedown != "undefined")
		{
			elem.onmousedown = bkpOnmousedown;
			delete bkpOnmousedown;
		}
	}
}

/** controle si on a déja choisi son marché et le cas échéant affiche la fenetre de choix des marché. **/
function verif_init_marche(elem)
{
	var retour = true;
	
	var div_init = getId('init_marche_ok').firstChild;
	var init_marche_ok = parseInt(div_init.nodeValue);
	
	// alert('init_marche_ok : ' + init_marche_ok);
	
	if(init_marche_ok == 0)
	{
		var xhr_init_marche = createRequestObject();
		
		xhr_init_marche.open("POST", "site/includes/ajax_verif_init_marche.php", false); // AJAX Synchrone
		xhr_init_marche.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhr_init_marche.send(null);
		
		var docXML = xhr_init_marche.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
		
		var init_marche_xml = docXML.getElementsByTagName("init_marche");
		init_marche_ok = parseInt(init_marche_xml[0].firstChild.nodeValue);
		
		getId('init_marche_ok').innerHTML = init_marche_ok;
		
		// alert('init_marche_ok : ' + init_marche_ok);
		
		if(init_marche_ok != 1)
		{
			if(typeof elem != "undefined")
			{
				var chaine = elem.onclick.toString();
				var onclick_elem = chaine.slice(chaine.indexOf('{') + 1, chaine.lastIndexOf('}'));
				
				var reg = new RegExp('(")', 'g'); // on déclare l'expression réguliere qui va chercher tous les " (le g signifie que l'on cherche toutes les occurences)
				
				var action = onclick_elem.replace(reg, '\''); // on se sert de l'expression éguliere déclarée au dessus afin de remplacer tous les " par des '
				if(action.indexOf('javascript:') != -1) action = trim(action.replace('javascript:', ''));
				
				var data = "onclick=" + action;
				
				// alert(action);
				// alert(data);
			}
			
			retour = false;
			
			var xhr_init_marche_bis = createRequestObject();
			
			xhr_init_marche_bis.onreadystatechange = function()
			{
				if(xhr_init_marche_bis.readyState == 4)
				{
					if(xhr_init_marche_bis.status == 200)
					{
						opacityOn();
						getId('ajax_init_marche').style.display = 'block';
						getId('ajax_init_marche').innerHTML = xhr_init_marche_bis.responseText;
						// alert(xhr_init_marche_bis.responseText);
						getId('init_marche_ok').innerHTML = 1;
					}
					else alert(xhr_init_marche_bis.status + " " + xhr_init_marche_bis.statusText);
				}
			};
			
			xhr_init_marche_bis.open("POST", "site/includes/ajax_init_marche.php", true);
			xhr_init_marche_bis.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			if(typeof data != "undefined") xhr_init_marche_bis.send(data);
			else xhr_init_marche_bis.send(null);
		}
	}
	
	return retour;
}

/** fonction pour éviter les plantages lorsque on ne veux pas utiliser init_marche **/
/* function verif_init_marche(elem)
{
	return true;
} */


/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### COMPTE LOGIN  ##### ##### ##### ##### ##### ##### ##### ##### ########## */
/* ##### ##### ##### ##### #####  ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ########## */


/** Cette fonction prend en paramètre les données utiles à la PSK de calcul du prix (et d'acompte), execute la PSK, rempli le récapitulatif et affiche le prix à côté du logement visé. **/
function verif_login(email, password)
{
	//Affichages de control
	// alert(email);
	// alert(password);
	
	//affichage du bloc de loading
	getId('loading_login').innerHTML = getId('cadre_temporaire_login').innerHTML;
	getId('loading_login').style.display = 'block';
	getId('loading_login').style.visibility = 'visible';
	
	//Desactivation du bouton recalculer pour eviter les doubles validation
	var save_button = desactiver_bouton('lien_valider_login','#000000');
	/* 
	getId('lien_valider_login').onclick = function() { void(0); }
	//getId('lien_valider_login').removeAttribute("onclick");
	getId('lien_valider_login').style.color = '#000000'; //permet de voir que la désactivation est effective
	 */
	var xhr_verif_login = createRequestObject();
	//xhr_verif_login.open("POST","site/includes/produits/logements/ajax_calcul_prix.php",true);
	xhr_verif_login.open("POST","site/includes/vacanciers/ajax_login_client.php", true);
	
	xhr_verif_login.onreadystatechange = function()
	{
		if(xhr_verif_login.readyState == 4) // la réponse est arrivée
		{
			if(xhr_verif_login.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				//alert('status 200 OK');
				//alert(xhr_verif_login.responseText);
				
				//on injecte le recap dans le bloc prévu à cet effet
				getId('loading_login').innerHTML = xhr_verif_login.responseText;
				getId('cadre_temporaire_login').style.display = 'none'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
				getId('cadre_temporaire_login').style.visibility = 'hidden';
				
				getId('login_code_retour').style.display = 'none';
				getId('login_code_retour').style.visibility = 'hidden';
				
				//Réactivation du bouton valider seulement si la requête à aboutie
				reactiver_bouton('lien_valider_login', save_button);
				
				/* //probleme avec setAttribut sur IE
				//getId('lien_valider_login').setAttribute("onclick", "javascript:verif_login(getId('login_email').value,getId('login_password').value);")
				getId('lien_valider_login').onclick = function() { verif_login(getId('login_email').value,getId('login_password').value); }
				getId('lien_valider_login').style.color = '#FFFFFF';
				 */
				//redirection vers la page de compte client uniquement si le code retour renvoyé par le php et inscrit dans un element du tpl est = 1
				//alert(getId('login_code_retour').innerHTML);
				if(getId('login_code_retour').innerHTML == 1)
				{
					window.location.replace("vacances-location-sejour-mer-montagne-campagne,vacanciers-compte.html");
				}
			}
			else
			{
				xhr_verif_login.abort();
			}
		}
	}
	
	xhr_verif_login.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	var data = "email="+email;
	data += "&password="+password;
	
	//alert(data);
	xhr_verif_login.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** Cette fonction prend en paramètre le mail d'un client et lui envoi son mot de passe **/
function envoi_mail_oublie(email)
{
	//Affichages de control
	//alert(email);
	
	//affichage du bloc de loading
	getId('loading_login_mdp').innerHTML = getId('cadre_temporaire_login').innerHTML;
	getId('loading_login_mdp').style.display = 'block';
	getId('loading_login_mdp').style.visibility = 'visible';
	
	//Desactivation du bouton valider pour eviter les doubles validation
	var save_button = desactiver_bouton('lien_valider_login_mdp', '#000000');
	
	/* getId('lien_valider_login_mdp').onclick = function() { void(0); }
	//getId('lien_valider_login_mdp').removeAttribute("onclick");
	getId('lien_valider_login_mdp').style.color = '#000000'; //permet de voir que la désactivation est effective
	 */
	var xhr_mdp_oublie = createRequestObject();
	xhr_mdp_oublie.open("POST","site/includes/vacanciers/ajax_mdp_oublie.php",true);
	
	xhr_mdp_oublie.onreadystatechange = function()
	{
		if(xhr_mdp_oublie.readyState == 4) // la réponse est arrivée
		{
			if(xhr_mdp_oublie.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				//alert('status 200 OK');
				//alert(xhr_mdp_oublie.responseText);
				
				//on injecte le recap dans le bloc prévu à cet effet
				getId('loading_login_mdp').innerHTML = xhr_mdp_oublie.responseText;
				getId('cadre_temporaire_login_mdp').style.display = 'none'; //Contient le cadre temporaire du loading (recapitualtif_prix.tpl)
				getId('cadre_temporaire_login_mdp').style.visibility = 'hidden';
				
				//Réactivation du bouton valider seulement si la requête à aboutie
				reactiver_bouton('lien_valider_login_mdp', save_button);
				/* //probleme avec setAttribut sur IE
				//getId('lien_valider_login_mdp').setAttribute("onclick", "javascript:envoi_mail_oublie(getId('email_oublie').value);")
				getId('lien_valider_login_mdp').onclick = function() { envoi_mail_oublie(getId('email_oublie').value); }
				getId('lien_valider_login_mdp').style.color = '#FFFFFF';
				 */
				//redirection vers la page de compte client uniquement si le code retour renvoyé par le php et inscrit dans un element du tpl est = 1
				//alert(getId('login_code_retour').innerHTML);
			}
			else
			{
				xhr_mdp_oublie.abort();
			}
		}
	}
	
	xhr_mdp_oublie.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	var data = "email="+email;
	
	//alert(data);
	xhr_mdp_oublie.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** fonction pour se logguer sur la page reservation **/
function verif_login_resa(email, password)
{
	//affichage du bloc de loading
	getId('loading_login_resa').innerHTML = getId('cadre_temporaire_login_resa').innerHTML;
	
	//Desactivation du bouton valider pour eviter les doubles validation
	var save_button = desactiver_bouton('lien_valider_login_resa','#000000');
	
	/* var save_onclick = getId('lien_valider_login_resa').onclick;
	getId('lien_valider_login_resa').onclick = function() { void(0); }
	var save_style = getId('lien_valider_login_resa').style.color;
	getId('lien_valider_login_resa').style.color= '#000000'; //permet de voir que la désactivation est effective
	 */
	var xhr_verif_login_resa = createRequestObject();
	xhr_verif_login_resa.open("POST", "site/includes/vacanciers/ajax_login_client_resa.php", true);
	
	xhr_verif_login_resa.onreadystatechange = function()
	{
		if(xhr_verif_login_resa.readyState == 4) // la réponse est arrivée
		{
			if(xhr_verif_login_resa.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				var docXML = xhr_verif_login_resa.responseXML; //Objet permettant de gérer l'xml généré dans le script PHP
				
				var login_message_retour_resa = docXML.getElementsByTagName("login_message_retour_resa");
				var client_logue_resa = docXML.getElementsByTagName("client_logue_resa");
				var cadre_login_resa = docXML.getElementsByTagName("cadre_login_resa");
				var login_code_retour_resa = docXML.getElementsByTagName("login_code_retour_resa");
				var formulaire_login_resa = docXML.getElementsByTagName("formulaire_login_resa");
				
				//On l'affiche au bon endroit
				getId('login_resa').innerHTML = login_message_retour_resa[0].firstChild.nodeValue;
				
				//remplir le formulaire avec les infos clients
				if(login_code_retour_resa[0].firstChild.nodeValue == 1)
				{
					getId('login_resa').className = 'connecte';
					
					// on remplit le formulaire
					getId('formulaire_login_resa').innerHTML = formulaire_login_resa[0].firstChild.nodeValue;
					
					//Remplir le premier adulte
					if(getId('civilite_mme').checked == true)		getId('adulte_1_civilite').value = 'Mme';
					else if(getId('civilite_mlle').checked == true)	getId('adulte_1_civilite').value = 'Mlle';
					else											getId('adulte_1_civilite').value = 'Mr';
					
					getId('adulte_1_nom').value = getId('nom').value;
					getId('adulte_1_prenom').value = getId('prenom').value;
					
					getId('nom').value = replaceSpecialChar(getId('nom').value).toUpperCase();
					getId('prenom').value = ucFirst(getId('prenom').value);
					getId('adresse').value = ucWords(getId('adresse').value);
					getId('ville').value = getId('ville').value.toUpperCase();
					getId('email').value = getId('email').value.toLowerCase();
					getId('email_verif').value = getId('email_verif').value.toLowerCase();
					
					//disable des champs email 
					getId('email').disabled = 'disabled';
					getId('email_verif').disabled = 'disabled'; 
					
					//Cacher le bouton verifier mail
					// getId('bouton_verif_mail').className = 'cache';
					// getId('verif_mail_reponse').className = 'cache';
					
					//Activer le bouton Valider du formulaire
					getId('valider_formulaire_resa').onclick = function() { if(testSpecialChar(getId('form_reservation').nom.value, '{$label_reservation.message_alert}')) getId('form_reservation').submit(); }
					
					//Affichage dans le header du compte/client et bouton deconnexion( bug sous IE)
					getId('logged_or_not').innerHTML = client_logue_resa[0].firstChild.nodeValue;
				}
				else
				{
					//Réactivation du bouton valider seulement si la requête à aboutie
					reactiver_bouton('lien_valider_login_resa',save_button);
					
					/* getId('lien_valider_login_resa').onclick = save_onclick;
					getId('lien_valider_login_resa').style.color = save_style; */
				}
			}
			else
			{
				xhr_verif_login_resa.abort();
			}
		}
	}
	
	xhr_verif_login_resa.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	var data = "email="+email;
	data += "&password="+password;
	
	//alert(data);
	xhr_verif_login_resa.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** fonction pour se déconencter de l'espace client **/
function deconnexion()
{
	//affichage du bloc de loading
	getId('loading_login_resa').innerHTML = getId('cadre_temporaire_login_resa').innerHTML;
	
	//Desactivation du bouton valider pour eviter les doubles validation
	var save_button = desactiver_bouton('deconnexion_compte','#000000');
	/* 
	var save_onclick = getId('deconnexion_compte').onclick;
	getId('deconnexion_compte').onclick = function() { void(0); }
	var save_style = getId('deconnexion_compte').style.color;
	getId('deconnexion_compte').style.color= '#000000'; //permet de voir que la désactivation est effective
	 */
	var xhr_deconnexion = createRequestObject();
	xhr_deconnexion.open("POST", "site/includes/vacanciers/ajax_deconnexion.php", true);
	
	xhr_deconnexion.onreadystatechange = function()
	{
		if(xhr_deconnexion.readyState == 4) // la réponse est arrivée
		{
			if(xhr_deconnexion.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				var docXML = xhr_deconnexion.responseXML; //Objet permettant de gérer l'xml généré dans le script PHP
				
				var deco_header = docXML.getElementsByTagName("deco_header");
				var deco_login = docXML.getElementsByTagName("deco_login");
				var deco_formulaire = docXML.getElementsByTagName("deco_formulaire");
				
				getId('logged_or_not').innerHTML = deco_header[0].firstChild.nodeValue;
				
				getId('login_resa').innerHTML = deco_login[0].firstChild.nodeValue;
				getId('login_resa').className = 'deconnecte';
				
				getId('formulaire_login_resa').innerHTML = deco_formulaire[0].firstChild.nodeValue;
				
				getId('civilite_mr').checked = true;
				
				getId('adulte_1_nom').value = '';
				getId('adulte_1_prenom').value = '';
				
				remplireNom(getId('civilite_mr').value, 'c');
				
				// Afficher le bouton verifier mail
				getId('bouton_verif_mail').className = 'montre';
				getId('verif_mail_reponse').className = 'montre';
			}
			else xhr_deconnexion.abort();
		}
	}
	
	xhr_deconnexion.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	// var data = "email="+email;
	// data += "&password="+password;
	
	//alert(data);
	// xhr_deconnexion.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
	xhr_deconnexion.send(null); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** fonction pour se désabonner de la newsletter **/
function desabo()
{
	//affichage du bloc de loading
	// getId('cadre_form_desabo').innerHTML = getId('cadre_temporaire_login_resa').innerHTML;
	
	//Desactivation du bouton valider pour eviter les doubles validation
	// var save_button = desactiver_bouton('desabo_compte','#000000');
	
	/* 
	var save_onclick = getId('desabo_compte').onclick;
	getId('desabo_compte').onclick = function() { void(0); }
	var save_style = getId('desabo_compte').style.color;
	getId('desabo_compte').style.color= '#000000'; //permet de voir que la désactivation est effective
	 */
	var xhr_desabo = createRequestObject();
	xhr_desabo.open("POST", "site/includes/contactez_nous/ajax_desabo.php", true);
	
	xhr_desabo.onreadystatechange = function()
	{
		if(xhr_desabo.readyState == 4) // la réponse est arrivée
		{
			if(xhr_desabo.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				var docXML = xhr_desabo.responseXML; //Objet permettant de gérer l'xml généré dans le script PHP
				var retour = docXML.getElementsByTagName("retour");
				
				getId('cadre_form_desabo').innerHTML = retour[0].firstChild.nodeValue;
				// unLoading();
			}
			else xhr_desabo.abort();
		}
	}
	
	xhr_desabo.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	// envoi des données au php
	var captcha = getId('captcha_desabo').value;
	var email = getId('email_desabo').value;
	var typeNews = getId('typeNews').value;
	var data = "captcha_desabo=" + captcha + "&email_desabo=" + email + "&typeNews=" + typeNews;
	// data += "&password="+password;
	
	formDesaboLoading();
	
	// alert(data);
	xhr_desabo.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
	// xhr_desabo.send(null); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** vérifie si l'email utilisé existe déja dans la base **/
function verif_mail_resa(email)
{
	//affichage du bloc de loading
	getId('verif_mail_reponse').innerHTML = getId('cadre_loading_verif').innerHTML;
	
	//Desactivation du bouton valider pour eviter les doubles validation
	var save_button = desactiver_bouton('verif_mail_reservation','#000000');
	/* 
	var save_onclick = getId('verif_mail_reservation').onclick;
	getId('verif_mail_reservation').onclick = function() { void(0); }
	var save_style = getId('verif_mail_reservation').style.color;
	getId('verif_mail_reservation').style.color= '#000000';
	 */
	var xhr_verif_mail_resa = createRequestObject();
	xhr_verif_mail_resa.open("POST","site/includes/vacanciers/ajax_verif_mail_resa.php",true);
	
	xhr_verif_mail_resa.onreadystatechange = function()
	{
		if(xhr_verif_mail_resa.readyState == 4) // la réponse est arrivée
		{
			if(xhr_verif_mail_resa.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				//on injecte le recap dans le bloc prévu à cet effet
				getId('verif_mail_reponse').innerHTML = xhr_verif_mail_resa.responseText;
				
				//Réactivation du bouton valider seulement si la requête à aboutie
				reactiver_bouton('verif_mail_reservation',save_button);
				/* getId('verif_mail_reservation').onclick = save_onclick;
				getId('verif_mail_reservation').style.color = save_style; */
				
				//On cache le div code retour
				getId('login_code_retour_mail').style.display = 'none';
				getId('login_code_retour_mail').style.visibility = 'hidden';
				
				if(getId('login_code_retour_mail').innerHTML == 2) //si le mail existe en base il doit s'authentifier
				{
					//On met en rouge les champs dans le cadre log in
					if(getId('label_login_password_resa')) getId('label_login_password_resa').style.color = '#FF0000';
					if(getId('label_login_email_resa')) getId('label_login_email_resa').style.color = '#FF0000';
					//On met en gras les champs dans le cadre log in
					if(getId('label_login_password_resa')) getId('label_login_password_resa').style.fontWeight = 'bold';
					if(getId('label_login_email_resa')) getId('label_login_email_resa').style.fontWeight = 'bold';
					
					//On met le mail dans le champs email du log in
					if(getId('login_email_resa')) getId('login_email_resa').value = email;
				}
				else if(getId('login_code_retour_mail').innerHTML == 1) //Si le mail n'est pas existant en base -> il peut l'utiliser
				{
					//On remet en blanc les champs dans le cadre log in
					if(getId('label_login_password_resa')) getId('label_login_password_resa').style.color = '#FFFFFF';
					if(getId('label_login_email_resa')) getId('label_login_email_resa').style.color = '#FFFFFF';
					//On remet en non-gras les champs dans le cadre log in
					if(getId('label_login_password_resa')) getId('label_login_password_resa').style.fontWeight = 'normal';
					if(getId('label_login_email_resa')) getId('label_login_email_resa').style.fontWeight = 'normal';
					
					//On enleve le mail dans le champs email du log in
					if(getId('login_email_resa')) getId('login_email_resa').value = '';
					
					//Activer le bouton Valider du formulaire
					getId('valider_formulaire_resa').onclick = function() { if(testSpecialChar(getId('form_reservation').nom.value, '{$label_reservation.message_alert}')) getId('form_reservation').submit(); }
				}
			}
			else xhr_verif_mail_resa.abort();
		}
	}
	
	xhr_verif_mail_resa.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	var data = "email="+email;
	
	//alert(data);
	xhr_verif_mail_resa.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}

/** fonction pour changer la langue en session **/
function checkOnglet()
{
	// loading();
	
	var url = document.location.toString();
	
	var position = url.indexOf('#', 0);
	
	if(position != -1) var onglet = url.substr(position + 1);
	else window.location += '#';
	
	if(!in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays']))
	{
		var xhr_check_onglet = createRequestObject();
		
		xhr_check_onglet.onreadystatechange = function ()
		{
			if(xhr_check_onglet.readyState == 4)
			{
				if (xhr_check_onglet.status == 200)
				{
					var docXML = xhr_check_onglet.responseXML; //Objet permettant de gérer le xml généré dans le script PHP
					
					var onglet_ajax_xml = docXML.getElementsByTagName("onglet");
					var onglet = onglet_ajax_xml[0].firstChild.nodeValue;
					
					// alert(onglet);
					
					window.location += onglet;
				}
				else alert("Error: returned status code " + xhr_check_onglet.status + " " + xhr_check_onglet.statusText);
			}
		};
		
		xhr_check_onglet.open("POST", "site/includes/ajax_check_onglet.php", true);
		xhr_check_onglet.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		xhr_check_onglet.send(null);
	}
	
	switchOnglet();
}

/** fonction pour changer la langue en session **/
function changer_langue(langue)
{
	loading();
	
	var data = 'langue=' + langue;
	
	var url = document.location.toString();
	var onglet = url.substr(url.indexOf('#', 0)+1);
	if(in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays'])) data += '&onglet=' + onglet; // Dans le cas ou on est dans les pages de descriptifs
	
	// alert(url);
	
	var xhr_langue = createRequestObject();
	
	xhr_langue.onreadystatechange = function ()
	{
		if(xhr_langue.readyState == 4)
		{
			if (xhr_langue.status == 200)
			{
				window.location.reload();
			}
			else alert("Error: returned status code " + xhr_langue.status + " " + xhr_langue.statusText);
		}
	};
	
	xhr_langue.open("POST", "site/includes/ajax_changer_langue.php", true);
	xhr_langue.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_langue.send(data);
}

/** fonction pour changer le marche en session **/
function changer_marche(marche, pays)
{
	loading();
	
	var data = 'marche=' + marche;
	
	var url = document.location.toString();
	var onglet = url.substr(url.indexOf('#', 0)+1);
	if(in_array(onglet, ['residence', 'station', 'domaine', 'region', 'pays'])) data += '&onglet=' + onglet; // Dans le cas ou on est dans les pages de descriptifs
	
	// alert(url);
	
	var xhr_langue = createRequestObject();
	
	xhr_langue.onreadystatechange = function ()
	{
		if(xhr_langue.readyState == 4)
		{
			if (xhr_langue.status == 200)
			{
				changer_pays_client(pays);
				window.location.reload();
			}
			else alert("Error: returned status code " + xhr_langue.status + " " + xhr_langue.statusText);
		}
	};
	
	xhr_langue.open("POST", "site/includes/ajax_changer_marche.php", true);
	xhr_langue.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_langue.send(data);
}

/** fonction pour changer le pays client **/
function changer_pays_client(pays)
{
	var data = 'pays_client=' + pays;
	var xhr_pays = createRequestObject();
	
	xhr_pays.open("POST", "site/includes/ajax_changer_pays_client.php", true);
	xhr_pays.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr_pays.send(data);
}

/** fonction pour l'envoi à un ami **/
function envoyer_ami(email, nom, prenom, message)
{
	//affichage du bloc de loading
	getId('loading_login_envoi_ami').innerHTML = getId('cadre_temporaire_login_envoi_ami').innerHTML;
	getId('loading_login_envoi_ami').style.display = 'block';
	getId('loading_login_envoi_ami').style.visibility = 'visible';
	
	//Desactivation du bouton valider pour eviter les doubles validation
	var save_button = desactiver_bouton('valider_envoyer_ami','#000000');
	/* var save_onclick = getId('valider_envoyer_ami').onclick;
	var save_color = getId('valider_envoyer_ami').style.color;
	getId('valider_envoyer_ami').onclick = function() { void(0); }
	getId('valider_envoyer_ami').style.color = '#000000'; //permet de voir que la désactivation est effective */
	
	var xhr_envoi_ami = createRequestObject();
	xhr_envoi_ami.open("POST","site/includes/produits/descriptifs/ajax_envoi_ami.php",true);
	
	xhr_envoi_ami.onreadystatechange = function()
	{
		if(xhr_envoi_ami.readyState == 4) // la réponse est arrivée
		{
			
			if(xhr_envoi_ami.status == 200) // code html qui défini que la requête est OK , prêt à afficher
			{
				//alert('status 200 OK');
				//alert(xhr_envoi_ami.responseText);
				
				//on injecte le recap dans le bloc prévu à cet effet
				getId('loading_login_envoi_ami').innerHTML = xhr_envoi_ami.responseText;
				
				//on cache le span code retour
				getId('code_retour_ami').style.display = 'none';
				getId('code_retour_ami').style.visibility = 'hidden';
				
				//Réactivation du bouton valider seulement si la requête à aboutie
				reactiver_bouton('valider_envoyer_ami',save_button);
				/* getId('valider_envoyer_ami').onclick = save_onclick;
				getId('valider_envoyer_ami').style.color = save_color; */
				
				
				if(getId('code_retour_ami').innerHTML == 1) //mail envoyé
				{
					//On vide les champs du formulaire pour éviter que l'utilisateur envoit plusieurs mail
					getId('prenom_ami').value = '';
					getId('nom_ami').value = '';
					getId('email_ami').value = '';
					getId('message_ami').value = '';
				}
			}
			else
			{
				xhr_envoi_ami.abort();
			}
		}
	}
	
	xhr_envoi_ami.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
	
	//envoi des données au php
	var data = "email="+email;
	data += "&nom="+nom;
	data += "&prenom="+prenom;
	data += "&message="+message;
	
	//alert(data);
	xhr_envoi_ami.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
}