/*JS Calendar Setup for booking*/  
var startDate;
var endDate;
var callbacks = 0;

/*Reset date*/
function resetDates(){startDate = endDate = null;}

/*Compare date*/ 
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;}
	if(month1>month2){return -1;}
	if(month2>month1){return 1;}
	if(day1>day2){return -1;}
	if(day2>day1){return 1;}
	return 0;
}
	
/* RackRate Booking*/
function filterDates1(cal) 
{
	startDate = cal.date;
	CheckReservDateToRange(cal,document.myResForm.checkOut_date,document.myResForm.start_check_in,document.myResForm.MaxDay,'checkIn_date','checkOut_date','number_day');
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			firstDay 		: 1,
			electric		: false,
			inputField		: "checkOut_date",
			ifFormat		: "%d-%m-%Y",
			button			: "button8b",
			numberMonths	: 2,
			monthsInRow		: 2,
			disableFunc		: dateInRange2,
			onUpdate 		: filterDates2
		});
	}
}

/*Package Booking*/
function filterDates1_1(cal) 
{
	startDate 	= cal.date;
	CheckDateToRange(cal,document.myPackageForm4Popup.package_checkOut_date,document.myPackageForm4Popup.package_expiredate,document.myPackageForm4Popup.Package_MinDay,document.myPackageForm4Popup.Package_MaxDay,'package_checkIn_date','package_checkOut_date','package_number_day');
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			firstDay 		: 1,
			electric		: false,
			inputField		: "package_checkOut_date",
			button			: "button9b",
			ifFormat		: "%d-%m-%Y",
			daFormat		: "%Y/%m/%d",
			numberMonths	: 2,
			monthsInRow		: 2 ,
			disableFunc		: dateInRange2_1,
			onUpdate 		: filterDates2_1
		});
	}
}

/* Modify Booking*/
function filterDates1_2(cal) 
{
	startDate 	= cal.date;
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			inputField		: "res_modify_date2",
			button			: "button10e",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			date			: startDate,
			electric		: false,
			showsTime		: false,
			disableFunc		: dateInRange2_2,
			onUpdate		: filterDates2_2
		});
	}
}

/*ReCheck Booking*/
function filterDates1_3(cal) 
{
	startDate 	= cal.date;
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			inputField		: "NewCheckOutDate",
			button			: "button1b",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			date			: startDate,
			electric		: false,
			showsTime		: false,
			disableFunc		: dateInRange2_3,
			onUpdate		: filterDates2_3
		});
	}
}

// Waiting Booking
function filterDates1_4(cal) 
{
	startDate = cal.date;
	if(endDate==null)
	{ 
		Zapatec.Calendar.setup({
			inputField		: "RequestCheckOutDate",
			button			: "button2b",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			date			: startDate,
			electric		: false,
			showsTime		: false,
			disableFunc		: dateInRange2_4,
			onUpdate		: filterDates2_4
		});
	}
}

// Modify Booking Step 1
function filterDates1_5(cal) 
{
	startDate 	= cal.date;
	AJAXChangeDateCheckOutFromCheckin();
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			inputField		: "modify_checkOut_date_step1",
			button			: "button10g",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			date			: startDate,
			electric		: false,
			showsTime		: false,
			disableFunc		: dateInRange2_5,
			onUpdate		: filterDates2_5
		});
	}
}

/* Package Booking step1*/
function filterDates1_6(cal) 
{
	startDate = cal.date;
	CheckDateToRange(cal,document.myPackageForm.package_checkOut_date,document.myPackageForm.package_expiredate,document.myPackageForm.Package_MinDay,document.myPackageForm.Package_MaxDay,'package_checkIn_date','package_checkOut_date','package_number_day');
	if(endDate==null)
	{
		Zapatec.Calendar.setup({
			firstDay 		: 1,
			electric		: false,
			inputField		: "package_checkOut_date",
			button			: "button9b",
			ifFormat		: "%d-%m-%Y",
			daFormat		: "%Y/%m/%d",
			numberMonths	: 2,
			monthsInRow		: 2 ,
			disableFunc		: dateInRange2_1,
			onUpdate 		: filterDates2_6
		});
	}
}
//  Booking 2 Flight
function filterDates1_7(cal) 
{
	startDate = cal.date;
	CheckDateTo2Flight(cal,document.myReservation.res_dept_date,'res_arr_date','res_dept_date');
	if(endDate==null)
	{
		var cal = new Zapatec.Calendar.setup({
			firstDay 		: 1,
			electric		: false,
			inputField		: "res_dept_date",
			ifFormat		: "%d-%m-%Y",
			button			: "button8d",	
			numberMonths	: 2,
			monthsInRow		: 2 ,
			disableFunc		: dateInRange2_1,
			onUpdate 		: filterDates2_7
		});
}
}
/*RackRate Booking.*/
function filterDates2(cal)
{
	endDate	= cal.date;
	CheckReservDateToRange1(document.myResForm.checkIn_date,cal,document.myResForm.start_check_in,document.myResForm.MaxDay,'checkIn_date','checkOut_date','number_day');
}

/* Package Booking*/
function filterDates2_1(cal)
{
	endDate = cal.date;
	CheckEndDateToRange(document.myPackageForm4Popup.package_checkIn_date,cal,document.myPackageForm4Popup.package_expiredate,document.myPackageForm4Popup.Package_MinDay,document.myPackageForm4Popup.Package_MaxDay,'package_checkIn_date','package_checkOut_date','package_number_day');
}

/*Modify Booking*/
function filterDates2_2(cal)
{
	endDate = cal.date;
}

/*ReCheck Booking*/
function filterDates2_3(cal)
{
	endDate = cal.date;
}

/*Waiting Booking*/
function filterDates2_4(cal)
{
	endDate = cal.date;
}

function filterDates2_5(cal)
{
	endDate = cal.date;
	AJAXChangeTotalNight();
	//CheckEndDateToRange(document.myModifyBookingStep1.modify_checkIn_date_step1,cal,document.myModifyBookingStep1.modify_checkOut_date_step1,document.myModifyBookingStep1.Amend_MaxDay,document.myModifyBookingStep1.Amend_MaxDay,'modify_checkIn_date_step1','modify_checkOut_date_step1','number_day2modify_step1');
}

function filterDates2_6(cal)
{
	endDate = cal.date;
	CheckEndDateToRange(document.myPackageForm.package_checkIn_date,cal,document.myPackageForm.package_expiredate,document.myPackageForm.Package_MinDay,document.myPackageForm.Package_MaxDay,'package_checkIn_date','package_checkOut_date','package_number_day');
}
function filterDates2_7(cal)
{	
	endDate = cal.date;	CheckDateTo2FlightDept(document.myReservation.res_arr_date,cal,'res_arr_date','res_dept_date');
}


/*RackRate Booking*/
function dateInRange1(date) 
{
	if (endDate != null)
	{
		var compareEnd = compareDatesOnly(date, endDate);
		if  (compareEnd < 0){return (true);}
		if  (compareEnd == 0){{return "edges";}}
		if (startDate != null)
		{
			var compareStart = compareDatesOnly(date, startDate);
			if(compareStart<0){return "between";}
		} 
	}
	var today = new Date();
	var compareToday = compareDatesOnly(date,today);
	if(compareToday>0){return(true);}
	return false;
	return(ret);
}

/* Package Booking*/
function dateInRange1_1(date) 
{
	if (endDate != null)
	{
		var compareEnd 	= compareDatesOnly(date,endDate);
		if(compareEnd<0){return (true);}
		if(compareEnd==0){{return "edges";}}
		if(startDate!=null)
		{
			var compareStart = compareDatesOnly(date, startDate);
			if(compareStart<0)
			{
				return "between";
			}
		} 
	}
	var today 			= new Date();
	var compareToday 	= compareDatesOnly(date, today);
	if(compareToday>0){return(true);}
	return false;
	return(ret);
}

/* Modify Booking*/
function dateInRange1_2(date) 
{
	if (endDate != null)
	{
		var compareEnd = compareDatesOnly(date, endDate);
		if(compareEnd < 0){return (true);}
		if(compareEnd == 0){{return "edges";}}
		if(startDate != null)
		{
			var compareStart = compareDatesOnly(date, startDate);
			if(compareStart<0)
			{
				return "between";
			}
		} 
	}
	
	var today = new Date();
	var compareToday = compareDatesOnly(date, today);
	if(compareToday > 0){return(true);}
	return false;
	return(ret);
}
// ReCheck Booking
function dateInRange1_3(date) 
{
	if (endDate != null)
	{
		var compareEnd = compareDatesOnly(date, endDate);
		if(compareEnd<0){return (true);}
		if(compareEnd==0){{return "edges";}}
		if(startDate != null)
		{
			var compareStart = compareDatesOnly(date, startDate);
			if(compareStart<0)
			{
				return "between";
			}
		} 
	}
	
	var today = new Date();
	var compareToday = compareDatesOnly(date, today);
	if(compareToday > 0){return(true);}
	return false;
	return(ret);
}
// Waiting Booking
function dateInRange1_4(date) 
{
	if (endDate != null)
	{
		var compareEnd = compareDatesOnly(date, endDate);
		if(compareEnd<0){return (true);}
		if(compareEnd==0){{return "edges";}}
		if(startDate != null){
			var compareStart = compareDatesOnly(date, startDate);
			if(compareStart<0)
			{
				return "between";
			}
		} 
	}
	
	var today = new Date();
	var compareToday = compareDatesOnly(date, today);
	if(compareToday > 0){return(true);}
	return false;
	return(ret);
}

/* Modify Booking Step 1*/
function dateInRange1_5(date) 
{
	if (endDate != null)
	{
		var compareEnd = compareDatesOnly(date, endDate);
		if(compareEnd < 0){return (true);}
		if(compareEnd == 0){{return "edges";}}
		if(startDate != null){var compareStart = compareDatesOnly(date, startDate);if  (compareStart < 0){return "between";}} 
	}
	var today = new Date();
	var compareToday = compareDatesOnly(date, today);
	if(compareToday > 0){return(true);}
	return false;
	return(ret);
}

// RackRate Booking
function dateInRange2(date) 
{	
	if (startDate != null) 
	{
		var compareDays = compareDatesOnly(startDate, date);
		if(compareDays < 0){return (true);}
		if(compareDays == 0){{return "edges";}}
		if((endDate != null) && (date > startDate) && (date < endDate)){return "between";}} 
		var now = new Date();
		if(compareDatesOnly(now, date) < 0){return (true);}
		return false;
}
// Package Booking
function dateInRange2_1(date) 
{	 
	if (startDate != null) 
	{
		var compareDays = compareDatesOnly(startDate, date);
		if(compareDays < 0){return (true);}
		if(compareDays == 0){{return "edges";}}
		if((endDate != null) && (date > startDate) && (date < endDate)){return "between";} 
	} 
	var now = new Date();
	if (compareDatesOnly(now, date) < 0){return (true);	}
	return false;
}

/* Modify Booking*/
function dateInRange2_2(date) 
{	
	if (startDate != null) 
	{
		var compareDays = compareDatesOnly(startDate, date);
		if(compareDays < 0){return (true);}
		if(compareDays == 0){{return "edges";}}
		if((endDate != null) && (date > startDate) && (date < endDate)){return "between";} 
	} 
	var now = new Date();
	if (compareDatesOnly(now, date) < 0){return (true);	}
	return false;
}

/*ReCheck Booking*/
function dateInRange2_3(date) 
{	
	if (startDate != null) 
	{
		var compareDays = compareDatesOnly(startDate, date);
		if(compareDays < 0){return (true);}
		if(compareDays == 0){{return "edges";}}
		if((endDate != null) && (date > startDate) && (date < endDate)){return "between";} 
	} 
	var now = new Date();
	if (compareDatesOnly(now, date) < 0){return (true);	}
	return false;
}

/*Waiting Booking*/
function dateInRange2_4(date) 
{	
	if (startDate != null) 
	{
		var compareDays = compareDatesOnly(startDate, date);
		if(compareDays < 0){return (true);}
		if(compareDays == 0){{return "edges";}}
		if((endDate != null) && (date > startDate) && (date < endDate)){return "between";} 
	} 
	var now = new Date();
	if (compareDatesOnly(now, date) < 0){return (true);	}
	return false;
}

/* Modify Booking Step 1*/
function dateInRange2_5(date) 
{	
	if (startDate!=null) 
	{
		var compareDays = compareDatesOnly(startDate,date);
		if  (compareDays < 0){return (true);}
		if  (compareDays == 0){{return "edges";}}
		if ((endDate != null) && (date > startDate) && (date < endDate)){return "between";} 
	} 
	var now = new Date();
	if (compareDatesOnly(now, date) < 0){return (true);	}
	return false;
}

	
/*แสดงปฏิธินสำหรับ Booking*/ 
function ShowCalendarforNormal()
{
	var cal = new Zapatec.Calendar.setup({
		firstDay 		: 1,
		electric		: false,
		inputField		: "checkIn_date",
		ifFormat		: "%d-%m-%Y",
		button			: "button8a",
		numberMonths	: 2,
		monthsInRow		: 2 ,
		disableFunc		: dateInRange1,
		onUpdate 		: filterDates1
	});
	Zapatec.Calendar.setup({
		firstDay 		: 1,
		electric		: false,
		inputField		: "checkOut_date",
		ifFormat		: "%d-%m-%Y",
		button			: "button8b",
		numberMonths	: 2,
		monthsInRow		: 2,
		disableFunc		: dateInRange2,
		onUpdate 		: filterDates2
	});
}
	
// แสดงปฏิธินสำหรับ Booking Package 
function ShowCalendarforPackage()
{
	var cal = new Zapatec.Calendar.setup({
		inputField  	: "package_checkIn_date",
		button 			: "button9a",
		ifFormat 		: "%d-%m-%Y ",
		timeFormat 		: "24", 
		showsTime 		: false,
		electric  		: false,
		dateStatusFunc	: dateInRange1_1, 
		onUpdate 		: filterDates1_1
	});
	Zapatec.Calendar.setup({
		inputField 		: "package_checkOut_date",
		button 			: "button9b",
		ifFormat 		: "%d-%m-%Y ",
		timeFormat 		: "24",
		showsTime 		: false,
		electric 		: false,
		dateStatusFunc 	: dateInRange2_1,
		onUpdate  		: filterDates2_1
	});
}
	
// แสดงปฏิธินสำหรับฟอร์มป้อนข้อมูล booking ส่วน booking flight's detail. 
function ShowCalendar2Flight()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "res_arr_date",
			ifFormat		: "%d-%m-%Y",
			button			: "button8c",
			showsTime		: false
		});
		var cal = new Zapatec.Calendar.setup({
			inputField		: "res_dept_date",
			ifFormat		: "%d-%m-%Y",
			button			: "button8d",
			showsTime		: false
			});
}

// แสดงปฏิธินสำหรับฟอร์มโปรแกรม booking cancel management. 	
function ShowCaneldar2Cancel()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "res_cancel_date",
			ifFormat		: "%d-%m-%Y",
			button			: "button10c",
			showsTime		: false
		});
}

// แสดงปฏิธินสำหรับฟอร์มโปรแกรม booking modify management.
function ShowCaneldar2Modifty()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "res_modify_date",
			button			: "button10d",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc	: dateInRange1_2,
			onUpdate		: filterDates1_2
		});
		Zapatec.Calendar.setup({
			inputField		: "res_modify_date2",
			button			: "button10e",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc 	: dateInRange2_2,
			onUpdate 		: filterDates2_2
		});
}	

// แสดงปฏิธินสำหรับฟอร์มโปรแกรม booking re-check
function ShowCalendarReCheck()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "NewCheckInDate",
			button			: "button1a",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc	: dateInRange1_3,
			onUpdate		: filterDates1_3
		});
		Zapatec.Calendar.setup({
			inputField		: "NewCheckOutDate",
			button			: "button1b",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc 	: dateInRange2_3,
			onUpdate 		: filterDates2_3
		});
}

// แสดงปฏิธินสำหรับฟอร์มโปรแกรม waiting booking
function ShowCalendarWaitingBooking()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "RequestCheckInDate",
			button			: "button2a",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc	: dateInRange1_4,
			onUpdate		: filterDates1_4
		});
		Zapatec.Calendar.setup({
			inputField		: "RequestCheckOutDate",
			button			: "button2b",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc 	: dateInRange2_4,
			onUpdate 		: filterDates2_4
		});
}

/* แสดงปฏิธินสำหรับฟอร์มโปรแกรม booking modify management.*/
function ShowCaneldar2ModiftyStep1()
{
		var cal = new Zapatec.Calendar.setup({
			inputField		: "modify_checkIn_date_step1",
			button			: "button10f",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc	: dateInRange1_5,
			onUpdate		: filterDates1_5
		});
		Zapatec.Calendar.setup({
			inputField		: "modify_checkOut_date_step1",
			button			: "button10g",
			ifFormat		: "%d-%m-%Y ",
			timeFormat		: "24",
			showsTime		: false,
			electric		: false,
			dateStatusFunc 	: dateInRange2_5,
			onUpdate 		: filterDates2_5
		});
}	


var gsSplit		= "-"; 
var giDatePos	= 0; /*Date format  0: D-M-Y ; 1: M-D-Y; 2: Y-M-D*/
var gbDigital	= true; /*Month format   true: 01-05-2001 ; false: 1-May-2001*/
var gbShortYear	= false;  /*Year format   true: 2-digits; false: 4-digits*/
var gBegin		= [2000,1,1]; /*Valid Range begin from [Year,Month,Date]*/
var gEnd		= [2600,12,31]; /*Valid Range end at [Year,Month,Date]*/

/*เลือกจำนวนวันแล้วคำนวนวันออกมา*/
function CheckNumToDate(starts,ends,expire,mindays,inputstart,inputend,sday,inputday)
{
 	var start		= fParseDate(starts.value); 
	var selectday	= sday.value<=0 ? 1 : sday.value;
	var minday		= mindays.value<=0 ? 1 : mindays.value;
	var end			= fParseDate(ends.value); 
	var rangeend	= fParseDate(expire.value);
	var startDate	= new Date(start[0],start[1]-1,start[2]);
	var startDate1	= new Date();
	var startDate2	= new Date();
	var expireDate	= new Date(rangeend[0],rangeend[1]-1,rangeend[2]);
	var intexpiredate	= expireDate.getTime();
	intexpiredate 	-= 3600*1000*24*selectday;
	startDate1.setTime(intexpiredate);
	var smonth1 	= startDate1.getMonth() + 1;
	var sday1 		= startDate1.getDate();
	var syear1 		= startDate1.getFullYear();
	var sdate1		= fFormatDate1(syear1,smonth1,sday1);
	var intexpiredate1	= expireDate.getTime();
	intexpiredate1 -= 3600*1000*24*minday;
	startDate2.setTime(intexpiredate1);
	var smonth2 	= startDate2.getMonth() + 1;
	var sday2 		= startDate2.getDate();
	var syear2 		= startDate2.getFullYear();
	var sdate2		= fFormatDate1(syear2,smonth2,sday2);
	var endDate		= new Date(end[0],end[1]-1,end[2]);
	var endDate1	= new Date();
	var mindate 	= startDate.getTime();
	mindate 		+= 3600*1000*24*selectday;
	endDate1.setTime(mindate);
	var month 		= endDate1.getMonth() + 1;
	var day 		= endDate1.getDate();
	var year 		= endDate1.getFullYear();
	var edate1		= fFormatDate1(year,month,day);
	var intenddate1	= endDate1.getTime();

	var today=new Date();
	if(startDate1>=today )
	{
		var sdate	= sdate1;
		var day		= selectday;
	}else
	if(startDate1<today && startDate2>=today)
	{
		var sdate	= sdate2;
		var day		= minday;
	}
	if(endDate>=expireDate)
	{
		if(document.getElementById(inputstart)!=null){document.getElementById(inputstart).value=sdate;}
		if(document.getElementById(inputend)!=null){document.getElementById(inputend).value=expire.value;}
		if(document.getElementById(inputday)!=null){document.getElementById(inputday).value=day;}
	}else{
		if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate1;}
	}
}

/*นับวันต่อจากวันเริ่มที่เลือก*/
function CheckDateToRange(starts,ends,expire,mindays,maxdays,inputstart,inputend,inputday)
{
	var end				= fParseDate(ends.value); 
	var minday			= mindays.value<=0 ? 1 : mindays.value;
	var maxday			= maxdays.value<=0 ? 1 : maxdays.value;
	var rangeend		= fParseDate(expire.value); 
	var startDate		= starts.date;
	var intstartdate	= startDate.getTime();
	var startDate1		= new Date();
	var expireDate		= new Date(rangeend[0],rangeend[1]-1,rangeend[2]);
	var intexpiredate	= expireDate.getTime();
	intexpiredate 		-= 3600*1000*24*minday;
	startDate1.setTime(intexpiredate);
	var smonth1 		= startDate1.getMonth() + 1;
	var sday1 			= startDate1.getDate();
	var syear1 			= startDate1.getFullYear();
	var sdate			= fFormatDate1(syear1,smonth1,sday1);
	var endDate			= new Date(end[0],end[1]-1,end[2]);
	var endDate1		= new Date();
	var endDate2		= new Date();
	var intenddate		= endDate.getTime();
	var mindate 		= startDate.getTime();
	mindate 			+= 3600*1000*24*minday;
	endDate1.setTime(mindate);
	var month 			= endDate1.getMonth() + 1;
	var day 			= endDate1.getDate();
	var year 			= endDate1.getFullYear();
	var edate1			= fFormatDate1(year,month,day);
	var intenddate1		= endDate1.getTime();
	var mindate1 		= startDate.getTime();
	mindate1 			+= 3600*1000*24*maxday;
	endDate2.setTime(mindate1);
	var month1 			= endDate2.getMonth() + 1;
	var day1 			= endDate2.getDate();
	var year1 			= endDate2.getFullYear();
	var edate2			= fFormatDate1(year1,month1,day1);
	var intenddate2		= endDate2.getTime();

	if(startDate>=expireDate)
	{
		if(document.getElementById(inputstart)!=null){document.getElementById(inputstart).value	= sdate;}
		if(document.getElementById(inputend)!=null){document.getElementById(inputend).value = expire.value;}
		if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= minday;}
	}else
	if(endDate<endDate1)
	{
		var intday	= parseInt((intenddate1-intstartdate)/(3600*1000*24));
		if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate1;}
		if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= intday;}
	}else
	if(endDate>endDate2)
	{
		document.getElementById(inputend).value	= edate2;
		var intday=parseInt((intenddate2-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value	= intday;
	}else{
		var intday=parseInt((intenddate-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value	= document.getElementById(inputday)!=null ? intday : '';
	}
}

function CheckEndDateToRange(starts,ends,expire,mindays,maxdays,inputstart,inputend,inputday)
{
	var start			= fParseDate(starts.value); 
	var rangeend		= fParseDate(expire.value); 
	var minday			= mindays.value<=0 ? 1 : mindays.value;
	var maxday			= maxdays.value<=0 ? 1 : maxdays.value;
	var endDate			= ends.date;
	var startDate		= new Date(start[0],start[1]-1,start[2]);
	var intstartdate	= startDate.getTime();
	var startDate1		= new Date();
	var expireDate		= new Date(rangeend[0],rangeend[1]-1,rangeend[2]);
	var intexpiredate	= expireDate.getTime();
	intexpiredate 		-= 3600*1000*24*minday;
	startDate1.setTime(intexpiredate);
	var smonth1 		= startDate1.getMonth() + 1;
	var sday1 			= startDate1.getDate();
	var syear1 			= startDate1.getFullYear();
	var sdate			= fFormatDate1(syear1,smonth1,sday1);
	var endDate1		= new Date();
	var endDate2		= new Date();
	var intenddate		= endDate.getTime();
	var mindate 		= startDate.getTime();
	mindate 			+= 3600*1000*24*minday;
	endDate1.setTime(mindate);
	var month 			= endDate1.getMonth() + 1;
	var day 			= endDate1.getDate();
	var year 			= endDate1.getFullYear();
	var edate1			= fFormatDate1(year,month,day);
	var intenddate1		= endDate1.getTime();
	var mindate1 		= startDate.getTime();
	mindate1 			+= 3600*1000*24*maxday;
	endDate2.setTime(mindate1);
	var month1 			= endDate2.getMonth() + 1;
	var day1 			= endDate2.getDate();
	var year1 			= endDate2.getFullYear();
	var edate2			= fFormatDate1(year1,month1,day1);
	var intenddate2		= endDate2.getTime();
	if(endDate>=expireDate)
	{
		document.getElementById(inputstart).value=sdate;
		document.getElementById(inputend).value=expire.value;
		document.getElementById(inputday).value=minday;
	}else
	if(endDate<endDate1)
	{	
		document.getElementById(inputend).value=edate1;
		var intday=parseInt((intenddate1-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value=intday;	
	}else 
	if(endDate>endDate2)
	{
		document.getElementById(inputend).value	= edate2;
		var intday	= parseInt((intenddate2-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value	=intday;
	}else{
		var intday	= parseInt((intenddate-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value	= document.getElementById(inputday)!= null ? intday : '';
	}
}
	
function CheckDateTo2Flight(starts,ends,inputstart,inputend)
{
	var end				= fParseDate(ends.value); 
	var startDate		= starts.date;
	var endDate			= new Date(end[0],end[1]-1,end[2]);
	var endDate1		= new Date();
	var mindate 		= startDate.getTime();
	mindate 			+= 3600*1000*24;
	endDate1.setTime(mindate);
	var month 			= endDate1.getMonth() + 1;
	var day 			= endDate1.getDate();
	var year 			= endDate1.getFullYear();
	var edate1			= fFormatDate1(year,month,day);
	var startDate1		= new Date();
	var mindate1 		= endDate.getTime();
	mindate1 			-= 3600*1000*24;
	startDate1.setTime(mindate1);
	var month1 			= startDate1.getMonth() + 1;
	var day1 			= startDate1.getDate();
	var year1 			= startDate1.getFullYear();
	var sdate			= fFormatDate1(year1,month1,day1);

	if(endDate<endDate1)
	{
		document.getElementById(inputend).value	= document.getElementById(inputend)!=null ? edate1 : '';
	}else
	if(startDate>endDate){
		document.getElementById(inputstart).value	= document.getElementById(inputstart)!=null ? sdate : '';
	}
}

function CheckDateTo2FlightDept(starts,ends,inputstart,inputend)
{
	var start			= fParseDate(starts.value); 
	var endDate			= ends.date;
	var startDate		= new Date(start[0],start[1]-1,start[2]);
	var intstart 		= startDate.getTime();
	var month1 			= endDate.getMonth();
	var day1 			= endDate.getDate();
	var year1 			= endDate.getFullYear();		
	var endDate1		= new Date(year1,month1,day1);	
	var startDate1		= new Date();
	var mindate 		= endDate.getTime();
	mindate 			-= 3600*1000*24;
	startDate1.setTime(mindate);
	var month 			= startDate1.getMonth() + 1;
	var day 			= startDate1.getDate();
	var year 			= startDate1.getFullYear();
	var sdate			= fFormatDate1(year,month,day);

	if(startDate >= endDate1)
	{
		document.getElementById(inputstart).value=sdate;
	}
}

function fParseDate(ds) 
{
	var r=null;
	var i;
  	if(ds!=null)
 	{
 		var pd=ds.split(gsSplit);
 		if(pd.length==3)
	 	{
  			var m	= pd[giDatePos==1?0:1];
  			for(i=0;(i<12)&&(i+1!=m);i++);
  			if(i<12)
	  		{
   				var y=parseInt(pd[giDatePos==2?0:2].substring(0,4),10);
   				var pf=Math.floor(gEnd[0]/100)*100;
   				r=[y<100?y>gEnd[0]%100?pf-100+y:pf+y:y,i+1,parseInt(pd[giDatePos],10)];
  			}else
			return null;
   		}else 
  			return null;
 			var td	= new Date(r[0],r[1]-1,r[2]);
 			if(isNaN(td)||td.getMonth()!=r[1]-1)
  			return null;
  		}
  	return r;
}

function CheckReservDateToRange(starts,ends,startreserv,maxdays,inputstart,inputend,inputday)
{
	var end				= fParseDate(ends.value); 
	var minday			= 1;
	var maxday			= maxdays.value<=0 ? 1 : maxdays.value;
	var startR			= fParseDate(startreserv.value);
	var startDate		= starts.date;
	var startDate1		= new Date();
	var startDate2		= new Date(startR[0],startR[1]-1,startR[2]);
	var smonths 		= startDate.getMonth() ;
	var sdays 			= startDate.getDate();
	var syears 			= startDate.getFullYear();
	var startDate3		= new Date(syears,smonths,sdays);
	var intstartdate	= startDate3.getTime();
	var endDate			= new Date(end[0],end[1]-1,end[2]);
	var intend_date		= endDate.getTime();
	var endDate1		= new Date();
	var endDate2		= new Date();
	var smonth1 		= startDate2.getMonth() + 1;
	var sday1 			= startDate2.getDate();
	var syear1 			= startDate2.getFullYear();
	var intstart		= startDate2.getTime();
	var sdate			= fFormatDate1(syear1,smonth1,sday1);
	var intenddate		= startDate2.getTime();
	intenddate 			+= 3600*1000*24;
	endDate1.setTime(intenddate);
	var smonth2 		= endDate1.getMonth() + 1;
	var sday2 			= endDate1.getDate();
	var syear2 			= endDate1.getFullYear();
	var intend			= endDate1.getTime();
	var edate			= fFormatDate1(syear2,smonth2,sday2);
	var intstartdate1	= startDate.getTime();
	intstartdate1 		+= 3600*1000*24;
	endDate2.setTime(intstartdate1);
	var smonth3 		= endDate2.getMonth() + 1;
	var sday3 			= endDate2.getDate();
	var syear3 			= endDate2.getFullYear();
	var intend1			= endDate2.getTime();
	var edate1			= fFormatDate1(syear3,smonth3,sday3);
	
	if(startDate<=startDate2)
	{
		document.getElementById(inputstart).value	= document.getElementById(inputstart)!=null ? sdate : '';
		var intday									= parseInt((intend_date-intstart)/(3600*1000*24));
		document.getElementById(inputday).value		= document.getElementById(inputday)!=null ? intday : '';
	}else
	if(endDate<=startDate)
	{
		document.getElementById(inputend).value	= document.getElementById(inputend)!=null ? edate1 : '';
		document.getElementById(inputday).value=1;
	}else{
		var intday=parseInt((intend_date-intstartdate)/(3600*1000*24));
		document.getElementById(inputday).value=intday;
	}
}

function CheckReservDateToRange1(starts,ends,startreserv,maxdays,inputstart,inputend,inputday)
{
	var start			= fParseDate(starts.value); 
	var minday			= 1;
	var maxday			= maxdays.value<=0 ? 1 : maxdays.value;
	var startR			= fParseDate(startreserv.value);
	var endDate			= ends.date;
	var startDate		= new Date(start[0],start[1]-1,start[2]);
	var intstart_date	= startDate.getTime();
	var startDate1		= new Date();
	var startDate2		= new Date(startR[0],startR[1]-1,startR[2]);
	var smonths 		= endDate.getMonth() ;
	var sdays 			= endDate.getDate();
	var syears 			= endDate.getFullYear();
	var endDate3		= new Date(syears,smonths,sdays);
	var intend_date		= endDate3.getTime();
	var endDate1		= new Date();
	var endDate2		= new Date();
	var smonth1 		= startDate2.getMonth() + 1;
	var sday1 			= startDate2.getDate();
	var syear1 			= startDate2.getFullYear();
	var intstart		= startDate2.getTime();
	var sdate			= fFormatDate1(syear1,smonth1,sday1);
	var int1			= startDate.getTime();
	int1 				+= 3600*1000*24*maxday;
	endDate1.setTime(int1);
	var smonth2 		= endDate1.getMonth() + 1;
	var sday2 			= endDate1.getDate();
	var syear2 			= endDate1.getFullYear();
	var intend			= endDate1.getTime();
	var edate			= fFormatDate1(syear2,smonth2,sday2);
	var intstartdate1	= startDate.getTime();
	intstartdate1 		+= 3600*1000*24;
	endDate2.setTime(intstartdate1);
	var smonth3 		= endDate2.getMonth() + 1;
	var sday3 			= endDate2.getDate();
	var syear3 			= endDate2.getFullYear();
	var intend1			= endDate2.getTime();
	var edate1			= fFormatDate1(syear3,smonth3,sday3);

	if(intend_date<=intstart_date)
	{
		if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate1;}
		var intday	= parseInt((intend1-intstart_date)/(3600*1000*24));
		if(document.getElementById(inputday).value!=null){document.getElementById(inputday).value = intday;}

	}else{
		var intday	= parseInt((intend_date-intstart_date)/(3600*1000*24));
		if(intday<=maxday)
		{
			if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= intday;}
		}else{
			if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate;}
			if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= maxday;}
		}
	}
}

/*หาวันที่ CheckOut จากจำนวนวันที่เลือก*/
function CheckReservNumToDate(starts,ends,startreserv,maxdays,inputstart,inputend,sday,inputday)
{
	/*LeadTime Set Refer*/
	if(document.getElementById('BookingLeadTime')!=null){var LeadTime = document.getElementById('BookingLeadTime').value;}else{var LeadTime = null;}
	
	var start			= fParseDate(starts.value);
	var selectday		= sday.value<=0 ? 1 : sday.value;
	var minday			= 1;
	var maxday			= maxdays.value<=0 ? 1 : maxdays.value;
	var end				= fParseDate(ends.value); 
	var rangestart		= fParseDate(startreserv.value); 
	var startDate		= LeadTime==0 ? new Date() : new Date(start[0],start[1]-1,start[2]);
	var smonths 		= startDate.getMonth() + 1;
	var sdays 			= startDate.getDate();
	var syears 			= startDate.getFullYear();
	var sdate0			= fFormatDate1(syears,smonths,sdays);
	var startDate1		= new Date();
	var startDate2		= new Date();
	var startDate3		= new Date(rangestart[0],rangestart[1]-1,rangestart[2]);
	var intexpiredate	= startDate3.getTime();
	intexpiredate 		+= 3600*1000*24*selectday;
	startDate1.setTime(intexpiredate);
	var smonth1 		= startDate1.getMonth() + 1;
	var sday1 			= startDate1.getDate();
	var syear1 			= startDate1.getFullYear();
	var edate3			= fFormatDate1(syear1,smonth1,sday1);/*เลือกวันนับต่อจากวันเริ่ม*/

	var intexpiredate1	= startDate3.getTime();
	intexpiredate1 		+= 3600*1000*24*minday;
	startDate2.setTime(intexpiredate1);
	var smonth2 		= startDate2.getMonth() + 1;
	var sday2 			= startDate2.getDate();
	var syear2	 		= startDate2.getFullYear();
	var edate2			= fFormatDate1(syear2,smonth2,sday2);/*นับจากวันเริ่ม1วัน*/

	var endDate			= new Date(end[0],end[1]-1,end[2]);
	var endDate1		= new Date();
	var mindate 		= startDate.getTime();
	mindate 			+= 3600*1000*24*selectday;
	endDate1.setTime(mindate);
	var month 			= endDate1.getMonth() + 1;
	var day 			= endDate1.getDate();
	var year 			= endDate1.getFullYear();
	var edate1			= fFormatDate1(year,month,day);/*วันสุดท้ายต้องย่างน้อยนับจากวันเลือก*/
	var intenddate1		= endDate1.getTime();
	
	var today=new Date();
	if(startDate>=today && startDate>=startDate3)
	{
		var sdate	= sdate0;
		var day		= selectday;
		var endday	= edate1;
	}else 
	if(startDate<today && startDate2>=today)
	{
		var sdate	= startreserv.value;
		var day		= minday;
		var endday	= edate2;
	}
	
	if(document.getElementById(inputstart)!=null){document.getElementById(inputstart).value = sdate;}
	if(document.getElementById(inputend)!=null){document.getElementById(inputend).value = endday;}
	if(document.getElementById(inputday)!=null){document.getElementById(inputday).value = day;}
}

function fFormatDate1(y,m,d)
{
  	var M	= gbDigital&&m<10?"0"+m:m;
  	var D	= gbDigital&&d<10?"0"+d:d;
    var sy	= y%100;
  	sy=sy<10?"0"+sy:sy;
  	switch (giDatePos)
	{
 		case 0: return D+gsSplit+M+gsSplit+(gbShortYear?sy:y);
 		case 1: return M+gsSplit+D+gsSplit+(gbShortYear?sy:y);
 		case 2: return (gbShortYear?sy:y)+gsSplit+M+gsSplit+D;
 	}
 }
