/**
* change dates of check-in and check-out
*
*/

changeDatesModule = 1;
durationOfHotelStay = 1;
dayList = new Array();

function changeDatesRegisterEventHandlers() {

	if (document.getElementById('checkInDay')) {

		// check-in date
		var checkInDay 			= document.getElementById('checkInDay');
		var checkInMonth 		= document.getElementById('checkInMonth');
		var checkInYear 		= document.getElementById('checkInYear');
		checkInDay.onchange 	= function() { changeDatesIncreaseCheckOut(); };
		checkInMonth.onchange	= function() { changeDatesFixNumberOfDays('checkIn'); changeDatesIncreaseCheckOut(); };
		checkInYear.onchange 	= function() { changeDatesFixNumberOfDays('checkIn'); changeDatesIncreaseCheckOut(); };

		// check-out date
		var checkOutDay 		= document.getElementById('checkOutDay');
		var checkOutMonth 		= document.getElementById('checkOutMonth');
		var checkOutYear 		= document.getElementById('checkOutYear');
		checkOutDay.onchange 	= function() { changeDatesSetDuration(); };
		checkOutMonth.onchange	= function() { changeDatesFixNumberOfDays('checkOut'); changeDatesSetDuration(); };
		checkOutYear.onchange 	= function() { changeDatesFixNumberOfDays('checkOut'); changeDatesSetDuration(); };

		// set actual duration
		changeDatesSetDuration();

		// set actual days of month
		// changeDatesFixNumberOfDays('checkIn');
		// changeDatesFixNumberOfDays('checkOut');

		return true;
	} else {
		return false;
	}
}

function getDayList(id) {
	if (dayList.length==0) {
		var checkInDay 		= document.getElementById(id);
		var counter 		= 0;
		while (counter<checkInDay.length) {
			dayList[counter+1] = checkInDay.options[counter].text;
			counter++;
		}
	}
}

function changeDatesFixNumberOfDays(targetId) {

	var checkInDay 		= document.getElementById(targetId + 'Day');
	var checkInMonth 	= document.getElementById(targetId + 'Month');
	var checkInYear 	= document.getElementById(targetId + 'Year');
	var month 			= parseInt(checkInMonth.value) - 1; 
	var year 			= parseInt(checkInYear.value);
	daysInMonth 		= new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
		daysInMonth[1] = 29;
	}
	
	var restoredDay 	= checkInDay.value;

	getDayList(targetId + 'Day');
	checkInDay.length 	= 0;
	for (i=1; i<=daysInMonth[month]; i++) {
		newDay = new Option(dayList[i], i);
		checkInDay.options[checkInDay.length] = newDay;
	}
	
	if (restoredDay <= daysInMonth[month]) {
		checkInDay.value = restoredDay;
	} else {
		checkInDay.value = daysInMonth[month];
	}

	return true;
}

function changeDatesIncreaseCheckOut(){

	// get checkInDate from form
	var checkInDay 		= document.getElementById('checkInDay');
	var checkInMonth 	= document.getElementById('checkInMonth');
	var checkInYear 	= document.getElementById('checkInYear');
	var checkInDate 	= new Date(parseInt(checkInYear.value), parseInt(checkInMonth.value)-1, parseInt(checkInDay.value));

	// calculate checkOutDate
	var checkOutDate 	= new Date(Date.parse(checkInDate) + durationOfHotelStay*86400000);

	// set checkOutDate in form
	var checkOutDay 	= document.getElementById('checkOutDay');
	var checkOutMonth 	= document.getElementById('checkOutMonth');
	var checkOutYear 	= document.getElementById('checkOutYear');
	checkOutDay.value	= checkOutDate.getDate();
	checkOutMonth.value = checkOutDate.getMonth()+1;
	var year = checkOutDate.getYear();
	if (year < 1900)
		year = year + 1900;
	checkOutYear.value 	= year;
	return true;
};

function changeDatesSetDuration(){

	// get checkInDate
	var checkInDay 		= document.getElementById('checkInDay');
	var checkInMonth 	= document.getElementById('checkInMonth');
	var checkInYear 	= document.getElementById('checkInYear');
	var checkInDate 	= new Date(parseInt(checkInYear.value), parseInt(checkInMonth.value)-1, parseInt(checkInDay.value));

	// get checkOutDate
	var checkOutDay 	= document.getElementById('checkOutDay');
	var checkOutMonth 	= document.getElementById('checkOutMonth');
	var checkOutYear 	= document.getElementById('checkOutYear');
	var checkOutDate 	= new Date(parseInt(checkOutYear.value), parseInt(checkOutMonth.value)-1, parseInt(checkOutDay.value));
	
	// calculate duration
	var duration 		= parseInt((Date.parse(checkOutDate) - Date.parse(checkInDate))/86400000);
	
	// if duration is greater then 0 set global value 
	if (duration > 0) {
		durationOfHotelStay = duration;
	}

	return true;
}