var lang;
var max_nb_nuit      = 23;
var max_nb_jour_resa = 405;
var today            = new Date();
var max_depart       = ajouter_nbJours(today,max_nb_jour_resa);

var jourArrayDE=new Array("sonntag","montag","dienstag","mittwoch","donnerstag","freitag ","samstag");
var jourArrayES=new Array("domnigo","lunes","martes","miercoles","jueves","viernes","sabado");
var jourArrayIT=new Array("Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato");
var jourArrayPT=new Array("domingo","segunda","terça","quarta","quinta","sexta","sábado");
var jourArrayGB=new Array("sunday","monday","tuesday","wednesday","thursday","friday","saturday");
var jourArrayNL=new Array("zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag");
var jourArraySV=new Array("sunday","monday","tuesday","wednesday","thursday","friday","saturday");
var jourArrayZH=new Array("sunday","monday","tuesday","wednesday","thursday","friday","saturday");
var jourArray=new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");

var formulaire;
var annee_debut;
var date_arrivee;
var date_depart;
var nb_nuit;

//==================================================================
//====  Fonction pour le calcul des nbjours date depart et retour
//==================================================================
//verifier si l'année est bissextile ou pas
function bissextile(annee) {
	if (annee%4==0 && annee %100!=0 || annee%400==0)
		return true;
	else
		return false;
}
//Recuperer le nombre de jours d'un mois
function get_nbJours_Mois(mois,annee) {
	//Nombre de jours par mois
	var DaysOfMonths = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        // For fevrier only - annee bisextile
        if (bissextile(annee))
            DaysOfMonths[1] =  29;
        else
            DaysOfMonths[1] =  28;
	return DaysOfMonths[mois];
}
//Trouver la date date1 + jours
function ajouter_nbJours(date1,jours) {
	var C_Day 	= date1.getDate() + jours;
	var C_Month = date1.getMonth();
	var C_Year  = date1.getFullYear();
	while ( C_Day > get_nbJours_Mois(C_Month,C_Year) ) {
		C_Day	= C_Day - get_nbJours_Mois(C_Month,C_Year);
		C_Month++;
		if (C_Month == 12) {
                	C_Month = 0;
                	C_Year++;
        	}
	}
        var outputDate = new Date(C_Year,C_Month,C_Day);
	return outputDate;
}
//Trouver la date date1 - jours
function diminuer_nbJours(date1,jours) {
	var C_Day 	= date1.getDate() - jours;
	var C_Month = date1.getMonth();
	var C_Year  = date1.getFullYear();
	while ( C_Day > get_nbJours_Mois(C_Month,C_Year) ) {
		C_Day	= C_Day + get_nbJours_Mois(C_Month,C_Year);
		C_Month--;
		if (C_Month == -1) {
        	        C_Month = 11;
	                C_Year--;
            	}
	}
        var outputDate = new Date(C_Year,C_Month,C_Day);
		return outputDate;
}
//Le nombre de jours entre deux années a1 et a2
function nb_jour_annee(a1,a2) {
	n=0;
	if (a2>a1)
		for (i=a1; i<a2; i++) {
			n += 365;
			if (bissextile(i))
				n++
		}
	return n;
}
//le nombre de jours entre 01/01 et date1 de la meme année
function nb_01_01(date1) {
	nb_mois=new Array(12);
	nb_mois=[0,31,59,90,120,151,181,212,243,273,304,334];
	j=date1.getDate();
	m=date1.getMonth();
	a=date1.getFullYear();
	nb=nb_mois[m]+j-1;
	if (bissextile(a) && m>1)
		nb++;
	return nb;
}
//le nombre de jours entre deux date date1 et date2
function nb_jour(date1,date2) {
	nb=nb_jour_annee(date1.getFullYear(),date2.getFullYear()) - nb_01_01(date1) + nb_01_01(date2);
	return nb;
}

//==================================================================
//====  Fonction pour le traitement des formulaires accorhotels
//==================================================================
function dates_init(myForm) {
  formulaire    = myForm ;
  annee_debut 	= parseInt(2006);
  //init de la date d'arrivee javascript si elle est deja preselectionnée
    if( formulaire.jour_arrivee.selectedIndex!=0 &&
        formulaire.mois_arrivee.selectedIndex!=0 &&
        formulaire.annee_arrivee.selectedIndex!=0 ) {
            date_arrivee  = new Date(
                formulaire.annee_arrivee.selectedIndex+annee_debut-1,
                formulaire.mois_arrivee.selectedIndex-1,
                formulaire.jour_arrivee.selectedIndex);
            date_depart   = new Date(
                formulaire.annee_depart.value,
                formulaire.mois_depart.value-1,
                formulaire.jour_depart.value);
            maj_form();
  } else {
   	    unsetForm();
  }
}

//Fonction de mise a jour des champs date arrivée, date depart et nbre nuit
//en fonction des variables javascript correspondantes
function maj_form(){

	  nb_nuit = (d_stayDates)?d_stayDates.nbNights:nb_jour(date_arrivee,date_depart);
	  
      if (nb_nuit > max_nb_nuit) {
        nb_nuit = max_nb_nuit;
        date_depart = ajouter_nbJours(date_arrivee,max_nb_nuit);
      }
      if (date_depart.getTime() > max_depart.getTime()) {
        date_depart = max_depart ;
        nb_nuit = nb_jour(date_arrivee,date_depart);
      }
      formulaire.jour_arrivee.selectedIndex  = date_arrivee.getDate();
      formulaire.mois_arrivee.selectedIndex  = date_arrivee.getMonth()+1;
      formulaire.annee_arrivee.selectedIndex = date_arrivee.getFullYear() - annee_debut + 1;

      formulaire.jour_depart.value  = date_depart.getDate();
      formulaire.mois_depart.value  = date_depart.getMonth() + 1;
      formulaire.annee_depart.value = date_depart.getFullYear();
      
      // JOUR DE LA SEMAINE
	  if (document.getElementById('form_date_jour')) {
      	if (lang == "gb")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayGB[date_arrivee.getDay()];
      		}
      	if (lang == "de")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayDE[date_arrivee.getDay()];
      		}
      	if (lang == "es")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayES[date_arrivee.getDay()];
      		}
      	if (lang == "it")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayIT[date_arrivee.getDay()];
      		}
      	if (lang == "pt")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayPT[date_arrivee.getDay()];
      		}
      	if (lang == "nl")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayNL[date_arrivee.getDay()];
      		}
      	if (lang == "sv")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArraySV[date_arrivee.getDay()];
      		}  
      	if (lang == "zh")
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArrayZH[date_arrivee.getDay()];
      		}      		    		
      	if (lang == undefined)
      		{
      		document.getElementById('form_date_jour').innerHTML = jourArray[date_arrivee.getDay()];	
      		}
	  }

      formulaire.nb_nuit.selectedIndex = nb_nuit;

      if (document.jourSemaineA != null)
      document.jourSemaineA.src = '/fr/images/reservation/jours_' + date_arrivee.getDay() + '.gif';
      if (document.jourSemaineD != null)
      document.jourSemaineD.src = '/fr/images/reservation/jours_' + date_depart.getDay() + '.gif';
}

//Fonction appelée lorsqu'on change le jour, le mois ou l'année de la date d'arrivée
function change_date_arrivee(letype) {
    if (    (letype=='j'&&formulaire.jour_arrivee.selectedIndex==0) ||
            (letype=='m'&&formulaire.mois_arrivee.selectedIndex==0) ||
            (letype=='a'&&formulaire.annee_arrivee.selectedIndex==0)  ) {
   	    unsetForm();
    } else {
              if (      formulaire.jour_arrivee.selectedIndex==0 ||
                        formulaire.mois_arrivee.selectedIndex==0 ||
                        formulaire.annee_arrivee.selectedIndex==0   ) {
                    setToDay();
                    if (letype=='j') {
                          formulaire.mois_arrivee.selectedIndex  = today.getMonth()+1;
                          formulaire.annee_arrivee.selectedIndex = today.getFullYear() - annee_debut + 1;
                    }
                    if (letype=='m') {
                          formulaire.jour_arrivee.selectedIndex  = today.getDate();
                          formulaire.annee_arrivee.selectedIndex = today.getFullYear() - annee_debut + 1;
                    }
                    if (letype=='a') {
                          formulaire.jour_arrivee.selectedIndex  = today.getDate();
                          formulaire.mois_arrivee.selectedIndex  = today.getMonth()+1;
                    }
              }
              var jour=formulaire.jour_arrivee.selectedIndex;
              var mois=formulaire.mois_arrivee.selectedIndex-1;
              var annee=annee_debut + formulaire.annee_arrivee.selectedIndex-1;
              if(letype=="j") {
                if ( ( jour < today.getDate() )&& ( mois == today.getMonth() ) )
                    {mois=mois+1;}
              }
              if(letype=="m") {
                if ( ( mois< today.getMonth() )&& ( annee == today.getFullYear() ) )
                    {annee=annee+1;}
              }
              var nouv_date=bonne_date(annee,mois,jour);
              if (nouv_date.getTime() < today.getTime() )           { date_arrivee = today }
              else if (nouv_date.getTime() >= max_depart.getTime()) { date_arrivee = diminuer_nbJours(max_depart,1); }
              else                                                  { date_arrivee = nouv_date }
              date_depart = ajouter_nbJours(date_arrivee,nb_nuit);
              maj_form();
    }
}

// Fonction appelée lorsque l'internaute change le nbre de jours
function change_nb_nuit() {
    var nb_nuit_tmp = formulaire.nb_nuit.selectedIndex;
    if (formulaire.nb_nuit.selectedIndex==0) {
   	    unsetForm();
    } else {
        if (    formulaire.jour_arrivee.selectedIndex==0 ||
                formulaire.mois_arrivee.selectedIndex==0 ||
                formulaire.annee_arrivee.selectedIndex==0   ) {
            setToDay();
            formulaire.jour_arrivee.selectedIndex  = today.getDate();
            formulaire.mois_arrivee.selectedIndex  = today.getMonth()+1;
            formulaire.annee_arrivee.selectedIndex = today.getFullYear() - annee_debut + 1;
        }
        date_depart = ajouter_nbJours(date_arrivee,nb_nuit_tmp);
        if ( date_depart.getTime() > max_depart.getTime() ) date_depart = max_depart ;
        maj_form();
    }
}

//Fonction permettant de remplir le jour/mois/annee de la date d'arrivée en fction de la date selectionnée dans le
//popup du calendrier
function met_arrivee(jour,mois,annee) {
      if (  formulaire.jour_arrivee.selectedIndex==0  ||
            formulaire.mois_arrivee.selectedIndex==0  ||
            formulaire.annee_arrivee.selectedIndex==0 ||
            formulaire.annee_arrivee.selectedIndex==0 ) {
              setToDay();
              formulaire.jour_arrivee.selectedIndex  = today.getDate();
              formulaire.mois_arrivee.selectedIndex  = today.getMonth()+1;
              formulaire.annee_arrivee.selectedIndex = today.getFullYear() - annee_debut + 1;
              formulaire.nb_nuit.selectedIndex = 1;
              formulaire.jour_depart.value  = date_depart.getDate();
              formulaire.mois_depart.value  = date_depart.getMonth() + 1;
              formulaire.annee_depart.value = date_depart.getFullYear();
      }
      formulaire.jour_arrivee.selectedIndex=jour;
      formulaire.mois_arrivee.selectedIndex=mois;
      formulaire.annee_arrivee.selectedIndex=annee-annee_debut+1;
      change_date_arrivee('');
}

//Remet les champs jour, mois, année d'arrivée et nbNuits à '-'
function unsetForm() {
  	formulaire.jour_arrivee.selectedIndex=0;
	formulaire.mois_arrivee.selectedIndex=0;
	formulaire.annee_arrivee.selectedIndex=0;

    formulaire.jour_depart.value  = '-';
    formulaire.mois_depart.value  = '-';
    formulaire.annee_depart.value = '-';
	formulaire.nb_nuit.selectedIndex=0;
}

//Fonction de mise a jour des champs date arrivée, date depart et nbre nuit
//en fonction des variables javascript correspondantes
function setToDay() {
    date_arrivee = today;
    nb_nuit = 1;
    date_depart = ajouter_nbJours(date_arrivee, nb_nuit);
}

function bonne_date(annee,mois,jour)
{
  var nouv_date=new Date(annee,mois,jour);
  while(nouv_date.getDate() != jour) {
    jour--;
    nouv_date=new Date(annee,mois,jour);
  }
  return nouv_date;
}

//==================================================================
//====  Fonction pour l'affichage du calendrier
//==================================================================
var jour=new Date();
var jour2=ajouter_nbJours(jour, 405);
var jour3=new Date(ajouter_nbJours(jour, 1));
var annee_deb=jour.getFullYear();
var annee_fin=jour2.getFullYear();

    annee_deb_choix=annee_deb;



    annee_fin_choix=jour3.getFullYear();

function calendrier_arrivee(myForm) {
	var theMonth;
	var theYear;
    if (    formulaire.jour_arrivee.selectedIndex==0 ||
            formulaire.mois_arrivee.selectedIndex==0 ||
            formulaire.annee_arrivee.selectedIndex==0   ) {
		var todayDate  = new Date();
		theMonth=todayDate.getMonth()+1;
		theYear=todayDate.getFullYear();
	} else {
		theMonth=myForm.mois_arrivee.value;
		theYear=myForm.annee_arrivee.value;
	}
	cal_arrivee=window.open(
		'/accorhotels/commun/calendrier.jsp?date_min=1/8/2007&date_max=1/9/2008'+
			'&mois='+theMonth+
			'&annee='+theYear+
			'&qdate=arrivee'+
			'&form='+myForm,
		'calen_arrivee',
      'width=246,height=196,toolbar=no,location=no,menubar=no,resizable=no,status=no,screenX=0,left=0,screenY=0,top=0'
	);
}

function createInputDest (dest) {
	var destmin = dest.toLowerCase();
	var createdest = '<input type="radio" id="'+destmin+'" name="destination" value="'+destmin+'" onclick="javascript:emptyDest(\''+dest+'\');" />&nbsp;&nbsp;<label for="'+destmin+'">'+dest+'</label>';
	document.write (createdest);
}

