/**
 * get the current date 
 */


jQuery(document).ready(function(){
	
	var arrival_month_id 	= '#arrival-month';
	var arrival_year_id 	= '#arrival-year';
	var arrival_day_id 		= '#arrival-day';
	var departure_month_id	= '#departure-month';
	var departure_year_id	= '#departure-year';
	var departure_day_id	= '#departure-day';

	// set deafult value for booking dialog
	setDialogDefaultValue();
	// set deafult value height for inner page
	setContentHeight();

	// catch date change event in booking pop up 
	jQuery(arrival_day_id).change(function(){
		validateDate();	
	});
	jQuery(departure_day_id).change(function(){
		validateDate();	
	});
	
	jQuery(arrival_month_id).change(function(){
		jQuery(arrival_day_id).html(generateDays(jQuery(arrival_month_id).val(), jQuery(arrival_year_id).val()));	
		validateDate();	
	});
	jQuery(arrival_year_id).change(function(){
		jQuery(arrival_day_id).html(generateDays(jQuery(arrival_month_id).val(), jQuery(arrival_year_id).val()));	
		validateDate();	
	});
	jQuery(departure_month_id).change(function(){
		jQuery(departure_day_id).html(generateDays(jQuery(arrival_month_id).val(), jQuery(arrival_year_id).val()));
		validateDate();		
	});
	jQuery(departure_year_id).change(function(){
		jQuery(departure_day_id).html(generateDays(jQuery(arrival_month_id).val(), jQuery(arrival_year_id).val()));
		validateDate();		
	});	
});

function setDialogDefaultValue()
{
	
	var arrival_month_id 	= '#arrival-month';
	var arrival_year_id 	= '#arrival-year';
	var arrival_day_id 		= '#arrival-day';
	var departure_month_id	= '#departure-month';
	var departure_year_id	= '#departure-year';
	var departure_day_id	= '#departure-day';
	
	/**
	 * HIDE ERROR MESSAGE
	 */
	jQuery('.reservation-error').html('').hide();
	
	var arrivalDate = new Date();
	var departureDate = new Date();
	departureDate.setDate(arrivalDate.getDate() + 1);
	
	/**
	 * YEAR : get 2 nearest year
	 */
	var optionString = '';
	for ( var i = 0; i < 2; i++) {
		var yearValue = arrivalDate.getFullYear() + i; 
		if (i == arrivalDate.getFullYear())
			optionString += '<option selected="selected">' + yearValue + '</option>';
		else 
			optionString += '<option>' + yearValue + '</option>';
		
	}
	jQuery(arrival_year_id).html(optionString);
	
	optionString = '';
	for ( var i = 0; i < 2; i++) {
		var yearValue = departureDate.getFullYear() + i; 
		if (i == departureDate.getFullYear())
			optionString += '<option selected="selected">' + yearValue + '</option>';
		else 
			optionString += '<option>' + yearValue + '</option>';
	}
	jQuery(departure_year_id).html(optionString);
	
	jQuerydays = generateDays(jQuery(arrival_month_id).val(), 
			jQuery(arrival_year_id).val(), 
			arrivalDate.getDate());	
	jQuery(arrival_day_id).html(jQuerydays);
	
	jQuerydays = generateDays(jQuery(departure_month_id).val(), 
			jQuery(departure_year_id).val(), 
			departureDate.getDate());
	jQuery(departure_day_id).html(jQuerydays);
	
	/**
	 * set default value
	 */
	jQuery('#arrival-day option[value=' + arrivalDate.getDate() + ']').attr('selected', 'selected');
	jQuery('#arrival-month option[value=' + (arrivalDate.getMonth() + 1) + ']').attr('selected', 'selected');
	jQuery('#arrival-year option[value=' + arrivalDate.getFullYear() + ']').attr('selected', 'selected');
	
	
	jQuery('#departure-day option[value=' + departureDate.getDate() + ']').attr('selected', 'selected');
	jQuery('#departure-month option[value=' + (departureDate.getMonth() + 1) + ']').attr('selected', 'selected');
	jQuery('#departure-year option[value=' + departureDate.getFullYear() + ']').attr('selected', 'selected');
}

function setDefaulteValue(){

	var arrivalDate = new Date();
	var departureDate = new Date();
	departureDate.setDate(departureDate.getDate() + 1);
	
	jQuery('#arrival-day option[value=' + arrivalDate.getDate() + ']').attr('selected', 'selected');
	jQuery('#arrival-month option[value=' + (arrivalDate.getMonth() + 1) + ']').attr('selected', 'selected');
	jQuery('#arrival-year option[value=' + arrivalDate.getFullYear() + ']').attr('selected', 'selected');
	
	
	jQuery('#departure-day option[value=' + departureDate.getDate() + ']').attr('selected', 'selected');
	jQuery('#departure-month option[value=' + (departureDate.getMonth() + 1) + ']').attr('selected', 'selected');
	jQuery('#departure-year option[value=' + departureDate.getFullYear() + ']').attr('selected', 'selected');
}

function validateDate()
{
	
	var arrival_month_id 	= '#arrival-month';
	var arrival_year_id 	= '#arrival-year';
	var arrival_day_id 		= '#arrival-day';
	var departure_month_id	= '#departure-month';
	var departure_year_id	= '#departure-year';
	var departure_day_id	= '#departure-day';
	
	var arrivalDate = new Date(jQuery(arrival_year_id).val(), jQuery(arrival_month_id).val() - 1, jQuery(arrival_day_id).val());
	var departureDate = new Date(jQuery(departure_year_id).val(), jQuery(departure_month_id).val() - 1, jQuery(departure_day_id).val());
	var currentDate = new Date();
	currentDate.setHours(0, 0, 0, 0);
	
	if (currentDate > arrivalDate ){
		arrivalDate = new Date();
		jQuery(arrival_day_id + ' option').removeAttr('selected');
		jQuery(arrival_day_id + ' option[value=' + arrivalDate.getDate() + ']').attr('selected', 'selected');
		
		t = jQuery(arrival_day_id + ' option[selected=selected]').val();
		if (t == arrivalDate.getMonth())
			jQuery(arrival_month_id + ' option').removeAttr('selected');
			jQuery(arrival_month_id + ' option[value=' + (arrivalDate.getMonth() + 1) + ']').attr('selected', 'selected');
			
		t = jQuery(arrival_day_id + ' option[selected=selected]').val();
		if (t == arrivalDate.getFullYear())
			jQuery(arrival_year_id + ' option').removeAttr('selected');
			jQuery(arrival_year_id + ' option[value=' + arrivalDate.getFullYear() + ']').attr('selected', 'selected');
			
		//jQuery('.reservation-error').html('Departure date must be later than arrival date').show();
		//return;
	}
	else 
		jQuery('.reservation-error').html('').hide();
	
	if (arrivalDate > departureDate){		
		var departureDate = new Date(arrivalDate);
		departureDate.setDate(departureDate.getDate() + 1);
		
		jQuery(departure_day_id + ' option').removeAttr('selected');
		jQuery(departure_day_id + ' option[value=' + departureDate.getDate() + ']').attr('selected', 'selected');
		
		t = jQuery(departure_month_id + ' option[selected=selected]').val();
		if (( t == null) || ( t != departureDate.getMonth())) {
			jQuery(departure_month_id + ' option').removeAttr('selected');
			jQuery(departure_month_id + ' option[value=' + (departureDate.getMonth() + 1) + ']').attr('selected', 'selected');
		}
			
		t = jQuery(departure_year_id + ' option[selected=selected]').val();
		if (( t == null) || (t != departureDate.getFullYear())) {
			jQuery(departure_year_id + ' option').removeAttr('selected');
			jQuery(departure_year_id + ' option[value=' + departureDate.getFullYear() + ']').attr('selected', 'selected');
		}
		
//		jQuery('.reservation-error').html('Departure date must be later than arrival date').show();
		//return;
	}
	else 
		jQuery('.reservation-error').html('').hide();
}

function generateDays(month, year, currentDay){
	
//	var days = '<option value="1">1</option><option value="2" selected="selected">2</option><option value="3">3</option>' + 
//	'<option value="4">4</option><option value="5">5</option><option value="6">6</option>' + 
//	'<option value="7">7</option><option value="8">8</option><option value="9">9</option>' +
//	'<option value="10">10</option><option value="11">11</option><option value="12">12</option>' +
//	'<option value="13">13</option><option value="14">14</option><option value="15">15</option>' +
//	'<option value="16">16</option><option value="17">17</option><option value="18">18</option>' +
//	'<option value="19">19</option><option value="20">20</option><option value="21">21</option>' +
//	'<option value="22">22</option><option value="23">23</option><option value="24">24</option>' +
//	'<option value="25">25</option><option value="26">26</option><option value="27">27</option>' +
//	'<option value="28">28</option>';
	
	dayCount = daysInMonth(month - 1, year);
	days = '';
	for ( var int = 1; int <= dayCount; int++) {
		if (int == currentDay) {
			days += '<option value="' + int + '" selected="selected">' + int + '</option>';
		}
		else{
			days += '<option value="' + int + '">' + int + '</option>';			
		}
	}
	return days;
	
}

function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

/**
 * Set inner content height to fix with the widget (if it's too short)
 */
function setContentHeight(){
	if (jQuery('.middle-inner').height() < jQuery('.widget').outerHeight(true) ){
		jQuery('.middle-inner').height(jQuery('.widget').outerHeight(true));
	}
}



