jQuery(function($){
	var checkoutSelected = 0;
	var format = document.getElementById('format').value;
	$('li.check-in-date select, li.check-out-date select').remove();
	$('li.check-in-date label').after('<input id="checkInDateTemp" name="checkInDateTemp" type="text" size="10" />');
	$('li.check-out-date label').after('<input id="checkOutDateTemp" name="checkOutDateTemp" type="text" size="10" />');
	$('#checkInDateTemp').datepicker({showOn:'both', buttonImage:'/themes/Octopus Default/images/ico_calendar.gif', buttonImageOnly:true, hideIfNoPrevNext:true, beforeShow:beforeCheckIn, onSelect: selectCheckIn }, $.datepicker.setDefaults($.datepicker.regional[format]));
	$('#checkOutDateTemp').datepicker({showOn:'both', buttonImage:'/themes/Octopus Default/images/ico_calendar.gif', buttonImageOnly:true, hideIfNoPrevNext:true, beforeShow:beforeCheckOut,	onSelect:selectCheckOut });
	
	function beforeCheckIn(input) {
		return customRangeIn(input);
	}
	
	function beforeCheckOut(input) {
		return customRangeOut(input);
	}
	
	function selectCheckIn(date) {
		$('#checkOutDateTemp').datepicker('enable');
		updateDuration();
	}
	
	function selectCheckOut(date) {
		updateDuration();
	}
	
	function updateDuration() {
		var checkInDate  = $('#checkInDateTemp').datepicker('getDate');
		var checkOutDate = $('#checkOutDateTemp').datepicker('getDate');
		if (checkInDate==null)
		{
			checkInDate  = getCheckoutDate($("#checkInDateTemp").val(),$.datepicker.regional[format].dateFormat);
		}
		if(checkOutDate != null){
			if (checkInDate && checkOutDate) {
				var duration = days_between(checkInDate, checkOutDate); 
				}
			if (duration != undefined) {
				if (duration == 1) { 
					$('#dynamic-duration').text('Duration: '+duration+' night'); 
					document.getElementById('nights').value=duration;
				} else if (duration > 30) {
					var dt = addDays($('#checkInDateTemp').datepicker('getDate'),1);
					$('#checkOutDateTemp').val($.datepicker.formatDate($.datepicker.regional[format].dateFormat, dt));	
					$('#dynamic-duration').text('Duration: 1 night');
					document.getElementById('nights').value=duration;
				} else { 
					$('#dynamic-duration').text('Duration: '+duration+' nights'); 
					document.getElementById('nights').value=duration;
					}
			}
		}else{
			var checkOutDate = addDays($('#checkInDateTemp').datepicker('getDate'),1);
			//alert("checkInDate : " + checkInDate);
			//alert("checkOutDate : " + checkOutDate);
			if (checkInDate && checkOutDate) { 
				var duration = days_between(checkInDate, checkOutDate); 
				//alert("duration : " + duration);
				}
			if (duration != undefined) {
				if (duration == 1) { 
					//alert("equal to one");
					var dt = addDays($('#checkInDateTemp').datepicker('getDate'),1);
					$('#checkOutDateTemp').val($.datepicker.formatDate($.datepicker.regional[format].dateFormat, dt));
					$('#dynamic-duration').text('Duration: '+duration+' night'); 
					document.getElementById('nights').value=duration;
				} else if (duration > 30) {
					//alert("greater than 30");
					var dt = addDays($('#checkInDateTemp').datepicker('getDate'),1);
					$('#checkOutDateTemp').val($.datepicker.formatDate($.datepicker.regional[format].dateFormat, dt));	
					$('#dynamic-duration').text('Duration: 1 night');
					document.getElementById('nights').value=duration;
				} else { 
					//alert("less than 30");
					$('#dynamic-duration').text('Duration: '+duration+' nights'); 
					document.getElementById('nights').value=duration;
					}
			}	

		}
	}
	
	function customRangeIn(input) { 
	    var checkInDate  = new Date();
		var checkOutDate = $('#checkOutDateTemp').datepicker('getDate') || 365;
		if (checkOutDate == checkInDate) { checkOutDate = 365; }
		//$('#checkOutDate').attr("value", "")
		//$('#checkOutDate').datepicker('disable');
		checkOutDate = 365;
		return { minDate: checkInDate, maxDate: checkOutDate}; 
	} 
	
	function customRangeOut(input) {
		var checkInDate  = $('#checkInDateTemp').datepicker('getDate');
		var checkOutDate = $('#checkInDateTemp').datepicker('getDate');
		/*if (checkInDate==null)
		{
			checkInDate  = $("#checkInDate").val();
		}*/
		var ONE_DAY = 1000 * 60 * 60 * 24;
		if (checkOutDate) { checkOutDate.setDate(checkInDate.getDate() + 30);}
		var advancedDate =	addDays(checkInDate, 1)
			checkInDate = advancedDate;
		return { minDate: checkInDate, maxDate: checkOutDate || 365 }; 
	} 

	function addDays(givenDate, days) {
	//	alert("add days "+$.datepicker.regional[format].dateFormat);
		if(givenDate!=null){
			return new Date(givenDate.getTime() + days*24*60*60*1000);
		}else{
			var checkInDate = getCheckoutDate($("#checkInDateTemp").val(),$.datepicker.regional[format].dateFormat);
			
			return new Date(checkInDate.getTime() + days*24*60*60*1000);
		}		
	}
	

	function getCheckoutDate(dateString, dateFormat){
		if(dateFormat=="dd/mm/yy"){
			var tempDate = dateString.split("/");
			/*alert("date "+tempDate[0]);
			alert("month "+tempDate[1]);
			alert("year "+tempDate[2]);*/
			var checkInDate = new Date();
			checkInDate.setHours(0);
			checkInDate.setMinutes(0);
			checkInDate.setSeconds(0);
//			alert("checkIndate-0 "+checkInDate.getHours());
			checkInDate.setDate(tempDate[0]);
//			alert("checkIndate-after setting date "+checkInDate);
			checkInDate.setMonth(tempDate[1]-1);
//			alert("checkIndate-after setting month "+checkInDate);
			checkInDate.setYear(tempDate[2]);
//			alert("checkIndate-after setting year "+checkInDate);
//			alert(checkInDate);
			return checkInDate;
		}else if (dateFormat=="mm/dd/yy"){
			var tempDate = dateString.split("/");
			var checkInDate = new Date();
			checkInDate.setDate(tempDate[1]);
			checkInDate.setMonth(tempDate[0]);
			checkInDate.setYear(tempDate[2]);
			return checkInDate;
		}
	}

	function days_between(date1, date2) {
	    // The number of milliseconds in one day
	    var ONE_DAY = 1000 * 60 * 60 * 24;
	
	    // Convert both dates to milliseconds
	    var date1_ms = date1.getTime();
	    var date2_ms = date2.getTime();
	
	    // Calculate the difference in milliseconds
	    var difference_ms = Math.abs(date1_ms - date2_ms);
	    
	    // Convert back to days and return
	    return Math.round(difference_ms/ONE_DAY);
	}
	
});
