
DATE_OBJ=null;CAL_OBJ=null;DATE_NAME=null;DATE_FORM=null;CAL_VISIBLE=null;START_DAY=null;function renderCal(m,y){var calDate=new Date(y,m-1,1);var weekDay=calDate.getDay();var month=calDate.getMonth();var year=calDate.getFullYear();var wDayArr=['D','L','M','M','J','V','S'];var monthArr=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];var firstDayOfMonth=new Date(year,month,1).getDay();var numberDays=getDaysInMonth(month+1,year);var monthName=monthArr[month].toUpperCase();var dayOfWeek=wDayArr[weekDay];var today,mm,dd,yy;var d1=formatDate(DATE_FORM.inDate.value);if(DATE_NAME=='inDate'||d1==null)
startingDate=new Date();else{mm=d1[0];dd=d1[1];yy=d1[2];startingDate=new Date(yy,mm-1,dd);}
var currMonth=startingDate.getMonth();var currDay=startingDate.getDate();var currYear=startingDate.getFullYear();var day;if(year<currYear)
day=50;else
if(year>currYear)
day=0;else
if(year==currYear){if(month<currMonth)
day=50;else
if(month>currMonth)
day=0
else
day=startingDate.getDate();}
month=month+1;var calendar='<table class="cal" cellspacing="1" >'+'<tr>'+'<td class="month">'+'<a href="javascript:void(0)" onclick="renderCal('+
(month>1?month-1:12)+','+
(month>1?year:year-1)+');">&laquo;</a>'+'</td>'+'<td colspan=5 class="month">'+
monthName+' '+
year+'</td>'+'<td class="month">'+'<a href="javascript:void(0)" onclick="renderCal('+
(month<12?month+1:1)+','+
(month<12?year:year+1)+');">&raquo;</a>'+'</td>'+'</tr>'+'<tr>';for(var d=0;d<7;d++){calendar+='<td class="week">'+wDayArr[d]+'</td>';}
var dayCounter=1;calendar+='</tr>'+'<tr>';if(firstDayOfMonth>0){calendar+='<td colspan="'+firstDayOfMonth+'" class="emptyDay">&nbsp;</td>';}
weekDayTemp=firstDayOfMonth;while(dayCounter<=numberDays){if(weekDayTemp==7){weekDayTemp=0;calendar+='</tr>'+'<tr>';}
if(dayCounter<day){calendar+='<td class="inactiveDay">'+dayCounter+'</td>';}
else
calendar+='<td class="activeDay"><a href="javascript:void(0)" onclick="setDateVal('+month+','+dayCounter+','+year+');">'+dayCounter+'</a></td>';dayCounter++;weekDayTemp++;}
if(weekDayTemp!=7){var remainingDays=7-weekDayTemp;calendar+='<td colspan="'+remainingDays+'" class="emptyDay">&nbsp;</td>';}
calendar+='</tr>'+'</table>';CAL_OBJ.innerHTML=calendar;CAL_VISIBLE=true;}
function showCal(obj){var calObj=getObject('dateCal');if(!calObj){calObj=document.createElement("div");calObj.id="dateCal";calObj.className="calAbsPos calWrapper";document.body.appendChild(calObj);}
CAL_OBJ=calObj;DATE_NAME=obj.name;DATE_FORM=obj.form;DATE_OBJ=getObject(obj.id);var date,month,year,numDays,daysLeft,m,d,y;var d1=formatDate(DATE_FORM.inDate.value);var d2=formatDate(DATE_FORM.outDate.value);var offset=false;var today=new Date();var currMonth=today.getMonth();var currDay=today.getDate();var currYear=today.getFullYear();if(d1==null&&d2==null){date=today;numDays=getDaysInMonth(currMonth+1,currYear);daysLeft=numDays-currDay+1;if(daysLeft<=4){date=new Date(currYear,(currMonth+1),1);month=date.getMonth();year=date.getFullYear();}}
else
if(DATE_NAME=='inDate'&&d1==null&&d2!=null){m=parseInt(d2[0]);d=d2[1];y=d2[2];if(d==1)
date=new Date(y,m-2,1);else
date=new Date(y,m-1,1);}
else
if(DATE_NAME=='inDate'&&d1!=null){m=d1[0];y=d1[2];date=new Date(y,m-1,1);}
else
if(DATE_NAME=='outDate'&&d1==null&&d2!=null){m=d2[0];y=d2[2];date=new Date(y,m-1,1);}
else
if(DATE_NAME=='outDate'&&d1!=null&&d2==null){m=d1[0];d=d1[1];y=d1[2];date=new Date(y,m-1,d);numDays=getDaysInMonth(m,y);daysLeft=numDays-d+1;if(daysLeft==1)
date=new Date(y,m,1);}
else
if(DATE_NAME=='outDate'&&d1!=null&&d2!=null){m=d2[0];y=d2[2];date=new Date(y,m-1,1);}
START_DAY=date.getDate();month=date.getMonth()+1;year=date.getFullYear();if(!CAL_VISIBLE)
renderCal(month,year);var absX=getX(DATE_OBJ);var absY=getY(DATE_OBJ);var x_offset=getW(DATE_OBJ);var y_offset=0;var xCoord=absX+x_offset;var yCoord=absY+y_offset;moveObject(calObj,xCoord,yCoord);showObject(calObj);distributeFormValue(DATE_OBJ);trackMouseClick(hideCal);}
function getDaysInMonth(month,year){var lastDay=new Date(year,month,0).getDate();var firstDay=new Date(year,month-1,1).getDate();return lastDay;}
function compareMonths(m,y){numDays1=32-new Date(y,m-1,32).getDate();numDays2=32-new Date(y,m,32).getDate();if(numDays1<=numDays2)
return false;return true;}
function hideCal(event){var calObj=getObject('dateCal');var dateObj=DATE_OBJ;var x=getEventX(event);var y=getEventY(event);if(!(isInside(dateObj,x,y,0,0,4,0)||isInside(calObj,x,y))){hideObject(calObj);untrackMouseClick();CAL_VISIBLE=false;}}
function setDateVal(m,d,y){var calObj=getObject('dateCal');var dateObj=DATE_OBJ;var dateVal=(m<10?'0':'')+m+'/'+(d<10?'0':'')+d+'/'+y;dateObj.value=dateVal;distributeFormValue(dateObj);hideObject(calObj);checkDates();}
function checkDates(){var m1,m2,d1,d2,y1,y2;var date1=formatDate(DATE_FORM.inDate.value);var date2=formatDate(DATE_FORM.outDate.value);if(date1!=null&&date2!=null){m1=date1[0];d1=date1[1];y1=date1[2];m2=date2[0];d2=date2[1];y2=date2[2];var iDate=new Date(y1,m1-1,d1);var oDate=new Date(y2,m2-1,d2);if(iDate>oDate){DATE_FORM.outDate.value='mm/dd/yyyy';distributeFormValue(DATE_FORM.outDate);}}}
function formatDate(pDateStr){var month,day,year,currYear;var dateArr=pDateStr.split(/[-\/]/);var currDate=new Date();currYear=currDate.getFullYear();if(dateArr.length==3){month=parseInt(dateArr[0],10);day=parseInt(dateArr[1],10);year=parseInt(dateArr[2],10);}
else{dateArr=pDateStr.split(/\./);if(dateArr.length==3){day=parseInt(dateArr[0],10);month=parseInt(dateArr[1],10);year=parseInt(dateArr[2],10);}
else
return null;}
if(year<2000)
year+=2000;if((isNaN(day))||(isNaN(month))||(isNaN(year)))
return null;if((month<1||month>12)||(day<1||day>31)||(year<currYear||year>currYear+7))
return null;if(day>(month==2?28+((year%4==0)&&((year%100!=0)||(year%400==0))?1:0):30+(month<8?1-((month-1)%2):(month-1)%2)))
return null;if(month<10)
month='0'+month;if(day<10)
day='0'+day;return[month,day,year];}
function dateErr(dateStr){alert('The '+dateStr+' does not seem to be a valid date.\nPlease provide a date in either the format\n"mm/dd/yyyy" or "dd. mm. yyyy".');}
function verifyData(f,pref){var n,iDateStr,oDateStr;if(!(f.inDate.value))
alert('Please add a valid '+iDateStr+'.');else
if(!(f.outDate.value))
alert('Please add a valid '+oDateStr+'.');switch(pref){case'h':iDateStr='Check-In Date';oDateStr='Check-Out Date';if(f.city&&(!f.city.value)){alert('Please provide a city name\nfor your hotel search.');return false;}
break;case'f':iDateStr='Departure Date';oDateStr='Return Date';if((f.from&&(!f.from.value))||(f.to&&(!f.to.value))){alert('Please provide city names or airport codes\nfor your flight search.');return false;}
break;case'c':iDateStr='Pickup Date';oDateStr='Return Date';if(f.site&&(!f.site.value)){alert('Please provide city names or airport codes\nfor your car search.');return false;}
break;default:}
var d1=formatDate(f.inDate.value);var d2=formatDate(f.outDate.value);if(d1==null){dateErr(iDateStr);f.inDate.value='mm/dd/yyyy';distributeFormValue(f.inDate);return false;}
switch(pref){case'f':if(!f.oneWay||!f.oneWay[1]||!f.oneWay[1].checked){if(d2==null){dateErr(oDateStr);f.outDate.value='mm/dd/yyyy';distributeFormValue(f.outDate);return false;}
if((d2[2]<d1[2])||((d2[2]==d1[2])&&((d2[0]<d1[0])||((d2[0]==d1[0])&&(d2[1]<d1[1]))))){alert('The '+oDateStr+' must be ON OR AFTER the '+iDateStr+'.\nPlease correct and try again.');f.inDate.value='mm/dd/yyyy';distributeFormValue(f.inDate);return false;}}
break;default:if(d2==null){dateErr(oDateStr);f.outDate.value='mm/dd/yyyy';distributeFormValue(f.outDate);return false;}
if((d2[2]<d1[2])||((d2[2]==d1[2])&&((d2[0]<d1[0])||((d2[0]==d1[0])&&(d2[1]<d1[1]))))){alert('The '+oDateStr+' must be ON OR AFTER the '+iDateStr+'.\nPlease correct and try again.');f.inDate.value='mm/dd/yyyy';distributeFormValue(f.inDate);return false;}}
return true;}
function verifyDate(d,n,f){if(!d.value){alert('Please add a valid '+n+'.');return false;}
var e1,e2;if((e1=d.value.match(/^(1[0-2]|0?[1-9])\/(3[01]|[12][0-9]|0?[1-9])\/((20)?[0-9]{2})$/))||(e2=d.value.match(/^(3[01]|[12][0-9]|0?[1-9])\.\s*(1[0-2]|0?[1-9])\.\s*((20)?[0-9]{2})$/))){var day,month,year;if(e1){day=Number(e1[2]);month=Number(e1[1]);year=Number(e1[3]);}
else{day=Number(e2[1]);month=Number(e2[2]);year=Number(e2[3]);}
year=(year<2000?year+2000:year);if(day>(month==2?28+((year%4==0)&&((year%100!=0)||(year%400==0))?1:0):30+(month<8?1-((month-1)%2):(month-1)%2))){alert('The '+n+' does not seem to be a valid date.');return false;}
d.value=(month<10?'0':'')+month+'/'+(day<10?'0':'')+day+'/'+year;}
else{var txt='The '+n+' does not seem to be a valid date.';if(f==null||f!=true){txt+='\nPlease provide a date in either the format\n"mm/dd/yyyy" or "dd. mm. yyyy".';}
alert(txt);return false;}
return true;}