var trackingCookie0 = "jbHpSearchTracked1";
var trackingCookie1 = "jbHpFnTracked";

function trackInit() {
  
  var ck0 = getCookie(trackingCookie0); var div0 = $("tracked0");
  var ck1 = getCookie(trackingCookie1); var div1 = $("tracked1");

  $("ADULT").value = "00";
  $("MARKET1_DATE").value = "";
  $("MARKET2_DATE").value = "";
 
  //browserBackButton Cookie
  $("browserBack").value = Math.floor(Math.random()*110);


  if(ck0) {
    var aSpan = document.createElement("span");
    aSpan.appendChild(document.createTextNode("Recent searches: "));
    div0.appendChild(aSpan);
    var parts0 = ck0.split("//");
    for(var i=0; i<parts0.length; i++) {
      if(parts0[i] != "") {
        var parts1 = parts0[i].split(",");
        
        var link = document.createElement("a");
        link.href = "javascript:prepopMB('" + parts1[1] + "','" + parts1[2] + "'," + parts1[0] + "," + parts1[3] + "," + parts1[4] + "," + parts1[5] + "," + parts1[6] + ")";
        link.appendChild(document.createTextNode(parts1[1] + " to " + parts1[2]));
        div0.appendChild(link);
        if(i != parts0.length-1) div0.appendChild(document.createTextNode(" "));
      }
    }

 }

}


/*
homepage dual calendar
------------------------------------------------*/
function init() {
  cal0 = new YAHOO.widget.Calendar("cal0", "cal0Container");
  cal0.renderCellDefault = renderDefault;
  cal0.renderCellNotThisMonth = renderNotThisMonth;
  cal0.onChangePage = changePage0;
  cal0.onSelect = dateSelect0;
  cal0.buildShellFooter = buildFooter;
  cal0.customConfig = customize;
  cal0.setupConfig();
  cal0.render();
  

  // skylights compatible variables
  cal0SkyLightsHiddenDay = $("sector_1_d");
  cal0SkyLightsHiddenMonthYear = $("sector_1_m");
  cal0Hidden = $("MARKET1_DATE");



  YAHOO.util.Event.addListener(cal0.oDomContainer.id.replace("Container", "Trigger"), "click", showCalendar0, cal0, true);
  
  cal1 = new YAHOO.widget.Calendar("cal1", "cal1Container");
  cal1.renderCellDefault = renderDefault;
  cal1.renderCellNotThisMonth = renderNotThisMonth;
  cal1.onChangePage = changePage1;
  cal1.onSelect = dateSelect1;
  cal1.buildShellFooter = buildFooter;
  cal1.customConfig = customize;
  cal1.setupConfig();
  cal1.render();

  // skylights compatible variables
  cal1SkyLightsHiddenDay = $("sector_2_d");
  cal1SkyLightsHiddenMonthYear = $("sector_2_m");
  cal1Hidden = $("MARKET2_DATE");

  // clear these out
  $("MARKET1_ORIG_STATION").value = "";
  $("MARKET1_DEST_STATION").value = "";
  $("sector1_o").value = "";
  $("sector1_d").value = "";
  $("sector_1_d").value = "";
  $("sector_1_m").value = "";
  $("sector_2_d").value = "";
  $("sector_2_m").value = "";
  $("MARKET2_DATE").value = "";
  $("MARKET1_DATE").value = "";

  YAHOO.util.Event.addListener(cal1.oDomContainer.id.replace("Container", "Trigger"), "click", showCalendar1, cal1, true);

  YAHOO.util.Event.addListener(document.body, "click", offClick);
}

function renderDefault(workingDate, cell) {
  cell.innerHTML = ""; 
  var theDay;

  if (workingDate.getDate() < 10)
    theDay = "0" + this.buildDayLabel(workingDate);
  else
    theDay = this.buildDayLabel(workingDate);

  // if the date is before today, only display text, otherwise display a link
  // normally we'd use renderBodyCellRestricted, but it doesnt seem to facilitate 
  // blocking out a large set of dates

 var newdate = Date.parse(minibookerExtensionDate);

	if (  ( Date.parse(today.toString()) - (60*60*24*1000) ) > Date.parse(workingDate.toString()) || (Date.parse(workingDate.toString()) > newdate) ) 
    {
    cell.className = this.Config.Style.CSS_CELL_RESTRICTED;
    cell.appendChild(document.createTextNode(theDay)); 
    }
  else
    {
    var link = document.createElement("a");

    link.href="javascript:void(null);" 
    link.name=this.id+"__"+workingDate.getFullYear()+"_"+(workingDate.getMonth()+1)+"_"+workingDate.getDate(); 

    link.appendChild(document.createTextNode(theDay));
    cell.appendChild(link); 
    }
}


function renderNotThisMonth(workingDate, cell) {
  cell.innerHTML = "";
  return YAHOO.widget.Calendar_Core.STOP_RENDER;
}

idioma_x = true;
function customize() {
  // local
  
 	if (idioma_x) {
		this.Config.Locale.WEEKDAYS_SHORT = idioma["dias_unaletrax"];
		idioma_x = false;
	}
	else {
		this.Config.Locale.WEEKDAYS_SHORT = idioma["dias_unaletra"];
		idioma_x = true;
	}
  // styles
  this.Config.Style.CSS_ROW_HEADER = "calendarHeader";
  this.Config.Style.CSS_HEADER  = "calendarHeader";
  this.Config.Style.CSS_HEADER_TEXT  = "calendarHeaderText";
  this.Config.Style.CSS_WEEKDAY_ROW  = "calendarWeekRow";
  this.Config.Style.CSS_CALENDAR  = "calendar";
  this.Config.Style.CSS_CELL_SELECTED = "cellSelected";

  // options
  this.Config.Options.NAV_ARROW_LEFT = "images/calendar/calBack.gif";
  this.Config.Options.NAV_ARROW_RIGHT = "images/calendar/calForward.gif";
  this.Config.Options.LOCALE_MONTHS = this.Config.Locale.MONTHS_SHORT;
  
 
}

function buildFooter() {
	return;
}

function showCalendar0(e, obj) {
  var correctDate;
  if(this.getSelectedDates().length == 0 && cal1.getSelectedDates().length !=0) correctDate = cal1.pageDate;

  else if(this.getSelectedDates().length !=0) correctDate = this.getSelectedDates()[0];

  else correctDate = this.today;

  this.setMonth(correctDate.getMonth()); this.setYear(correctDate.getFullYear());

  var diff = Date.parse(correctDate.toString()) - Date.parse(this.today);
  
  if(this.pageDate.getMonth() == this.today.getMonth() && this.pageDate.getYear() == this.today.getYear()) {
    this.Config.Style.CSS_NAV_LEFT = "calnavH"; 
    this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }
  else if(diff > (1000*60*60*24*maxDaysOut)) {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; 
    this.Config.Style.CSS_NAV_RIGHT = "calnavH";
  }
  else {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; 
    this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }

  this.render();


	if( (window.ie6) || (window.ie7) ) { 
	
	// estas variables son del popup
	var id = jQuery("#" + this.oDomContainer.id);
	var h = id.css("height");
	var w = id.css("width");

	var size = window.getSize().scrollSize;
	var id2 = id;
	var x = size.x; // ancho
	var y = size.y; // alto
	
	//alert("x(width)="+size.x +"\ny(height)="+size.y);
	
	x = (x / 2) - 450;

	id.css({ left: (x) + 'px', top: 278 +'px'});

		if (window.ie6) {
			jQuery("#ie6hack").hide();
		}



	}

	// muestro el calendario
	jQuery("#"+this.oDomContainer.id).fadeIn('slow');

}

function showCalendar1(e, obj) {
  var theInput = $(cal1.oDomContainer.id.replace("Container", "Input"));
  if(theInput.innerHTML == disabledTxt)
    return;
  if(theInput.getElementsByTagName("a")[0] && theInput.getElementsByTagName("a")[0].innerHTML == disabledTxt)
    return;

  var correctDate;
  if(cal0.getSelectedDates().length != 0)
    correctDate = cal0.getSelectedDates()[0];

  else if(cal0.getSelectedDates().length == 0 && this.getSelectedDates().length != 0)
    correctDate = this.getSelectedDates()[0];

  else
    correctDate = this.today;
  
  this.setMonth(correctDate.getMonth()); this.setYear(correctDate.getFullYear());

  var diff = Date.parse(correctDate.toString()) - Date.parse(this.today);
  
  if(this.pageDate.getMonth() == this.today.getMonth() && this.pageDate.getYear() == this.today.getYear()) {
    this.Config.Style.CSS_NAV_LEFT = "calnavH"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }
  else if(diff > (1000*60*60*24*maxDaysOut)) {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavH";
  }
  else {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }
  
  this.render();


	if( (window.ie6) || (window.ie7) ) { 
	
	// estas variables son del popup
	var id = jQuery("#" + this.oDomContainer.id);
	var h = id.css("height");
	var w = id.css("width");

	var size = window.getSize().scrollSize;
	var id2 = id;
	var x = size.x; // ancho
	var y = size.y; // alto
	
	//alert("x(width)="+size.x +"\ny(height)="+size.y);
	
	x = (x / 2) - 445;

	id.css({ left: (x) + 'px', top: 307 +'px'});

		if (window.ie6) {
			jQuery("#ie6hack").hide();
		}



	}

	// muestro el calendario
	jQuery("#"+this.oDomContainer.id).fadeIn('slow');

}

function hide(id) {
	
	jQuery("#"+id).fadeOut('slow');
	
}

function changePage0() {
  var currDate = this.today; var nextDate = this.pageDate;
  var diff = Date.parse(nextDate.toString()) - Date.parse(currDate.toString());

  if(diff <= 0) {
    this.Config.Style.CSS_NAV_LEFT = "calnavH"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }

  else if(diff > (1000*60*60*24*maxDaysOut)) {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavH";
  }

  else {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }

  this.render();
}

function changePage1() {
  var currDate = this.today; var nextDate = this.pageDate;
  var diff = Date.parse(nextDate.toString()) - Date.parse(currDate.toString());

  if(diff <= 0) {
    this.Config.Style.CSS_NAV_LEFT = "calnavH"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }

  else if(diff > (1000*60*60*24*maxDaysOut)) {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavH";
  }

  else {
    this.Config.Style.CSS_NAV_LEFT = "calnavleft"; this.Config.Style.CSS_NAV_RIGHT = "calnavright";
  }

  this.render();
}

function dateSelect0(obj) {
  var c = obj ? obj : this;
  var currDate = c.getSelectedDates()[0];
  var parsed = Date.parse(currDate.toString());
  
  var jbDate = c.Config.Locale.WEEKDAYS_MEDIUM[currDate.getDay()] + ", " +
               c.Config.Locale.MONTHS_SHORT[currDate.getMonth()] + " " +
               currDate.getDate() + ", " +
               currDate.getFullYear();
			   
 jbDate = c.Config.Locale.WEEKDAYS_MEDIUM[currDate.getDay()] + " " + currDate.getDate() + " " + idioma["de_calendar"] + " " + c.Config.Locale.MONTHS_SHORT[currDate.getMonth()] + ", " + currDate.getFullYear();
 
  $(c.oDomContainer.id.replace("Container", "Input")).value = jbDate;

  // format date for skylights
  cal0SkyLightsHiddenDay.value = currDate.getDate() < 10 ? "0" + currDate.getDate() : currDate.getDate();
  var monthVal = (currDate.getMonth() + 1) < 10 ? "0" + (currDate.getMonth() + 1) : currDate.getMonth() + 1;
  cal0SkyLightsHiddenMonthYear.value = monthVal + currDate.getFullYear().toString();

  cal0Hidden.value = (currDate.getMonth() + 1) + "/" + currDate.getDate() + "/" + currDate.getFullYear();

  jQuery("#ie6hack").fadeIn('slow');
  hide(c.oDomContainer.id);

  if( cal1Hidden.value == "" ) {
    cal1.setMonth(currDate.getMonth()); 
    cal1.setYear(currDate.getFullYear()); 
    cal1.render();
    }

  else if( Date.parse( cal1Hidden.value ) < parsed ) {
    $(cal1.oDomContainer.id.replace("Container", "Input")).innerHTML = "Date to return?";
    cal1Hidden.value = "";
    cal1.clear();
    }
  
  cal1.minDate = currDate;

  
}

function dateSelect1(obj) {
  var c = obj ? obj : this;
  var currDate = c.getSelectedDates()[0];
  var jbDate = c.Config.Locale.WEEKDAYS_MEDIUM[currDate.getDay()] + ", " +
               c.Config.Locale.MONTHS_SHORT[currDate.getMonth()] + " " +
               currDate.getDate() + ", " +
               currDate.getFullYear();
   
  jbDate = c.Config.Locale.WEEKDAYS_MEDIUM[currDate.getDay()] + " " + currDate.getDate() + " " + idioma["de_calendar"]  + " " + c.Config.Locale.MONTHS_SHORT[currDate.getMonth()] + ", " + currDate.getFullYear();
  $(c.oDomContainer.id.replace("Container", "Input")).value = jbDate;
  
  // format date for skylights
  cal1SkyLightsHiddenDay.value = currDate.getDate() < 10 ? "0" + currDate.getDate() : currDate.getDate();

  var monthVal = (currDate.getMonth() + 1) < 10 ? "0" + (currDate.getMonth() + 1) : currDate.getMonth() + 1;
  cal1SkyLightsHiddenMonthYear.value = monthVal + currDate.getFullYear().toString();

  cal1Hidden.value = (currDate.getMonth() + 1) + "/" + currDate.getDate() + "/" + currDate.getFullYear();

  hide(c.oDomContainer.id);
}

function reenableCal(cal) {
  var theInput = $(cal.oDomContainer.id.replace("Container", "Input"));
  if(theInput.innerHTML == disabledTxt || (theInput.getElementsByTagName("a")[0] && theInput.getElementsByTagName("a")[0].innerHTML == disabledTxt)) {
    theInput.style.color = "#4b90cd";
    theInput.innerHTML = "Date to return?";
    if(theInput.firstChild.nodeName.toLowerCase() == "a")
      theInput.firstChild.style.fontSize = "13px";
  }
}

function disableCal(cal, hid) {
  var theInput = $(cal.oDomContainer.id.replace("Container", "Input"));
  theInput.innerHTML = disabledTxt;
  theInput.style.color = "#cccccc";
  if(theInput.getElementsByTagName("a")[0]) theInput.getElementsByTagName("a")[0].style.color = "#cccccc";
  cal.clear(); $(hid).value = "";
  var trigger = cal.oDomContainer.id.replace("Container", "Trigger");
}

var cont_clicks = 0;

function offClick(e) {
  if(!e) e = window.event;
  var caller = e.srcElement ? e.srcElement : e.target;
  var chain0 = false;
  var chain1 = false;

  //alert(caller.id);
  
  if (window.ie6 || window.ie7)
  {
  
  	  //var clase = jQuery("#" + caller.id).attr("src");
  	  //alert(clase);
  	  
	  if (caller.id!="cal0Input" && caller.id!="cal1Input" && caller.id!="image_right" && caller.id!="image_left")
	  {
	  	jQuery("#ie6hack").show();
	  }
  }
   
  while(caller) {
    if(caller.id == cal0.oDomContainer.id.replace("Container", "Root")) {
      chain0 = true;
      break;
    }
    else if(caller.id == cal1.oDomContainer.id.replace("Container", "Root")) {
      chain1 = true;
      break;
    }
	
    caller = caller.parentNode;
  }
  
  
  
  if(!chain0) hide(cal0.oDomContainer.id);
  if(!chain1) hide(cal1.oDomContainer.id);
}


var today = new Date();
var cal0, cal1;

var cal0Hidden = ""; 
var cal1Hidden = "";

var cal0SkyLightsHiddenMonthYear = ""; 
var cal0SkyLightsHiddenDay = ""; 

var cal1SkyLightsHiddenMonthYear = "";
var cal1SkyLightsHiddenDay = "";

var disabledTxt = "---------------------------------------";
var maxDaysOut = 241;


/*
Field focus functions
-------------------------------------------------*/
function initFocus(fieldId, defaultVal, maxlen) {
  var theInput = document.getElementById(fieldId);
  if(theInput.value == defaultVal) {
    theInput.value = "";
    
    if(maxlen >= 0) theInput.maxLength = maxlen;
  }
}

function swapPass(parent) {
  var td = parent;
  var input = td.firstChild;
  if(input.getAttribute("type") == "text") {
    var pass = document.createElement("input");
    pass.setAttribute("type", "password");
    pass.id = input.id; pass.name = input.name;
    pass.maxLength = 10;
    td.removeChild(input);
    td.appendChild(pass);
    pass.focus();
  }
}


/*
Preset Mini-Booker
-----------------------------------------------*/
function usePreset(config, panel, form) {
  var subP, obj, p, dateParts;
  if("from" in config) {
    this.panel0.panel1.preset(config["from"]);
    //subP = panel.subPanels[0];
    //if(obj = retCityAnchor(subP.panelId, config["from"]))
      //onclickWrap(subP, obj);
  }

  if("to" in config) {
    this.panel0.panel2.preset(config["to"]);
    //subP = panel.subPanels[1];
    //if(obj = retCityAnchor(subP.panelId, config["to"]))
      //onclickWrap(subP, obj);
  }

  if("dateLeave" in config) {
    dateParts = config["dateLeave"].split("/");
    cal0.selectedDates[0] = [dateParts[2],dateParts[0],dateParts[1]];
    dateSelect0(cal0);
  }

  if("dateReturn" in config) {
    if(config["dateReturn"] != "") {
      dateParts = config["dateReturn"].split("/");
      cal1.selectedDates[0] = [dateParts[2],dateParts[0],dateParts[1]];
      dateSelect1(cal1);
    }
  }

  var theForm = document[form];
  if("numAdt" in config) {
    var h4 = document.getElementById("selectObj_0").getElementsByTagName("h4")[0];
    h4.innerHTML = config["numAdt"] + " Adult";
    h4.innerHTML += (config["numAdt"] == 1) ? "" : "s";
    p = theForm.NUM_ADT ? theForm.NUM_ADT : theForm.ADULT;
    p.value = config["numAdt"];
  }

  if("numChd" in config) {
    var h4 = document.getElementById("selectObj_1").getElementsByTagName("h4")[0];
    h4.innerHTML = config["numChd"] + " Kid"; 
    h4.innerHTML += (config["numChd"] == 1) ? "" : "s";
    p = theForm.NUM_CHD ? theForm.NUM_CHD : theForm.CHILD;
    p.value = config["numChd"];
  }

  if(config["tripType"]) {    
    theForm.TRIP_TYPE[1].checked = true;
    disableCal(cal1, "MARKET2_DATE");
  } else {
    theForm.TRIP_TYPE[0].checked = true;
    reenableCal(cal1, "MARKET2_DATE");
    $("cal1Input").style.color = "#4B90CD";
  }		 
}
/* add helper JS for recent searches */

	function prepopMB(fromCity, toCity, trip, numAdts, numChds,fromdt,todt) {
		// fire prepopulated minibooker on "Recent Searches"
		 // reset form for Firefox users	
		
		 var preset2 = {"tripType": trip, "from": fromCity, "to": toCity, "numAdt": numAdts, "numChd": numChds, "dateLeave" : fromdt, "dateReturn" : todt };
		 usePreset(preset2, panel0, "bBaf"); 
	}	 
	