// Copyright 2006 TripAdvisor LLC All rights reserved
// HAC Affiliate 
function ta_StringBuffer() 
{
    this.buffer = new Array(1024);
}
ta_StringBuffer.prototype.toString = function () 
{ 
    return this.buffer.join("");
}
ta_StringBuffer.prototype.append= function(str) 
{
    this.buffer[this.buffer.length++] = str; return this;
}

ta_StringBuffer.prototype.DOMAIN = function(str)
{
    this.append(taDomain);
    this.append(str);
    return this;
}

var taOut = new ta_StringBuffer();
var taTarget = "_top";

function taDone() 
{ 
    document.write(taOut.toString());
} 

var ta_Months = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var IsLeap = (new Date()).getYear();
iSLeap  = !( IsLeap % 4 ) && ( ( IsLeap % 100 ) || !( IsLeap % 400 ) );
var ta_daysInMonth = [31,(IsLeap?29:28),31,30,31,30,31,31,30,31,30,31];

var cal_months=new Array("January","February"," March"," April"," May"," June"," July"," August"," September"," October"," November"," December");
var cal_days=new Array("S","M","T","W","R","F","S");

var cal_cbf;
var cal_savedBody;
var cal_savedWinc;
var cal_savedDiv;
var cal_calldoc;
var cal_currentSetting;
var cal_backgroundcolor='#b5c7e7';
var cal_firstDate;
var cal_lastDate;
var cal_setDate;

function ta_GetMonth(m)
{
    var s=""+m;
    return s.length==1 ? "0" + s : s;
}
function setInDate(d) 
{
	setInDateN(d,0);
}
function setInDate1(d) 
{
	setInDateN(d,1);
}
function setInDateN(d,n)
{
	var f = n==0?document.HotelAvailabilityComparisonForm:document.HacCheckForm;

	f.inDay.selectedIndex=d.getDate()-1;
	for (var i=0; i<f.inMonth.length;i++)
	{
		if (f.inMonth[i].value == ta_GetMonth(d.getMonth()+1)+"/"+d.getFullYear())
		{
			f.inMonth.selectedIndex=i;
		}
	}
	if (cal_dcomp(getOutDateN(n), d)<=0)
	{
		var dout=new Date(d);
		dout.setMilliseconds(86400000);
		setOutDateN(dout,n);
	}
}
function setOutDate(d) 
{
	setOutDateN(d,0);
}
function setOutDate1(d) 
{
	setOutDateN(d,1);
}
function setOutDateN(d,n)
{
          var f;
          if (n == 0) {
              f = document.HotelAvailabilityComparisonForm;
          } else {
              f = document.HacCheckForm;
          }
          f.outDay.selectedIndex=d.getDate()-1;
          for (var i=0; i<f.outMonth.length;i++){
              if (f.outMonth[i].value == ta_GetMonth(d.getMonth()+1)+"/"+d.getFullYear()){
                  f.outMonth.selectedIndex=i;
              }
          }
      }
      function getLastDate(){
          var d = new Date();
          d.setFullYear(d.getFullYear()+1);
          d.setDate(1);
          d.setMilliseconds(-86400000);
          return d;        
      }
      function getInDate(){
          return getInDateN(0);
      }
      function getInDate1(){
          return getInDateN(1);
      }
      function getOutDate(){
          return getOutDateN(0);
      }
      function getOutDate1(){
          return getOutDateN(1);
      }
      function getInDateN(n){
          var f;
          if (n == 0) {
              f = document.HotelAvailabilityComparisonForm;
          } else {
              f = document.HacCheckForm;
          }
          var monY = f.inMonth[f.inMonth.selectedIndex].value.split(/\//);
          return new Date(monY[1],monY[0]-1,f.inDay.selectedIndex+1);        
      }
      function getOutDateN(n){
          var f;
          if (n == 0) {
              f = document.HotelAvailabilityComparisonForm;
          } else {
              f = document.HacCheckForm;
          }
          var monY = f.outMonth[f.outMonth.selectedIndex].value.split(/\//);
          return new Date(monY[1],monY[0]-1,f.outDay.selectedIndex+1);        
      }
  

function ta_generateMonthDropDown(startMonth, year, selectedMonth, elementName)
{
	taOut.
		append('<select  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;margin-right: 3px;" onchange="setInDate(getInDate())" class="frmSel" name="').
		append(elementName).
		append('">');
	var month=0;
	for (month=startMonth;month<startMonth+12;month++)
	{
		taOut.
		append('<option value="').append(ta_GetMonth(month+1)).append('/').append(year).append('" ').
		append(month==selectedMonth?' selected ':'').
		append('>').
		append(ta_Months[month%12]).
		append('</option>');
	}
	taOut.append('</select>');
}
function ta_GenerateDaysDropDown(month, selectedDay, elementName)
{
	var days = ta_daysInMonth[0];
	taOut.
	append('<select  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;margin-right: 3px;" onchange="setInDate(getInDate())" class="frmSelSm" name="').
	append(elementName).
	append('">');

	var day=0;
	for (day=1;day<=days;day++)
	{
		taOut.	
		append('<option value="').append(day).append('" ').
		append(day==selectedDay?' selected ':'').
		append('>').
		append(day).
		append('</option>');
	}
	taOut.append('</select>');
}

function ta_GeneratePriceLevel()
{
	taOut.
	append('<select  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;" class="frmSel" name="minmaxrate" value="">').
	append('<option value="0,99999">Any price</option>').
	append('<option value="0,100">Under $100</option>').
	append('<option value="0,200">Under $200</option>').
	append('<option value="0,300">Under $300</option>').
	append('</select>');
}

function ta_GenerateAdults()
{
	taOut.
	append('<select  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;" class="frmSel" name="adults">').
	append('<option value="1" selected="selected">1</option>').
	append('<option value="2">2</option>').
	append('<option value="3">3</option>').
	append('<option value="4">4</option>').
	append('</select>');
}

function showCalSelf(d, callback, fd, ld){
    if (!cal_checkUserAgent()) return;
    if (cal_savedBody) return cal_close();
    cal_setDate=d;
    cal_cbf=callback;
    cal_savedBody=document.body.innerHTML;
    cal_calldoc=document;
    document.body.innerHTML=cal_getHTML("");
    cal_currentSetting=new Date(d);
    cal_firstDate=fd;
    cal_lastDate=ld;
    cal_draw();
}

function showCalPop(d, callback,e, fd, ld){
    if (!cal_checkUserAgent()) return;
    if (cal_savedWinc) return cal_close();
    cal_cbf=callback;
    cal_savedWinc = window.open('','cal'+(''+new Date()).replace(new RegExp('[^A-Za-z0-9]','g'),''),'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=450,height=300,left='+cal_getScreenX(e)+',screenX='+cal_getScreenX(e)+',top='+cal_getScreenY(e)+',screenY='+cal_getScreenY(e)+'');
    cal_calldoc = cal_savedWinc.document;
    cal_calldoc.open();
    cal_calldoc.write("<html><head><title>Calendar</title></head><body>"+cal_getHTML("window.opener.")+"</body></html>");
    cal_calldoc.close();
    cal_currentSetting=new Date(d);
    cal_firstDate=fd;
    cal_lastDate=ld;
    cal_draw();
}

function showCalDiv(d, callback, e, fd, ld){
    showCalDivOffset(d,callback,e,fd,ld,0,20);
}

function cal_checkUserAgent(){
    var ua=navigator.userAgent.toLowerCase();
    // Calendar can freeze IE 5.2 on the Mac, disable it.
    if (ua.indexOf('msie')!=-1 && ua.indexOf('mac')!=-1 && ua.indexOf('5.')!=-1){
        return false;
    }
    return true;
}

function showCalDivOffset(d, callback, e, fd, ld, xOff, yOff){
    if (!cal_checkUserAgent()) return;
    if (cal_savedDiv) return cal_close();
    cal_setDate=d;
    cal_cbf=callback;
    cal_calldoc=document;
    cal_savedDiv=document.createElement('div');
    cal_savedDiv.innerHTML=cal_getHTML("window.");
    cal_savedDiv.style.position='absolute';
    cal_savedDiv.style.top=cal_getMouseY(e)+yOff;
    cal_savedDiv.style.left=cal_getMouseX(e)+xOff;
    document.body.appendChild(cal_savedDiv);
    cal_currentSetting=new Date(d);
    cal_firstDate=fd;
    cal_lastDate=ld;
    cal_draw();
}

function cal_getHTML(wR){
    var s = "";
    s+="<table border='0' cellpadding='0' cellspacing='0' width='150'>";
    s+="<tr><td colspan=3 border=0 bgcolor='#4B73BB' style='border-left: 1px solid #666666; border-right: 1px solid #666666; border-top: 1px solid #666666;'>";
    s+=cal_getDF(wR);
    s+="</td></tr>";
    s+="<tr><td border=0 bgcolor='#DAE4EA' background='"+taDomain+"/img/calendar/rounded_l.gif'></td><td border=0 bgcolor='#DAE4EA'>";
    s+=cal_getBody(wR);
    s+="</td><td border=0 bgcolor='#DAE4EA' background='"+taDomain+"/img/calendar/rounded_r.gif'></td></tr>";
    s+="<tr><td background='"+taDomain+"/img/calendar/rounded_bl.gif' width='7' height='7' border='0'></td><td background='"+taDomain+"/img/calendar/rounded_b.gif'></td><td background='"+taDomain+"/img/calendar/rounded_br.gif' width='7' height='7' border='0'></td></tr></table>";
    s+="</table>";
    return s;
}

function cal_getDF(wR){
    var s="";
    s+="<table style='border-collaspse:collapse;border:none;height:100%;width:100%;background-color:#4B73BB;'><tr>";
    s+="<td width='14' border=0 onclick='"+wR+"cal_prevMonth();' style='cursor:pointer;cursor:hand;'><img src='"+taDomain+"/img/calendar/arrow_left.gif' width='7' height='8' border='0' hspace='2'></td>";
    s+="<td border=0 style='color:#ffffff;font-size:11px;font-family:arial;' align='center'><b><span id=cal_monthyear></span></b></td>";
    s+="<td border=0 width='14' onclick='"+wR+"cal_nextMonth();' style='cursor:pointer;cursor:hand;'><img src='"+taDomain+"/img/calendar/arrow_right.gif' width='7' height='8' border='0' hspace='2'></td>";
    s+="<td border=0 width='7' onclick='"+wR+"cal_close();' style='cursor:pointer;cursor:hand;'><img src='"+taDomain+"/img/calendar/x.gif' width='5' height='6' border='0' align='right' hspace='1' vspace='1' style='padding-left:2px;'></td>";
    s+="</tr></table>";
    return s;
}

function cal_getBody(wR){
    s="";
    s+="<table style='font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:10px;background-color:#DAE4EA;border:none;cursor:pointer;cursor:hand;'>";
    s+=cal_getWDayH(wR);
    s+=cal_getDays(wR);
    s+="</table>";
    return s;
}

function cal_getWDayH(wR){
    var s="";
    s+="<tr>";
    for (var i=0;i<cal_days.length; i++)s+="<td style='width:20px;border:1px solid #999999;color:#000099;font-weight:bold;background-color:#e3Ebf3;text-align:center;'>"+cal_days[i]+"</td>";
    s+="</tr>";
    return s;
}

function cal_getDays(wR){
    var s="";
    var k=1;
    for (var j=0;j<6;j++){
        s+="<tr>";
        for (var i=0;i<cal_days.length; i++)s+="<td id=cal_c"+k+" onclick='"+wR+"cal_dCb("+(k++)+");' type=text style='text-align:right;'></td>";
        s+="</tr>";
    }
    return s;
}

function cal_getScreenX(e){
    if (!e && window.event) var e = window.event;
    if (e && e.screenX) return e.screenX;
    return 0;
}

function cal_getScreenY(e){
    if (!e && window.event) var e = window.event;
    if (e && e.screenY) return e.screenY;
    return 0;
}

function cal_getMouseX(e){
    if (!e && window.event) var e = window.event;
    if (e && e.pageX) return e.pageX;
    if (e && e.clientX) return e.clientX + document.body.scrollLeft;
    return 50;
}

function cal_getMouseY(e){
    if (!e && window.event) var e = window.event;
    if (e && e.pageY) return e.pageY;
    if (e && e.clientY) return e.clientY + document.body.scrollTop;
    return 50;
}

function cal_setToday(){
  cal_currentSetting = new Date();
  cal_draw();
}

function cal_dCb(dateIndex){
    cal_currentSetting.setDate(1);
    var subtract = cal_currentSetting.getDay();
    if (subtract <= 2) subtract += 7;
    var workingDate = new Date(cal_currentSetting);
    var dateCorrection=dateIndex-subtract-1;
    for (var i=0; i<dateCorrection; i++){
        workingDate.setMilliseconds(86400000);
    }
    for (var i=0; i>dateCorrection; i--){
        workingDate.setMilliseconds(-86400000);
    }
    if (cal_dcomp(cal_firstDate,workingDate) <= 0 && cal_dcomp(cal_lastDate,workingDate) >= 0){
        cal_close();
        cal_cbf(workingDate);
    }
}

function cal_close(){
    if (cal_savedBody) cal_calldoc.body.innerHTML = cal_savedBody;
    if (cal_savedWinc) cal_savedWinc.close();
    if (cal_savedDiv) document.body.removeChild(cal_savedDiv);
    cal_savedBody=cal_savedWinc=cal_savedDiv=null;
}

function cal_prevMonth(){
    cal_currentSetting.setDate(1);
    var month = cal_currentSetting.getMonth();
    while (month == cal_currentSetting.getMonth()){
        cal_currentSetting.setMilliseconds(-86400000);
    }
    cal_draw();
}

function cal_nextMonth(){
    cal_currentSetting.setDate(28);
    var month = cal_currentSetting.getMonth();
    while (month == cal_currentSetting.getMonth()){
        cal_currentSetting.setMilliseconds(86400000);
    }
    cal_draw();
}

function cal_dcomp(d1, d2){
    if (!d1 || !d2) return 0;
    if (d1.getYear() == d2.getYear()){
        if (d1.getMonth() == d2.getMonth()){
            return d1.getDate() - d2.getDate();
        }
        return d1.getMonth()-d2.getMonth();
    }
    return d1.getYear()-d2.getYear();
}

function cal_draw(){
    var today = new Date();
    cal_currentSetting.setDate(1);
    var year = cal_currentSetting.getFullYear();
    var month = cal_currentSetting.getMonth();
    
    cal_calldoc.getElementById("cal_monthyear").innerHTML=cal_months[month]+"&nbsp;"+year;    
    
    var workingDate = new Date(cal_currentSetting);
    var subtract = cal_currentSetting.getDay();
    if (subtract <= 2) subtract += 7;
    workingDate.setMilliseconds(-subtract*86400000);
    for(var dayCount=1; dayCount <= 42; dayCount++){
        var field = cal_calldoc.getElementById("cal_c"+dayCount);
        field.innerHTML = workingDate.getDate();
        var bgcolor = '#ffffff';
        var bordcolor = '#ffffff';
        var fgcolor = '#000000';
        if (cal_dcomp(cal_firstDate,workingDate) > 0 || cal_dcomp(cal_lastDate,workingDate) < 0){
            bgcolor = '#666666';
            bordcolor = '#cccccc';
            fgcolor = '#cccccc';
        } else if (workingDate.getMonth() != month){
            bgcolor = '#DAE4EA';
            bordcolor = '#DAE4EA';
            fgcolor = '#999999';
        } else if (cal_dcomp(workingDate, cal_setDate) == 0){
            bgcolor = '#FFCC66';
            bordcolor = '#000000';
            fgcolor = '#000000';
        } else if (cal_dcomp(workingDate, today) == 0){
            bordcolor = '#999999';
        } else if (workingDate.getDay() == 0 || workingDate.getDay() == 6){
        } 
        
        field.style.backgroundColor = bgcolor;
        field.style.borderColor = bordcolor;
        field.style.color = fgcolor;
        workingDate.setMilliseconds(86400000);
    }
}

function taInit()
{
	//document.write('<link href="'+taDomain+'/css/home.css" type="text/css" rel="stylesheet">');
	var d = new Date();
	var thisYear = d.getYear() 
	// some browsers are 2000 based, others 100 based
	if (thisYear < 2000 )
	{
	   thisYear = 1900 + thisYear;
	}
	var thisMonth  = d.getMonth();
	var thisDay = d.getDate()+8;

	var nextMonth = thisMonth;
	var nextDay = thisDay + 2;


	var daysInThisMonth = ta_daysInMonth[thisMonth];
	if (thisDay >= daysInThisMonth)
	{
		thisDay -= daysInThisMonth;
		thisMonth++;
	}
	var daysInNextMonth = ta_daysInMonth[nextMonth];
	if (nextDay >= daysInNextMonth)
	{
		nextDay -= daysInThisMonth;
		nextMonth++;
	}

// Create a table where the top, bottom, left, right are our branding, the center cell is the HAC form
taOut.append('\
   <table width="230" bgcolor="#f6f3e7" cellspacing="0" cellpadding="0" border="0"> \
      \
      <tr valign="top" style="background-image:url(').DOMAIN('/img/pce/hac_widget/bg_top.gif); background-position:top; background-repeat:repeat-x;"> \
         <td width="5"><img hspace="0" src="').DOMAIN('/img/pce/hac_widget/tl.gif" width="5" height="28"></td> \
          <td style="border-top: 1px solid #999999;" width="100%"> \
            <div style="padding-top: 3px; font-family: arial; font-size: 12px;" align="center"><b>Search Hotel Price &amp; Availability</b></div> \
         </td> \
         <td width="5"><img hspace="0" src="').append(taDomain).append('/img/pce/hac_widget/tr.gif" width="5" height="28"></td> \
      </tr> \
      \
      <tr><td colspan="3" style="border-left: 1px solid #999999; border-right: 1px solid #999999; padding: 0px 5px 0px 5px;" align="center"> \
        <!-- form --> 	\
	<form target="').append(taTarget).append('" style="margin: 0px; padding: 0px;" method="get" name="HotelAvailabilityComparisonForm" action="').DOMAIN('/HACSearch" > \
           <input name="m" value="10556" type="hidden"> \
	   <input name="aid" value="').append(taCode).append('" type="hidden"> \
	   <input name="src" value="78273" type="hidden"> \
           <input name="from" value="HACAffiliate" type="hidden"> \
           <input name="currency" value = "USD" type="hidden"> \
           <table border="0" cellspacing=0 cellpadding = 2 > \
              <!-- City --> \
              <tr> \
                 <td colspan="3"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">City:&nbsp;<input name="cat" value="" type="hidden"><input style="width: 150px;" class="dt1" size="20" name="q" type="text"></td> \
              </tr> \
              <!-- check-in --> \
              <tr > \
                 <td nowrap="nowrap"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">Check-in:</td> \
                 <td nowrap="nowrap"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;" colspan=2>');
                   ta_generateMonthDropDown(thisMonth,thisYear,thisMonth,"inMonth");ta_GenerateDaysDropDown(thisMonth,thisDay-1,"inDay");taOut.append(' \
                   <img style="cursor:hand;cursor:pointer;" \
                       onclick="showCalDivOffset(getInDate(), setInDate, event, new Date(), getLastDate(), taCalendarHorz, taCalendarVert);" \
                       alt="Click to select date from a calendar" class="pointer" \
                       src="').DOMAIN('/img/calendar/calendar_icon.gif" align="middle" border="0" height="16" width="19"> \
                  </td> \
               </tr> \
               <!-- check-out --> \
               <tr> \
                  <td nowrap="nowrap" style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">Check-out:</td> \
                  <td nowrap="nowrap"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;" colspan=2>');ta_generateMonthDropDown(nextMonth,thisYear,nextMonth,"outMonth");
                     ta_GenerateDaysDropDown(thisMonth,nextDay-1,"outDay");taOut.append(' \
                     <img style="cursor:hand;cursor:pointer;" \
                          onclick="showCalDivOffset(getOutDate(), setOutDate, event, new Date(), getLastDate(), taCalendarHorz, taCalendarVert);" \
                          alt="Click to select date from a calendar" class="pointer" \
                          src="').append(taDomain).append('/img/calendar/calendar_icon.gif" align="middle" border="0" height="16" width="19"> \
                   </td> \
	       </tr> \
	       <!-- price level --> \
               <tr> \
                  <td nowrap="nowrap"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">Price level:</td> \
                  <td nowrap="nowrap"  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;" colspan=2>');ta_GeneratePriceLevel(); taOut.append(' \
                  </td> \
               </tr> \
               <!-- adults --> \
               <tr> \
                  <td  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">Adults:&nbsp;</td><td  style="font-size: 11px;font-family:Arial, Helvetica, sans-serif;">');ta_GenerateAdults();taOut.append('</td> \
                  <td align="right" width="75%" cospan=2 > \
                     <input name="submit" \
                            src="').DOMAIN('/img/pce/hac_widget/btn_find_hotels.gif" \
                            alt="Search Hotels" height="23" type="image" width="75"> \
                  </td> \
                </tr> \
             </table> \
          </form> \
        </td></tr> \
        <!-- bottom row branding --> \
     <tr valign="bottom" style="background-image:url(').DOMAIN('/img/pce/hac_widget/bg_bottom.gif); background-position:top; background-repeat:repeat-x;"> \
        <td width="5"><img hspace="0" src="').DOMAIN('/img/pce/hac_widget/bl.gif" width="5" height="28"></td> \
        <td style="border-bottom: 1px solid #999999;" width="100%"> \
        <div style="padding-top: 3px; font-family: arial; font-size: 11px;" align="center">powered by <img src="').DOMAIN('/img/pce/hac_widget/trip_logo_smongreen.gif" align="absmiddle" vspace="2" width="107" height="18" alt="TripAdvisor" > \
        </div> \
        </td> \
        <td width="5"><img hspace="0" src="').append(taDomain).append('/img/pce/hac_widget/br.gif" width="5" height="28"></td> \
     </tr> \
  </table>');

	
	// push it out
	taDone();
}

