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 || lform.elements[NomAn].options==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;	
	if(lform.elements[NomJour].options == null || lform.elements[NomMois].options == null || lform.elements[NomAn].options == null) return;
	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;
	if(lform.elements[NomJour].options == null || lform.elements[NomMois].options == null || lform.elements[NomAn].options == 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(InitAnDebut,InitMoisDebut-1,InitJourDebut);
	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["Globales/TypeSejour"].length!=null) 
	{
		for(i=0; i < lform["Globales/TypeSejour"].length; i++)
			TypeSejourSelectionne = lform["Globales/TypeSejour"][i].checked ? lform["Globales/TypeSejour"][i].value : TypeSejourSelectionne;
	}
	else TypeSejourSelectionne =  lform["Globales/TypeSejour"].value;
	lform["Param/DureeSejour"].value = TypeSejourSelectionne == 1 ? 7*lform["Globales/DureeSemaine"].value : lform["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;  
} 


function PlaceComboTypeSejour() 
{
	var lform = document.forms[ 'RechercheHebergement' ];
	if(lform == null) return;
	var col = lform.elements["Globales/TypeSejour"];
	if( col == null ) return;
	var type = 0;
	if( TypeSejourActu < 1 ) {
		if(lform.elements["Globales/TypeSejour"].length != null)
			lform.elements["Globales/TypeSejour"][0].checked = true;
		else lform.elements["Globales/TypeSejour"].checked = true;
	}
	if( col.length == null ) type = col.value;
	else {
		for( var i=0; i < col.length; i++) {
			if( col[i].checked ) {
				type = col[i].value;
				break;
			}
		}
	}
	for( var i=0; i<lform.elements.length; i++ ) {
		el = lform.elements[i];
		if((/DureeNuit/.test(el.name) && type==2) || (/DureeSemaine/.test(el.name) && type==1) ) {
			el.style.visibility='visible';
			TypeSejourActu=type;
		}
		else if(/Duree/.test(el.name)) el.style.visibility='hidden';
	}
}

function EstAvantDateDuJour(strDate,dateactu)
{
  var dactu = (typeof(dateactu)=="undefined")  ? new Date() : dateactu;
  dactu = new Date(dactu.getFullYear(),dactu.getMonth(),dactu.getDate());
  var ladate = TransformeEnDate(strDate);
  if (Date.parse(ladate)<Date.parse(IncrDate(dactu,DelaiDate))) return true;
  return false;
}

function EstDateValideN(jour,mois,an) {
   if (isNaN(jour) || isNaN(mois) || isNaN(an)) return false;
   if(mois<1 || mois>12) return false;
   var EstBissextile = (an%4 == 0) && (an%100 != 0 || an%400 == 0);
   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) nbjour++;
   if (jour<1 || jour>nbjour) return false;
   return true;
}

function EstDateValideAn4(strDate)
{
  var ladate = strDate.split("/"); 
  if (ladate==null || ladate.length<3) return false; 
  var d1,d2,d3;
  d1 = ladate[0].replace(/^0/,"");
  d2= ladate[1].replace(/^0/,"");
  d3 = ladate[2];
  return EstDateValideN(parseInt(d1),parseInt(d2),parseInt(d3)); 
}

function TransformeEnDate(strDate)
{
  var ladate = strDate.split("/"); 
  if (ladate==null || ladate.length<3) return null; 
  var d1,d2,d3;
  d1 = parseInt(ladate[0].replace(/^0/,""));
  d2= parseInt(ladate[1].replace(/^0/,""));
  d3 = parseInt(ladate[2]);
  return new Date(d3,d2-1,d1);
}

function ValideDateDebut( lform )
{
	var sdatedebut;	
	if( lform.elements["ListeDateDebut"] == null )
	{
		var ijdebut = lform.elements["Globales/JourDebut"].selectedIndex;
		var imdebut = lform.elements["Globales/MoisDebut"].selectedIndex;
		var iadebut = lform.elements["Globales/AnDebut"].selectedIndex;
		sdatedebut = lform.elements["Globales/JourDebut"].options[ijdebut].value +"/"+ lform.elements["Globales/MoisDebut"].options[imdebut].value+"/"+lform.elements["Globales/AnDebut"].options[iadebut].value;
	}
	else 
	{
		var dateliste = lform.elements["ListeDateDebut"].value.split(/\-/g);
		lform.elements["Globales/JourDebut"].value= dateliste[2];
		lform.elements["Globales/MoisDebut"].value= dateliste[1];
		lform.elements["Globales/AnDebut"].value= dateliste[0];
		sdatedebut = dateliste[2]+"/"+dateliste[1]+"/"+dateliste[0];
	}
	if( !EstDateValideAn4(sdatedebut) || EstAvantDateDuJour(sdatedebut) ) 
		return null;
	return sdatedebut;
}

function AttribueCarac(lform) 
{
	var eltype = lform.elements["Carac"];
	if( eltype == null ) return;
	var checked = false;
	var valch = "";
	var nb=0;
	if( eltype.length == null ) {
		if(eltype.checked) {
			nb = 1;
			valch = eltype.value;
		}	
	}	
	else {		
		for( var i=0; i < eltype.length; i++ ) 
		{
			if(eltype[i].checked) {
				nb++;
				if(valch != "") valch += "#";
				valch += eltype[i].value;
			}	
		}		
	}
	if(nb==0) {
		lform.elements["Globales/ListeIdCaract"].value="*";
		lform.elements["Globales/NbCaract"].value=0;
	}	
	else {
		lform.elements["Globales/ListeIdCaract"].value=valch;
		lform.elements["Globales/NbCaract"].value=nb;
	}
}