﻿ var DaysAdvance=0
 var startDate;
 var endDate;

function compareDatesOnly(date1, date2) {

	var year1 = date1.getYear();
	var year2 = date2.getYear();
	var month1 = date1.getMonth();
	var month2 = date2.getMonth();
	var day1 = date1.getDate();
	var day2 = date2.getDate();

	if (year1 > year2) {
		return -1;
	}
	if (year2 > year1) {
		return 1;
	}

	//years are equal
	if (month1 > month2) {
		return -1;
	}
	if (month2 > month1) {
		return 1;
	}

	//years and months are equal
	if (day1 > day2) {
		return -1;
	}
	if (day2 > day1) {
		return 1;
	}

	//days are equal
	return 0;


	/* Can't do this because of timezone issues
	var days1 = Math.floor(date1.getTime()/Date.DAY);
	var days2 = Math.floor(date2.getTime()/Date.DAY);
	return (days1 - days2);
	*/
}

function filterDates1(cal) {

	startDate = cal.date;
	/* If they haven't chosen an 
	end date before we'll set it to the same date as the start date This
	way if the user scrolls in the start date 5 months forward, they don't
	need to do it again for the end date.
	*/
    SetDaysInterval();
	if (endDate == null) { 
		Calendar.setup({
			inputField     :    "txtEndDate",
			//button       :    imgHCheckOutDate,  // What will trigger the popup of the calendar
			ifFormat       :    "%m/%d/%Y",//"%Y-%m-%d ",
			timeFormat     :    "24",
			date           :     startDate,
			electric       :     false,
			showsTime      :     false,          //no time
			disableFunc    :    dateInRange2, //the function to call
			onUpdate       :    filterDates2
		});
	}
}

function filterDates2(cal) {
	endDate = cal.date;
}

/*
* Both functions disable and hilight dates.
*/

/* 
* Can't choose days after the
* end date if it is choosen, hilights start and end dates with one style and dates between them with another
*/
function dateInRange1(date) {
	if (endDate != null) {
		// Disable dates after end date
		var compareEnd = compareDatesOnly(date, endDate);
		if  (compareEnd < 0) {
			return (false);
		}

		// Hilight end date with "edges" style
		if  (compareEnd == 0) {
			{return "edges";}
		}


		// Hilight inner dates with "between" style
		if (startDate != null){
			var compareStart = compareDatesOnly(date, startDate);
			if  (compareStart < 0) {
				return "between";
			} 
		} 
	}

	//disable days prior to today
	var today = new Date();
	var compareToday = compareDatesOnly(date, today);
	if (compareToday > 0) {
		return(true);
	}


	//all other days are enabled
	return false;
	//alert(ret + " " + today + ":" + date + ":" + compareToday + ":" + days1 + ":" + days2);
	return(ret);
}

/* 
* Can't choose days before the
* start date if it is choosen, hilights start and end dates with one style and dates between them with another
*/

function dateInRange2(date) {
	if (startDate != null) {
		// Disable dates before start date
		var compareDays = compareDatesOnly(startDate, date);
		if  (compareDays < 0) {
			return (true);
		}

		// Hilight end date with "edges" style
		if  (compareDays == 0) {
			{return "edges";}
		}

		// Hilight inner dates with "between" style
		if ((endDate != null) && (date > startDate) && (date < endDate)) {
			return "between";
		} 
	} 

	var now = new Date();
	if (compareDatesOnly(now, date) < 0) {
		return (true);
	}

	//all other days are enabled
	return false;
}
// end hiding contents from old browsers  -->
function InitializeCalendar()
{
    var cal = new Calendar.setup({
	
	        inputField     :    "txtStartDate",   // id of the input field
	        button         :    "imgStartDate",  // What will trigger the popup of the calendar
	        ifFormat       :    "%m/%d/%Y",       // format of the input field
	        timeFormat     :    "24",
	        showsTime      :     false,          //no time
	        electric       :     false,
	        dateStatusFunc :    dateInRange1, //the function to call
	        onUpdate       :    filterDates1
		
    });
	
        Calendar.setup({
	        inputField     :    "txtEndDate",
	        button         :    "imgEndDate",  // What will trigger the popup of the calendar
	        ifFormat       :    "%m/%d/%Y",
	        timeFormat     :    "24",
	        showsTime      :     false,          //no time
	        electric       :     false,
	        dateStatusFunc :    dateInRange2, //the function to call
	        onUpdate       :    filterDates2
        });
}


//Adding Intervals when Changing Checkin Date.
function SetDaysInterval()
{
    var ChkinDate=new Date(document.getElementById("txtStartDate").value);
    var newCheckOutDate=new Date(ChkinDate.getTime()+ parseInt(DaysAdvance)*24*60*60*1000);
    var day,month;
    day=newCheckOutDate.getDate();
    month=newCheckOutDate.getMonth() +1;
    
    if(day.toString().length<2)
       day='0'+day.toString();
    if(month.toString().length<2) 
       month='0'+month.toString(); 
    document.getElementById("txtEndDate").value=month+'/'+day+'/'+ newCheckOutDate.getFullYear();
    
    startDate=new Date (document.getElementById("txtStartDate").value);
	endDate=new Date (document.getElementById("txtEndDate").value);
}