
var DS_x,DS_y;
//var remberMonth;
var start_yearName,start_monthName,start_dayName,end_yearName,end_monthName,end_dayName,num_nights;

var SignMonth=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
function dateSelector(inYear,inMonth,inDay,partName,numIcon) //construct dateSelector implement calendar
{
	var myDate=new Date(inYear,inMonth,inDay);
	this.year=myDate.getFullYear(); //year member
	this.month=myDate.getMonth()+1; //month member
	this.date=myDate.getDate(); //date member
	this.iconName=''; //iconName member, Don't use the same name in the same page
	this.yearName=''; //yearName member, name of year select
	this.monthName=''; //monthName member, name of month select
	this.dayName=''; //dayName member, name of day select
	this.start_yearName='';
	this.start_monthName='';
	this.start_dayName='';
	this.end_yearName='';
	this.end_monthName='';
	this.end_dayName='';
	this.num_nights='';
	this.partName = partName;
	this.numIcon = numIcon;
	this.display=display; //display method
}

function display() //display method
{
	var week=new Array('SUN','MON','TUE','WED','THU','FRI','SAT');
	var oYear,oMonth,oDay;
	start_yearName = this.start_yearName;
	start_monthName = this.start_monthName;
	start_dayName = this.start_dayName;
	end_yearName = this.end_yearName;
	end_monthName = this.monthName;
	end_dayName = this.end_dayName;
	
	num_nights = this.num_nights;
	oYear = document.all(this.yearName).value
	if(oYear=='')
		oYear = this.year;
	oMonth = document.all(this.monthName).value
	if(oMonth=='')
		oMonth = this.month;
	oDay = document.all(this.dayName).value
	if(oDay=='')
		oDay = this.date;
	
	//if(oYear==''||oMonth==''||oDay=='')
	//{
	//	oYear = this.year;
	//	oMonth = this.month;
	//}
	oMonth = oMonth - 1
	document.write("<style type=text/css>");
	document.write(".cal_font { border: 1px solid; font: normal 8px Verdana; color: #000000; }");
	document.write(".cal_font_span { font: normal 10px Verdana; color: #000000; }");
	document.write(".cal_border { border: 1px solid #000000; font: normal 8px Verdana; cursor: hand; background-color: #DDDDDD }");
	document.write(".cal_border2 { border: 1px solid #000000; font: normal 8px Verdana; cursor: hand; background-color: #DDDDDD };");
	document.write("</style>");
	document.write("<a style='cursor:hand' onclick=showDIV(this,'"+this.partName+"','"+this.numIcon+"') onfocus=this.blur() id='CAL"+this.iconName+"'><img src='images/calendar-icon.bmp'></a>");
	
	document.write("<div style='position:absolute;display:none;text-align:center;width:0px;height:0px;overflow:visible' onselectstart='return false;'>");
	document.write("<iframe style='position:absolute;left:-10px;top:20px;' frameborder=0 marginheight=0 marginwidth=0 hspace=0 vspace=0 scrolling=no width=142 height=170 src='about:blank'>");
	document.write("</iframe>");
	document.write(" <div style='position:absolute;left:-10px;top:20px;width:142px;height:165px;background-color:#F6F6F6;border:1px solid #245B7D;'>");
	document.write(" <table cellpadding=0 cellspacing=1 width=140 height=20 bgcolor=#CEDAE7 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");
	document.write(" <tr align=center>");
	document.write(" <td width=12% onmouseover=this.className='cal_border' onmouseout=this.className='cal_font' onclick=subYear(this) title='Decrease year' class='cal_font'><<</td>");
	document.write(" <td width=12% onmouseover=this.className='cal_border' onmouseout=this.className='cal_font' onclick=subMonth(this) title='Decrease month' class='cal_font'><</td>");
	document.write(" <td width=52%  class='cal_font'><b>"+SignMonth[oMonth]+"</b><b>&nbsp;&nbsp;</b><b>"+oYear+"</b><b></b></td>");
	document.write(" <td width=12% onmouseover=this.className='cal_border' onmouseout=this.className='cal_font' onclick=addMonth(this) title='Increase month' class='cal_font'>></td>");
	document.write(" <td width=12% onmouseover=this.className='cal_border' onmouseout=this.className='cal_font' onclick=addYear(this) title='Increase year' class='cal_font'>>></td>");
	document.write(" </tr>");
	document.write(" </table>");
	
	document.write(" <table cellpadding=0 cellspacing=0 width=140 height=20 onmousedown='DS_x=event.x-parentNode.style.pixelLeft;DS_y=event.y-parentNode.style.pixelTop;setCapture();' onmouseup='releaseCapture();' onmousemove='dsMove(this.parentNode)' style='cursor:move;'>");
	document.write(" <tr align=center>");
	for(i=0;i<7;i++)
		document.write(" <td class='cal_font'>"+week[i]+"</td>");
	document.write(" </tr>");
	document.write(" </table>");
	
	document.write(" <table cellpadding=0 cellspacing=2 width=140 bgcolor=#EEEEEE>");
	for(i=0;i<6;i++)
	{
		document.write(" <tr align=center>");
		for(j=0;j<7;j++)
			document.write(" <td class='cal_font' width=10% height=16 onmouseover=if(this.innerText!=''&&this.className!='cal_border2')this.className='cal_border' onmouseout=if(this.className!='cal_border2')this.className='cal_font' onclick=getvalue(this,document.all('CAL"+this.iconName+"'),document.all('"+this.yearName+"'),document.all('"+this.monthName+"'),document.all('"+this.dayName+"'))></td>");
		document.write(" </tr>");
	}
	document.write(" </table>");
	
	document.write(" <span style='cursor:hand' onclick=this.parentNode.parentNode.style.display='none' class='cal_font_span'>Close</span>");
	document.write(" </div>");
	document.write("</div>");
	
	dateShow(document.all('CAL'+this.iconName).nextSibling.childNodes[1].childNodes[2],this.year,this.month)
}

function showDIV(obj,pName,nIcon)
{
	var oYear, oMonth, oDay, lDate, nDate
	oYear = document.all(start_yearName).value
	oMonth = eval(document.all(start_monthName).value)
	oDay = document.all(start_dayName).value
	if(oYear==''||oMonth==''||oDay=='')
	{
		var today;
		today=new Date();
		oYear=today.getYear();
		oMonth=today.getMonth();
	}
	else
	{
		oMonth = oMonth - 1
	}
	lDate = new Date(oYear, oMonth, oDay);
	nDate = Date.parse(lDate) + 1000*60*60*24
	lDate.setTime(nDate)
	oYear = lDate.getFullYear()
	oMonth = lDate.getMonth() + 1
	oDay = lDate.getDate()
		
	for(i=0;i<parseInt(nIcon);i++)
	{
		var iToa = ''+i;
		var objName = pName+iToa;
		document.all('CAL'+objName).nextSibling.style.display='none';
	}
	obj.nextSibling.style.display = 'block';
	dateShow(obj.nextSibling.childNodes[1].childNodes[2],oYear,oMonth)
	obj.nextSibling.childNodes[1].childNodes[0].cells[2].childNodes[0].innerHTML = SignMonth[oMonth-1]
	obj.nextSibling.childNodes[1].childNodes[0].cells[2].childNodes[2].innerHTML = oYear
	//alert(obj.nextSibling.childNodes[1].childNodes[2].cells[15].innerHTML)
}

function subYear(obj) //Decrease year
{
	var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
	myObj[2].innerHTML=eval(myObj[2].innerHTML)-1;
	dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[2].innerHTML),getMonthValue(myObj[0].innerHTML))
}

function addYear(obj) //Increase year
{
	var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
	myObj[2].innerHTML=eval(myObj[2].innerHTML)+1;
	dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[2].innerHTML),getMonthValue(myObj[0].innerHTML))
}

function subMonth(obj) //Decrease month
{
	var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
	var month=getMonthValue(myObj[0].innerHTML)-1;//eval(myObj[0].innerHTML)-1;
	if(month==0)
	{
		month=12;
		//remberMonth = month;
		subYear(obj);
	}
	myObj[0].innerHTML=SignMonth[month-1];
	//remberMonth = month;
	dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[2].innerHTML),month)//eval(myObj[0].innerHTML))
}

function addMonth(obj) //Increase month
{
	var myObj=obj.parentNode.parentNode.parentNode.cells[2].childNodes;
	var month=getMonthValue(myObj[0].innerHTML)+1;//eval(myObj[0].innerHTML)+1;
	if(month==13)
	{
		month=1;
		//remberMonth = month;
		addYear(obj);
	}
	myObj[0].innerHTML=SignMonth[month-1];
	//remberMonth = month;
	dateShow(obj.parentNode.parentNode.parentNode.nextSibling.nextSibling,eval(myObj[2].innerHTML),month)//eval(myObj[0].innerHTML))
}

function dateShow(obj,year,month) //display day of specified month
{
	var myDate=new Date(year,month-1,1);
	var today=new Date();
	var day=myDate.getDay();
	var length;
	switch(month)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			length=31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			length=30;
			break;
		case 2:
			if((year%4==0)&&(year%100!=0)||(year%400==0))
				length=29;
			else
				length=28;
	}
	for(i=0;i<obj.cells.length;i++)
	{
		obj.cells[i].innerHTML='';
		obj.cells[i].style.color='';
		obj.cells[i].className='cal_font';
	}
	for(i=0;i<length;i++)
	{
		obj.cells[i+day].innerHTML=(i+1);
		if(year==today.getFullYear()&&(month-1)==today.getMonth()&&(i+1)==today.getDate())
			obj.cells[i+day].style.color='red';
	}
}

function getvalue(obj,inputObj,yearObj,monthObj,dayObj) //get the date by selected
{
	var myObj=obj.parentNode.parentNode.parentNode.previousSibling.previousSibling.cells[2].childNodes;
	if(obj.innerHTML)
	{
		var dValue = obj.innerHTML;
		var mValue = getMonthValue(myObj[0].innerHTML);//eval(remberMonth);
		if(dValue<10)
			dValue = '0'+dValue;
		if(mValue < 10)
			mValue = '0'+mValue;
		dayObj.value = dValue;
		monthObj.value = mValue;
		yearObj.value = eval(myObj[2].innerHTML);
		yearObj.focus();		
	}
	inputObj.nextSibling.style.display='none';
	for(i=0;i<obj.parentNode.parentNode.parentNode.cells.length;i++)
		obj.parentNode.parentNode.parentNode.cells[i].className='cal_font';
	obj.className='cal_border2'
	if(num_nights!='')
		OnSelectsChangeNop(yearObj,monthObj,dayObj)
}

function dsMove(obj) //move the cal
{
	//if(event.button==1)
	//{
	//	var X=obj.clientLeft;
	//	var Y=obj.clientTop;
	//	obj.style.pixelLeft=X+(event.x-DS_x);
	//	obj.style.pixelTop=Y+(event.y-DS_y);
	//}
}

function getMonthValue(str)
{
	var month
	switch(str)
	{
	case 'Jan':
		month = 1
		break
	case 'Feb':
		month = 2
		break
	case 'Mar':
		month = 3
		break
	case 'Apr':
		month = 4
		break
	case 'May':
		month = 5
		break
	case 'Jun':
		month = 6
		break
	case 'Jul':
		month = 7
		break
	case 'Aug':
		month = 8
		break
	case 'Sep':
		month = 9
		break
	case 'Oct':
		return 10
		break
	case 'Nov':
		month = 11
		break
	case 'Dec':
		month = 12
		break
	}
	return month
}

function OnNightsChange()
{
	var aYear,aMonth,aDay,aDate
	var nights
	var nDate
	var dYear,dMonth,dDay,dDate
	aYear = document.all(start_yearName).value
	aMonth = document.all(start_monthName).value
	aDay = document.all(start_dayName).value
	dYear = document.all(end_yearName).value
	dMonth = document.all(end_monthName).value
	dDay = document.all(end_dayName).value
	nights = document.all(num_nights).value
	if (aYear!='' && aMonth!='' && aDay!='' && nights!='')
	{
		aMonth = aMonth - 1
		
		aDate = new Date(aYear,aMonth,aDay)
		nDate = Date.parse(aDate) + nights*1000*60*60*24
		dDate = new Date(aYear,aMonth,aDay)  
	    dDate.setTime(nDate)
	    dYear = dDate.getFullYear()
	    dMonth = dDate.getMonth() + 1
	    dDay = dDate.getDate()
	    if(dDay<10)
	 		dDay = '0' + dDay
		if(dMonth<10)
			dMonth = '0' + dMonth
	    document.all(end_yearName).value = dYear
	    document.all(end_monthName).value = dMonth
	    document.all(end_dayName).value = dDay
	}    
	else if (dYear!='' && dMonth!='' && dDay!='' && nights!='')
	{
		dMonth = dMonth - 1
		dDate = new Date(dYear,dMonth,dDay)
		nDate = Date.parse(dDate) - nights*1000*60*60*24
		aDate = new Date(dYear,dMonth,dDay)  
	    aDate.setTime(nDate)
	    aYear = aDate.getFullYear()
	    aMonth = aDate.getMonth() + 1
	    aDay = aDate.getDate()
	    if(aDay<10)
	 		aDay = '0' + aDay
		if(aMonth<10)
			aMonth = '0' + aMonth
	    document.all(start_yearName).value = aYear
	    document.all(start_monthName).value = aMonth
	    document.all(start_dayName).value = aDay
	} 
}

function OnSelectsChange(obj)
{
	var aYear,aMonth,aDay,aDate
	var nights
	var nDate
	var dYear,dMonth,dDay,dDate
	aYear = document.all(start_yearName).value
	aMonth = document.all(start_monthName).value - 1
	aDay = document.all(start_dayName).value
	dYear = document.all(end_yearName).value
	dMonth = document.all(end_monthName).value - 1
	dDay = document.all(end_dayName).value
	nights = document.all(num_nights).value
	keyStr = /start/i;
	keyStr1= /arrival/i;
	if (dYear!='' && dMonth!='' && dDay!='' && aYear!='' && aMonth!='' && aDay!='')
	{
		aDate = new Date(aYear,aMonth,aDay)
		dDate = new Date(dYear,dMonth,dDay)
		if((dDate-aDate)<=0)
		{
			if(nights!='') //if filled in nights_num
			{
				if(keyStr.test(obj.name)||keyStr1.test(obj.name))
				{
					nDate = Date.parse(aDate) + nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(end_yearName).value = dYear
				    document.all(end_monthName).value = dMonth
				    document.all(end_dayName).value = dDay
				}
				else
				{
					nDate = Date.parse(dDate) - nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(start_yearName).value = dYear
				    document.all(start_monthName).value = dMonth
				    document.all(start_dayName).value = dDay
				}
			}
			else
			{
				obj.value = ''
				document.all(num_nights).value = ''
				alert('Please make sure that the departure date must after the arrival date!')
			}
		}
		else
		{
			if(nights!='')
			{
				if(keyStr.test(obj.name))
				{
					nDate = Date.parse(aDate) + nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(end_yearName).value = dYear
				    document.all(end_monthName).value = dMonth
				    document.all(end_dayName).value = dDay
				}
				else
				{
					nDate = Date.parse(dDate) - nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(start_yearName).value = dYear
				    document.all(start_monthName).value = dMonth
				    document.all(start_dayName).value = dDay
				}
			}
			else
			{
				nights = parseInt(Math.abs(dDate - aDate)/1000/60/60/24)
				document.all(num_nights).value = nights    
			}
		}
	}
}

function OnSelectsChangeNop(yearObj,monthObj,dayObj)
{
	var aYear,aMonth,aDay,aDate
	var nights
	var nDate
	var dYear,dMonth,dDay,dDate
	
	aYear = document.all(start_yearName).value
	aMonth = document.all(start_monthName).value - 1
	aDay = document.all(start_dayName).value
	dYear = document.all(end_yearName).value
	dMonth = document.all(end_monthName).value - 1
	dDay = document.all(end_dayName).value
	nights = document.all(num_nights).value
	//alert(aYear+'-'+aMonth+'-'+aDay+'-'+dYear+'-'+dMonth+'-'+dDay)
	if (dYear!='' && dDay!='' && aYear!='' && aDay!='')
	{
		aDate = new Date(aYear,aMonth,aDay)
		dDate = new Date(dYear,dMonth,dDay)
		//alert((dDate-aDate))
		if((dDate-aDate)<=0)
		{
			if(nights!='') //if filled in nights_num
			{
				if(aYear==yearObj.value&&aMonth==(monthObj.value-1)&&aDay==dayObj.value)
				{
					nDate = Date.parse(aDate) + nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(end_yearName).value = dYear
				    document.all(end_monthName).value = dMonth
				    document.all(end_dayName).value = dDay
				}
				else if(dYear==yearObj.value&&dMonth==(monthObj.value-1)&&dDay==dayObj.value)
				{
					nDate = Date.parse(dDate) - nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(start_yearName).value = dYear
				    document.all(start_monthName).value = dMonth
				    document.all(start_dayName).value = dDay
				}
			}
			else
			{
				yearObj.value = ''
				monthObj.value = ''
				dayObj.value = ''
				document.all(num_nights).value = ''
				alert('Please make sure that the departure date must after the arrival date!')
			}
		}
		else
		{
			if(nights!='')
			{
				if(aYear==yearObj.value&&aMonth==(monthObj.value-1)&&aDay==dayObj.value)
				{
					nDate = Date.parse(aDate) + nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(end_yearName).value = dYear
				    document.all(end_monthName).value = dMonth
				    document.all(end_dayName).value = dDay
				}
				else if(dYear==yearObj.value&&dMonth==(monthObj.value-1)&&dDay==dayObj.value)
				{
					nDate = Date.parse(dDate) - nights*1000*60*60*24
				    dDate.setTime(nDate)
				    dYear = dDate.getFullYear()
				    dMonth = dDate.getMonth() + 1
				    dDay = dDate.getDate()
				    if(dDay<10)
				 		dDay = '0' + dDay
					if(dMonth<10)
						dMonth = '0' + dMonth
				    document.all(start_yearName).value = dYear
				    document.all(start_monthName).value = dMonth
				    document.all(start_dayName).value = dDay
				}
			}
			else
			{
				nights = parseInt(Math.abs(dDate - aDate)/1000/60/60/24)
				document.all(num_nights).value = nights 
				//alert(nights)   
			}
		}
	}
}

