/**@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 datefs=$F("datefs");
	var datefe=$F("datefe");
	
	if(datefs=="")datefs="0000-00-00";
	if(datefe=="")datefe="0000-00-00";
	
	
	var arrdates=$F("dates").split("-");
	var arrdatee=$F("datee").split("-");
	var arrdatefs=datefs.split("-");
	var arrdatefe=datefe.split("-");
	var datesObject=new Date(arrdates[0], arrdates[1]-1, arrdates[2]);
	var dateeObject=new Date(arrdatee[0], arrdatee[1]-1, arrdatee[2]);
	var datefsObject=new Date(arrdatefs[0], arrdatefs[1]-1, arrdatefs[2]);
	var datefeObject=new Date(arrdatefe[0], arrdatefe[1]-1, arrdatefe[2]);
	
	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($("dateDebut")){
		if($("dateDebut").value!=""){
			arrDat=$("dateDebut").value.split("/")
			jours=arrDat[0];
			numMoiss=arrDat[1]-1;
			annees=arrDat[2];
		}else{
			jours="";
			numMoiss="";
			annees="";
		}
		
		if($("dateFin").value!=""){
			arrDat=$("dateFin").value.split("/")
			jours2=arrDat[0];
			numMoiss2=arrDat[1]-1;
			annees2=arrDat[2];
		}else{
			jours2="";
			numMoiss2="";
			annees2="";
		}
	}
	
	if($("departHeb")){
		if($("departHeb").value!=""){
			arrDat=$("departHeb").value.split("/")
			jours=arrDat[0];
			numMoiss=arrDat[1]-1;
			annees=arrDat[2];
		}else{
			jours="";
			numMoiss="";
			annees="";
		}
		
		if($("retourHeb").value!=""){
			arrDat=$("retourHeb").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;
	while (divContCal.tagName!="DIV"){
		divContCal=divContCal.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="-15px";
	}
	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");
	table.style.width="150px";
	table.style.border="1px solid #336699";
	table.style.backgroundColor="#ffffff";
	var caption=document.createElement("caption");
	caption.style.backgroundColor="#336699";
	caption.style.color="#ffffff";
	caption.style.padding="4px";
	caption.style.fontWeight="bold";
	
	var titre=document.createTextNode(moisAnnee);
	var imgSuiv=document.createElement("img");
	with(imgSuiv){
		style.cursor="pointer";
		src=$F("baseUrl") + "/images/moisuiv.gif";
		id="msuiv";
	}
	var imgPrec=document.createElement("img");
	with(imgPrec){
		style.cursor="pointer";
		src=$F("baseUrl") + "/images/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");
		th.style.backgroundColor="#FFFF99";
		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);
			var testClick=false;
			if(affJourCal!=""){
				var datetmpObject=new Date(ObjDate.annee, ObjDate.numMois, affJourCal);
				if(datetmpObject>=datesObject && datetmpObject<=dateeObject && (datetmpObject<datefsObject || datetmpObject>datefeObject )){
					td.style.backgroundColor="#DEEEBC";
					td.style.color="#000000";
					var testClick=true;
				}else{
					td.style.backgroundColor="#ffffff";
					td.style.color="#D4D4D4";
					var testClick=false;
				}
			}
			
			td.appendChild(affJour);
			
			if (testClick) {
				Event.observe(td, "click", function(e){
					if ($("dateDebut")) {
						if ((inputCal.id == "dateDebut" && $("dateFin").value != "") || (inputCal.id == "dateFin" && $("dateDebut").value != "")) {
							if (inputCal.id == "dateDebut") {
								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 == "dateDebut") {
									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;
									$("dateFin").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
							});
							
						}
					}
					
					if ($("departHeb")) {
					
					
						if ((inputCal.id == "departHeb" && $("retourHeb").value != "") || (inputCal.id == "retourHeb" && $("departHeb").value != "")) {
							if (inputCal.id == "departHeb") {
								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 == "departHeb") {
									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;
									$("retourHeb").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;
})

