$(document).ready(function(){
	set_next_button_state('disable');
	
	$('td.high,td.low,td.xmas,td.east,td.chny,td.gold').click(function(){
	
		var tdStmp = $(this).attr('id');
		var tdStmp = tdStmp.replace('i', '');
	
		// CHECK-IN
		if ($('input#dateIn').val() == '') { check_in(tdStmp, 'add')
		}
		// CHECK-OUT
		else if (($('input#dateIn').val() != '') && ($('input#dateOt').val() == '')){
			var dateIn = $('input#dateIn').val();
			
			// IF THE CHECK-OUT DATE IS BEFORE OR EQUAL TO THE CHECK-IN DATE
			if(dateIn >= tdStmp) {
				check_in(dateIn, 'remove');
				check_in(tdStmp, 'add');
								
			} else {
				check_out(tdStmp, 'add');
				
				var dateOt = $('input#dateOt').val();
		
				check_between(dateIn, dateOt, 'add');
				get_days_and_nights(dateIn, dateOt, 'add');
				get_date_range(dateIn, dateOt, 'add');
				
				set_next_button_state('enable');
			}
		}
		else if (($('input#dateIn').val() != '') && ($('input#dateOt').val() != '')){
			var dateIn = $('input#dateIn').val();
			var dateOt = $('input#dateOt').val();
	
			check_in(dateIn, 'remove');
			check_out(dateOt, 'remove');
			check_between(dateIn, dateOt, 'remove');
			get_date_range(dateIn, dateOt, 'remove');
			get_days_and_nights(dateIn, dateOt, 'remove');
			
			check_in(tdStmp, 'add')
		}
	});
});

// SET THE STATE (ENABLED/DISABLED) OF THE "NEXT >" BUTTON
function set_next_button_state(action) {
	
	if(action == 'enable') {
		$('input#nextDate').removeClass('disabled');
		$('input#nextDate').css('opacity','1.0');
		$('input#nextDate').removeAttr('disabled');

	} else {
		$('input#nextDate').attr('disabled','disabled');
		$('input#nextDate').addClass('disabled');
		$('input#nextDate').css('opacity','0.2');
	}
}

// SET OR CANCEL CHECK-IN DATE
function check_in(tdStmp, action) {

	if(action == 'add') {
		$('td#ciClass').addClass('completed');
		$('td#ciDate').addClass('completed');
		$('td#i' + tdStmp).addClass('checkIn');
		$('td#ciDate').text('' + format_date(tdStmp));
		$('input#dateIn').val(tdStmp);
		set_next_button_state('disable');
		
	} else {
		$('td#ciClass').removeClass('completed');
		$('td#ciDate').removeClass('completed');
		$('td#i' + tdStmp).removeClass('checkIn');
		$('td#ciDate').text('Pending');
		$('input#dateIn').val('');
	}
}

// SET OR CANCEL CHECK-OUT DATE
function check_out(tdStmp, action) {
	
	if(action == 'add') {
		$('td#coClass').addClass('completed');
		$('td#coDate').addClass('completed');
		$('td#i' + tdStmp).addClass('checkOut');
		$('td#coDate').text('' + format_date(tdStmp));
		$('input#dateOt').val(tdStmp);
		
	} else {
		$('td#coClass').removeClass('completed');
		$('td#coDate').removeClass('completed');
		$('td#i' + tdStmp).removeClass('checkOut');
		$('td#coDate').text('Pending');
		$('input#dateOt').val('');
	}
}

// SET DATES BETWEEN CHECK-IN AND CHECK-OUT
function check_between(dateIn, dateOt, action) {

	var date1 = '';
	var date2 = '';
	var x = '';
		
	date1 = parseInt(dateIn) + 86400;
	date2 = parseInt(dateOt) - 86400;

	if(action == 'add') {
		while(date1 <= date2) {
			$('td#i' + date1).addClass('checkBetween');
			x += date1 + '|';
			date1 += 86400;
		}
	} else {
		while(date1 <= date2) {
			$('td#i' + date1).removeClass('checkBetween');
			x += date1 + '|';
			date1 += 86400;
		}
	}
	
	x = x == '' ? 'NULL' : x.substring(0, x.length - 1);

	if(action == 'add') {
		$('input#dateBt').val(x);
	} else {
		$('input#dateBt').val('');
	}
}

function format_date(tdStmp) {
	
	var dat = new Date([tdStmp]*1000);
	var mts = ['Jan.','Feb.','Mar.','Apr.','May.','Jun.','Jul.','Aug.','Sep.','Oct.','Nov.','Dec.'];

    var yer = dat.getFullYear();
	var mon = mts[dat.getMonth()];
    var day = dat.getDate();
	
	if(day < 10) day = '0' + day;
	 
	return day + ' ' + mon + ' ' + yer;
}

// Get the range of dates based upon dateIn and dateOt
// I.e.: 01 Jun. - 08 Jun.
function get_date_range(dateIn, dateOt, action) {
	
	if(action == 'add') {
		var dIn = new Date([dateIn]*1000);
		var dOt = new Date([dateOt]*1000);
		var dtR = '';
		
		var mts = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
	
		var dy1 = dIn.getDate();
		var dy2 = dOt.getDate();
		
		if(dy1 < 10) dy1 = '0' + dy1;
		if(dy2 < 10) dy2 = '0' + dy2;
	
		var mn1 = mts[dIn.getMonth()];
		var mn2 = mts[dOt.getMonth()];
		 
		dtR = dy1 + ' ' + mn1 + ' - ' + dy2 + ' ' + mn2;
		
		$('td#tdDate').text('' + dtR);
		$('td#tdDate').addClass('completed');
		$('input#dateDt').val(dtR);
	
	} else {
		$('td#tdDate').removeClass('completed');
		$('td#tdDate').text('Awaiting Action');
		$('input#dateDt').val('');
	}
}

// Get the number of days and nights for the reservation
// I.e.: 7 Nights / 6 Days
function get_days_and_nights(dateIn, dateOt, action) {

	var plural = '';
	var dayNig = '';
	var x = '';
	
	if(action == 'add') {
		x = ((dateOt - dateIn) / 86400);
	
		if(x > 1) plural = 's';
		
		dayNig = x + ' Night' + plural + ' / ' + (x + 1) + ' Days';
	
		$('td#tsDate').text('' + dayNig);
		$('td#tsClass').addClass('completed');
		$('td#tsDate').addClass('completed');
		$('input#dateDn').val(dayNig);
		
	} else {
		$('td#tsDate').text('' + dayNig);
		$('td#tsClass').removeClass('completed');
		$('td#tsDate').removeClass('completed');
		$('td#tsDate').text('Pending');
		$('input#dateDn').val('');
	}
}
