function lib_bwcheck(){
  this.ver=navigator.appVersion;
  this.agent=navigator.userAgent;
  this.dom=document.getElementById ?1:0;
  this.opera5=this.agent.indexOf("Opera 5")>-1;
  this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
  this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
  this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
  this.ie=this.ie4||this.ie5||this.ie6;
  this.mac=this.agent.indexOf("Mac")>-1;
  this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
  this.ns4=(document.layers && !this.dom)?1:0;
  this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5);
  return this;
}

function getCookie(domaine,nom) { 
    var cook = document.cookie; 	
    var index = cook.indexOf(domaine+"."+nom + "=");
    if (index == -1) return null;
    index = cook.indexOf("=", index) + 1;
    var endstr = cook.indexOf(";", index);
    if (endstr == -1) endstr = cook.length;
    return unescape(cook.substring(index, endstr));
}

function setCookie(domaine,nom, valeur) {
    if (valeur != null && valeur != "")
      document.cookie= domaine+"."+ nom + "=" + escape(valeur);  
}



function IncrDate(ladate,n)
{
	return new Date(ladate.getFullYear(),ladate.getMonth(),ladate.getDate()+n);
}


function InitAnnees(AnRef,NomForm,NomAn){
	var i;
	var cpt = 0;
	var lform = document.forms[NomForm];
	if(lform == null) return;
	if(lform.elements[NomAn]==null) return;
	for(i=AnRef;i<AnRef+4;i++,cpt++) {
		lform.elements[NomAn].options[cpt].value = i;
		lform.elements[NomAn].options[cpt].text = i;
	}
}

function EstBissextile(an) {
	return (an%4 == 0) && (an%100 != 0 || an%400 == 0);
}

function DernierJourMois(ldate) {
	var JoursMois = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31);	
	var nbjour = JoursMois[ldate.getMonth()];
	if (ldate.getMonth()== 1 && EstBissextile(ldate.getFullYear())) nbjour++;
	return nbjour;
}

function EstDateValide(ladate) {
	var jour = ladate.getDate();
	var mois = ladate.getMonth()+1;
	var an = ladate.getFullYear();
	var JoursMois = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31);
	var nbjour = JoursMois[mois-1];
	if (mois == 2 && EstBissextile(an)) nbjour++;
	if (jour<1 || jour>nbjour) return false;
	return true;
}

function DonneDateFormulaire(NomForm,NomJour,NomMois,NomAn) {
	var lform = document.forms[NomForm];
	if(lform == null) return;
	if(lform.elements[NomJour]==null || lform.elements[NomMois]==null || lform.elements[NomAn]==null) return null;	
	var jj = parseInt(lform.elements[NomJour].options[lform.elements[NomJour].selectedIndex].value.replace(/^0/,""));
	var mm = parseInt(lform.elements[NomMois].options[lform.elements[NomMois].selectedIndex].value.replace(/^0/,""));
	var aaaa = new Number(lform.elements[NomAn].options[lform.elements[NomAn].selectedIndex].value);
	return new Date(aaaa,mm-1,jj);
}

function InitDateDebut(AnRef,MoisRef,JourRef,NomForm,NomJour,NomMois,NomAn) {
	
	
	var ddebut = new Date(AnRef,MoisRef,JourRef);
	while(true) {
		if(!EstDateValide(ddebut)) {
			ddebut = IncrDate(ddebut,1);
			continue;
		}
		if(typeof(InitJourDebutSauvee) != "undefined" || EstBonJourDebut(ddebut)) {
			PlaceDateFormulaire(ddebut,NomForm,NomJour,NomMois,NomAn);
			return ddebut;
		}		
		ddebut = IncrDate(ddebut,1);
	}
}

function InitDateFin() {
	if(document.forms["RechercheHebergement"]== null) return;
	if(document.forms["RechercheHebergement"].elements["Globales/JourFin"] == null) return;
	var dfin = DonneDateFormulaire("RechercheHebergement","Globales/JourDebut","Globales/MoisDebut","Globales/AnDebut");
	if(dfin==null) return;
	InitDateEcart(dfin,"RechercheHebergement","Globales/JourFin","Globales/MoisFin","Globales/AnFin",7);
	
}

function InitDateEcart(datedebut,NomForm,NomJour,NomMois,NomAn,ecart) {
	var dfin = IncrDate(datedebut,ecart);
	PlaceDateFormulaire(dfin,NomForm,NomJour,NomMois,NomAn);
	ChangeSelCalDate();
}

function EstBonJourDebut(ddebut) {
	if(ddebut.getDay()== NumJourDebut || NumJourDebut<0) return true;
	return false;
}


function PlaceDateFormulaire(ladate,NomForm,NomJour,NomMois,NomAn)
{
	var lform = document.forms[NomForm];
	if(lform == null) return;
	if(lform.elements[NomJour] == null || lform.elements[NomMois] == null || lform.elements[NomAn] == null) return;
	lform.elements[NomJour].selectedIndex=ladate.getDate()-1;
	lform.elements[NomMois].selectedIndex=ladate.getMonth();
	var i;
	for(i=0;i<lform.elements[NomAn].options.length;i++) {
		if(lform.elements[NomAn].options[i].value == ladate.getFullYear()) {
			lform.elements[NomAn].selectedIndex = i;
			break;		
		}
	}
}


//
// Sélectionne une option dans le formulaire des dates
//      lform   formulaire concerné
//		nom     nom du sélect
//		valeur  valeur à sélectionner
function SelectionneOption(lform,nom,valeur) {
	var i;
	for(i=0;i<lform.elements[nom].options.length;i++) {
		if (parseInt(lform.elements[nom].options[i].value) == valeur) {
			lform.elements[nom].selectedIndex	= i;			
			break;
		}
	}
}

//
// Initialise les dates de recherche
//
function InitDateRecherche() {
	if(document.forms["RechercheHebergement"]==null) return;
	var aujourdhui = new Date();
	var debut;
	if(typeof(InitJourDebutSauvee) == "undefined") {
		debut =  IncrDate(aujourdhui,DelaiDate);
	}
	else {
		debut = new Date(InitAnDebutSauvee,InitMoisDebutSauvee-1,InitJourDebutSauvee);
	}
	
	var dateinitannee = (debut.getFullYear()>aujourdhui.getFullYear()) ? aujourdhui.getFullYear():debut.getFullYear();
	InitAnnees(dateinitannee,"RechercheHebergement","Globales/AnDebut");

	InitDateDebut(debut.getFullYear(),debut.getMonth(),debut.getDate(),"RechercheHebergement","Globales/JourDebut","Globales/MoisDebut","Globales/AnDebut");
	InitAnnees(dateinitannee,"RechercheHebergement","Globales/AnFin");
	InitDateFin();
	InitNewCal();

	
}

// Permet de déterminer le Param/DureeSejour en fonction du Globales/TypeSejour du formulaire
function CalculeParamDureeSejour(lform)
{
	var TypeSejourSelectionne = 2;
	if(lform.elements["Globales/TypeSejour"].length!=null) 
	{
		for(i=0; i < lform.elements["Globales/TypeSejour"].length; i++)
			TypeSejourSelectionne = lform.elements["Globales/TypeSejour"][i].checked ? lform.elements["Globales/TypeSejour"][i].value : TypeSejourSelectionne;
	}
	else TypeSejourSelectionne =  lform.elements["Globales/TypeSejour"].value;
	lform.elements["Param/DureeSejour"].value = TypeSejourSelectionne == 1 ? 7*lform.elements["Globales/DureeSemaine"].value : lform.elements["Globales/DureeNuit"].value;
}


function InitNewCal()
{
	var bw=new lib_bwcheck();
	if((bw.ie5)&&(bw.mac)) return;
	var nomf = (typeof(NomFormRecherche) == "undefined") ? "RechercheHebergement":NomFormRecherche;
	var ddebut = DonneDateFormulaire(nomf,"Globales/JourDebut","Globales/MoisDebut","Globales/AnDebut");
	var caldebut = document.getElementById("caldatedeb");
	if (ddebut != null && caldebut!= null && typeof(Calendar) != "undefined")
	{
	
	    caldebut.value = ddebut.print("%d/%m/%Y");
	    Calendar.setup({
		inputField     :    "caldatedeb",
		button 	       :    "calimgdeb",
		ifFormat    : "%d/%m/%Y",    // the date format
	        align          :    "Br",
        	singleClick    :    true,
		onUpdate       :   ChangeNewCalDebut
	    });	
	}
	var dfin = DonneDateFormulaire(nomf,"Globales/JourFin","Globales/MoisFin","Globales/AnFin");
	var calfin = document.getElementById("caldatefin");
	if (dfin != null && calfin!= null && typeof(Calendar) != "undefined")
	{
	    calfin.value = dfin.print("%d/%m/%Y");
	    Calendar.setup({
		inputField     :    "caldatefin",
		button 	       :    "calimgfin",
		ifFormat    : "%d/%m/%Y",    // the date format
	        align          :    "Br",
        	singleClick    :    true,
		onUpdate       :   ChangeNewCalFin

	    });	
	}
	
}

function ChangeNewCal(cal,nform,nj,nm,na)
{
  var ladate = cal.date;	 
  var lform = document.forms[nform];
  var selj = lform.elements[nj];
  var selm = lform.elements[nm];
  var sela = lform.elements[na];
  selj.selectedIndex = ladate.getDate()-1;
  selm.selectedIndex = ladate.getMonth();
  var i; 
  for(i=0;i<sela.options.length;i++) 
  {
	if(sela.options[i].value==ladate.getFullYear()) 
	{
		sela.selectedIndex = i;
		break;
	}	
  }
}

function SetCalDate(nform,nj,nm,na,nomcal)
{
  	var lform = document.forms[nform];
	if(lform == null) return;
	var selj = lform.elements[nj];
	var selm = lform.elements[nm];
	var sela = lform.elements[na];
	if(selj==null || selm == null || sela==null) return;
	document.getElementById(nomcal).value = ""+(selj.selectedIndex+1) +"/"+ (selm.selectedIndex+1) + "/"+ sela.options[sela.selectedIndex].value;	
	
}

function ChangeSelCalDate()
{
	var nomf = (typeof(NomFormRecherche) == "undefined") ? "RechercheHebergement":NomFormRecherche;
	SetCalDate(nomf,"Globales/JourDebut","Globales/MoisDebut","Globales/AnDebut","caldatedeb");
	SetCalDate(nomf,"Globales/JourFin","Globales/MoisFin","Globales/AnFin","caldatefin");
}

function ChangeNewCalDebut(cal)
{
	var nomf = (typeof(NomFormRecherche) == "undefined") ? "RechercheHebergement":NomFormRecherche;
	ChangeNewCal(cal,nomf,"Globales/JourDebut","Globales/MoisDebut","Globales/AnDebut");
	document.getElementById("caldatedeb").value = cal.date.print("%d/%m/%Y");
	InitDateFin();
}


function ChangeNewCalFin(cal)
{
	var nomf = (typeof(NomFormRecherche) == "undefined") ? "RechercheHebergement":NomFormRecherche;
	ChangeNewCal(cal,nomf,"Globales/JourFin","Globales/MoisFin","Globales/AnFin");
	document.getElementById("caldatefin").value = cal.date.print("%d/%m/%Y");
}


function DateXmlEnDate(strdatexml) 
{
	var tb = strdatexml.split(/T/g);
	var ret;
	if(tb==null) ret = null;
	else {			
		tb = tb[0].split(/\-/g);
		if(tb==null || tb.length<3) { 
			ret= null;
		}	
		else {
			ret = DateDepuisChaines(tb[0],tb[1],tb[2]);
		}	
	}
	return ret;	
}

function DateDepuisChaines(aaaa,mm,jj){
	return new Date(parseInt(aaaa),parseInt(mm.replace(/^0/g,""))-1,parseInt(jj.replace(/^0/g,"")));
}


function DateToStr(ladate)
{
  if(ladate==null) return "";
  var jour = ladate.getDate();
  var mois = ladate.getMonth();
  var strjour = new String(jour);
  var strmois = new String(mois+1); 
  var stran = new String(ladate.getFullYear()).substr(2,2);
  if (jour<10) strjour = "0"+strjour;
  if (mois<9) strmois = "0"+strmois;
  return strjour+"/"+strmois+"/"+stran; 	
} 

function DateEnXmlCourt(ladate)
{
  var jour = ladate.getDate();
  var mois = ladate.getMonth();
  var strjour = new String(jour);
  var strmois = new String(mois+1); 
  if (jour<10) strjour = "0"+strjour;
  if (mois<9) strmois = "0"+strmois;
  return ladate.getFullYear()+"-"+strmois+"-"+strjour; 	
}

//
// Date en chaine format long
function DateToStrLong(ladate)
{
  if(ladate==null) return "";
  if (typeof(ladate)=="date") ladate= new Date(ladate);
  var jour = ladate.getDate();
  var mois = ladate.getMonth();
  var strjour = new String(jour);
  var strmois = new String(mois+1); 
  var stran = new String(ladate.getFullYear());
  if (jour<10) strjour = "0"+strjour;
  if (mois<9) strmois = "0"+strmois;
  return strjour+"/"+strmois+"/"+stran;  
} 


