/**@Package Calendrier
 * 
 * @author Intermediatic
 */


/**Affichage du calendrier
 * 
 * @param {Object} e
 * @param {Object} inputCal
 */
function affCalendrier(e,inputCal)
{
	var date=new Date();
	moisNow=date.getMonth();
	if (!ObjDate.jour){
		ObjDate.jour=1;
		ObjDate.annee=date.getFullYear();
		ObjDate.numMois=date.getMonth();
	}
	
	var moisActuel=ObjDate.numMois;
	if (e) {
		var inputCal = Event.element(e);
		while (inputCal.tagName!="INPUT"){
			inputCal=inputCal.previousSibling;
		}
		if (inputCal.value){
			arrDat=inputCal.value.split("/")
			ObjDate.jour=arrDat[0];
			ObjDate.numMois=arrDat[1]-1;
			ObjDate.annee=arrDat[2];
		}
	}
	
	if($("Arrivee")){
		if($("Arrivee").value!=""){
			arrDat=$("Arrivee").value.split("/")
			jours=arrDat[0];
			numMoiss=arrDat[1]-1;
			annees=arrDat[2];
		}else{
			jours="";
			numMoiss="";
			annees="";
		}
		
		if($("Depart").value!=""){
			arrDat=$("Depart").value.split("/")
			jours2=arrDat[0];
			numMoiss2=arrDat[1]-1;
			annees2=arrDat[2];
		}else{
			jours2="";
			numMoiss2="";
			annees2="";
		}
	}
	
	if(e){
		if(isNaN(ObjDate.numMois)){
			ObjDate.numMois=moisNow;
			ObjDate.annee=date.getFullYear();
			ObjDate.jour=1;
		}
	}
	
	if(ObjDate.numMois==12){
		ObjDate.numMois=0;
		ObjDate.annee=(parseInt(ObjDate.annee) + 1);
	}
	if(ObjDate.numMois==-1){
		ObjDate.numMois=11;
		ObjDate.annee=(parseInt(ObjDate.annee) - 1);
	}

	date.setMonth(ObjDate.numMois);
	date.setFullYear(ObjDate.annee);
	var divContCal = inputCal.nextSibling;
	
	if ($('calendrier')) {
		Effect.Fade('calendrier',{duration:0.3});
		$('calendrier').remove();
	}
	var calendrier=document.createElement("div");	
	with(calendrier)
	{
		id="calendrier";
		style.position="absolute";
		style.zIndex="5";
		style.left="30px";
		style.top="-10px";
	}
	var jour=["L","M","M","J","V","S","D"];
    var mois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];
	var moisEncours=ObjDate.numMois;
	var anneeEncours=ObjDate.annee;
	var moisAnnee=mois[moisEncours] + " " + anneeEncours;
	date.setDate(1);
	var premierJour=date.getDay();
	var dernierJour=0;
	
	$R(28,31).each(function(n){
		date.setDate(n);
		dernierJour=date.getDate();
		if (dernierJour==1)
		{
			dernierJour=n-1;
			throw $break;
		}
	})
	var jourCal=0;
	var affJourCal="";
	//Création du tableau
	var table=document.createElement("table");
	var caption=document.createElement("caption");
	var titre=document.createTextNode(moisAnnee);
	var imgSuiv=document.createElement("img");
	with(imgSuiv){
		style.cursor="pointer";
		src="image/moisuiv.gif";
		id="msuiv";
	}
	var imgPrec=document.createElement("img");
	with(imgPrec){
		style.cursor="pointer";
		src="image/moiprec.gif";
		id="mprec";
	}
	if (moisNow==moisEncours) imgPrec.style.display="none";
	caption.appendChild(imgPrec);
	caption.appendChild(titre);
	caption.appendChild(imgSuiv);
	table.appendChild(caption);
	var thead=document.createElement("thead");
	table.appendChild(thead);
	var tr=document.createElement("tr");
	thead.appendChild(tr);
	//Entête
	jour.each(function(j){
		var th=document.createElement("th");
		tr.appendChild(th);
		var nodeJ=document.createTextNode(j)
		th.appendChild(nodeJ)
	})
	//Corps
	var tbody=document.createElement("tbody")
	var rLigne=$R(1,6);
	var rcolonne=$R(1,7);
	rLigne.each(function(l){
		var tr=document.createElement("tr");
		tbody.appendChild(tr);
		rcolonne.each(function(c)
		{
			var td=document.createElement("td");
			if ((c < premierJour && l == 1)) jourCal = 0; else jourCal++;
			if(premierJour==0){
				premierJour=7
				jourCal=0;
			}
			if (jourCal==0 || jourCal>dernierJour){
				affJourCal="";
			}else
			{
				affJourCal=jourCal;
				td.style.cursor="pointer";
				td.style.textAlign="center";
				Event.observe(td,"mouseover",function(e){
					Event.element(e).className="hover";
				})
				Event.observe(td,"mouseout",function(e){
					Event.element(e).className="out";
				})
			}
			if((jours==affJourCal && ObjDate.numMois==numMoiss && jours!="") || (jours2==affJourCal && ObjDate.numMois==numMoiss2  && jours2!="") ){
				td.style.border="1px solid #000000";
			}
			var affJour=document.createTextNode(affJourCal);
			td.appendChild(affJour);
			Event.observe(td,"click",function(e)
			{
				if($("Arrivee")){
					if((inputCal.id=="Arrivee" && $("Depart").value!="") || (inputCal.id=="Depart" && $("Arrivee").value!="")){
						if(inputCal.id=="Arrivee"){
							var da1=new Date(anneeEncours,(moisEncours + 1),Event.element(e).firstChild.nodeValue);
							var da2=new Date(annees2,(numMoiss2 + 1),jours2);
							
						}else{
							var da1=new Date(annees,(numMoiss + 1),jours);
							var da2=new Date(anneeEncours,(moisEncours + 1),Event.element(e).firstChild.nodeValue);
						}
						if(da1.getTime()>=da2.getTime()){
							if (inputCal.id == "Arrivee") {
								var arrDate=inputCal.value.split("/");
								var da1cmp=new Date(arrDate[2],arrDate[1],arrDate[0]);
								var nbd=(da2.getTime()-da1cmp.getTime())/86400000
								var da2=new Date(anneeEncours,moisEncours ,parseInt(nbd) + parseInt(Event.element(e).firstChild.nodeValue));
								inputCal.value=Event.element(e).firstChild.nodeValue + "/" + (moisEncours + 1) + "/" + anneeEncours;
								$("Depart").value=da2.getDate() + "/" + (da2.getMonth() + 1 + "/" + da2.getFullYear()); 
								Effect.Fade('calendrier',{duration:0.1});
							}else{
								alert("La deuxième date doit être supérieur à la première");
							}
						}
						else{
							inputCal.value=Event.element(e).firstChild.nodeValue + "/" + (moisEncours + 1) + "/" + anneeEncours;
							Effect.Fade('calendrier',{duration:0.1});
							
						}
					}else{
						inputCal.value=Event.element(e).firstChild.nodeValue + "/" + (moisEncours + 1) + "/" + anneeEncours;
						Effect.Fade('calendrier',{duration:0.1});
						
					}
				}
			});
			tr.appendChild(td);
		})
	})
	table.appendChild(tbody)
	calendrier.appendChild(table);
	divContCal.appendChild(calendrier);
	calendrier.style.display="none";
	Effect.Appear(calendrier, { duration: 0.1 });
	
	//FX mois suivant
	Event.observe($("msuiv"),"click",fxmoissuiv);
	function fxmoissuiv(e)
	{
		ObjDate.numMois=ObjDate.numMois + 1 ;
		affCalendrier(undefined,inputCal)
	}
	//FX mois precedent
	Event.observe($("mprec"),"click",fxmoisprec);
	function fxmoisprec(e)
	{
		ObjDate.numMois=ObjDate.numMois - 1;
		affCalendrier(undefined,inputCal)
	}
	
	

	
}//affCalendrier
/**function hidden agenda
 * 
 * @param {Object} e
 */
function hideCalendrier(e)
{
	if ($("calendrier")){
		Effect.Fade('calendrier',{duration:0.3});
	}
}

Event.observe(window,"unload",function(){
	ObjDate=null;
})

