/*--	30/06/2003
Créé par francktfr pour www.systeme-d.net
Vous pouvez utiliser ce code librement, je 
vous simplement de m'envoyer l'url de la page 
ou vous l'aurez inseré à francktfr@systeme-d.net
afin de connaitre les application où il es utilisé. 
Merci .
*/

var aDayNames = new Array("","M", "T", "W", "T", "F", "S", "S")
var aMonthName = new Array("","January","February","March","April","May","June","Jully","August","September","October","November","December")
var BaseWeekWork = new Array(0,1,1,1,1,1,0,0)	//	jours de la semaine
var ExcepDays = new Array()



//	date au format "JJ/MM/YYYY"	obligatoirement
var sStartDate = ""
var CurrentDay = 0
var CurrentMonth = 0
var CurrentYear = 0

// les var de conditions à verifier pour envoyer le formulaire
var readyToSendDates=false; // accord global pour envoyer le formulaire vers le moteur de recherche résa
var readyToSendDest=false; // accord global pour envoyer le formulaire vers le moteur de recherche résa
var readyToSendCapa=false; // accord global pour envoyer le formulaire vers le moteur de recherche résa

// pour revea, dates de debut et de fin
var debut="";
var fin="";
var choix="";
var infosSupp=0;


var isdoing = false
var HeightDiff = -23

function show(quand, pos) {
	choix=quand;
	infosSupp=pos*1;
	if(quand=="du" && sStartDate != "") {sStartDate = "";}
	if (pos==1) {
		document.getElementById("calendrier").style.top = (tempY-160);
		document.getElementById("calendrier").style.left= (tempX-119);		
	}
	init();
}


function ShowMonthList(){
	document.getElementById("MonthList").style.top = 0
	document.getElementById("MonthList").style.display = 'block'
	ChangeDialogHeight()
	}
function CreateYearList(){
	for (i=1; i<=5; i++) {document.getElementById("Y" + i ).innerHTML ="<SPAN CLASS=ListCell onclick=\"ChangeDate('y'," + ((CurrentYear*1)+(i-3)) + ")\">" +((CurrentYear*1)+(i-3)) + "</SPAN>" }
}
function ShowYearList(){
	document.getElementById("YearList").top = 0
	document.getElementById("YearList").style.left = YearValue.offsetLeft
	document.getElementById("YearList").style.width = YearValue.offsetWidth
	document.getElementById("YearList").style.display = 'block'
}
function HideYearList(){
	document.getElementById("YearList").top = 0
	document.getElementById("YearList").style.display = 'none'
	ChangeDialogHeight()
	}
function HideMonthList(){
	document.getElementById("MonthList").style.display = 'none'
	ChangeDialogHeight()
	}
	


	
function ChangeCurrentYear(value){
	if (!isdoing){
		CurrentYear = (CurrentYear*1)+value
		isdoing = true
		WriteDateCells(GetDateString(1,CurrentMonth, CurrentYear))
		isdoing = false
		}
}
function ChangeDialogHeight(){
	if (typeof(dialogArguments) != "undefined"){
		if (document.getElementById("MonthList").offsetHeight > TableCalendar.offsetHeight)
			{window.dialogHeight = (document.getElementById("MonthList").offsetHeight+HeightDiff) + 'pt'}
			else
			{window.dialogHeight = (document.getElementById("TableCalendar").offsetHeight+HeightDiff) + 'pt'}
	}
}
function ChangeDate(Type, Value){
	if (Type == "m"){CurrentMonth = Value; HideMonthList()}
	if (Type == "y"){CurrentYear = Value; document.getElementById("YearList").style.display = 'none'; CreateYearList()}
	if (!isdoing){
		isdoing = true
		WriteDateCells(GetDateString(1,CurrentMonth, CurrentYear))
		isdoing = false
		}
}



function ChangeCurrentMonth(value){
	if (!isdoing){
		
		CurrentMonth += value
		var tts0=new Date()
		
		
		if ( CurrentMonth>=(tts0.getMonth()+1) || ( CurrentMonth<(tts0.getMonth()+1) && CurrentYear>tts0.getFullYear() )) {	

			if(CurrentMonth == 13){CurrentMonth=1; CurrentYear++;}
			if(CurrentMonth == 0){CurrentMonth=12; CurrentYear--;}
			isdoing = true
			WriteDateCells(GetDateString(1,CurrentMonth, CurrentYear))
			isdoing = false
		}
		else {
			CurrentMonth -= value
			document.getElementById("calendrier").style.display="none"
		}
	}
}
function GetDateString(d,m,y){
	if (d <= 9){d = "0" + d}
	if (m <= 9){m = "0" + m}
	return(d + "/" + m + "/" + y)
}


	

function GetDayType(J,M,A){
	//alert(J+","+M+","+A)
	var cDate = new Date(A,M,J)
	var DayNb = cDate.getDay()
	var tab_now=sStartDate.split('/');
	

	var now=new Date(); //new Date(year, month, day, hours, minutes, seconds, milliseconds);
	//alert( parseInt(tab_now[1]));
	
	now.setFullYear((1*tab_now[2]));
	now.setDate((1*tab_now[0]));
	now.setMonth(((1*tab_now[1])-1));
	//alert(cDate.toDateString()+" - "+now.toDateString())
	//alert(cDate.getTime()+" "+now.getTime() );
	if (DayNb == 0) {DayNb = 7}
	var Result = BaseWeekWork[DayNb]
	//	recherche dans les exceptions (jour et periode)
	//Datess=GetDateString(J,M,A);//Amandine Date.getTime()
	if (cDate.getTime() < now.getTime()  ){
		// gestion des we
		if (DayNb != 7 && DayNb != 6 ) {
			Result=2;	
		}
		else {
			Result=3;
		}
		
		
	}
	if (ExcepDays.length>0){
		for (i=0; i<=ExcepDays.length ; i++)
			{
			if (typeof(ExcepDays[i]) != "undefined")
				{
					var Dates = ExcepDays[i].split(";")	// Debut;Fin;Travail
					var DateFrom = DateJscFormat(Dates[0])	//Début
					var DateTo = DateJscFormat(Dates[1])	//Fin
					if (cDate >= DateFrom && cDate <= DateTo) {Result = Dates[2]}
				}
			}
	}

	return Result
	
}

function WriteDateCells(StringDate){
	var cDay = StringDate.substring(0,2)
	var cMonth = StringDate.substring(3,5)-1
	var cYear = StringDate.substring(6,10)
	var tts1= new Date()
	CurrentDay = cDay
	CurrentMonth = cMonth+1
	CurrentYear = cYear
	document.getElementById("MonthNAme").className="LbChangeDateM"
	document.getElementById("YearValue").className="LbChangeDateY"
	document.getElementById("MonthNAme").innerHTML = aMonthName[cMonth+1]
	document.getElementById("YearValue").innerHTML = cYear
	// bouton mois inférieu si moins en cours > MOIS Actuel
	var tts=new Date()	
	if (CurrentMonth>(tts.getMonth()+1)) {
		document.getElementById("MOINS").className= "BtChangeDate"
		document.getElementById("MOINS").innerHTML = "&lt;"	
	}
	else {
		document.getElementById("MOINS").className= "BtChangeDate"
		if ( CurrentYear>tts1.getFullYear() ) {
			document.getElementById("MOINS").innerHTML = "&lt;"
		}
		else {
			document.getElementById("MOINS").innerHTML = "x"	
		}
		
	}
	var BeginDate = new Date(cYear,cMonth,1)
	var MaxDay = 1
	for (j=27;j<33;j++){
		var cDate = new Date(cYear,cMonth,j)
		if (cDate.getDate() == 1){MaxDay = j-1}
		}
	var EndDate = new Date(cYear,cMonth,MaxDay)
	var cWeek = 1
	ClearCells()
	for (d=1; d<=MaxDay; d++){
		var cDate = new Date(cYear ,cMonth, d)
		var DayNb = cDate.getDay()
		if (DayNb == 0) {DayNb = 7}	// 	J de la semaine de 1 a 7
		var Cell = document.getElementById("S" + cWeek + "J" + DayNb)
		var OrigClass = ""
		if (GetDayType(d,cMonth,cYear)==1){
			OrigClass = "DayWorking";
		}
		else if (GetDayType(d,cMonth,cYear)==0){
			OrigClass = "DayNotWorking"
		}
		else if (GetDayType(d,cMonth,cYear)==2){
			OrigClass = "DayNotWorking2"
		}
		else if (GetDayType(d,cMonth,cYear)==3){
			OrigClass = "DayNotWorking3"
		}
		if(GetDateString(d,(cMonth+1),cYear) == sStartDate)	{OrigClass = "DayStart"; }
		Cell.className = "DayOn " + OrigClass
		if (OrigClass == "DayNotWorking2" || OrigClass == "DayNotWorking3"){
		Cell.innerHTML = "<SPAN WIDTH=100% onmouseover=\"document.getElementById('S" + cWeek + "J" + DayNb + "').className = '"+OrigClass+" "+OrigClass+"Over';\" onmouseout=\"document.getElementById('S" + cWeek + "J" + DayNb + "').className = '"+OrigClass+" " + OrigClass + "';\">" + d + "</SPAN>"
		}
		else{
		Cell.innerHTML = "<SPAN WIDTH=100% onclick=\"ReturnValue('" + GetDateString(d,(cMonth+1),cYear) + "');\" onmouseover=\"document.getElementById('S" + cWeek + "J" + DayNb + "').className = '"+OrigClass+" "+OrigClass+"Over';\" onmouseout=\"document.getElementById('S" + cWeek + "J" + DayNb + "').className = '"+OrigClass+" " + OrigClass + "';\">" + d + "</SPAN>"	
		}
		if (DayNb == 7) {cWeek++}	//	Changement de semaine
	}
	ChangeDialogHeight()
}
//	Effacement des cellules
function ClearCells(){
	for (s=1;s<=6;s++){
		for(j=1;j<=7;j++){
			document.getElementById("S" + s + "J" + j).innerHTML = "0"
			document.getElementById("S" + s + "J" + j).className = "vierge"
		}
	}
}
//	Retourne la valeur
function ReturnValue(sDate){
	
	/*
	if (typeof(dialogArguments) != "undefined")
			{
			window.dialogArguments.DateValue = sDate
			window.dialogArguments.DateUpdate()
			window.close()			
			}
		else
			{
	       */
	//alert("Choix="+choix+" et date="+sDate)
	if(choix=="du") {
		document.forms["saisie"].elements["du"].value=sDate;
		if (infosSupp>0) {
			document.getElementById("jodu").innerHTML="From "+sDate+"<br>arrival at 16h00";
		}
		else {
			document.getElementById("jodu").innerHTML="From "+sDate+" 16h00";
		}
		
		debut=sDate;
		sStartDate=sDate;
	}
	else if(choix=="au") {
		document.forms["saisie"].elements["au"].value=sDate;
		
		if (infosSupp>0) {
			document.getElementById("joau").innerHTML="To "+sDate+"<br>departure à 10h00";
		}
		else {
			document.getElementById("joau").innerHTML="To "+sDate+" 10h00";
		}
		fin=sDate;
	}
	
	// verification : fin > debut && fin-debut <4 semaines
	if (debut!="" && fin != "") {
		// vérifier que fin > debut
		
		// recupération des variables des 2 dates
		var tab_debut=debut.split("/");
		var tab_fin=fin.split("/");
		
		// création des 2 objets dates
		var dDebut=new Date((1*tab_debut[2]), ((1*tab_debut[1])-1), (1*tab_debut[0]));		
		var dFin=new Date((1*tab_fin[2]), ((1*tab_fin[1])-1), (1*tab_fin[0]));
		
		// récupération des 2 timestamps						
		var tDebut=dDebut.getTime();
		var tFin=dFin.getTime();
		//alert("debut="+dDebut.toDateString()+"  et fin="+dFin);
		// verification des 2 conditions
		if (tFin>tDebut) {
			// verifier que le séjour dure moins de 4 semaines
			var periodeMax=1000*60*60*24*7*4;
			if ( (tFin-tDebut) > periodeMax) {
				alert("For a stay longuer than 4 weeks \n please call us : \n  on 0 825 801 44 \n Thank you !");
			}
			else {
				readyToSendDates=true;
				//alert("ok pour les dates");
			}
		}
		else {
			alert(" Please, check the validity of your stay dates  \n Thank you ! ");			
		}
	}
	document.getElementById("calendrier").style.display="none";
	
	//}
}


function init(){
	/*
	if (typeof(dialogArguments) != "undefined")
			{DateIsValid(window.dialogArguments.DateValue) ? sStartDate = window.dialogArguments.DateValue : sStartDate = Today_JJMMAAAA()}
		else
			{
	*/
	if (sStartDate=="") {sStartDate = Today_JJMMAAAA()}

	//alert(sStartDate);
	//}
	
	//	Ecriture des jours de semaine
	for (i=1; i<=7; i++) {document.getElementById("DayName" + i ).innerHTML = aDayNames[i]}
	//	Ecriture des mois
	//for (i=1; i<=12; i++) {document.all("M" + i ).innerHTML = "<SPAN CLASS=ListCell onclick=\"ChangeDate('m'," + i + ")\">" + aMonthName[i] + "</SPAN>"}	
	//	Ecriture du calendrier
	WriteDateCells(sStartDate)
	CreateYearList()
	document.getElementById("calendrier").style.display="block";
}
function DateIsValid(sDate){
	if (sDate.length < 8){return false}
    var iDay = sDate.substring(0,2);
    var iMonth = sDate.substring(3,5);
    var iYear = sDate.substring(6);
	iDay = iDay*1
	iMonth--	
	iYear = iYear*1
	var rDate = new Date(iYear,iMonth,iDay,0,0)
	if(rDate.toString() == "NaN"){return false}
	return true
}
function DateJscFormat(StringDateFr){
    var tts1=new Date();
    var iDay = StringDateFr.substring(0,2);
    var iMonth = StringDateFr.substring(3,5);
    var iYear = tts1.getFullYear();
	iDay = iDay*1
	iMonth--	
	//iYear = iYear*1
	var rDate = new Date(iYear,iMonth,iDay,0,0)
	return(rDate)
}
function Today_JJMMAAAA(){
	var oDate = new Date()
	var sDay = oDate.getDate()
	var sMonth = (oDate.getMonth()+1)
	if (sDay < 10) {sDay = "0" + sDay}
	if (sMonth < 10) {sMonth = "0" + sMonth}
	return( sDay  + "/" + sMonth + "/" + oDate.getFullYear())
}




function verif_2010() {
	//alert(infosSupp);
	if ( !readyToSendDates) { alert(" Please, indicate your dates."); }
	else if (document.forms["saisie"].elements["region"].value=="none" ) {alert(" Please, indicate a destination.");}
	else if (document.forms["saisie"].elements["capa"].value=="none" && infosSupp<3) {alert(" Please, indicate your capacity.");}
	else {
		if(infosSupp>=2) {
			document.getElementById("a_compteur").src="blank.htm";
			document.getElementById("a_compteur").style.display="inline";
			
		}
		//alert("Prêt pour envoi");
		document.forms["saisie"].submit();
	}

}

