var fltDelay = 1;

function initPageSelects() {
	var tomorrow = new Date();
	tomorrow.setDate(tomorrow.getDate() + fltDelay);

	var inOneWeek = new Date();
	inOneWeek.setDate(inOneWeek.getDate() + fltDelay + 7);

	//departure
	fillDepDay("checkInDay", tomorrow, tomorrow.getDate(), "","","DD");
	fillDepMonth("checkInMonthYear",14, "","",tomorrow,"YYYYMM");
	//fillDayOfTheWeek("W_D_DAY", "checkInDay", "checkInMonthYear", "DD", "YYYYMM");
	//return
	var firstSelectableDay = new Date(tomorrow);
	if (tomorrow.getMonth() != inOneWeek.getMonth())
		firstSelectableDay.setDate(1);
	
	fillDepDay("checkOutDay", firstSelectableDay, inOneWeek.getDate(), "","","DD");
	fillDepMonth("checkOutMonthYear",18, "","", inOneWeek,"YYYYMM");
	//fillDayOfTheWeek("W_R_DAY", "checkOutDay", "checkOutMonthYear", "DD", "YYYYMM");
}

function initAllCalendars() {
	//we init the calendars one by one. If we need a new calendar, we need to do a new initialization here!
	//The parameters are: idImage, idDiv, idCalendar, idDay, idMonthYear, nbrMonthsToShow, idWeekDay, calendarUpOrDown, executeAfterSelectDate, executeAfterSelectMonth, dayMask, monthYearMask
	initDoubleCalendier("img_cal_depart", "cal1Container", "calendar1","checkInDay", "checkInMonthYear",14, "W_D_DAY", new calendarPosition(0, 0),"updateReturnDate();","refillDepDay('checkInMonthYear','checkInDay','','','DD','YYYYMM');","DD","YYYYMM");
	initDoubleCalendier("img_cal_arrivee", "cal2Container", "calendar2","checkOutDay", "checkOutMonthYear",14, "W_R_DAY", new calendarPosition(0, 0),"updateDepartureDate();","refillDepDay('checkOutMonthYear','checkOutDay','','','DD','YYYYMM');","DD","YYYYMM");

	//	On rajoute les comportements onchange sur les select (via JQuery, puisqu'il est disponible)
	$('#checkInDay').change(function() {
		updateReturnDate();
	});
	$('#checkInMonthYear').change(function() {
		refillDepDay('checkInMonthYear','checkInDay','','','DD','YYYYMM');
		updateReturnDate();
	});
	$('#checkOutDay').change(function() {
		updateDepartureDate();
	});
	$('#checkOutMonthYear').change(function() {
		refillDepDay('checkOutMonthYear','checkOutDay','','','DD','YYYYMM');
		updateDepartureDate();
	});
}

function updateReturnDate(){
	//we will update the arrival date if the departure date is bigger.
	var departureYearMonth = document.getElementById("checkInMonthYear").value;
	var departureDay = document.getElementById("checkInDay").value;
	var numericDepartureDate = departureYearMonth*100 + departureDay;
	
	var returnYearMonth = document.getElementById("checkOutMonthYear").value;
	var returnDay = document.getElementById("checkOutDay").value;
	var numericReturnDate = returnYearMonth*100 + returnDay;
	
	if(numericReturnDate > numericDepartureDate)
		return;
	
	
	document.getElementById("checkOutMonthYear").value = departureYearMonth;
	refillDepDay("checkOutMonthYear","checkOutDay","","","DD","YYYYMM");
	document.getElementById("checkOutDay").value  = departureDay;
	//fillDayOfTheWeek("W_R_DAY", "checkOutDay", "checkOutMonthYear", "DD", "YYYYMM");
	
}

function updateDepartureDate(){
	
	//we will update the arrival date if the departure date is bigger.
	
	var departureYearMonth = document.getElementById("checkInMonthYear").value;
	var departureDay = document.getElementById("checkInDay").value;
	var numericDepartureDate = departureYearMonth*100 + departureDay;
	
	var returnYearMonth = document.getElementById("checkOutMonthYear").value;
	var returnDay = document.getElementById("checkOutDay").value;
	var numericReturnDate = returnYearMonth*100 + returnDay;
	
	if(numericReturnDate > numericDepartureDate)
		return;
	
	
	document.getElementById("checkInMonthYear").value = returnYearMonth;
	refillDepDay("checkInMonthYear","checkInDay","","","DD","YYYYMM");
	document.getElementById("checkInDay").value  = returnDay;
	//fillDayOfTheWeek("W_D_DAY", "checkInDay", "checkInMonthYear", "DD", "YYYYMM");

}

function checkform(id_form) {
	$('#'+id_form).find('form').each(function() {
		classe = $(this).parent().attr('class');
		$(this).submit(function() {
			dest = $('#destinationName').attr('value');
			arrivee = $('#checkInMonthYear').attr('value')+$('#checkInDay').attr('value');
			depart = $('#checkOutMonthYear').attr('value')+$('#checkOutDay').attr('value');
			if(dest == undefined) {
				form_error('Veuillez choisir une destination.', $(this).find('p'));
				return false;
			}
			if(arrivee == depart) {
				form_error('Veuillez choisir une date de départ différente de celle d\'arrivee.', $(this).find('p'));
				return false;
			}
			if(classe == 'tarifs') {
				//	Spécial pour le formulaire hotels : on crée un autre formulaire, qu'on remplit avec les valeurs qu'on a modifiées nous-mêmes
				action = $(this).attr('action');
				$(this).after('<form id="moteur_cache" method="get" action="'+action+'"></form>');
				$('#moteur_cache').append('<input type="hidden" name="hotelKey" value="'+$('input[@name=hotelKey]').val()+'">');
				$('#moteur_cache').append('<input type="hidden" name="checkInDate" value="'+$('#checkInMonthYear').val()+$('#checkInDay').val()+'">');
				$('#moteur_cache').append('<input type="hidden" name="checkOutDate" value="'+$('#checkOutMonthYear').val()+$('#checkOutDay').val()+'">');
				$('#moteur_cache').append('<input type="hidden" name="numberOfRooms" value="'+$('#numberOfRooms').val()+'">');
				$('#moteur_cache').append('<input type="hidden" name="numberOfAdults" value="'+$('#numberOfAdults').val()+'">');
				$('#moteur_cache').append('<input type="hidden" name="numberOfChildren" value="'+$('#numberOfChildren').val()+'">');
				$('#moteur_cache').submit();
				return false;
			}
		});
	});
	
	//	Cas particulier : formulaire 
}

function form_error(msg, elt) {
	$(elt).addClass('alert');
	$(elt).html(msg);
}


//when the page is load, all the calendars are initialized
//YAHOO.util.Event.addListener(window, "load", initPageSelects);
//YAHOO.util.Event.addListener(window, "load", initAllCalendars);
//	On modifie le comportement, pour qu'il détecte la présence d'un div #moteur
$(document).ready(function() {
	form = false;
	if(document.getElementById('moteur')) {
		form = true;
		nom_form = 'moteur';
	}
	else if(document.getElementById('moteur_home')) {
		form = true;
		nom_form = 'moteur_home';
	}
	if(form) {
		initPageSelects();
		initAllCalendars();
		checkform(nom_form);
	}
});