/*<!--
===========================================================================================================
File name       : CALENDAR_CONTROL.JS
Create			: 22/10/2008
Lastupdate      : 02/07/2009
Developer       : Developer's Team of Thai Online Co.,Ltd. <support@thaionline-reservation.com>
Project         : THAI ONLINE RESERVATION V.1.0
Description     : function ควบคุมการทำงานของปฏิธิน
License         : CopyRight(C) 2007 THAI ONLINE COMPANY LIMITED.All rights reserved.
Editor          : PHP Editor / Adobe Dreamweaver
===========================================================================================================
-->*/

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]*/

/*หาวันที่ CheckOut จากจำนวนวันที่เลือก*/
function CheckReservNumToDate(starts,ends,startreserv,maxdays,inputstart,inputend,sday,inputday)
{
	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		= 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 CheckReservDateToRange(starts,ends,startreserv,maxdays,inputstart,inputend,inputday,Nights)
{
	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);
	
	Nights				= Nights<=0 ? 1 : Nights;
	var intstartdate1	= startDate.getTime();
	intstartdate1 		+= 3600*1000*24*Nights;
	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<=intstartdate)
	{
		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-intstartdate)/(3600*1000*24));
		if(intday<=maxday)
		{
			if(intday>Nights)
			{
				if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= intday;}
			}else{
				if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate1;}
			}
		}else{
			if(document.getElementById(inputend)!=null){document.getElementById(inputend).value	= edate;}
			if(document.getElementById(inputday)!=null){document.getElementById(inputday).value	= maxday;}
		}
	}
	
}

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;}
		}
	}
}

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;
 	}
 }
 
 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;
}