

	function setCalendrierForResa(divForCalend,ident,typeGite,tabChambre,langue,modeAff,nbMois,fctClic,estCalFin){
		//jslog(tabChambre);
		var today = new OBJDate();
		today.definition();
	  
	    var moisCurr = $("mois").value;
	    if(moisCurr==0) moisCurr = today.getMois();
	    if(parseInt(moisCurr,10)<10 && moisCurr.substr(0,1)=="0") moisCurr=moisCurr.substr(1,1);
	    
	    var anneeCurr = $("annee").value;
	    if(anneeCurr==0) anneeCurr = today.getAnnee();
	    
		if(!fctClic || fctClic==undefined){
			var fctClic = function(evt,jour,mois,annee,etat){
				if(parseInt(jour,10)<10 && jour.substr(0,1)=="0") jour=jour.substr(1,1);
				$("jour").value = jour;
				$("mois").value = mois;
				$("annee").value = annee;
				Effect.BlindUp(divForCalend);
				$(divForCalend).showing=false;
				if(verifSaisieDatesLocation()===false){
					/*** On affiche le message d'erreur ***/
					setHTMLById("div_msgClient_dateSejour",$("id_msgPasDates").value);
					$("div_msgClient_dateSejour").addClassName("msgClientAffiche");
					if(!sejourSansAjax() && $("div_saisieDatesSejour"))effaceEtapesApres("div_saisieDatesSejour");
				}
			};
		}
		
		if(!typeGite && tabChambre && tabChambre.length>0) typeGite="H";
        if(typeGite=="GE" || typeGite=="GS" || typeGite=="SE"){
            if(tabChambre && tabChambre.length>0)var modeVenteGEGS = "H";
            else var modeVenteGEGS = "G";

        }
		if(!typeGite) typeGite="G";
		if(!estCalFin)estCalFin="N";
		if(!tabChambre) tabChambre=new Array();
	    setCalendrierToDiv(divForCalend,{"modeVenteGeGs":modeVenteGEGS,"langue":langue,"moisDebut":moisCurr,"anneeDebut":anneeCurr,"firstWeekDay":2,"nbMois":nbMois,"ident":ident,"typeGite":typeGite,"tabChambre":tabChambre,"afficheJrArrivee":true,"afficheDispos":true,"duree":$("duree").value,"clic":fctClic,"modeAff":modeAff,"estCalFin":estCalFin});
	}
	
	function setCalendrierForResaGP(divForCalend,code,typeProd,langue,modeAff,nbMois,tabStock,instance,request){
		var today = new OBJDate();
		today.definition();
	  
	    var moisCurr = $("mois").value;
	    if(moisCurr==0) moisCurr = today.getMois();
	    if(parseInt(moisCurr,10)<10 && moisCurr.substr(0,1)=="0") moisCurr=moisCurr.substr(1,1);
	    
	    var anneeCurr = $("annee").value;
	    if(anneeCurr==0) anneeCurr = today.getAnnee();

		if($("duree")) var duree = $("duree").value;
		else var duree=1;
	    
	    if(!tabStock) tabStock={};
	    
		var fctClic = function(evt,jour,mois,annee,etat){
			$("jour").value = jour;
			$("mois").value = mois;
			$("annee").value = annee;
			Effect.BlindUp(divForCalend); 
			$(divForCalend).showing=false;
			if(verifSaisieDatesSejourGP()===false){
	    		/*** On affiche le message d'erreur ***/
				setHTMLById("div_msgClient_dateSejour",$("id_msgPasDates").value);
				$("div_msgClient_dateSejour").addClassName("msgClientAffiche");
				if($("div_saisieDatesSejour"))effaceEtapesApresGP("div_saisieDatesSejour");
			}
		};
		
		setCalendrierToDivGP(divForCalend,{"langue":langue,"moisDebut":moisCurr,"anneeDebut":anneeCurr,"firstWeekDay":2,"nbMois":nbMois,"code":code,"instance":instance,"typeProd":typeProd,"tabStock":tabStock,"request":request,"afficheJrArrivee":true,"afficheDispos":true,"duree":duree,"clic":fctClic});
	}
	
	function setCalendrierToDivForDispoProd(nomdiv,ident,tabStock,nbMois,request,typeProd,linkToResa){
		if (!$(nomdiv).showing){
			var fctClic = function(evt,jour,mois,annee,etat){
				Effect.BlindUp(nomdiv);		
				$(nomdiv).showing=false;
				if(linkToResa) document.location.href = linkToResa+"&jour_calend="+jour+"&mois_calend="+mois+"&annee_calend="+annee;
			};
			$(nomdiv).hide();
			if (!nbMois)nbMois=3;
			ident = new String(ident);
			var tabInfos = ident.split(".");
			var instance = tabInfos[0];
			var code = tabInfos[2];
			setCalendrierToDivGP(nomdiv,{"firstWeekDay":1,"nbMois":nbMois,"code":code,"instance":instance,"typeProd":typeProd,"tabStock":tabStock,"request":request,"afficheJrArrivee":true,"afficheDispos":true,"clic":fctClic}); 
			Effect.BlindDown(nomdiv, {duration: 0.5});		
			$(nomdiv).showing=true;
			$(nomdiv).addClassName("div_dispos_showing");
		}else{
			Effect.BlindUp(nomdiv);		
			$(nomdiv).showing=false;
			$(nomdiv).removeClassName("div_dispos_showing");
		}
	}
	
	function setCalendrierForRecherche(instance,idf,ident,langue,typeGite){
		var today = new OBJDate();
		today.definition();
	  
	    var moisCurr = $("mois").value;
	    if(moisCurr==0) moisCurr = today.getMois();
	    if(parseInt(moisCurr,10)<10 && moisCurr.substr(0,1)=="0") moisCurr=moisCurr.substr(1,1);
	    
	    var anneeCurr = $("annee").value;
	    if(anneeCurr==0) anneeCurr = today.getAnnee();
	
		if(!typeGite) typeGite = "G";
		
		var fctClic = function(evt,jour,mois,annee,etat){
			if(parseInt(jour,10)<10 && jour.substr(0,1)=="0") jour=jour.substr(1,1);
			$("jour").value = jour;
			$("mois").value = mois;
			$("annee").value = annee;
			$("calendrierRecherche").style.display = "none";
		};
	        		
	    setCalendrierToDiv("calendrierRecherche",{"langue":langue,"moisDebut":moisCurr,"anneeDebut":anneeCurr,"firstWeekDay":2,"nbMois":1,"ident":ident,"instance":instance,"id_famille":idf,"afficheJrArrivee":true,"afficheDispos":true,"typeGite":typeGite,"duree":$("duree").value,"clic":fctClic});
	}

	function setCalendrierGeneral(instance,idf,langue,typeGite,idDivCalend,fctClic,idDate,idMois,idAnnee,idDuree,nbMois,firstWeekDay,nePasChargerMotCles,legendeLibre){
		var today = new OBJDate();
		today.definition();
	  	var moisCurr=0;
	  	var anneeCurr=0;
	  	
	  	if(idDate && $(idDate)){
	  		var dateCurr = new OBJDate();
	  		dateCurr.definition($(idDate).value);
	  		
	  		moisCurr = dateCurr.getMois();
	  		anneeCurr = dateCurr.getAnnee();
	  	}else{
	  		if(idMois && $(idMois) && idAnnee && $(idAnnee)){
	  			moisCurr = $(idMois).value;
	  			anneeCurr = $(idAnnee).value; 
	  		}
	  	}
	  	if(idDuree && $(idDuree)) duree = $(idDuree).value;
	  	
	    if(moisCurr==0) moisCurr = today.getMois();
	    if(parseInt(moisCurr,10)<10 && moisCurr.substr(0,1)=="0") moisCurr=moisCurr.substr(1,1);
	    if(anneeCurr==0) anneeCurr = today.getAnnee();
	
		if(!typeGite) typeGite = "G";
		if(!nbMois) nbMois = "1";
		if(!firstWeekDay) firstWeekDay = "2";
		if(!duree && typeGite=="G") var duree="7";
		if(!duree) var duree="1"; 
		if(!nePasChargerMotCles) var nePasChargerMotCles=true;
	        		
	    setCalendrierToDiv(idDivCalend,{"langue":langue,"moisDebut":moisCurr,"anneeDebut":anneeCurr,"firstWeekDay":firstWeekDay,"nbMois":nbMois,"instance":instance,"id_famille":idf,"afficheJrArrivee":true,"afficheDispos":true,"typeGite":typeGite,"duree":duree,"clic":fctClic,"nePasChargerMotCles":nePasChargerMotCles,"legendeLibre":legendeLibre});
	}

	function setCalendrierToDivForDispoStruct(nomdiv,ident,tabChambre,linkToResa,nbMois,modeVenteGeGs,force_visible){
		if (!$(nomdiv).showing || force_visible){
			var fctClic;
			//if (window.clickSurJourDsPlanningFiche)fctClic=window.clickSurJourDsPlanningFiche;
			if ('function' == typeof(clickSurJourDsPlanningFiche)){
				fctClic=window.clickSurJourDsPlanningFiche;
				linkToResa = null;
			}else fctClic= function(evt,jour,mois,annee,etat){
				Effect.BlindUp(nomdiv);		
				if(!force_visible)$(nomdiv).showing=false;
				if(linkToResa) document.location.href = linkToResa+"&jour_calend="+jour+"&mois_calend="+mois+"&annee_calend="+annee;
				else linkToResa = null;
			};
			if(!force_visible)$(nomdiv).hide();
			if (!nbMois)nbMois=3;
			setCalendrierToDiv(nomdiv,{'firstWeekDay':1,'nbMois':nbMois,'ident':ident,'afficheJrArrivee':false,'afficheDispos':true,"tabChambre":tabChambre,"clic":fctClic,"modeVenteGeGs":modeVenteGeGs, "linkToResa":linkToResa});
			if(!force_visible)Effect.BlindDown(nomdiv, {duration: 0.5});
			$(nomdiv).showing=true;
			$(nomdiv).addClassName("div_dispos_showing");
			trackMe(ident,"DISPO");
		}else{
			Effect.BlindUp(nomdiv, {duration: 0.5 });
			if(!force_visible)$(nomdiv).showing=false;
			$(nomdiv).removeClassName("div_dispos_showing");
		}
		
	}

    function setCalendrierToDivForDispoStructWithNavChb(nomdiv,ident,tabChambre,linkToResa,nbMois,modeVenteGeGs,tabNomEtNumChambre){

        var div = $(nomdiv);
        var divcalend = document.createElement("div");
        divcalend.setAttribute("id", nomdiv+"_cal");


        //compatibilité: on creer cette div car il faut qu'elle soit presente
        // quand on initialise le site
        var div_vide = document.createElement("div");
        div_vide.setAttribute("id", "calendItea_"+nomdiv);
        div.appendChild(div_vide);

        if (tabChambre != null && tabChambre.length > 1 && tabNomEtNumChambre != null){
            var select_chambre = document.createElement("select");
             select_chambre.setAttribute("id",nomdiv+"_select");
            div.appendChild(select_chambre);
             Event.observe(nomdiv+"_select", 'change', function(event) {
                    //alert(event.target.value);
                    //divcalend.innerHTML = "";
                    //divcalend.showing=false;
                    if(event.target.value == 0) setCalendrierToDivForDispoStruct(nomdiv+"_cal",ident,tabChambre,linkToResa,nbMois,modeVenteGeGs,true);
                    else setCalendrierToDivForDispoStruct(nomdiv+"_cal",ident,[event.target.value],linkToResa,nbMois,modeVenteGeGs,true);
                    
                });
                
            //option de valeur 0
            // pour toutes les chambres
            var option = document.createElement("option");
            option.setAttribute("value", 0);
            var texte = document.createTextNode("Toutes les chambres");
             option.appendChild(texte);
             select_chambre.appendChild(option);

            for(var i = 0; i < tabNomEtNumChambre.length;i++){
                var option = document.createElement("option");
                option.setAttribute("value", tabNomEtNumChambre[i][0]);
                var texte = document.createTextNode(tabNomEtNumChambre[i][1]);
                option.appendChild(texte);
                var idoption = nomdiv+"_select_option_"+tabNomEtNumChambre[i][0];
                option.setAttribute("id", idoption);

                //option.onChange = function (){alert("change");}
                select_chambre.appendChild(option);

            }
        }
        div.appendChild(divcalend);
        setCalendrierToDivForDispoStruct(nomdiv+"_cal",ident,tabChambre,linkToResa,nbMois,modeVenteGeGs);

	}


    //meme chose que calendrier_setClasseForDisposForChambre
    // mais pour une seule chambre
    function calendrier_setClasseForDisposForUneChambre(idDivGene,nb_chambre,modeAff){

        effaceMsgAttenteParDessus();
		var cliquable;
		var idCurr;
		var dispo;
		var numero_chambre;

        if($(idDivGene)){
            var dispos = null;
            for(var i=0;i<99;i++){//on recupere la dispo (il n'y en a qu'une seule, qui s'appel dispo_x)
                //on fait une boucle car on ne sait pas exactement la valeur de x (un peu bourin, certe)
                var attr = $(idDivGene).getAttribute("dispos_"+i);
                if(attr) {
                    numero_chambre = i;
                    dispos = $(idDivGene).getAttribute("dispos_"+numero_chambre);
                }
            }
            var dte = new OBJDate($(idDivGene).getAttribute("dteDispos"));
            var apresToday = $(idDivGene).getAttribute("apresToday");
        }

        var today = new OBJDate();
        today.definition();

        if(dispos){
            for(var i=0;i<dispos.length;i++){
                idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy");
                if(modeAff=="LIGNE") idCurr+="_"+numero_chambre;
                cliquable=false;
                if($(idCurr)){
                    if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
                        dispo = dispos.charAt(i);
                        if(dispo==".") cliquable=true;
                        if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");

                        $(idCurr).setAttribute("etat",dispo);
                        if(cliquable) $(idCurr).removeClassName($(idCurr).getAttribute("classe"));

                        if(!$(idCurr).hasClassName("spanCalendCliquable")) $(idCurr).addClassName(calendrier_getClassForJour(dispo,false,cliquable));

                        if(cliquable){
                            $(idCurr).onmousedown=function(evt){
                                calendrier_clicDate(evt,this,modeAff);
                            }
                        }
                    }
                }
                dte.ajoutJour(1);
            }
        }


	}

        function setCalendrierToDivForDispoStructPointDeVente(nomdiv,ident,tabChambre,linkToResa,nbMois,modeVenteGeGs){
		if (!$(nomdiv).showing){
			var fctClic;
			//if (window.clickSurJourDsPlanningFiche)fctClic=window.clickSurJourDsPlanningFiche;
			if ('function' == typeof(clickSurJourDsPlanningFiche)){
				fctClic=window.clickSurJourDsPlanningFiche;
				linkToResa = null;
			}else fctClic= function(evt,jour,mois,annee,etat){
				Effect.BlindUp(nomdiv);
				$(nomdiv).showing=false;
				if(linkToResa) document.location.href = linkToResa+"&jour="+jour+"&mois="+mois+"&annee="+annee;
				else linkToResa = null;
			};
			$(nomdiv).hide();
			if (!nbMois)nbMois=3;
			setCalendrierToDiv(nomdiv,{'firstWeekDay':1,'nbMois':nbMois,'ident':ident,'afficheJrArrivee':false,'afficheDispos':true,"tabChambre":tabChambre,"clic":fctClic,"modeVenteGeGs":modeVenteGeGs, "linkToResa":linkToResa});
			Effect.BlindDown(nomdiv, {duration: 0.5});
			$(nomdiv).showing=true;
			$(nomdiv).addClassName("div_dispos_showing");
			trackMe(ident,"DISPO");
		}else{
			Effect.BlindUp(nomdiv, {duration: 0.5 });
			$(nomdiv).showing=false;
			$(nomdiv).removeClassName("div_dispos_showing");
		}

	}


	function setCalendrierToDivForDispoStructAgence(nomdiv,ident,tabChambre,linkToResa,nbMois,modeVenteGeGs,numero_agence){
		if (!$(nomdiv).showing){
			var fctClic;
			//if (window.clickSurJourDsPlanningFiche)fctClic=window.clickSurJourDsPlanningFiche;
			if ('function' == typeof(clickSurJourDsPlanningFiche))fctClic=window.clickSurJourDsPlanningFiche;
			else fctClic= function(evt,jour,mois,annee,etat){
				Effect.BlindUp(nomdiv);		
				$(nomdiv).showing=false;
				if(linkToResa) document.location.href = linkToResa+"&jour_calend="+jour+"&mois_calend="+mois+"&annee_calend="+annee;
			};
			$(nomdiv).hide();
			if (!nbMois)nbMois=3;
			setCalendrierToDiv(nomdiv,{'firstWeekDay':1,'nePasChargerMotCles':true,'nbMois':nbMois,'ident':ident,'afficheJrArrivee':false,'afficheDispos':true,"tabChambre":tabChambre,"clic":fctClic,"modeVenteGeGs":modeVenteGeGs,"numero_agence":numero_agence});
			Effect.BlindDown(nomdiv, {duration: 0.5});		
			$(nomdiv).showing=true;
			$(nomdiv).addClassName("div_dispos_showing");
		}else{
			Effect.BlindUp(nomdiv, {duration: 0.5});		
			$(nomdiv).showing=false;
			$(nomdiv).removeClassName("div_dispos_showing");
		}
		
	}
	
	
	function setCalendrierToDiv(idDiv,params){
		if(!params.typeGite && params.tabChambre && params.tabChambre.length>0 && params.modeVenteGeGs!="G") params.typeGite="H"; 
		if(!params.typeGite) params.typeGite="G";
		if(!params.tabChambre) params.tabChambre = new Array();
		if(!params.langue) params.langue = "FRANCAIS";
		if(!params.modeAff) params.modeAff = "CARRE";
		if(params.modeVenteGeGs=="?"){
			if(params.modeAff=="LIGNE") params.typeGite="H";
			else params.typeGite="G";
		}
		
		//jslog("params.typeGite dans setCalendrierToDiv : "+params.typeGite);
		//jslog("params.ident dans setCalendrierToDiv : "+params.ident);
		//jslog("params.modeVenteGeGs dans setCalendrierToDiv : "+params.modeVenteGeGs);
		//jslog("params.modeAff dans setCalendrierToDiv : "+params.modeAff);
		div=$(idDiv);
		if (div){
			var changeAff="";
			
			if((params.typeGite=="H" || params.modeVenteGeGs=="H" || params.modeVenteGeGs=="?") && params.ident){
				var affSelect;
				if(params.modeAff=="LIGNE") affSelect="CARRE";
				else affSelect="LIGNE";
				//chargeMotCleDsDiv("saisieDatesSejour_changeAff_"+idDiv,"LBL_AFFCALEND_"+affSelect);
				changeAff="<p class='saisieDatesSejour changeModeAffCalendrier' id='saisieDatesSejour_changeAff_"+idDiv+"'></p>";
			}  
			div.innerHTML=calendrier_getXHTML(params,idDiv)+changeAff;
			if (!params.nePasChargerMotCles)calendrier_chargeMotCleDeLaLegende(idDiv,params.estCalFin);
			if(!params.ident && (params.typeGite=="H" || !params.instance)) calendrier_setClasseForJourArrTous("calendItea_"+idDiv);
			else affMsgAttenteParDessusInDiv(idDiv);
			if((params.typeGite=="H" || params.modeVenteGeGs=="H" || params.modeVenteGeGs=="?") && $("saisieDatesSejour_changeAff_"+idDiv)){
				if (!params.nePasChargerMotCles){
					if(params.modeVenteGeGs=="?") chargeMotCleDsDiv("saisieDatesSejour_changeAff_"+idDiv,"LBL_AFFCALENDGEGSINCONNU_"+affSelect);
					else chargeMotCleDsDiv("saisieDatesSejour_changeAff_"+idDiv,"LBL_AFFCALEND_"+affSelect);
					}
				else{
					var txt="";
					if(params.modeVenteGeGs=="?"){
						if (affSelect=="CARRE")txt="Disponibilit&eacute;s de l'h&eacute;bergement complet";
						else txt="Disponibilit&eacute;s par chambre";
					}
					else{
						if (affSelect=="CARRE")txt="Affichage cumul&eacute;";
						else txt="Affichage &agrave; la chambre";
					}
					
					$("saisieDatesSejour_changeAff_"+idDiv).innerHTML=txt;
				}
				$("saisieDatesSejour_changeAff_"+idDiv).onclick = function(evt){
					//setCalendrierToDiv(idDiv,{"langue":params.langue,"moisDebut":params.moisDebut,"anneeDebut":params.anneeDebut,"firstWeekDay":params.firstWeekDay,"nbMois":params.nbMois,"ident":params.ident,"typeGite":params.typeGite,"tabChambre":params.tabChambre,"afficheJrArrivee":params.afficheJrArrivee,"afficheDispos":params.afficheDispos,"duree":params.duree,"clic":params.clic,"modeAff":affSelect,"nePasChargerMotCles":params.nePasChargerMotCles});
					params.modeAff=affSelect;
					setCalendrierToDiv(idDiv,params);
				}
			}
			/*if(params.linkToResa && (params.modeVenteGeGs=="H" || params.modeVenteGeGs=="?") && params.modeAff=="LIGNE" ){

				params.clic = function(evt,jour,mois,annee,etat){
				Effect.BlindUp(nomdiv);
				$(nomdiv).showing=false;
				 document.location.href = linkToResa+"&jour_calend="+jour+"&mois_calend="+mois+"&annee_calend="+annee+"&choix_resa=chambre";
				};
			}*/
			div.firstChild.foncQdClicGauche=params.clic;
			div.firstChild.foncQdChangeMois=params.foncQdChangeMois;
		}
	}
	
	function calendrier_getXHTML_Navig(params){
		var htmlNavig="";
		var html="<div class='calendIteaDivNavig'>";
		
		var nextMonth="{'nbMois':"+params.nbMois+",'mois':"+parseInt(params.moisDebut+1)+",'annee':"+params.annee+",'firstWeekDay':"+params.firstWeekDay+"}";
		
		
		//htmlNavig+="<a onclick='calendrier_getXHTML_1mois("+nextMonth.toJSON()+");'>mois precedent</a>";
		//htmlNavig+="<a onclick='calendrier_getXHTML_1mois("+prevMonth.toJSON()+");'>mois suivant</a>";
		
		html+="</div>"		
	}

	function calendrier_getXHTML(params,idDiv){
		var html="";
		if (params.nbMois)nbMois=params.nbMois;
		else nbMois=1;
		
		var today = new OBJDate();
		today.definition();
		if(!params.moisDebut)params.moisDebut=today.getMois();
		if(!params.anneeDebut)params.anneeDebut=today.getAnnee();
		
		var mois=params.moisDebut;
		var annee=params.anneeDebut;
		
		var langue = params.langue;
		if(!langue) langue="FRANCAIS";
		var typeGite = params.typeGite;
		if(!typeGite) typeGite="G";
		var nb_chambre = params.tabChambre.length;
        if (nb_chambre==1) var numero_chambre = params.tabChambre[0];
        else var numero_chambre = null;
		//jslog("params.tabChambre dans calendrier_getXHTML "+params.tabChambre);
		var classeAlternee;
		if(params.ident) var ident = params.ident;
		else var ident="";
		if(params.instance) var instance=params.instance;
		else var instance="";

		var estCalFin=params.estCalFin;
		
		html="<div class='calendItea calendItea_"+params.modeAff+"' id='calendItea_"+idDiv+"' ident='"+ident+"'>";
			html+="<div class='calendItea_navig calendItea_navigGauche'>";
				html+="<a onclick=calendrier_moisAutre(this.parentNode.nextSibling.firstChild,-1)><</a>";
			html+="</div>";
		
			html+="<div id='div_calendItea_listMois' class=calendItea_listMois>";
				html+="<ul id='ul_calendItea_"+idDiv+"' estUlInfo='O' class='calendItea_ul calendItea_ul_"+params.modeAff+"' moisDeb='"+mois+"' annee='"+annee+"' nbMois='"+nbMois+"' firstWeekDay='"+params.firstWeekDay+"' idDivGene='calendItea_"+idDiv+"' typeGite='"+typeGite+"' nb_chambre='"+nb_chambre+"' numero_chambre='"+numero_chambre+"' langue='"+langue+"' modeAff='"+params.modeAff+"' ident='"+ident+"' instance='"+instance+"' estCalFin='"+estCalFin+"'>";
					moisCurr=mois;
					anneeCurr=annee;
					for (var i=0;i<nbMois;i++){
						if(i%2==0) classeAlternee = "calendItea_liPaire";
						else  classeAlternee = "calendItea_liImpaire";
						html+="<li class='calendItea_li "+classeAlternee+"'>";
							params.moisCurr=moisCurr;
							params.anneeCurr=anneeCurr;
							params.nb_chambre = nb_chambre;
							if(params.modeAff=="LIGNE")
								html+=calendrier_getXHTML_1moisLineaire(params,"calendItea_"+idDiv);
							else html+=calendrier_getXHTML_1mois(params,"calendItea_"+idDiv);		
						html+="</li>";
						moisCurr++;		
						if (moisCurr>12){
							moisCurr=1;	
							anneeCurr++;
						}
						
					}
				html+="</ul>";
				if(params.legendeLibre){
					html+="<div class='div_legendeLibreCalendrier'>";
						html+="<span class='span_legendeLibreCalendrier'>"+params.legendeLibre+"</span>";
					html+="</div>";
				}
			html+="</div>";
		
			html+="<div class='calendItea_navig calendItea_navigDroite'>";
				html+="<a onclick=calendrier_moisAutre(this.parentNode.previousSibling.firstChild,1)>></a>";
			html+="</div>";
			
			if(params.ident){
				html+="<div class='calendItea_legende'>";
					html+="<ul class='ul_legendeCalend'>";
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='spanCalendCliquable'>1</span><span class='definition_legendeCalendCliquable' id='legendeCliquable_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='spanCalendJour_libre'>1</span><span class='definition_legendeCalendLibre' id='legendeLibre_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='spanDateSejourSelect'>1</span><span class='definition_legendeCalendSejourSelect' id='legendeSelect_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='spanCalendJour_occupe'>1</span><span class='definition_legendeCalendSejourOccupe' id='legendeOccupe_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='spanCalendJour_contact'>1</span><span class='spanCalendJour_contact_ou' id='legendeContactOu_"+idDiv+"'></span><span class='spanCalendJour_inconnu'>1</span><span class='definition_legendeCalendSejourContactProp' id='legendeContact_"+idDiv+"'></span>";
						html+="</li>";
						if(params.modeAff=="CARRE" && params.modeVenteGeGs=="?"){
							html+="<li class='calendItea_li_legende'>";
								html+="<span class='spanCalendJour_mode_vte_GEGS'>1</span><span class='definition_legendeCalendSejourContactProp' id='legendeModeVenteGeGsChambre_"+idDiv+"'></span>";
							html+="</li>";
						}
						if(params.modeAff=="LIGNE" && params.modeVenteGeGs=="?"){
							html+="<li class='calendItea_li_legende'>";
								html+="<span class='spanCalendJour_mode_vte_GEGS'>1</span><span class='definition_legendeCalendSejourContactProp' id='legendeModeVenteGeGsGite_"+idDiv+"'></span>";
							html+="</li>";
						}
						html+="<li class='calendItea_li_legende'>";
							html+="<span class='definition_legendeCalendSejourContactProp' id='legendeInfosDispos_"+idDiv+"'></span>";
						html+="</li>";
					html+="</ul>";
				html+="</div>";
			}
		
		html+="</div>";

		calendrier_setDispoEtJourArrivee(params,"calendItea_"+idDiv);
		
		return html;
	}
	function calendrier_chargeMotCleDeLaLegende(idDiv,estCalFin){
		var estSurCalFin=(estCalFin=="O")
		var motCleslegendeLibre;

		if(estSurCalFin)motCleslegendeLibre="LBL_LEGENDE_CALEND_FIN_POSSIBLE";
		else motCleslegendeLibre="LBL_LEGENDE_CALEND_LIBRE";

		chargeMotCleDsDiv("legendeCliquable_"+idDiv,"LBL_LEGENDE_CALEND_ARRIVEE");
		chargeMotCleDsDiv("legendeLibre_"+idDiv,motCleslegendeLibre);
		chargeMotCleDsDiv("legendeSelect_"+idDiv,"LBL_LEGENDE_CALEND_SELECT");
		chargeMotCleDsDiv("legendeOccupe_"+idDiv,"LBL_LEGENDE_CALEND_OCCUPE");
		chargeMotCleDsDiv("legendeContact_"+idDiv,"LBL_LEGENDE_CALEND_CONTACTPROP");
		chargeMotCleDsDiv("legendeContactOu_"+idDiv,"LBL_LEGENDE_CALEND_OU");
		chargeMotCleDsDiv("legendeModeVenteGeGsGite_"+idDiv,"LBL_LEGENDE_MODE_VENTE_GITE");
		chargeMotCleDsDiv("legendeModeVenteGeGsChambre_"+idDiv,"LBL_LEGENDE_MODE_VENTE_CHAMBRE");
		chargeMotCleDsDiv("legendeInfosDispos_"+idDiv,"TXT_DISPO_LEGENDE2");
	}
	
	
	function calendrier_moisAutre(tableCal,increment){
		var obj=$(tableCal);
		var moisCurr=parseInt(obj.getAttribute("moisDeb"));
		var anneeCurr=parseInt(obj.getAttribute("annee"));
		var firstWeekDay=obj.getAttribute("firstWeekDay");
		var nbMois=parseInt(obj.getAttribute("nbMois"));
		var idDivGene=obj.getAttribute("idDivGene");
		var typeGite=obj.getAttribute("typeGite");
		var nb_chambre=obj.getAttribute("nb_chambre");
		var langue=obj.getAttribute("langue");
		var modeAff=obj.getAttribute("modeAff");
		var ident=obj.getAttribute("ident");
		var instance=obj.getAttribute("instance");
		var estCalFin=obj.getAttribute("estCalFin");
		var estUlInfo=obj.getAttribute("estUlInfo");
		
		var classeAlternee;
				
		moisCurr+=(nbMois*increment);
		if (moisCurr>12){
			moisCurr=moisCurr-12;
			anneeCurr++;
		}
		if (moisCurr<1){
			moisCurr=12+moisCurr;
			anneeCurr--;
		}
			
		var html="<ul id='ul_"+idDivGene+"' class='calendItea_ul calendItea_ul_"+modeAff+"' estUlInfo='"+estUlInfo+"' moisDeb='"+moisCurr+"' annee='"+anneeCurr+"' nbMois='"+nbMois+"' firstWeekDay='"+firstWeekDay+"' idDivGene='"+idDivGene+"' typeGite='"+typeGite+"' nb_chambre='"+nb_chambre+"' langue='"+langue+"' modeAff='"+modeAff+"' ident='"+ident+"' instance='"+instance+"' estCalFin='"+estCalFin+"'>";
		
		var params={"firstWeekDay":firstWeekDay,"nbMois":nbMois};
		//anneeCurr=anneeCurr;
		for (var i=0;i<nbMois;i++){
			if (moisCurr>12){
				moisCurr=moisCurr-12;
				anneeCurr++;
			}
			if (moisCurr<1){
				moisCurr=12+moisCurr;
				anneeCurr--;
			}
			
			if(i%2==0) classeAlternee = "calendItea_liPaire";
			else  classeAlternee = "calendItea_liImpaire";
			html+="<li class='calendItea_li "+classeAlternee+"'>";
			params.moisCurr=moisCurr;
			params.anneeCurr=anneeCurr;
			params.langue=langue;
			params.nb_chambre=nb_chambre;
			params.typeGite=typeGite;
			if(modeAff=="LIGNE") html+=calendrier_getXHTML_1moisLineaire(params,idDivGene);
			else html+=calendrier_getXHTML_1mois(params,idDivGene);
			html+="</li>";
			moisCurr++;
		}
		html+="</ul>";
		//var html=calendrier_getXHTML_1mois({"moisCurr":moisSuiv,"anneeCurr":anneeCurr,"firstWeekDay":firstWeekDay,"nbMois":nbMois});
		obj.parentNode.innerHTML=html;
		
		if(typeGite=="H" || (!ident && !instance)){
            if (nb_chambre==1) calendrier_setClasseForDisposForUneChambre(idDivGene,nb_chambre,modeAff)
			else if(nb_chambre>0)calendrier_setClasseForDisposForChambre(idDivGene,nb_chambre,modeAff);
			else calendrier_setClasseForJourArrTous(idDivGene);
		}else{
			if(ident) calendrier_setClasseForDispos(idDivGene);
			calendrier_setClasseForJourArr(idDivGene);
		}
		
		if ($(idDivGene).foncQdChangeMois)$(idDivGene).foncQdChangeMois(moisCurr,anneeCurr);
		
	}
	
	
	function calendrier_moisAllerA(tableCal,moisDemande,anneeDemandee){
		var obj=$(tableCal);
		var moisCurr=parseInt(obj.getAttribute("moisDeb"));
		var anneeCurr=parseInt(obj.getAttribute("annee"));
		var firstWeekDay=obj.getAttribute("firstWeekDay");
		var nbMois=parseInt(obj.getAttribute("nbMois"));
		var idDivGene=obj.getAttribute("idDivGene");
		var typeGite=obj.getAttribute("typeGite");
		var nb_chambre=obj.getAttribute("nb_chambre");
		var langue=obj.getAttribute("langue");
		var modeAff=obj.getAttribute("modeAff");
		var ident=obj.getAttribute("ident");
		var instance=obj.getAttribute("instance");
		
		var classeAlternee;
				
		moisCurr=moisDemande;
		anneeCurr=anneeDemandee;
		
			
		var html="<ul id='ul_"+idDivGene+"' class='calendItea_ul calendItea_ul_"+modeAff+"' moisDeb='"+moisCurr+"' annee='"+anneeCurr+"' nbMois='"+nbMois+"' firstWeekDay='"+firstWeekDay+"' idDivGene='"+idDivGene+"' typeGite='"+typeGite+"' nb_chambre='"+nb_chambre+"' langue='"+langue+"' modeAff='"+modeAff+"' ident='"+ident+"' instance='"+instance+"'>";
		
		var params={"firstWeekDay":firstWeekDay,"nbMois":nbMois};
		//anneeCurr=anneeCurr;
		for (var i=0;i<nbMois;i++){
			if (moisCurr>12){
				moisCurr=moisCurr-12;
				anneeCurr++;
			}
			if (moisCurr<1){
				moisCurr=12+moisCurr;
				anneeCurr--;
			}
			
			if(i%2==0) classeAlternee = "calendItea_liPaire";
			else  classeAlternee = "calendItea_liImpaire";
			html+="<li class='calendItea_li "+classeAlternee+"'>";
			params.moisCurr=moisCurr;
			params.anneeCurr=anneeCurr;
			params.langue=langue;
			params.nb_chambre=nb_chambre;
			params.typeGite=typeGite;
			if(modeAff=="LIGNE") html+=calendrier_getXHTML_1moisLineaire(params,idDivGene);
			else html+=calendrier_getXHTML_1mois(params,idDivGene);
			html+="</li>";
			moisCurr++;
		}
		html+="</ul>";
		//var html=calendrier_getXHTML_1mois({"moisCurr":moisSuiv,"anneeCurr":anneeCurr,"firstWeekDay":firstWeekDay,"nbMois":nbMois});
		obj.parentNode.innerHTML=html;
		
		if(typeGite=="H" || (!ident && !instance)){
			if(nb_chambre>0)calendrier_setClasseForDisposForChambre(idDivGene,nb_chambre,modeAff);
			else calendrier_setClasseForJourArrTous(idDivGene);
		}else{
			if(ident) calendrier_setClasseForDispos(idDivGene);
			calendrier_setClasseForJourArr(idDivGene);
		}
	}
	
	
	function calendrier_getXHTML_1mois(params,idDivGene){
		var date=new OBJDate("15/"+params.moisCurr+"/"+params.anneeCurr);
		//jslog("annee dans calendrier_getXHTML_1mois.date : "+date.getAnnee());
		//jslog("mois dans calendrier_getXHTML_1mois.date : "+date.getMois());
		//jslog("jour dans calendrier_getXHTML_1mois.date : "+date.getJour());
		var html="";
		var tabLbl=date.getJSONLblJourWeek(params.langue);
		if (params.firstDayWeek)var idJour=params.firstDayWeek;
		var idJour=1;
		var mois=params.moisCurr;
		var annee=params.anneeCurr;
	  	/*** Pour repérer le jour courant sur le calendrier ***/
	    var dateCurr;
	    var jourSelect=0;
	    var moisSelect=0;
	    var anneeSelect=0;
	    var dureeSelect=0;
	    if($("mois")) moisSelect = $("mois").value;
	    if($("annee")) anneeSelect = $("annee").value;
	    if($("jour")) jourSelect = $("jour").value;
	    if($("duree")) dureeSelect = $("duree").value;
		var dateSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		var dateFinSejourSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		dateFinSejourSelect.ajoutJour(dureeSelect);
		/***********************************************************/
				
	
		html+="<table class='calend' mois='"+mois+"' annee='"+annee+"' firstWeekDay='"+params.firstWeekDay+"' nbMois='"+params.nbMois+"'>";
		html+="<caption>"+date.getLibelleMois(params.langue)+" "+annee+"</caption>";
		html+="<thead>";
		html+="<tr>";
		var j_curr=idJour;
		do {
			html+="<th class='calend_jour_"+j_curr+"'>";
			html+=tabLbl[j_curr].libelle_court;
			html+="</th>";
			j_curr=(j_curr+1)%7;
		}while (j_curr!=idJour);
		html+="</tr>";
		html+="</thead>";
		html+="<tbody>";
		
		
		var grille=calendrier_getTabGrille(params);
		for (var i=0;i<grille.length;i++){
			html+="<tr>";
			for (j=0;j<grille[i].length;j++){
				var jr=grille[i][j];
				html+="<td class='calend_jour_"+idJour+"'>";
				if (jr){
					jr=parseInt(jr);
					var j2=(jr<10)?"0"+jr:jr;
					var m2=(mois<10)?"0"+mois:mois;
					var a2=annee;
					
					html+="<span id='"+idDivGene+"_id_"+j2+m2+a2+"' etat='"+"' class='classeInit";
					if(dateSelect.toString("ddmmyyyy")==(j2+m2+a2)) html+=" spanDateArriveeSelect";
					else{
						dateCurr = new OBJDate(j2+"/"+m2+"/"+a2);
						if(dateCurr.estComprisEntre(dateSelect,dateFinSejourSelect))html+=" spanDateSejourSelect";
						if(dateFinSejourSelect.toString()==dateCurr.toString())html+=" spanDateFinSelect";
					}
					html+="'>";
					html+=jr;
					html+="</span>";
					
					idJour=(idJour+1)%7;
				}else html+="&nbsp;";
				html+="</td>";
			}
			html+="</tr>";
		}	
		html+="</tbody>";
		html+="</table>";
		return html;
	}
	
	function calendrier_getXHTML_1moisLineaire(params,idDivGene){
		var date=new OBJDate("15/"+params.moisCurr+"/"+params.anneeCurr);
		var html="";
		var mois=params.moisCurr;
		var annee=params.anneeCurr;
		
	  	/*** Pour repérer le jour courant sur le calendrier ***/
	    var dateCurr;
	    var jourSelect=0;
	    var moisSelect=0;
	    var anneeSelect=0;
	    var dureeSelect=0;
	    if($("mois")) moisSelect = $("mois").value;
	    if($("annee")) anneeSelect = $("annee").value;
	    if($("jour")) jourSelect = $("jour").value;
	    if($("duree")) dureeSelect = $("duree").value; 
		var dateSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		var dateFinSejourSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		dateFinSejourSelect.ajoutJour(dureeSelect);
		/***********************************************************/
		
				
	
		html+="<table class='calend' mois='"+mois+"' annee='"+annee+"' firstWeekDay='"+params.firstWeekDay+"' nbMois='"+params.nbMois+"'>";
		html+="<caption>"+date.getLibelleMois(params.langue)+" "+annee+"</caption>";
		html+="<thead>";
		html+="<tr>";
		if(params.typeGite=="H" || params.modeVenteGeGs == "H") html+="<th class='calend_idLigne'></th>";
		var j_curr=1;
		do {
			html+="<th class='calend_jour_"+j_curr;
			var obj_date= new Date(annee,(mois-1),j_curr);
			var weekDay = obj_date.toLocaleDateString().substring(0,1);
			weekDay = weekDay.toUpperCase();
			var numDay = obj_date.getDay();
			if(numDay == 6){
				html+=" calend_jour_samedi'>";
			}
			else{html+="'>";}
			html+=weekDay+'</br>';
			html+=j_curr;
			html+="</th>";
			j_curr++;
		}while (j_curr<=date.getNbjMois());
		html+="</tr>";
		html+="</thead>";
		html+="<tbody>";
		
		var nb_chambre = params.nb_chambre;
		if(!nb_chambre) nb_chambre=1;
		
		var nomChambre;
		
		for (var i=1;i<=nb_chambre;i++){
			html+="<tr>";
			if(!is_array(params.tabNomChambre))nomChambre="Chambre n°"+i;
			else nomChambre=params.tabNomChambre[i-1];
			
			if(params.typeGite=="H" || params.modeVenteGeGs == "H") html+="<th class='calend_idLigne'>"+nomChambre+"</th>";
			for (j=1;j<=date.getNbjMois();j++){
				html+="<td class='calend_jour_"+j+"'>";
				jr=parseInt(j);
				var j2=(jr<10)?"0"+jr:jr;
				var m2=(mois<10)?"0"+mois:mois;
				var a2=annee;
				if(params.typeGite=="H" || params.modeVenteGeGs == "H") var idCurr = idDivGene+"_id_"+j2+m2+a2+"_"+i;
				else var idCurr=idDivGene+"_id_"+j2+m2+a2;
					
				html+="<span id='"+idCurr+"' etat='' class='classeInit";
				if(dateSelect.toString("ddmmyyyy")==(j2+m2+a2)) html+=" spanDateArriveeSelect";
				else{
					dateCurr = new OBJDate(j2+"/"+m2+"/"+a2);
					if(dateCurr.estComprisEntre(dateSelect,dateFinSejourSelect)) html+=" spanDateSejourSelect";
				}
				html+="'> </span>";
				html+="</td>";
			}
			html+="</tr>";
		}	
		html+="</tbody>";
		html+="</table>";
		return html;
	}
	
	function calendrier_getTabGrille(params){
		if (params.firstWeekDay)var premJour=params.firstWeekDay;
		var premJour=1;
		var date=new OBJDate("01/"+params.moisCurr+"/"+params.anneeCurr);
		var numJrDebut=date.getJourSemaine();
		var nbVideDebut=numJrDebut-premJour;
		if (nbVideDebut<0)nbVideDebut+=7;
		var nbjMois=date.getNbjMois();
		var nb_ln=parseInt(nbjMois/7)+2;
			
		var tabGrilleMois=new Array();
		var jour=1;
		for (var i=0;i<nb_ln  && jour<=nbjMois;i++){
			if (!tabGrilleMois[i])tabGrilleMois[i]=new Array();
			for (j=0;j<7 && jour<=nbjMois;j++){
				if (j<nbVideDebut)tabGrilleMois[i][j]=null;	
				else{
					tabGrilleMois[i][j]=jour;
					jour++;
				}
			}
			nbVideDebut=-1;
		}
		return tabGrilleMois;
	}
	
	function calendrier_setDispoEtJourArrivee(params,idDivGene){
		var url = "/lib/ajax/infosDist.php";
		if(params.ident){
			if(params.typeGite=="H" || params.modeVenteGeGs == "H" || (params.typeGite=="GS" && params.tabChambre && params.tabChambre.length>0)){
				var sending = "info=DISPOS&ident="+params.ident;
				if(params.apresToday) sending+="&apresToday="+params.apresToday;
				else sending+="&apresToday=true";
				var vars;
				var nb_planningRecupere=0;
				var nb_chambre = params.tabChambre.length;
				for(var i=0;i<nb_chambre;i++){
					vars = sending+"&numero_chambre="+params.tabChambre[i];
					appelAjaxToFunc(url,vars,function(reponseAjax){
							calendrier_recupDisposForChambre(reponseAjax,idDivGene);
							nb_planningRecupere++;
							//if(nb_chambre==nb_planningRecupere) calendrier_setClasseForDisposForChambre(idDivGene,nb_chambre,params.modeAff);
                            if(nb_chambre==1) calendrier_setClasseForDisposForUneChambre(idDivGene,nb_chambre,params.modeAff);
                            else if(nb_chambre==nb_planningRecupere) calendrier_setClasseForDisposForChambre(idDivGene,nb_chambre,params.modeAff);
                            var divshow = $('div_calendItea_listMois');
                            divshow.style.display = 'block';
                            divshow.show();
                            divshow.showing=true;
						}
					);
				}
			}else{
				var sending = "info=DISPOS&ident="+params.ident;
				if(params.apresToday) sending+="&apresToday="+params.apresToday;
				else sending+="&apresToday=true";
				if(params.numero_agence)sending+="&numeroAgence="+params.numero_agence;
				appelAjaxToFunc(url,sending,function(reponseAjax){
						calendrier_recupDispos(reponseAjax,idDivGene);
						calendrier_setClasseForDispos(idDivGene);
						calendrier_recupByAjaxEtAffJourArrivee(params,idDivGene);
					}
				);
			}

		}else if(params.typeGite!="H")calendrier_recupByAjaxEtAffJourArrivee(params,idDivGene);
	}
	
	function calendrier_recupByAjaxEtAffJourArrivee(params,idDivGene){
		var url = "/lib/ajax/infosDist.php";
		var sending = "info=JOURARR";
		if(params.ident) sending+="&ident="+params.ident;
		if(params.instance)  sending+="&instance="+params.instance;
		if(params.id_famille)  sending+="&id_famille="+params.id_famille;
		if(params.duree) sending+="&nbj="+params.duree;
		if(params.apresToday) sending+="&apresToday="+params.apresToday;
		else sending+="&apresToday=false";
		if(params.autoriseToutJrs)sending+="&autoriseToutJrs=1";
        var type_acc = "";
		$$("input[name='ACC']").each(function(obj){
			if(obj.checked){
				type_acc+="&type_gite="+obj.value;
				return;
			}
		});
        if(type_acc.length == 0 && params.typeGite)
                type_acc+="&type_gite="+params.typeGite;
        sending+=type_acc;
		if(params.instance || params.ident){
		appelAjaxToFunc(url,sending,function(reponseAjax){
				calendrier_recupJourArr(reponseAjax,idDivGene);
				calendrier_setClasseForJourArr(idDivGene);
				}
			);
		}
	}
	
	
	function calendrier_recupDispos(tabDispo,idDivGene){
		eval("var infosDispo="+tabDispo);
		var dte=new String(infosDispo.date_deb);
		var dispos = new String(infosDispo.chaineDispo);
		var apresToday = infosDispo.apresToday;
		
		if($(idDivGene)){
			$(idDivGene).setAttribute("dispos",dispos);
			$(idDivGene).setAttribute("dteDispos",dte);
			$(idDivGene).setAttribute("apresToday",apresToday);
		}
	}
	
	function calendrier_recupDisposForChambre(tabDispo,idDivGene){
		eval("var infosDispo="+tabDispo);
		
		var dte=new String(infosDispo.date_deb);
		var dispos = new String(infosDispo.chaineDispo);
		var apresToday = infosDispo.apresToday;
		var numero_chambre = infosDispo.numero_chambre;
		
		if($(idDivGene)){
			$(idDivGene).setAttribute("dispos_"+numero_chambre,dispos);
            //fiche 153521 parfois, on a plusieurs chambres dont certaines n'ont pas date_deb de definie...
            //donc dans ce cas on ne fait pas de setAttribute car dte contient "undefined":
			//$(idDivGene).setAttribute("dteDispos",dte);
			if(infosDispo.date_deb)$(idDivGene).setAttribute("dteDispos",dte);
			$(idDivGene).setAttribute("apresToday",apresToday);
		}
	}
	
	function calendrier_setClasseForDispos(idDivGene){
		effaceMsgAttenteParDessus();
		var cliquable;
		var idCurr;
		var dispo;
		var dispoJrPrecedent;
		if($(idDivGene)){
			var dispos = $(idDivGene).getAttribute("dispos");
			var dte = new OBJDate($(idDivGene).getAttribute("dteDispos"));
			var apresToday = $(idDivGene).getAttribute("apresToday");
		}
		
		var today = new OBJDate();
		today.definition();
		
		var estCalFin;
		var dispoReel;

		if(dispos){
			for(var i=0;i<dispos.length;i++){
				idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy");
				dispoReel="";
				if($(idCurr)){
					estCalFin=(calendrier_getInfoSurCalendrierCurr($(idCurr),"estCalFin")=="O");
					if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
						dispo = dispos.charAt(i);
						if($(idCurr).hasClassName("classeInit") && dispo=="." ) cliquable=true;
						else if(estCalFin && $(idCurr).hasClassName("classeInit") && dispo!="." && dispoJrPrecedent=="."){
							//jslog("Le "+dte.toString("ddmmyyyy")+" est reservé mais est réservable...");
							cliquable=true;
							dispoReel=dispo;
							dispo="fp";
						}else{
							cliquable=false;
							if(dispo!="." && $(idCurr).hasClassName("spanCalendCliquable")){
								$(idCurr).removeClassName("spanCalendCliquable");
								$(idCurr).onmousedown=null;
							}
						}
						if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");
						
						if(dispoReel)$(idCurr).setAttribute("etatReel",dispoReel);
						$(idCurr).setAttribute("etat",dispo);
						$(idCurr).addClassName(calendrier_getClassForJour(dispo,false,cliquable));
						
						if (cliquable)$(idCurr).onmousedown=function(evt){
							calendrier_clicDate(evt,this);
						}
						dispoJrPrecedent=dispo;
					}
				}
				dte.ajoutJour(1);
			}
		}
	}

	function calendrier_getInfoSurCalendrierCurr(elt,info){
		if(!$(elt))return null;
		var node=$(elt).parentNode;
		var retour;

		while(node != null || node.getAttribute("estUlInfo")=="O"){
			node=$(node).parentNode;
			if(node == null || node.nodeName=="#document")break;
			retour=node.getAttribute(info);
			if(node.getAttribute("estUlInfo")=="O")break;
		}
		
		return retour;
	}
	
	function calendrier_setClasseForDisposForChambre(idDivGene,nb_chambre,modeAff){
		effaceMsgAttenteParDessus();
		var cliquable;
		var idCurr;
		var dispo;
		var numero_chambre;
		
		for(var c=1;c<=nb_chambre;c++){
		
			numero_chambre = c;
			if($(idDivGene)){
				var dispos = $(idDivGene).getAttribute("dispos_"+numero_chambre);
				var dte = new OBJDate($(idDivGene).getAttribute("dteDispos"));
				var apresToday = $(idDivGene).getAttribute("apresToday");
			}
			
			var today = new OBJDate();
			today.definition();
			
			if(dispos){
				for(var i=0;i<dispos.length;i++){
					idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy"); 
					if(modeAff=="LIGNE") idCurr+="_"+numero_chambre;
					cliquable=false;
					if($(idCurr)){ 
						if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
							dispo = dispos.charAt(i);
							if(dispo==".") cliquable=true;
							if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");
							
							$(idCurr).setAttribute("etat",dispo);
							if(cliquable) $(idCurr).removeClassName($(idCurr).getAttribute("classe"));
							
							if(!$(idCurr).hasClassName("spanCalendCliquable")) $(idCurr).addClassName(calendrier_getClassForJour(dispo,false,cliquable));
							
							if(cliquable){
								$(idCurr).onmousedown=function(evt){
									calendrier_clicDate(evt,this,modeAff);
								}
							}
						}
					}
					dte.ajoutJour(1);
				}
			}
		}
	}
		
	function calendrier_recupJourArr(tabJourArr,idDivGene){
		effaceMsgAttenteParDessus();
		eval("var infosJrArr="+tabJourArr);
		
		var dte = new String(infosJrArr.date_deb);
		var jourArr = new String(infosJrArr.chaineJourArr);
		var nbjMini = parseInt(infosJrArr.nbjMini,10);
		var apresToday = infosJrArr.apresToday;
		var joursClick = infosJrArr.joursClick;
		if(infosJrArr.duree)//{
			var duree = parseInt(infosJrArr.duree,10);
        else duree = 0;
			var chaineWE = new String(infosJrArr.chaineWE);
			var nbjminWE = new String(infosJrArr.nbjminWE);
			var nbjmaxWE = new String(infosJrArr.nbjmaxWE);
		//}
		
		if($(idDivGene)){
			$(idDivGene).setAttribute("jourArr",jourArr);
			$(idDivGene).setAttribute("dteJrArr",dte);
			$(idDivGene).setAttribute("nbjMini",nbjMini);
			$(idDivGene).setAttribute("apresToday",apresToday);
			$(idDivGene).setAttribute("joursClick",joursClick);
			//if(duree){
				$(idDivGene).setAttribute("duree",duree);
				$(idDivGene).setAttribute("chaineWE",chaineWE);
				$(idDivGene).setAttribute("nbjminWE",nbjminWE);
				$(idDivGene).setAttribute("nbjmaxWE",nbjmaxWE);
			//}
		}
	}
	
	function calendrier_setClasseForJourArr(idDivGene){

		var jourArr = $(idDivGene).getAttribute("jourArr");
		var dte = new OBJDate($(idDivGene).getAttribute("dteJrArr"));
		var nbjMini = $(idDivGene).getAttribute("nbjMini");
		var duree = $(idDivGene).getAttribute("duree");
		var apresToday = $(idDivGene).getAttribute("apresToday");
		var ident = $(idDivGene).getAttribute("ident");
        if($('ul_'+idDivGene))var estcalfin = $('ul_'+idDivGene).getAttribute("estcalfin");
		//if(duree){
			var chaineWE = $(idDivGene).getAttribute("chaineWE");
			var nbjminWE = $(idDivGene).getAttribute("nbjminWE");
			var nbjmaxWE = $(idDivGene).getAttribute("nbjmaxWE");
		//}else duree=7;
		
		var idCurr;
		var idJour;
		var jr_arr;
		var we_nbjMin;
		var we_nbjMax;
		
		var today = new OBJDate();
		today.definition();
		if(nbjMini) today.ajoutJour(nbjMini);

		var joursClick = $(idDivGene).getAttribute("joursClick");
		if(joursClick && typeof(joursClick)!='undefined' && joursClick!='undefined'){
			today = new OBJDate();
			today.definition();
			for(var i=0;i<joursClick.length;i++){
				idJour=dte.getJourSemaine();
				idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy");						
				if($(idCurr) && joursClick.charAt(i)=="1" ){
					if( dte.estApresOBJDate(today) ){
						$(idCurr).addClassName("spanCalendCliquable");
						$(idCurr).onmousedown=function(evt){
							calendrier_clicDate(evt,this);
						}
					}
				}
				dte.ajoutJour(1);
			}
			return;
		}

		/*** Gestion des WE et Midweek ***/
		if(duree<7 && chaineWE){
			var dateMiniWE = new OBJDate();
			dateMiniWE.definition();
			if(nbjminWE) we_nbjMin = nbjminWE;
			else we_nbjMin = 0;
			dateMiniWE.ajoutJour(we_nbjMin);
				
			var dateMaxiWE = new OBJDate();
			dateMaxiWE.definition();
			if(nbjmaxWE>0) we_nbjMax = nbjmaxWE;
			else we_nbjMax = 999;
			dateMaxiWE.ajoutJour(we_nbjMax);
		}
		if (jourArr)
		for(var i=0;i<jourArr.length;i++){
			idJour=dte.getJourSemaine();

			idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy");
			if($(idCurr)){
				var etat_curr = $(idCurr).getAttribute("etat");
				var etat_reel = $(idCurr).getAttribute("etatReel");
				jr_arr = jourArr.charAt(i);
				if(duree<7 && chaineWE){
					/*** Lorsqu'on est en court séjour/WE/Midweek, on ne prend pas en compte le parametre
					 * apresToday car on est obligé de vérifier le nbj min et max par rapport à today
					 * C'est donc forcement les jours apres today qui seront cliquables
					***/

					/*** On vérifie donc :
					 * 1 : que le jour concerné est bien entre nbj min et nbj max pour les courts séjour
					 * 2 : que le jour concerné est libre et
					 * 3 : que le calendrier Week-end autorise les arrivées en fonction de la durée
					 * 4 : que le calendrier des jour d'arrivées est respecté
					 * OU qu'on est dans l'un des 2 cas suivants: durée 2 avec arrivée vendredi / durée 4 avec arrivée lundi
					***/
					jr_WE = chaineWE.charAt(i);
					if(dte.estComprisEntre(dateMiniWE.toString(),dateMaxiWE.toString())){
						duree = parseInt(duree,10);
						switch(duree){
                            case 0 ://pas de duree envoyé mais on veut pouvoir cliquer sur le vendredi/lundi si on a un parametrage WE
                                if ((!ident || (ident && etat_curr)) && $(idCurr).hasClassName("classeInit") && (idJour=="1" || idJour=="5" || jr_arr==idJour || jr_arr=="7" || (idJour==0 && estcalfin == "O")) && (jr_WE=="O" || jr_WE=="W" || jr_WE=="M" || jr_WE=="T" || jr_WE=="N" || estcalfin == "O")){
									$(idCurr).addClassName("spanCalendCliquable");
									$(idCurr).onmousedown=function(evt){
										calendrier_clicDate(evt,this);
									}
								}else{
									//if($(idCurr).hasClassName("spanCalendCliquable") && ((idJour!="1" && idJour!="5" && !(idJour==0 && estcalfin == "O")) || (jr_WE!="O" && jr_WE!="W" && jr_WE!="T" && jr_WE!="X" )) && jr_arr!=idJour  && jr_arr!="7"){
									if($(idCurr).hasClassName("spanCalendCliquable") && jr_arr!=idJour && jr_arr!="7"){// si on a pas parametré tous les jours clickable et si est pas sur le jour d'arrivé
                                        switch(idJour){
                                            case 1://lundi
                                                if  (jr_WE!="O" && jr_WE!="M" && jr_WE!="T" && jr_WE!="X"){//si mid-week pas autorisé
                                                    //on ne peut pas cliquer sur ce jour:
                                                    $(idCurr).removeClassName("spanCalendCliquable");
                                                    $(idCurr).onmousedown=null;
                                                }
                                                break;
                                            case 5://vendredi
                                                if( jr_WE!="O" && jr_WE!="M" && jr_WE!="W" && jr_WE!="T" && jr_WE!="X" ){//si mid-week ET week-end pas autorisé
                                                    //on ne peut pas cliquer sur ce jour:
                                                    $(idCurr).removeClassName("spanCalendCliquable");
                                                    $(idCurr).onmousedown=null;
                                                }
                                                break;
                                            case 0://dimanche
                                                if  (jr_WE!="O" && jr_WE!="W" && jr_WE!="T" && jr_WE!="X"){//si week-end pas autorisé
                                                    //on ne peut pas cliquer sur ce jour:
                                                    $(idCurr).removeClassName("spanCalendCliquable");
                                                    $(idCurr).onmousedown=null;
                                                } else if(estcalfin=="N"){// ou si on est pas sur le calendrier de fin
                                                    //pareil, on ne peut pas cliquer sur ce jour:
                                                    $(idCurr).removeClassName("spanCalendCliquable");
                                                    $(idCurr).onmousedown=null;
                                                }
                                                break;
                                            default://tous les autres jours
                                                    $(idCurr).removeClassName("spanCalendCliquable");
                                                    $(idCurr).onmousedown=null;
                                                break;
                                        }
									}
								}
                                break;
							case 2 :
								if ((!ident || (ident && etat_curr)) && $(idCurr).hasClassName("classeInit") && (idJour=="5" || jr_arr==idJour || jr_arr=="7") && (jr_WE=="O" || jr_WE=="W" || jr_WE=="T")){
									$(idCurr).addClassName("spanCalendCliquable");
									$(idCurr).onmousedown=function(evt){
										calendrier_clicDate(evt,this);
									}
								}else{
									if($(idCurr).hasClassName("spanCalendCliquable") && ((idJour!="5" && jr_arr!=idJour && jr_arr!="7") || (jr_WE!="O" && jr_WE!="W" && jr_WE!="T" && jr_WE!="X"))){
										$(idCurr).removeClassName("spanCalendCliquable");
										$(idCurr).onmousedown=null;
									}
								}
								break;
							case 4 :

								if ((!ident || (ident && etat_curr)) && $(idCurr).hasClassName("classeInit") && (idJour=="1" || jr_arr==idJour || jr_arr=="7") && (jr_WE=="O" || jr_WE=="M" || jr_WE=="T")){
									$(idCurr).addClassName("spanCalendCliquable");
									$(idCurr).onmousedown=function(evt){
										calendrier_clicDate(evt,this);
									}
								}else{
									if($(idCurr).hasClassName("spanCalendCliquable") && ((idJour!="1" && jr_arr!=idJour && jr_arr!="7") || (jr_WE!="O" && jr_WE!="M" && jr_WE!="T" && jr_WE!="X"))){
										$(idCurr).removeClassName("spanCalendCliquable");
										$(idCurr).onmousedown=null;
									}
								}
								break;
							default :
								//if ($(idCurr).hasClassName("spanCalendCliquable") && (jr_arr==idJour || jr_arr=="7") && jr_WE=="T"){
								if ($(idCurr).hasClassName("spanCalendCliquable") && (jr_arr==idJour || jr_arr=="7")){
									$(idCurr).addClassName("spanCalendCliquable");
									$(idCurr).onmousedown=function(evt){
										calendrier_clicDate(evt,this);
									}
								}else{
									if($(idCurr).hasClassName("spanCalendCliquable") && ((jr_arr!=idJour && jr_arr!="7") && jr_WE!="T" && jr_WE!="X")){
										$(idCurr).removeClassName("spanCalendCliquable");
										$(idCurr).onmousedown=null;
									}
								}
								break;
						}
					}//si on est pas dans la période autorisé pour le week-end on ne laisse que le jours d'arrivé 'normal' cliquable
					else if($(idCurr).hasClassName("spanCalendCliquable") && jr_arr!=idJour && jr_arr!="7"){
						$(idCurr).removeClassName("spanCalendCliquable");
						$(idCurr).onclick=null;
					}
				}else{

					if((!ident || (ident && etat_curr)) && $(idCurr).hasClassName("classeInit") && (jr_arr==idJour || jr_arr=="7")){
						if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
								$(idCurr).addClassName("spanCalendCliquable");
								$(idCurr).onmousedown=function(evt){
									calendrier_clicDate(evt,this);
								}
						}
					}else{
						if((jr_arr!=idJour && jr_arr!="7") && $(idCurr).hasClassName("spanCalendCliquable")){
							$(idCurr).removeClassName("spanCalendCliquable");
							$(idCurr).onmousedown=null;
							if(etat_reel){
								$(idCurr).setAttribute("etat",etat_reel);
								var clicable=(etat_reel==".");
								$(idCurr).addClassName(calendrier_getClassForJour(etat_reel,false,clicable));
							}
						}
					}
				}
				if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");
			}
			dte.ajoutJour(1);
		}
		
	}
	
	function calendrier_setClasseForJourArrTous(idDivGene){
		var dte = new OBJDate();
		dte.definition();
		
		var idCurr;
		var today = new OBJDate();
		today.definition();
				
		for(var i=0;i<731;i++){
			idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy"); 
			if($(idCurr)){ 
				if($(idCurr).hasClassName("classeInit") && dte.estApresOBJDate(today)){
					$(idCurr).addClassName("spanCalendCliquable");
					$(idCurr).removeClassName("classeInit");
					$(idCurr).onmousedown=function(evt){
						calendrier_clicDate(evt,this);
					}
				}
			}
			dte.ajoutJour(1);
		}
	}
	
	function calendrier_setClasseForJourArrTousGP(idDivGene){
		var dte = new OBJDate();
		dte.definition();
		
		var idCurr;
		var today = new OBJDate();
		today.definition();
				
		for(var i=0;i<731;i++){
			idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy"); 
			if($(idCurr)){ 
				if($(idCurr).hasClassName("classeInit") && dte.estApresOBJDate(today)){
					$(idCurr).addClassName("spanCalendCliquable");
					$(idCurr).removeClassName("classeInit");
					$(idCurr).onmousedown=function(evt){
						calendrier_clicDateGP(evt,this,false);
					}
				}
			}
			dte.ajoutJour(1);
		}
	}
	
	function calendrier_getClassForJour(etat,differencieEtats,cliquable){
		var tabClass;
		var classEtat;
		
		if(differencieEtats) tabClass = calendrier_getTabClassEtatsDifferencies();
		else tabClass = calendrier_getTabClassEtat();
		
		
		var classe="spanCalendJour_"+tabClass.getEtatLong(etat);
		if(cliquable && (etat=="." || etat=="fp")) classe+=" spanCalendCliquable";
		
		return classe;
	}
	
	function calendrier_getTabClassEtatsDifferencies(){
		var tabEtat = {"getEtatLong":function(etat){
						switch (etat){
							case "i":return "intention";
							case "o":return "option";
							case "r":return "resa";
							case "I":return "preintention";
							case "O":return "preoption";
							case "R":return "preresa";
							case "n":return "ferme";
							case "N":return "nonautorise";
							case "a":return "allotement";
							case "L":return "limite";
							case ".":return "libre";
							case "?":return "inconnu";
							case "G":return "modeVenteGEGS_G";
							case "H":return "modeVenteGEGS_H";
							case "X":return "bloque";
						}}};
		return tabEtat;
	}
	
	function calendrier_getTabClassEtat(){
		var tabEtat = {"getEtatLong":function(etat){
						switch (etat){
							case "i":return "contact";
							case "o":return "option";
							case "r":return "occupe";
							case "I":return "contact";
							case "O":return "option";
							case "R":return "occupe";
							case "n":return "occupe";
							case "N":return "occupe";
							case "a":return "contact";
							case "L":return "contact";
							case ".":return "libre";
							case "?":return "inconnu";
							case "X":return "mode_vte_GEGS";
							//ajout d'un état UNIQUEMENT WEB pour une date de fin de séjour possible
							//alors que cette nuit et réservé. Utile pour la réservation avec choix
							//de date 'debut-fin' plutot que 'debut-choix nb nuit'
							case "fp":return "fin_possible";
						}}};
		return tabEtat;
	}
	
	function calendrier_clicDate(evt,obj,modeAff){
		if(!modeAff) modeAff="CARRE";
		var tabClass = calendrier_getTabClassEtatsDifferencies();
		var etat = tabClass.getEtatLong(obj.getAttribute("etat"));
		var tabId = obj.id.split("_");
		if(modeAff=="LIGNE") var chaine = new String(tabId[tabId.length-2]);
		else var chaine = new String(tabId[tabId.length-1]);
		var jour = chaine.substr(0,2);
		var mois = chaine.substr(2,2);
		var annee = chaine.substr(4,4);
		obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.foncQdClicGauche(evt,jour,mois,annee,etat);
	}
	
	/************************ Calendrier Gestprod ****************************************/
	
	function setCalendrierToDivGP(idDiv,params){
		
		if(!params.langue) params.langue = "FRANCAIS";
			
		div=$(idDiv);
		if (div){
			div.innerHTML=calendrier_getXHTMLForGP(params,idDiv);
			if (!params.nePasChargerMotCles)calendrier_chargeMotCleDeLaLegendeGP(idDiv);
			affMsgAttenteParDessusInDiv(idDiv);
			div.firstChild.foncQdClicGauche=params.clic;
		}
		
	}
	
	function calendrier_getXHTMLForGP(params,idDiv){
		var html="";
		
		if (params.nbMois)nbMois=params.nbMois;
		else nbMois=1;
		
		var today = new OBJDate();
		today.definition();
		
		if(!params.moisDebut)params.moisDebut=today.getMois();
		if(!params.anneeDebut)params.anneeDebut=today.getAnnee();
		
		var mois=params.moisDebut;
		var annee=params.anneeDebut;
		
		var langue = params.langue;
		if(!langue) langue="FRANCAIS";
		var classeAlternee;
		if(params.code) var code = params.code;
		else var code="";
		
		var request = params.request;
		if(!params.request) request="N"; 
		
		var nb_stock = params.tabStock.length;
		
		html="<div class='calendItea calendIteaGP' id='calendItea_"+idDiv+"'>";
			html+="<div class='calendItea_navig calendItea_navigGauche'>";
				html+="<a onclick=calendrier_moisAutreGP(this.parentNode.nextSibling.firstChild,-1)><</a>";
			html+="</div>";
		
			html+="<div class=calendIteaGP_listMois>";
				html+="<ul class='calendIteaGP_ul calendItea_ul' moisDeb='"+mois+"' annee='"+annee+"' nbMois='"+nbMois+"' firstWeekDay='"+params.firstWeekDay+"' idDivGene='calendItea_"+idDiv+"' nb_stock='"+nb_stock+"' langue='"+langue+"' code='"+code+"' instance='"+params.instance+"'  request='"+request+"' tabStock='"+Object.toJSON(params.tabStock)+"'>";
					moisCurr=mois;
					anneeCurr=annee;
					for (var i=0;i<nbMois;i++){
						if(i%2==0) classeAlternee = "calendIteaGP_liPaire";
						else  classeAlternee = "calendIteaGP_liImpaire";
						html+="<li class='calendIteaGP_li "+classeAlternee+"'>";
							params.moisCurr=moisCurr;
							params.anneeCurr=anneeCurr;
							params.nb_stock = nb_stock;
							html+=calendrier_getXHTML_1moisLineaireGP(params,"calendItea_"+idDiv);
						html+="</li>";
						moisCurr++;		
						if (moisCurr>12){
							moisCurr=1;	
							anneeCurr++;
						}
						
					}
				html+="</ul>";
			html+="</div>";
		
			html+="<div class='calendIteaGP_navig calendItea_navigDroite'>";
				html+="<a onclick=calendrier_moisAutreGP(this.parentNode.previousSibling.firstChild,1)>></a>";
			html+="</div>";
			
			if(params.code){
				html+="<div class='calendIteaGP_legende'>";
					html+="<ul class='ul_legendeCalendGP'>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanCalendCliquableResaGP'>&nbsp;</span><span class='definition_legendeCalendCliquableResaGP' id='legendeCliquableResa_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanCalendJourGP_libre'>&nbsp;</span><span class='definition_legendeCalendLibreGP' id='legendeLibre_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanDateSejourOccupeGP'>&nbsp;</span><span class='definition_legendeCalendSejourOccupeGP' id='legendeOccupe_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanCalendCliquableDevisGP'>&nbsp;</span><span class='definition_legendeCalendCliquableDevisGP' id='legendeCliquableDevis_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanDateSejourDevisGP'>&nbsp;</span><span class='definition_legendeCalendSejourDevisGP' id='legendeDevis_"+idDiv+"'></span>";
						html+="</li>";
						html+="<li class='calendIteaGP_li_legende'>";
							html+="<span class='spanDateSejourSelectGP'>&nbsp;</span><span class='definition_legendeCalendSejourSelectGP' id='legendeSelect_"+idDiv+"'></span>";
						html+="</li>";
					html+="</ul>";
				html+="</div>";
			}
		
		html+="</div>";

		calendrier_setDispoEtJourArriveeGP(params,"calendItea_"+idDiv);
		
		return html;
	}
	function calendrier_chargeMotCleDeLaLegendeGP(idDiv){
		chargeMotCleDsDiv("legendeCliquableResa_"+idDiv,"LBL_LEGENDE_CALEND_ARRIVEE_RESA");
		chargeMotCleDsDiv("legendeLibre_"+idDiv,"LBL_LEGENDE_CALEND_LIBRE");
		chargeMotCleDsDiv("legendeOccupe_"+idDiv,"LBL_LEGENDE_CALEND_OCCUPE");
		chargeMotCleDsDiv("legendeCliquableDevis_"+idDiv,"LBL_LEGENDE_CALEND_ARRIVEE_DEVIS");
		chargeMotCleDsDiv("legendeDevis_"+idDiv,"LBL_LEGENDE_CALEND_DEVIS");
		chargeMotCleDsDiv("legendeSelect_"+idDiv,"LBL_LEGENDE_CALEND_SELECT");
	}
	
	function calendrier_setPeriodeInClass(idDiv,classname,jdeb,mdeb,adeb,jfin,mfin,afin){
		var dteDeb = new OBJDate();
		dteDeb.definition();dteDeb.setDateByInfos(jdeb,mdeb,adeb);
		var dteFin = new OBJDate();
		dteFin.definition();dteFin.setDateByInfos(jfin,mfin,afin);
		
		$$("."+classname).each(function(obj){obj.removeClassName(classname)});
		
		var idCurr;
		for(var i=0;i<731;i++){
			idCurr = "calendItea_"+idDiv+"_id_"+dteDeb.toString("ddmmyyyy"); 
			if($(idCurr)){ 
				if(dteFin.estApresOBJDate(dteDeb)){
					$(idCurr).addClassName(classname);
				}
			}
			dteDeb.ajoutJour(1);
		}
	}
	
	function calendrier_getXHTML_1moisLineaireGP(params,idDivGene){
		var date=new OBJDate("15/"+params.moisCurr+"/"+params.anneeCurr);
		var html="";
		var mois=params.moisCurr;
		var annee=params.anneeCurr;
		
	  	/*** Pour repérer le jour courant sur le calendrier ***/
	    var dateCurr;
	    var jourSelect=0;
	    var moisSelect=0;
	    var anneeSelect=0;
	    var dureeSelect=0;
	    if($("mois")) moisSelect = $("mois").value;
	    if($("annee")) anneeSelect = $("annee").value;
	    if($("jour")) jourSelect = $("jour").value;
	    if($("duree")) dureeSelect = $("duree").value; 
		var dateSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		var dateFinSejourSelect = new OBJDate(jourSelect+"/"+moisSelect+"/"+anneeSelect);
		dateFinSejourSelect.ajoutJour(dureeSelect);
		/***********************************************************/
		
				
	
		html+="<table class='calendGP' mois='"+mois+"' annee='"+annee+"' firstWeekDay='"+params.firstWeekDay+"' nbMois='"+params.nbMois+"'>";
		html+="<caption>"+date.getLibelleMois(params.langue)+" "+annee+"</caption>";
		html+="<thead>";
		html+="<tr>";
		html+="<th class='calend_idLigne'></th>";
		var j_curr=1;
		var tabJour = date.getJSONLblJourWeek(params.langue);
		do {
			var j1=(j_curr<10)?"0"+j_curr:j_curr;
			var m1=(mois<10)?"0"+mois:mois;
			var a1=annee;
			dateCurr = new OBJDate(j1+"/"+m1+"/"+a1);
			lblJour = tabJour[dateCurr.getJourSemaine()].libelle_court;
			html+="<th class='calend_jour_"+j_curr+"'>";
			html+="<span class='calend_jour_lbl'>"+lblJour+"</span>";
			html+="<span class='calend_jour_numero'>"+j_curr+"</span>";
			html+="</th>";
			j_curr++;
		}while (j_curr<=date.getNbjMois());
		html+="</tr>";
		html+="</thead>";
		html+="<tbody>";
		
		var nb_stock = params.nb_stock;
		
		for (var i=0;i<nb_stock;i++){
			html+="<tr>";
			html+="<th class='calendGP_idLigne'>"+params.tabStock[i].lbl+"</th>";
			for (j=1;j<=date.getNbjMois();j++){
				html+="<td class='calendGP_jour_"+j+"'>";
				jr=parseInt(j);
				var j2=(jr<10)?"0"+jr:jr;
				var m2=(mois<10)?"0"+mois:mois;
				var a2=annee;
				var code_stock = new String(params.tabStock[i].code);
				var idCurr = idDivGene+"_id_"+j2+m2+a2+"_"+code_stock.replace("/","_slash_");
					
				html+="<span id='"+idCurr+"' etat='' class='classeInit";
				if(dateSelect.toString("ddmmyyyy")==(j2+m2+a2)) html+=" spanDateArriveeSelect";
				else{
					dateCurr = new OBJDate(j2+"/"+m2+"/"+a2);
					if(dateCurr.estComprisEntre(dateSelect,dateFinSejourSelect)) html+=" spanDateSejourSelect";
				}
				html+="'> </span>";
				html+="</td>";
			}
			html+="</tr>";
		}	
		html+="</tbody>";
		html+="</table>";
		return html;
	}
	
	function calendrier_moisAutreGP(tableCal,increment){
		
		var obj=$(tableCal);
		var moisCurr=parseInt(obj.getAttribute("moisDeb"));
		var anneeCurr=parseInt(obj.getAttribute("annee"));
		var firstWeekDay=obj.getAttribute("firstWeekDay");
		var nbMois=parseInt(obj.getAttribute("nbMois"));
		var idDivGene=obj.getAttribute("idDivGene");
		var nb_stock=obj.getAttribute("nb_stock");
		var langue=obj.getAttribute("langue");
		var instance=obj.getAttribute("instance");
		var code=obj.getAttribute("code");
		var request=obj.getAttribute("request");
		eval("var tabStock="+obj.getAttribute("tabStock"));
		
		var classeAlternee;
				
		moisCurr+=(nbMois*increment);
		if (moisCurr>12){
			moisCurr=moisCurr-12;
			anneeCurr++;
		}
		if (moisCurr<1){
			moisCurr=12+moisCurr;
			anneeCurr--;
		}
		
		var html="<ul class='calendIteaGP_ul calendItea_ul' moisDeb='"+moisCurr+"' annee='"+anneeCurr+"' nbMois='"+nbMois+"' firstWeekDay='"+firstWeekDay+"' idDivGene='"+idDivGene+"' nb_stock='"+nb_stock+"' langue='"+langue+"' code='"+code+"' instance='"+instance+"' request='"+request+"' tabStock='"+Object.toJSON(tabStock)+"'>";
		
		var params={"firstWeekDay":firstWeekDay,"nbMois":nbMois};
		//anneeCurr=anneeCurr;
		for (var i=0;i<nbMois;i++){
			if (moisCurr>12){
				moisCurr=moisCurr-12;
				anneeCurr++;
			}
			if (moisCurr<1){
				moisCurr=12+moisCurr;
				anneeCurr--;
			}
			
			if(i%2==0) classeAlternee = "calendIteaGP_liPaire";
			else  classeAlternee = "calendIteaGP_liImpaire";
			html+="<li class='calendIteaGP_li "+classeAlternee+"'>";
			params.moisCurr=moisCurr;
			params.anneeCurr=anneeCurr;
			params.langue=langue;
			params.nb_stock=nb_stock;
			params.instance=instance;
			params.tabStock=tabStock;
			params.code=code;
			params.request=request;
			html+=calendrier_getXHTML_1moisLineaireGP(params,idDivGene);
			html+="</li>";
			moisCurr++;
		}
		html+="</ul>";
		obj.parentNode.innerHTML=html;
		
		calendrier_setClasseForDisposForProd(idDivGene,nb_stock,tabStock,request);
		calendrier_setClasseForJourArrGP(idDivGene,nb_stock,tabStock,request);
	}
	
	function calendrier_setDispoEtJourArriveeGP(params,idDivGene){
		var url = "/lib/ajax/infosDist.php";
		
		/*** Dispos ***/
		if(params.code){
			var sending = "info=DISPOS_GP&code="+params.code+"&instance="+params.instance;
			if(params.apresToday) sending+="&apresToday="+params.apresToday;
			else sending+="&apresToday=true";
			var vars;
			var nb_planningRecupere=0;
			var nb_stock = params.tabStock.length;
			for(var i=0;i<nb_stock;i++){
				vars = sending+"&code_stock="+params.tabStock[i].code;
				appelAjaxToFunc(url,vars,function(reponseAjax){
						calendrier_recupDisposForProd(reponseAjax,idDivGene);
						nb_planningRecupere++;
						if(nb_stock==nb_planningRecupere) calendrier_setClasseForDisposForProd(idDivGene,nb_stock,params.tabStock,params.request);
                        if(nb_stock==nb_planningRecupere){
                            var sending = "info=JOURARR_GP&instance="+params.instance+"&code="+params.code;
                            if(params.apresToday) sending+="&apresToday="+params.apresToday;
                            else sending+="&apresToday=true";
                            appelAjaxToFunc(url,sending,function(reponseAjax){
                                calendrier_recupJourArrGP(reponseAjax,idDivGene);
                                calendrier_setClasseForJourArrGP(idDivGene,nb_stock,params.tabStock,params.request);
                            });                            
                        }
                    }
				);
			}
		}
		
		/*** Jours d'arrivées ***/
        /* Fiche 142865
		if(params.code){
			var sending = "info=JOURARR_GP&instance="+params.instance+"&code="+params.code;
			if(params.apresToday) sending+="&apresToday="+params.apresToday;
			else sending+="&apresToday=true";
			appelAjaxToFunc(url,sending,function(reponseAjax){
				calendrier_recupJourArrGP(reponseAjax,idDivGene);
				calendrier_setClasseForJourArrGP(idDivGene,nb_stock,params.tabStock,params.request);
			});
		}
        */
	}
	
	function calendrier_recupDisposForProd(tabDispo,idDivGene){
		eval("var infosDispo="+tabDispo);
		
		var dte=new String(infosDispo.date_deb);
		var dispos = new String(infosDispo.chaineDispo);
		var apresToday = infosDispo.apresToday;
		var code_stock = new String(infosDispo.code_stock);
		
		if($(idDivGene)){
			$(idDivGene).setAttribute("dispos_"+code_stock.replace("/","_slash_"),dispos);
			$(idDivGene).setAttribute("dteDispos",dte);
			$(idDivGene).setAttribute("apresToday",apresToday);
		}
	}
	
	function calendrier_recupJourArrGP(tabJourArr,idDivGene){
		effaceMsgAttenteParDessus();
		eval("var infosJrArr="+tabJourArr);
		
		var dte = new String(infosJrArr.date_deb);
		var jourArr = new String(infosJrArr.jourArr);
		var apresToday = infosJrArr.apresToday;
		var nbjMini = infosJrArr.nbjMini;
		
		
		if($(idDivGene)){
			$(idDivGene).setAttribute("jourArr",jourArr);
			$(idDivGene).setAttribute("dteJrArr",dte);
			$(idDivGene).setAttribute("apresToday",apresToday);
			$(idDivGene).setAttribute("nbjMini",nbjMini);
		}
	}
	
	function calendrier_setClasseForDisposForProd(idDivGene,nb_stock,tabStock,request){
		effaceMsgAttenteParDessus();
		var cliquable;
		var idCurr;
		var dispo;
		var code_stock;
		
		for(var c=0;c<nb_stock;c++){
		
			code_stock = new String(tabStock[c].code);
			code_stock = code_stock.replace("/","_slash_");
			if($(idDivGene)){
				var dispos = $(idDivGene).getAttribute("dispos_"+code_stock);
				var dte = new OBJDate($(idDivGene).getAttribute("dteDispos"));
				var apresToday = $(idDivGene).getAttribute("apresToday");
			}
			
			var today = new OBJDate();
			today.definition();
			
			if(dispos){
				for(var i=0;i<dispos.length;i++){
					idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy"); 
					idCurr+="_"+code_stock;
					cliquable=false;
					if($(idCurr)){ 
						if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
							dispo = dispos.charAt(i);
							
							if($(idCurr).hasClassName("classeInit") && (dispo=="1" || (dispo=="0" && request=="O"))) cliquable=true;
							else{
								cliquable=false;
								if(dispo!="1" && request!="O" && $(idCurr).hasClassName("spanCalendCliquableGP")){
									$(idCurr).removeClassName("spanCalendCliquableGP");
									$(idCurr).onmousedown=null;
								}
							}
							
							if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");
							
							$(idCurr).setAttribute("etat",dispo);
							$(idCurr).addClassName(calendrier_getClassForJourGP(dispo,request,cliquable));
							
							if(cliquable){
								$(idCurr).onmousedown=function(evt){
									calendrier_clicDateGP(evt,this,request);
								}
							}
						}
					}
					dte.ajoutJour(1);
				}
			}
		}
	}
	
	function calendrier_setClasseForJourArrGP(idDivGene,nb_stock,tabStock,request){
		var jourArr = $(idDivGene).getAttribute("jourArr");
		var dte = new OBJDate($(idDivGene).getAttribute("dteJrArr"));
		var nbjMini = $(idDivGene).getAttribute("nbjMini");
		var apresToday = $(idDivGene).getAttribute("apresToday");
		
		var idCurr;
		var jr_arr;		
		var today = new OBJDate();
		today.definition();
		if(nbjMini) today.ajoutJour(nbjMini);
		
		for(var i=0;i<jourArr.length;i++){
		
			for(var j=0;j<nb_stock;j++){
				var code_stock = new String(tabStock[j].code);
				idCurr = idDivGene+"_id_"+dte.toString("ddmmyyyy")+"_"+code_stock.replace("/","_slash_"); 
				
				if($(idCurr)){ 
					jr_arr = jourArr.charAt(i);
					if($(idCurr).hasClassName("classeInit") && jr_arr=="A"){
						if((apresToday && dte.estApresOBJDate(today)) || !apresToday){
							$(idCurr).addClassName("spanCalendCliquableGP");
							$(idCurr).onmousedown=function(evt){
								calendrier_clicDateGP(evt,this,request);
							}
						}
					}else{
						if(jr_arr!="A" && $(idCurr).hasClassName("spanCalendCliquableGP")){
							$(idCurr).removeClassName("spanCalendCliquableGP");
							$(idCurr).onmousedown=null;
						}
						if(jr_arr=="N") {
							$(idCurr).removeClassName($(idCurr).getAttribute("class"));
							$(idCurr).addClassName("spanDateSejourOccupeGP");
						}
					}
					
					if($(idCurr).hasClassName("classeInit")) $(idCurr).removeClassName("classeInit");
				}
			}
			dte.ajoutJour(1);
			
		}
	}
	
	function calendrier_getClassForJourGP(etat,request,cliquable){
		var classEtat;
		var tabClass = calendrier_getTabClassEtatsGP(request);
		
		var classe="spanCalendJourGP_"+tabClass.getEtatLong(etat);
		if(cliquable && (etat=="1" || (etat=="0" && request=="O"))) classe+=" spanCalendCliquableGP";
		
		return classe;
	}
	
	function calendrier_getTabClassEtatsGP(request){
		var tabClass = {"getEtatLong":function(etat){
						switch (etat){
							case "1":return "libre";
							case "0":
								if(request=="O") return "devis";
								else return "occupe";
						}}};
		return tabClass;
	}
	
	function calendrier_clicDateGP(evt,obj,request){
		var tabClass = calendrier_getTabClassEtatsGP(request);
		var etat = tabClass.getEtatLong(obj.getAttribute("etat"));
		var idCurr = new String(obj.id);
		idCurr = idCurr.replace("_slash_","/");
		var tabId = idCurr.split("_");
		var chaine = new String(tabId[tabId.length-2]);
		var jour = chaine.substr(0,2);
		var mois = chaine.substr(2,2);
		var annee = chaine.substr(4,4);
		obj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.foncQdClicGauche(evt,jour,mois,annee,etat);
	}
    function setCalendrierToDispoAjax(div,diff_mois,ident,tabChambre,mode_aff,type_gite,adresse_resa,tabNomChambre){
        
        fctClic = function(evt,jour,mois,annee,etat){				
			document.location.href = adresse_resa+"&jour_calend="+jour+"&mois_calend="+mois+"&annee_calend="+annee;
		};
        setCalendrierToDiv(div,{
            'clic':fctClic,
            'firstWeekDay':1,
            'nbMois':diff_mois,
            'ident':ident,
            'afficheJrArrivee':false,
            'afficheDispos':true,
            'tabChambre':tabChambre,
			'tabNomChambre':tabNomChambre,
            'modeAff':mode_aff,
            'typeGite':type_gite});

    }

