;(function($){
	var now = new Date();
	var one_day = 1000*60*60*24;
	$.fn.extend({
		wct: function() {
			// set up sexy combo for lodging
			$('select.bkng-lodge-slct').sexyCombo({skin:'bkng-sexy'});
			
			// set up datepicker for date fields
			$('#start-date').datepicker({
				showOn: 'focus',  // no automatic anything!  click only!
				onSelect: $(this).wct_set_arrival,
				minDate: new Date(now.getTime() - one_day)
			});
			$('#end-date').datepicker({
				showOn: 'focus',  // no automatic anything!  click only!
				onSelect: $(this).wct_set_departure,
				minDate: new Date(now.getTime())
			});
			$('.bkng-date-field').attr('readonly','readonly');
			
			// set up form validation
			$(this).find('form').submit(function() {
				$(this).wct_check_dates();
			});
		}

		,wct_set_arrival: function(dateText, inst) {
			$(this).wct_update_hiddens('arrival', dateText);
		}

		,wct_update_hiddens: function(whichdate, chosenvalue) {
			var arrival, departure;

			arrival = (whichdate == 'arrival')
			        ? new Date(chosenvalue)
			        : new Date($('#start-date').val());

			departure = (whichdate == 'departure')
			          ? new Date(chosenvalue)
			          : new Date($('#end-date').val());

			var now = new Date();
			var one_day=1000*60*60*24;
			var nights = Math.max(
					1
					,Math.ceil($('#nights').val())
				);

			if (isNaN(arrival.getTime())) {
				arrival = new Date(now.getTime() + one_day);
			}

			if (isNaN(departure.getTime())) {
				departure = new Date(now.getTime() + (one_day * 2));
			}
			$('#sDay').val(arrival.getDate());
			if($('#sDay').val().length == 1) {
				$('#sDay').val('0'+$('#sDay').val());
			}
			$('#sMonth').val(arrival.getMonth() + 1);  // Jan = 0
			if($('#sMonth').val().length == 1) {
				$('#sMonth').val('0'+$('#sMonth').val());
			}
			$('#sYear').val(arrival.getFullYear());

			if (whichdate == 'arrival') {
				departure = new Date(arrival.getTime() + (one_day * nights));
				$('#end-date').val($(this).wct_format_date(departure.getTime()));
				$('#end-date').datepicker(
						'option'
						,'minDate'
						,new Date(arrival.getTime() + one_day)
					);
				$('#end-date').datepicker(
						'option'
						,'defaultDate'
						,departure
				);
			}

			nights = Math.ceil(
					(departure.getTime() - arrival.getTime()) / (one_day)
				);
			nights = Math.max(nights, 1);
			$('#nights').val(nights);
		}

		,wct_set_departure: function(dateText, inst) {
			$(this).wct_update_hiddens('departure', dateText);
		}
		
		,wct_format_date: function(ms) {
			var thedate;
			thedate = new Date(ms);
			return (thedate.getMonth() + 1) + '/' + $(this).wct_zeropad(thedate.getDate(),2) + '/' + thedate.getFullYear();  // Jan = 0
		}

		,wct_zeropad: function(num, zeros) {
			var retval = '';
			var numstr = num.toString();
			for (var i=numstr.length; i < zeros; i++) {
				retval += '0';
			}
			retval += numstr;
			return retval;
		}

		,wct_check_dates: function() {
			if ( $('#start-date').val() == 'Check-In'
					|| $('#end-date').val() == 'Check-Out'
					){
				$('#start-date').val($(this).wct_format_date(now.getTime()));
				$('#end-date').val($(this).wct_format_date(now.getTime() + (one_day)));
			}
		}
	});
})(jQuery);

$(document).ready(function() {
	$('#jrs_calendar_form').wct();
});

