	
/* ***************************************************************************************************************************************************************************************** */
/* ***************************************************************************************************************************************************************************************** */
/* ***************************************************************************************************************************************************************************************** */
/* ***************************************************************************************************************************************************************************************** */


/* Affichage du menu */
var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;
var fleur=0;
// close layer when click-out
document.onclick = mclose; 

// open hidden layer
function mopen(id,nb)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem)
	{ 
		$('#'+ddmenuitem).css('display','none');
		fleur = ddmenuitem.replace("menu-sousmenu-", ""); 
		$('#menu-principal-fleur-'+fleur).css('display','none');
	}

	// get new layer and show it
	//ddmenuitem = document.getElementById(id);
	//ddmenuitem.style.visibility = 'block';
	$('#'+id).css('display','block');
	fleur = id.replace("menu-sousmenu-", ""); 
	$('#menu-principal-fleur-'+fleur).css('display','block');
	ddmenuitem = id;
 }
	
// close showed layer
function mclose()
{
	//if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
	if(ddmenuitem) 
	{
		$('#'+ddmenuitem).css('display','none');
		$('#menu-principal-fleur-'+fleur).css('display','none');
	}
 }
// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
 }

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
 }
	
	
	
	
	
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */


/* Page BOX DE RESA */

/* Affiche des critères de recherche */
function aff_criteres($id)
{
	$("#"+$id).toggle('blind');
 }

/* Mise à jour de la comboxbox en fonction de la combo région */
function maj_camping(id)
{
	$.post("xml/listes_campings_resa.php", 
		   {
			   	idRegion : id
			},
			
	   function(data,a,z,e){
			$('#camping_liste').html(data);
	   },
		'html');
 }

function maj_camping_groupe(id)
{
	$.post("xml/listes_campings_resa_sejour_groupe.php", 
		   {
			   	idRegion : id
			},
			
	   function(data,a,z,e){
			$('#maj_camping').html(data);
			maj_formule($('#maj_camping select').val());
	   },
		'html');
 }

function maj_formule(id)
{
	$.post("xml/listes_niveau_formule_camping.php", 
		   {
			   	idCamping : id
			},
			
	   function(data,a,z,e){
			$('#maj_formule').html(data);
			//alert(data);
	   },
		'html');
 }
 
/* Mise à jour de la comboxbox en fonction des checkbox mmc */
function maj_regions_checkbox(id)
{
	$.post("xml/listes_regions_mmc.php", 
		   {
			   	idmmc : id
			},
			
	   function(data,a,z,e){
			$('#liste_des_regions').html(data);
	   },
		'html');
 }
 
function maj_regions_checkbox2()
{
	
	var mer = false;
	var campagne = false;
	var montage = false;
	
	if($('#recherche-affiner-situation-mer').is(':checked'))
	{
		var mer = true;
	}
	else
	{
		var mer = false;	
	}
	
	if($('#recherche-affiner-situation-campagne').is(':checked'))
	{
		var campagne = true;
	}
	else
	{
		var campagne = false;	
	}
	if($('#recherche-affiner-situation-montage').is(':checked'))
	{
		var montage = true;
	}
	else
	{
		var montage = false;	
	}
	$('#recherche-affiner-situation-campagne').is(':checked')
	$('#recherche-affiner-situation-montage').is(':checked')
	
	$.post("xml/listes_regions_mmc_recherche.php", 
		   {
			   	mer : mer,
				campagne : campagne,
				montage : montage
			},
			
	   function(data,a,z,e){
			$('#liste_region_affiner').html(data);
	   },
		'html');
 } 

/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */


/* Page camping calendrier */

//Variable réservation
var date_arrivee;
var date_retour;
var type_hebergement = new Array();
var nb_personne;
var nb_personne_generer = false;
var tabs_old;
var tablo = new Array();
var un_fois = true;
var nb_jour_en_plus;	// nombre de jours minimum
var dpuuid;
var date_arrivee_save;	// contient le mois et l'année de la date arrivée : format array(mois, annee)
var date_retour_save;	
var id_heb;
var value_heb;
var type_heb;
var idEstablishment_heb;
var nb_personne_generer;
var nb_personne_max;
//var joursDispo = new Array([11, 9, 2010]);
//var joursPromotions = new Array([13, 9, 2010]);


// Réception des données de planning.php
var joursDispo_arrivee = new Array();
var joursDispo_depart = new Array();
var joursPromotions = new Array();
var joursSelected = new Array();
var liste_date = new Array(); // a:20:{i:0;a:3:{s:13:"date_de_debut";s:10:"2011-08-27";s:11:"date_de_fin";s:10:"2011-09-08";s:4:"jour";s:1:"2";}i:1;...}
var calendar;


var var_debug= new Array();
//Mise en mémoire du form les dates sélectionnés - Affichage des informations
/****** function type_hebergement_selected	
**		Suite à la sélection d'un produit, initialise le sélecteur du nombre de personnes
**
** id	:
** value	:
** type	:
** idEstablishment	:
** nb_personne_select	: (string) '6/8' ; désigne un intervalle de nombre de personne possible.
******/
function type_hebergement_selected(id,value,type,idEstablishment,nb_personne_select)
{	

	id_heb = id;
	value_heb = value;
	type_heb = type;
	idEstablishment_heb = idEstablishment;

	var nb_personne_selected = nb_personne_select.split("/");	
		
	if(nb_personne_selected[1])
	{
		var pers_select = nb_personne_selected[1];
	}
	else
	{
		var pers_select = nb_personne_selected[0];
	}

	if(nb_personne_generer)
	{
		
		if(nb_personne>parseInt(pers_select))
		{
			nb_personne = parseInt(pers_select);
			$('#personne').val(nb_personne);
			$('#nb_personne').val(pers_select);
		}
		
		//On n'affiche plus la div
		$('#nombre_de_personne').addClass('camping_aff_div');
				
		//Calendrier d'arrivée
		$('#calendar1').addClass('camping_aff_div');
		$('#date-arrivee').datepicker("destroy");
		
		//$('#date-arrivee').css("background","none");
		$('#date-arrivee').removeClass("calendar-fond");
		$('#date-arrivee').html('<center><img src="images/ajax-loader.gif" id="img_load_date_arrivee" style="padding-top:109px;"/></center>');
		
		//Calendrier de départ
		$('#calendar2').addClass('camping_aff_div');
		$('#date-retour').datepicker("destroy");
				//$('#date-retour').css("background","none");
		$('#date-retour').removeClass("calendar-fond");

		//Infos
		$('#sejour').addClass('camping_aff_div');
		$('#reservation').addClass('camping_aff_div');
	
		
		//On supprime toutes les options du select
		var elSel = document.getElementById('personne');
		
  		var i;
		for (i = elSel.length - 1; i>=0; i--) {
			elSel.remove(i);
		}
		  
		//On générère le nombre d'option en fonction du locatif / emplacement
		for(a=0;a<=parseInt(pers_select);a++)
		{
			var oOption = document.createElement('OPTION');
			
			if(a==0)
			{
				oOption.value = "";
				oOption.text = "";
			}
			else
			{
				oOption.value = a;
				oOption.text = a;
			}
			$('#personne').get(0)[$('#personne option').length] = oOption;
		}
		
		$('#personne').val(nb_personne);
		change_nb_personne(nb_personne);
		//On re-affiche la div
		$('#nombre_de_personne').removeClass('camping_aff_div');
	}
	else
	{		
		//On supprime toutes les options du select
		var elSel = document.getElementById('personne');
		
  		var i;
		for (i = elSel.length - 1; i>=0; i--) {
			  elSel.remove(i);
		  }
		  
		for(a=0;a<=parseInt(pers_select);a++)
		{
			var oOption = document.createElement('OPTION');
			if(a==0)
			{
				oOption.value = "";
				oOption.text = "";
			}
			else
			{
				oOption.value = a;
				oOption.text = a;
			}
			$('#personne').get(0)[$('#personne option').length] = oOption;
		}
		$('#nombre_de_personne').removeClass('camping_aff_div');
		
		
	}
	nb_personne_generer = true;
	type_hebergement = Array(id,value,type);
	$('#type-hebergement').html(value);
	goTo('#nombre_de_personne');
	$("#maj_nb_perso").html(pers_select);
 }
 
/****** function change_nb_personne
**		Suite à la sélection du nombre de personnes, 
**		appelle liste_des_dispos
**
** nb_perso	: (int)
******/
function change_nb_personne(nb_perso)
{
	
	$("#nb_perso").html(nb_perso);

	if(nb_personne!=nb_perso)
	{
		//Calendrier d'arrivée		
		$('#calendar1').addClass('camping_aff_div');   // Masque le calendrier
		$('#date-arrivee').datepicker("destroy");		// Detruit le datepicker
		liste_des_dispos(id_heb,type_heb,idEstablishment_heb,"date-arrivee");
		$('#calendar1').removeClass('camping_aff_div'); // Raffiche le calendrier

		//Calendrier de départ
		$('#date-retour').datepicker("destroy");	// Detruit le Datepicker
		$('#calendar2').addClass('camping_aff_div'); // Masque le calendrier
		

		//Grille tarifaire
		$('#sejour').addClass('camping_aff_div');   // Masque la div Sejour
		$('#reservation').addClass('camping_aff_div');  // Masque la div Reservation
	}
	else
	{
		liste_des_dispos(id_heb,type_heb,idEstablishment_heb,"date-arrivee");
		$('#calendar1').removeClass('camping_aff_div');
	}
	$("#nb_personne").val(nb_perso)
	nb_personne = nb_perso;
	goTo('#calendar1');
 }

 
//Liste des dates de dispo d'un produit
/****** function liste_des_dispos
**		Génère le calendrier de sélection de la date d'arrivée via planning.php.
**
** id	:
** type	:
** idEstablishment	:
** calendar	:
******/
function liste_des_dispos(id,type,idEstablishment,calendar)
{
	//Data Loaded: 14166-L-437
	//Data Loaded: 14166-L-437
	
	//alert(date_arrivee_save+" - "+date_arrivee);
	//$('#date-arrivee').css("background","none");
	$('#date-arrivee').removeClass("calendar-fond");
	$('#date-arrivee').html('<center><img src="images/ajax-loader.gif" id="img_load_date_arrivee" style="padding-top:109px;"/></center>');
	
	$.post("xml/planning.php", 
		   {
			   	idProducts : id,
				productType : type,
				idEstablishment : idEstablishment
			},
			
	   function(data,a,z,e,r,t,y){
		   	tablo = unserialize(data);
			joursDispo_arrivee = tablo['arrivee'];
			joursDispo_depart = tablo['depart'];
			joursPromotions = tablo['promo'];
			liste_date = tablo['period'];
			var date_start = tablo['date_start'];
			
			$('#img_load_date_arrivee').css("display","none");
			//$('#date-arrivee').css("background","");
			$('#date-arrivee').addClass("calendar-fond");
			
			defaulDate = date_start.split('/');
			defaultDate = new Date(defaulDate[2],parseInt(defaulDate[1],10)-1,parseInt(defaulDate[0],10)-10)
			//alert(defaultDate)
			
			$("#"+calendar).datepicker({
				//minDate :date_start,
				defaultDate: defaultDate,
				altField: '#date-mem-arrivee',
				beforeShowDay: creerPlanning,
				onSelect: function(date) {
					date1_selected(date);
					$('#calendar2').removeClass('camping_aff_div'); // Raffiche le calendrier
					//$('#date-retour').css("background","none");
					$('#date-retour').removeClass("calendar-fond");
					$('#date-retour').html('<center><img src="images/ajax-loader.gif" id="img_load_date_retour" style="padding-top:109px;"/></center>');

				}
			});
	
						
			if(date_arrivee_save)
			{
				var mois = date_arrivee_save[0];
				var year = date_arrivee_save[1];
			}
			else
			{
				/*
				var new_dates = date_start.split("/");
				var mois = parseInt(new_dates[1]-1);
				var year =parseInt(new_dates[2]);
				date_arrivee_save = new Array(new_dates[1],new_dates[2]);
				var mois = parseInt(date_arrivee_save[0]);
				var year = parseInt(date_arrivee_save[1]);	
				*/
				
				var new_dates = date_start.split("/");
				var mois = new_dates[1];
				var year = new_dates[2];
				date_arrivee_save = new Array(new_dates[1],new_dates[2]);
			}
			
			//Change month
			test_month('#'+calendar,'M',(mois-1));
			test_month('#'+calendar,'Y',year);
			
	   },
		'html');
 }
 
 
//Sélection de la date d'arrivée
/****** function date1_selected
**		Suite à un clic sur le calendrier d'arrivée, 
**		génère le calendrier de sélection de la date de départ via planning.php et date_arrivee
**		
**
** date	: '04/09/2011' ; contient la date d'arrivée
******/
function date1_selected(date)
{
	//Grille tarifaire
	$('#sejour').addClass('camping_aff_div');   // Masque la div Sejour
	$('#reservation').addClass('camping_aff_div');  // Masque la div Reservation

	$.post("xml/planning.php", 
		   {
			   	idProducts : id_heb,
				productType : type_heb,
				idEstablishment : idEstablishment_heb,
				dateselected : date
			},
			
	   function(data,a,z,e,r,t,y){
		   	tablo = unserialize(data);
			joursDispo_arrivee = tablo['arrivee'];
			joursDispo_depart = tablo['depart'];
			joursPromotions = tablo['promo'];
			liste_date = tablo['period'];
			var date_start = tablo['date_start'];
			//alert(date_start);
			//$('#img_load_date_arrivee').css("display","none");
			////$('#date-arrivee').css("background","");
			//$('#date-arrivee').addClass("calendar-fond");
			$('#img_load_date_retour').css("display","none");
			$('#date-retour').addClass("calendar-fond");		
		
			//$("#"+calendar).datepicker({
			//	//minDate :date_start,
			//	altField: '#date-mem-arrivee',
			//	beforeShowDay: creerPlanning,
			//	onSelect: function(date) {
			//		date1_selected(date);
			//	}
			//});
			//
			//
			//if(date_arrivee_save)
			//{
			//	var mois = date_arrivee_save[0];
			//	var year = date_arrivee_save[1];
			//}
			//else
			//{
				/*
				var new_dates = date_start.split("/");
				var mois = parseInt(new_dates[1]-1);
				var year =parseInt(new_dates[2]);
				date_arrivee_save = new Array(new_dates[1],new_dates[2]);
				var mois = parseInt(date_arrivee_save[0]);
				var year = parseInt(date_arrivee_save[1]);	
				*/
				
				// var new_dates = date_start.split("/");
				// var mois = new_dates[1];
				// var year = new_dates[2];
				// date_arrivee_save = new Array(new_dates[1],new_dates[2]);
			//}
			
			//Change month
			//test_month("#date-retour",'M',(mois-1));
			//test_month("#date-retour",'Y',year);
			
			// copier dans le callback
			//Save de la date sélected
			var new_dates = date.split("/");
			date_arrivee_save = new Array(new_dates[1],new_dates[2]);

			//Date selected
			var date_split = date.split('/');
			//Pour trouver le nb jour mini
			var date_iso = 	date_split[2]+'-'+date_split[1]+'-'+date_split[0];
			//Faire le calcul
			// Ici Date2 = date !
			//var Date2 = date_split[0] +'/'+date_split[1]+'/'+ date_split[2];
			
			// Recherche de la durée minimale de séjour pour la date arrivée donnée
			minimumPeriodForStay=999;
			for(i=0;i<liste_date.length;i++) {
				if(liste_date[i]['date_de_debut']<=date_iso && date_iso<=liste_date[i]['date_de_fin'])	 {
					minimumPeriodForStay = Math.min(liste_date[i]['jour'], minimumPeriodForStay);	
				}
			}
			if (minimumPeriodForStay==999) minimumPeriodForStay=1 ;
			
			nb_jour_en_plus = minimumPeriodForStay;	
			

			// ???
			// Si nb jours mini == 1 
			// Alors pas de décalage
			// Sinon décalage de nb jours mini 
			if((nb_jour_en_plus-1)==0)
			{
				nb_jour_en_plus = nb_jour_en_plus;
				var date_retour_mini = addDaysToDate(date,0);
			}
			else
			{
				var date_retour_mini = addDaysToDate(date,(parseInt(nb_jour_en_plus)));
			}
			date2_selected(date,'arrivee');
						
			if(!date_retour)
			{
				date_retour = date_retour_mini;	
				$('#date-retour').datepicker({
							// defaultDate: date_retour_mini,
			// 2012-01-04 
							defaultDate: date,
							altField: '#date-mem-retour',
							beforeShowDay: creerPlanning,
							onSelect: function(date) 	
								{
									date2_selected(date,"retour");
								}
						});
				$('#calendar2').removeClass('camping_aff_div');
			}
			else
			{
				date_retour = date_retour_mini;	
				$('#date-retour').datepicker("destroy");
				$('#date-retour').datepicker({
							// defaultDate: date_retour_mini,
			// 2012-01-04 
							defaultDate: date,
							altField: '#date-mem-retour',
							beforeShowDay: creerPlanning, 
		
							onSelect: function(date) 	
								{
									date2_selected(date,"retour");
								}
						});	
				
				$('#calendar2').removeClass('camping_aff_div');
				$('#sejour').addClass('camping_aff_div');
				$('#reservation').addClass('camping_aff_div');
			}
			
			//var aff_date = date_retour_mini.split('/');
			//test_month('#date-retour','M',(aff_date[1]-1));
			//test_month('#date-retour','Y',aff_date[2]);
			
			date_arrivee = date;
		},
		'html');
 }

//Sélection de la date de retour + Affichage des informations
/****** function date2_selected
**		stocke la date sélectionnée dans une des variables date (date_arrivee ou date_depart)
**		dans le cas de la date retour, lance les processus suivants dont recherche_tarif
**
** date	:
** id	: (string) 'retour' ou 'arrivee'
******/
function date2_selected(date,id)
{
		//Affichage des dates
		$('#date-aff-'+id+'').html(date);
		
		if(id=="retour")
		{
			Date1 = $('#date-mem-arrivee').val();
			Date2 = $('#date-mem-retour').val();
			
			var nb_jours = calcul(Date1,Date2,"/");
			$('#nb-nuit').html(Math.floor(nb_jours));
			$('#duree').val(Math.floor(nb_jours));
			$('#sejour').removeClass('camping_aff_div');
			$('#reservation').removeClass('camping_aff_div');
			
			$('#prix').addClass('camping_aff_div');
			$('#promo_price_aff').addClass('camping_aff_div');
			
			date_retour = date;
			recherche_tarif(); 
		}	
		else
		{
			date_arrivee = date;	
		}
 }

//Recherche du tarif en live
function recherche_tarif()
{
	var liste_des_infos;
	//type_hebergement = array(25990,Mobilhome 16.1m² (1 chambre),L)
	if(typeof(date_arrivee)!="undefined" && typeof(date_retour)!="undefined")
	{
		
		$.post("xml/moteur_de_recherche_live.php", 
			   {
					date_arrivee : date_arrivee,
					date_retour : date_retour,
					id_product : type_hebergement[0],
					type_product :type_hebergement[2],
					nb_personne :nb_personne,
					camping :$("#camping").val()
				},
				
		   function(data,a,z,e,r,t,y){
			   
			 	liste_des_infos = unserialize(data);
				if(liste_des_infos['error']!="KO")
				{
					//liste_des_infos = unserialize(data);					
					$("#tac").val(liste_des_infos['tac']);
					$("#spec").val(liste_des_infos['spec']);
					$("#moos").val(liste_des_infos['moos']);
					$("#prix_final").val(liste_des_infos['prix']);
					$("#prix").html(liste_des_infos['prix']+" &euro;");
					$("#nb_personne").val(liste_des_infos['nb_personne']);
					//$("#personne").val(liste_des_infos['nb_personne']);
					$("#nb_perso").html(liste_des_infos['nb_personne']);
					$("#type").val(liste_des_infos['type']);
					$("#btn_reservation").css('display','');
					
					
					if(nb_personne>liste_des_infos['nb_personne'])
					{
						$("#nb_pers_diff").css('display','');
						$("#nb_pers_diff").removeClass('camping_aff_div');
						
					}
					else
					{
						$("#nb_pers_diff").css('display','none');
						$("#nb_pers_diff").addClass('camping_aff_div');
					}
					
					
					$('#prix').removeClass('camping_aff_div');
					
					if(liste_des_infos['price_old']!=0)
					{
						$("#promo_price_aff").css('display','block');
						$("#promo_price").css('display','block');
						$("#promo_price").html(liste_des_infos['price_old']+' &euro;');
						$("#prix_normal").val(liste_des_infos['price_old']);
						$('#promo_price_aff').removeClass('camping_aff_div');
						$('#promo_price_aff').removeClass('calendar-fond');
						$('#prix').css("color","#D652A4");
					}
					else
					{
						$("#promo_price_aff").css('display','none');
						$("#promo_price").css('display','none');
						$("#prix_normal").val('');
						$('#prix').css("color","");
					}
						
				}
				else
				{
					//$( "#resa_indispo" ).dialog( "open" );
					$("#btn_reservation").css('display','none');
					$('#promo_price_aff').css('display','none');
					$('#prix').css("color","");
					$("#prix").html(liste_des_infos['texte']);
					$('#prix').removeClass('camping_aff_div');
					//$('#promo_price_aff').removeClass('camping_aff_div');
				}
				//alert("Data Loaded: " + data);
		   },
			'html');
		

	}}

//Lance la réservation
function reservation()
{		
	$('#reservation-camping').submit();
 }

//Fonction qui color les dates prises
/****** function creerPlanning
**		appelée à la fin du dessinage d'un calendrier sur chaque jour du mois visible du calendrier
**		objectif : mise en forme
**
** date :	 
******/
function creerPlanning(date) 
{
    var estReserve = false ;
    var estPromotion = false ;
	var estSelected = false ;
	calendar = this.id;
	var Date2;
	var Date1;
	/*
	var_debug[var_debug.length] = date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate();
	*/
	// Cherche les jours réservés
	if(calendar=="date-arrivee")
	{
		//if(un_fois){alert(joursDispo_arrivee); un_fois=false;}
		if (joursDispo_arrivee != null) { 
		// alert(date.getDate()+"-"+date.getMonth()+"-"+date.getFullYear());
			for (i = 0; i < joursDispo_arrivee.length; i++) {
			
			// Si dj=j, dm=m, da=a 
			/* /
				if(1==i%50){
					alert(date+' : '+date.getFullYear()+''+(date.getMonth()+1)+''+date.getDate()+' ? '+joursDispo_arrivee[i][2]+''+joursDispo_arrivee[i][1]+''+joursDispo_arrivee[i][0]);
					un_fois=false;
				}
			/* */
				if ( date.getDate() == joursDispo_arrivee[i][0] && (date.getMonth()+1) == joursDispo_arrivee[i][1] && date.getFullYear() == joursDispo_arrivee[i][2]) {
					estReserve = true;
					break;
				}
			}
		}
	}
	else
	{	
		//Date2 = getDates(addDaysToDate(date_arrivee,nb_jour_en_plus));
		Date2 = getDates(addDaysToDate(date_arrivee,(nb_jour_en_plus-1)));		
		if (joursDispo_depart!= null) {
			for (i = 0; i < joursDispo_depart.length; i++) {		
				Date1 = date;
		
		
				if( (fCompareDate_3wcom(addDaysToDate(date_arrivee,(nb_jour_en_plus-1)),joursDispo_depart[i][0]+"/"+joursDispo_depart[i][1]+"/"+joursDispo_depart[i][2])>=1) && date.getDate() == joursDispo_depart[i][0] && (date.getMonth()+1) == joursDispo_depart[i][1] && date.getFullYear() == joursDispo_depart[i][2] )
				{
					estReserve = true;
					break;
				}
			}
		}
	}
	
	// Cherche les jours réservés
    if (joursSelected != null) {
		// Ne sert jamais
		//if(joursSelected.length>0) alert(joursSelected.length) ;
        for (i = 0; i < joursSelected.length; i++) {
          if ( date.getDate() == joursSelected[i][0] && (date.getMonth()+1) == joursSelected[i][1] && date.getFullYear() == joursSelected[i][2]) {
			estSelected = true;
			break;
		  }
        }
    } 
	
	if(calendar=="date-arrivee")
	{
		// Cherche les jours demandés
		//if(un_fois){alert(joursPromotions); un_fois=false;}
		if (joursPromotions != null) {					
			for (i = 0; i < joursPromotions.length; i++) 
			{				
			  if (date.getDate() == joursPromotions[i][0] && (date.getMonth()+1) == joursPromotions[i][1] && date.getFullYear() == joursPromotions[i][2]) 
			  {
				estPromotion = true;
				break;
			  }
			}
		}   
	}
	
    if (estReserve && !estPromotion)  return [true, ' date_disponible '] ;  //ui-state-active ui-datepicker-current-day
	else if (estSelected) return [true, ' ui-state-active ui-datepicker-current-day '];
    else if (estPromotion) return [true, ' date_promotion '];
    else return [false,' '] ;
	
	// ui-state-highlight 
	
	/*
	if (estSelected) return [true, ' ui-state-active ui-datepicker-current-day'] ;
	else return [true, ' '] ;
	*/
	//return [true, ' '] ;
}

//Calcul la différence entre deux date
function calcul(Date1,Date2,separator)
{
	separator = separator || '/'; 

	var debut = temps(Date1.split(separator));
	var fin = temps(Date2.split(separator));
	
	var nb  = (fin - debut) / (1000 * 60 * 60 * 24); // + " jours";
	return nb;
 }

//Retourne la date au bon format
function temps(date)
{
	var d = new Date(date[2], date[1] - 1, date[0]);	
	return d.getTime();
 }

//Tabs over mémoire
function tabs_over(id,lg)
{
	var list = new Array('reserver','promotions','emplacements','locations','services','adecouvrir');
	var ts = id.split("_");
	
	//On remet toutes les tabs avec leurs images de base
	for(i=0;i<list.length;i++)
	{
		$('#'+list[i]+'_li_tabs').attr('src','images/onglet_'+list[i]+'_li_tabs_'+lg+'.gif');
		//alert('#'+list[i]+'_li_tabs');
	}
	$('#tabs_camping img').attr('onMouseOut',"MM_swapImgRestore()");
		
	$('#'+id+'_tabs').attr('src','images/onglet_'+ts[0]+'_over_'+ts[1]+'_tabs_'+lg+'.gif');
	$('#'+id+'_tabs').attr('onMouseOut',"");
 }
	
//Affichage de la div enplacement ou location
function aff_div_camping(id , div, nb)
{
	$("#"+div+" .aff").addClass('aff_no');
	$("#"+div+" .aff_no").removeClass('aff');
	$("#"+div+"-"+id).addClass('aff');
	$("#"+div+"-"+id).removeClass('aff_no');
	
	var i;
	
	for(i=1;i<=nb;i++)
	{
		$("#reservation-camping-"+div+"-radio"+i+"-"+id).attr('checked', true);
	}

	$("#btn-"+div).attr("rel",id);
 }
	
//Return une date d'une chaine
function getDates(strDate)
{	  
		var new_date = strDate.split("/");
	    day = parseInt(new_date[0]);
		month = parseInt((new_date[1]-1));
		year = parseInt(new_date[2]);
		
		d = new Date();
		d.setDate(day);
		d.setMonth(month);
		d.setFullYear(year); 
		
		//if(un_fois){ alert(strDate+" - "+new_date); un_fois=false;}
		
		return d; 
 }
 
//Comparatif entre deux date
function fCompareDate(pDateDebut,pDateFin) 
{
	var DureeDebut = Date.parse(pDateDebut);
	var DureeFin = Date.parse(pDateFin);
	
	//alert(DureeFin+" - "+DureeDebut+" - "+pDateDebut+" - "+pDateFin);
	
	var iComparaison= DureeFin - DureeDebut;
	
	return iComparaison;
 } 

//
function fCompareDate_3wcom(pDateDebut,pDateFin) 
{
	var date1  = pDateDebut.split("/");
	var date2  = pDateFin.split("/");
	
	var DureeDebut = date1[2]+date1[1]+date1[0];
	var DureeFin = date2[2]+date2[1]+date2[0];
	
	//alert(DureeFin+" - "+DureeDebut+" - "+pDateDebut+" - "+pDateFin);
	
	var iComparaison = DureeFin - DureeDebut;
	
	return iComparaison;
 } 

//Date + nb jour
/*function addDaysToDate(old_date, delta_days)
{
    alert(old_date+" :: "+delta_days);
	// Date plus plus quelques jours
    var split_date = old_date.split('/');
    // Les mois vont de 0 a 11 donc on enleve 1, cast avec *1
    var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days);
    var new_day = new_date.getDate();
        new_day = ((new_day < 10) ? '0' : '') + new_day; // ajoute un zéro devant pour la forme  
    var new_month = new_date.getMonth() + 1;
        new_month = ((new_month < 10) ? '0' : '') + new_month; // ajoute un zéro devant pour la forme  
    var new_year = new_date.getYear();
        new_year = ((new_year < 200) ? 1900 : 0) + new_year; // necessaire car IE et FF retourne pas la meme chose  
    var new_date_text = new_day + '/' + new_month + '/' + new_year;
    return new_date_text;
 }*/
function addDaysToDate(old_date, delta_days)
{
    //alert(old_date+" :: "+delta_days);
	// Date plus plus quelques jours
    var split_date = old_date.split('/');
    // Les mois vont de 0 a 11 donc on enleve 1, cast avec *1
    var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days);
    var new_day = new_date.getDate();
        new_day = ((new_day < 10) ? '0' : '') + new_day; // ajoute un zéro devant pour la forme  
    var new_month = new_date.getMonth() + 1;
        new_month = ((new_month < 10) ? '0' : '') + new_month; // ajoute un zéro devant pour la forme  
    var new_year = new_date.getYear();
        new_year = ((new_year < 200) ? 1900 : 0) + new_year; // necessaire car IE et FF retourne pas la meme chose  
    var new_date_text = new_day + '/' + new_month + '/' + new_year;
    return new_date_text;
 }
//
function lien_heb(id,type)
{
	var id_link=$(id).attr("rel");
	$("#reservation-camping-"+type+"-"+id_link).click();
 }

/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */


/* Page recherche */
function checkbox(type,champ)
{
	//$('input[name=foo]').attr('checked', true);
	//$('input[name=foo]').attr('checked', false);
	if(type=="MMC" && champ=="all")
	{
		$('#recherche-affiner-situation-mer').attr('checked', false);
		$('#recherche-affiner-situation-montage').attr('checked', false);
		$('#recherche-affiner-situation-campagne').attr('checked', false);
	}
	else if(type=="MMC" && champ!="all")
	{
		$('#recherche-affiner-situation').attr('checked', false);
	}
	
	if(type=="HEB" && champ=="all")
	{
		$('#recherche-affiner-hebergement-bungalow').attr('checked', false);
		$('#recherche-affiner-hebergement-chalet').attr('checked', false);
		$('#recherche-affiner-hebergement-mobilhome').attr('checked', false);
		$('#recherche-affiner-hebergement-atypique').attr('checked', false);
	}
	else if(type=="HEB" && champ!="all")
	{
		$('#recherche-affiner-hebergement').attr('checked', false);
	}
	
	maj_regions_checkbox2();
 }	


/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
//Tunnel d'achat
var price_total;
var liste_des_options = new Array();
var liste_des_options_live = new Array();
function assurance_check(prix)
{
	if(!$('#assurance').is(':checked'))	
	{
			$('#assurance_price').addClass('prix-selectionne');
			tunnel_add_option(prix);
	}
	else
	{
			$('#assurance_price').removeClass('prix-selectionne');
			tunnel_remove_option(prix);
	}
	
	
	maj_assurance();
	
 }

function maj_assurance()
{
	$.post("xml/tunnel_assurance_live.php", 
		{
			   	"option" : liste_des_options_live
		},
			
	   function(data,a,z,e){
			//$('#jm').html(data);
			//alert(data);
	   },
		'html');
 }

function tunnel(id,price,price_base,perso)
{	
		
	if(price!="")
	{
				
		var price_new = price.split("::");
		var price2 = parseFloat(price_new[0]).toFixed(2);
				
		if( (price2!="" || price2=="0")  && (empty(liste_des_options[id]) && liste_des_options[id]!=0) )
		{
			$('#reservation-options-option-'+id).addClass('prix-selectionne');
			$('#reservation-options-option-'+id).html(price2+' &euro;');	
			
			if(perso)
			{	
				nb_personne_generer = (nb_personne_generer+parseInt(price_new[1]));
				test_nb_perso();	
			} 
			
			liste_des_options[id] = price2;
			tunnel_add_option(price2);
			liste_des_options_live[id]=price;
			
		}
		else if((price2!="" || price2=="0") || !empty(liste_des_options[id]) )
		{		
			tunnel_remove_option(liste_des_options[id]);
			$('#reservation-options-option-'+id).html(price2+' &euro;');
			tunnel_add_option(price2);
			
			
			if(perso)
			{	
				var price_new2 = liste_des_options_live[id].split("::");				
				nb_personne_generer = (nb_personne_generer-parseInt(price_new2[1]));
				nb_personne_generer = (nb_personne_generer+parseInt(price_new[1]));
				test_nb_perso();	
			}
			
			liste_des_options[id] = price2;
			liste_des_options_live[id]=price;
		}
		else
		{
			$('#reservation-options-option-'+id).removeClass('prix-selectionne');
			$('#reservation-options-option-'+id).html(price_base.toFixed(2)+' &euro;');
			tunnel_remove_option(liste_des_options[id]);

			if(perso)
			{
				var price_new2 = liste_des_options_live[id].split("::");
				nb_personne_generer = (nb_personne_generer-parseInt(price_new2[1]));
				test_nb_perso();	
			} 
			
			delete liste_des_options[id];
			delete liste_des_options_live[id];
		}
	}
	else
	{
		$('#reservation-options-option-'+id).removeClass('prix-selectionne');
		$('#reservation-options-option-'+id).html(price_base.toFixed(2)+' &euro;');
		tunnel_remove_option(liste_des_options[id]);
		
		if(perso)
		{	
			var price_new2 = liste_des_options_live[id].split("::");
			nb_personne_generer = (nb_personne_generer-parseFloat(price_new2[1]));
			test_nb_perso();	
		} 
		
		delete liste_des_options[id];
		delete liste_des_options_live[id];
	}
	 maj_assurance();
	 
 }

function test_nb_perso()
{
	if(parseInt(nb_personne_max)<parseInt(nb_personne_generer))
	{
		$("#message").html(message_max_personne+" "+nb_personne_max+" "+message_max_personne_suite);
		$("#btn_resa").css('display','none');
	}
	else
	{
		$("#message").html("");
		$("#btn_resa").css('display','');
	}
 }

// Ajout 2011-10-06
function tunnel_conditions_obbligatoires() {
	return true;
}

function tunnel_condition()
{
	if(!$('#reservation-options-conditions').is(':checked'))
	{
		$( "#dialog_condition" ).dialog( "open" );	
	}
	else
	{
		$( "#reservation-options" ).submit();	
	}
 }

function tunnel_add_option(prix)
{
	if(prix!=0)
	{
		var price_final = (parseFloat(price_total)+parseFloat(prix)).toFixed(2);
		$("#price_final").html(price_final+' &euro;');
		price_total = price_final;
	}
 }

function tunnel_remove_option(prix)
{
	if(prix!=0)
	{
		var price_final = (parseFloat(price_total)-parseFloat(prix)).toFixed(2);
		$("#price_final").html(price_final+' &euro;');
		price_total = price_final;
	}
 }

function tunnel_form_paiement(form)
{
	if($("input[name='paiement_methode']:checked").length)
	{
		$("#confirmation").submit();
	}
	else
	{
		$("#dialog").dialog("open");
	}
 }

/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */
/* **************************************************************************************************************************************************************************************** */

//Newsletter
function newsletter_email(value,value_base)
{
	if(value==value_base)
	{
		$("#email").val('');
	}
 }

function is_array(input)
{
    return typeof(input)=='object'&&(input instanceof Array);
  }

function serialize (txt) 
{
	switch(typeof(txt)){
	case 'string':
		return 's:'+txt.length+':"'+txt+'";';
	case 'number':
		if(txt>=0 && String(txt).indexOf('.') == -1 && txt < 65536) return 'i:'+txt+';';
		return 'd:'+txt+';';
	case 'boolean':
		return 'b:'+( (txt)?'1':'0' )+';';
	case 'object':
		var i=0,k,ret='';
		for(k in txt){
			//alert(isNaN(k));
			if(!isNaN(k)) k = Number(k);
			ret += serialize(k)+serialize(txt[k]);
			i++;
		}
		return 'a:'+i+':{'+ret+'}';
	default:
		return 'N;';
		/*alert('var undefined: '+typeof(txt));*/return undefined;
	}
 }

function unserialize(txt)
{
	var level=0,arrlen=new Array(),del=0,final=new Array(),key=new Array(),save=txt;
	while(1)
	{
		switch(txt.substr(0,1)){
		case 'N':
			del = 2;
			ret = null;
		break;
		case 'b':
			del = txt.indexOf(';')+1;
			ret = (txt.substring(2,del-1) == '1')?true:false;
		break;
		case 'i':
			del = txt.indexOf(';')+1;
			ret = Number(txt.substring(2,del-1));
		break;
		case 'd':
			del = txt.indexOf(';')+1;
			ret = Number(txt.substring(2,del-1));
		break;
		case 's':
			del = txt.substr(2,txt.substr(2).indexOf(':'));
			ret = txt.substr( 1+txt.indexOf('"'),del);
			del = txt.indexOf('"')+ 1 + ret.length + 2;
		break;
		case 'a':
			del = txt.indexOf(':{')+2;
			ret = new Array();
			arrlen[level+1] = Number(txt.substring(txt.indexOf(':')+1, del-2))*2;
		break;
		case 'O':
			txt = txt.substr(2);
			var tmp = txt.indexOf(':"')+2;
			var nlen = Number(txt.substring(0, txt.indexOf(':')));
			name = txt.substring(tmp, tmp+nlen );
			//alert(name);
			txt = txt.substring(tmp+nlen+2);
			del = txt.indexOf(':{')+2;
			ret = new Object();
			arrlen[level+1] = Number(txt.substring(0, del-2))*2;
		break;
		case '}':
			txt = txt.substr(1);
			if(arrlen[level] != 0){/*alert('var missed : '+save);*/ return undefined;};
			//alert(arrlen[level]);
			level--;
		continue;
		default:
			if(level==0) return final;
			//alert('syntax invalid(1) : '+save+"\nat\n"+txt+"level is at "+level);
			return undefined;
		}
		if(arrlen[level]%2 == 0){
			if(typeof(ret) == 'object'){/*alert('array index object no accepted : '+save);*/return undefined;}
			if(ret == undefined){/*alert('syntax invalid(2) : '+save);*/return undefined;}
			key[level] = ret;
		} else {
			var ev = '';
			for(var i=1;i<=level;i++){
				if(typeof(key[i]) == 'number'){
					ev += '['+key[i]+']';
				}else{
					ev += '["'+key[i]+'"]';
				}
			}
			eval('final'+ev+'= ret;');
		}
		arrlen[level]--;//alert(arrlen[level]-1);
		if(typeof(ret) == 'object') level++;
		txt = txt.substr(del);
		continue;
	}
 }


// JavaScript Document
function MM_preloadImages() 
{ //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
 }

function MM_swapImgRestore() 
{ //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
 }

function MM_findObj(n, d) 
{ //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
 }

function MM_swapImage() 
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
 }
   
function MM_reloadPage(init) 
{  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
 }
  
MM_reloadPage(true);

//Fonction print_r
function print_r(obj) 
{
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }
 
function r_print_r(theObj, win_print_r) 
{
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
    if(theObj[p].constructor == Array||
     theObj[p].constructor == Object){
     win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
     win_print_r.document.write("<ul>")
     r_print_r(theObj[p], win_print_r);
     win_print_r.document.write("</ul>")
    } else {
     win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
    }
   }
  win_print_r.document.write("</ul>")
 }

//Fonction is_int
function is_int(input)
{
    return typeof(input)=='number'&&parseInt(input)==input;
  }
  
//Changement du mois calendar 
function test_month(qui,cols,mois)
{
		//alert("test_month "+qui+" - "+cols+" - "+mois);
		eval("DP_jQuery_"+dpuuid).datepicker._clickMonthYear(qui);
		eval("DP_jQuery_"+dpuuid).datepicker._selectMonthYear(qui, this, cols,"3wcom",mois);	
		//alert(eval("DP_jQuery_"+dpuuid));
 }  

//Varibale empty comme en php
function empty (mixed_var) 
{
    // !No description available for empty. @php.js developers: Please update the function summary text file.
    // 
    // version: 1009.2513
    // discuss at: http://phpjs.org/functions/empty    // +   original by: Philippe Baumann
    // +      input by: Onno Marsman
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: LH
    // +   improved by: Onno Marsman    // +   improved by: Francesco
    // +   improved by: Marc Jansen
    // +   input by: Stoyan Kyosev (http://www.svest.org/)
    // *     example 1: empty(null);
    // *     returns 1: true    // *     example 2: empty(undefined);
    // *     returns 2: true
    // *     example 3: empty([]);
    // *     returns 3: true
    // *     example 4: empty({});    // *     returns 4: true
    // *     example 5: empty({'aFunc' : function () { alert('humpty'); } });
    // *     returns 5: false
    
    var key;    
    if (mixed_var === "" ||
        mixed_var === 0 ||
        mixed_var === "0" ||
        mixed_var === null ||        mixed_var === false ||
        typeof mixed_var === 'undefined'
    ){
        return true;
    } 
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }        return true;
    }
 
    return false;
 }
 
 
 /*
 var scrolling = function(){
			    var speed     = 2000;
			    jQuery('a[href^="#"]').bind('click',function(){
			        var id = jQuery(this).attr('href');
			        if(id == '#')
			            goTo('body');
			        else
			            goTo(id);
			        return(false);
                 void(0);
			    });
			    function goTo(ancre){jQuery('html,body').animate({scrollTop:jQuery(ancre).offset().top},speed,'swing',function(){
			          if(ancre != 'body')
			                window.location.hash = ancre;
			          else
			              window.location.hash = '#';
			          jQuery(ancre).attr('tabindex','-1');
			          jQuery(ancre).focus();
			          jQuery(ancre).removeAttr('tabindex');
			      });
			    }
			};
			jQuery(function(){
				scrolling();
			});
*/

function goTo(ancre)
{
	var speed     = 2000;
	var espace = 20;
	jQuery('html,body').animate({scrollTop:(jQuery(ancre).offset().top)},speed,'swing',function()
		{
		  if(ancre != 'body')
				window.location.hash = ancre;
		  else
			  window.location.hash = '#';
		  //jQuery(ancre).attr('tabindex','-1');
		  //jQuery(ancre).focus();
		  //jQuery(ancre).removeAttr('tabindex');
		});
 }
