var flightsForm = Array({"field" : "sector1_o", "method" : "validateTextField"},
                          {"field" : "sector1_d", "method" : "validateTextField"},
                          {"field" : "MARKET1_DATE", "method" : "validateTextField"},
                          {"field" : "MARKET2_DATE", "method" : "validateTextField"}
                          );


function openPopUp(url) {
  window.open(url,'pop2','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,height=500,width=800');
}

function FlightsPage(container) {
  
  this.container = container;
  this.cookie = "flightPageCookie";
  this.browserBackCookie = "FlightsBrowserBackCookie";
  
  //reset values

  // ajax widgets
  this.travelDeals = new TravelDeals("flight", document.getElementById("tdOutput"), document.getElementById("tdLoader"),     document.getElementById("tdMessage"), document.getElementById("tdError"));
  this.travelDeals.getDeals();

  var o = this;
  this.travelDeals.onload = function() {
    o.resultCountLoaded();
  }
  
  //right side panels
  this.panel1 = new GenericPanel("whereFrom1", "\277Desde d\363nde?", "area1", 3, airports, "perfectDealForm","","");
  this.panel2 = new GenericPanel("whereTo1", "\277Hacia d\363nde?", "area2", 4, airports, "perfectDealForm","161","");
  
  document.getElementById("whereFrom1").getElementsByTagName("div")[0].setAttribute('style', 'float:left; position:relative;z-index:97;');
  document.getElementById("whereTo1").getElementsByTagName("div")[0].setAttribute('style', 'float:left; position:relative;z-index:96;');
  document.getElementById("whereTo1").setAttribute('style', 'float:left;');
  var cookie = getCookie(this.cookie);

  
  //set seeDeals link
  var seeDeals = document.getElementById("seeDeals");
  seeDeals.innerHTML = '';

  if (navigator.userAgent.indexOf("Firefox") != -1) {
    seeDeals.setAttribute('style', 'margin: 0pt; padding: 4px 0 0 0; position: relative; font-size: 12px;');
  }

  $("seeDeals").onclick = function() { 
    o.panel2.reset(); 
    o.filter1();
  }
 
  var jsInput = this.getElementsByClassName($("whereTo1"), "div", "jsInput");
  jsInput[0].setAttribute('style','padding-right:0px;margin:0 4px 0 0;');

  //parse url parameters, preset minibooker
  var urlVars = getURLParameters();

  if(urlVars.from || urlVars.to) {
    if (urlVars.from) {
      this.panel1.preset(urlVars.from);
      if (urlVars.to)
        this.panel2.preset(urlVars.to);
      this.filter1();
    }
  }
  else {
    this.travelDeals.getDeals();
    this.panel1.onItemSelect.subscribe(this.filter1, this, true); 
    this.panel2.onItemSelect.subscribe(this.getDeals, this, true);
  }

  this.panel1.onItemSelect.subscribe(this.filter1, this, true); 
  this.panel2.onItemSelect.subscribe(this.getDeals, this, true);


  if(cookie) {
    var jar = document.getElementsByClassName("cookieJar", this.container);
    var cookieObject = eval(cookie);
    jar[0].appendChild(document.createTextNode("B\372squeda reciente: "));
    var link = document.createElement("a");
    link.href = "#";
    link.id = "prepopMB";
 	
    link.title = cookieObject[0].fields[0].value + " hasta " + 
                 cookieObject[0].fields[1].value + " el " + 
                 cookieObject[0].fields[2].value + " regreso " + 
                 cookieObject[0].fields[3].value + " - " + 
                 cookieObject[0].fields[4].value + ", " + 
                 cookieObject[0].fields[5].value + ", ";

    link.appendChild(document.createTextNode(cookieObject[0].displayValue));
	 
    jar[0].appendChild(link);
    //recent search link
    $("prepopMB").onclick = function() { 
      o.prepopMB(cookieObject[0].fields[0].value,cookieObject[0].fields[1].value,cookieObject[0].fields[2].value,cookieObject[0].fields[3].value,cookieObject[0].fields[4].value,cookieObject[0].fields[5].value,cookieObject[0].fields[7].value,cookieObject[0].fields[8].value,cookieObject[0].fields[9].value,cookieObject[0].fields[6].value); 
    }
  }  
     
  //TB Awards CheckBox
  /*var tbAwards = $("TbAwards").getElementsByTagName("input")[0];
  tbAwards.onclick = function() {
    if (this.checked == true) { 
      document.flightsForm.mode.value='OAR'; 
      $("selectObj_2").style.display ='none';
      $("lbFl1").style.display = 'none'; 
      $("fare_cat").value = "LOWEST";
    } 
    else { 
      document.flightsForm.mode.value=''; 
      $("selectObj_2").style.display ='block';
      $("lbFl1").style.display = 'block';
    }
  }
   */ 
  initLightbox();
}

FlightsPage.prototype.getElementsByClassName = function(oElm, strTagName, strClassName) {
  var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
  var arrReturnElements = new Array();
  strClassName = strClassName.replace(/\-/g, "\\-");
  var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
  var oElement;
  
  for(var i=0; i<arrElements.length; i++) {
    oElement = arrElements[i];
    if(oRegExp.test(oElement.className)) {
      arrReturnElements.push(oElement);
    }
  }
  return (arrReturnElements);
}

FlightsPage.prototype.filter1 = function(e) {
  var panel1Value = this.panel1.getValue()
  var panel2Value = this.panel2.getValue();
  var newCodes = eval("a" + panel1Value);
  var newSet = new Array();
  var reselect = false; 
  
  for(var i=0; i<newCodes.length; i++) {
    newSet.push(new Array(newCodes[i], eval("s" + newCodes[i]), i ) );
  }
    
    if(panel2Value != "") {
      for(var i=0; i<newCodes.length; i++) {
        if(panel2Value == newCodes[i]) {
          reselect = true;
               break;
        }
      }
    }

    this.panel2.set = newSet;
    this.panel2.searchSet = newSet;
    this.panel2.render();

    if(reselect) {
      this.panel2.highlight(this.panel2.getAfromKey(panel2Value));
    }
    else { 
      this.panel2.reset();
    }
   this.getDeals();
   showToWhere(this.panel1.getValue());
}

FlightsPage.prototype.submitForm = function() {
  var result = this.validator.validate();
  var cookieObject = new Object();

  if(result.length === undefined) {
    if ((eval(this.adults.getValue()) + eval(this.children.getValue())) > 9){
      alert("Se te permite un m\341ximo de " + 9 + " pasajeros\npor cada reservaci\363n online. Si tu grupo supera\nese n\372mero, llama a nuestro centro de reservaciones.")
      return false 
     }

    if(this.calPair.getReadable1() == this.calPair.getReadable2()) 
      if(!confirm("Tu fecha de regreso es la misma que tu fecha de salida. \277Es intencional este viaje tan corto?"))
        return false;  

    var todayDate = new Date(); 
    var todayDate = todayDate.getMonth() + 1 + "/" + todayDate.getDate() + "/" + todayDate.getFullYear();

    if(todayDate == this.calPair.getValue1()) {
      alert("Debido a que has seleccionado la fecha de hoy, s\363lo se mostrar\341n en la pr\363xima p\341gina los vuelos que partan al menos 1 hora y 30 minutos despu\351s de la hora actual.");
    }

    if(parseInt(this.adults.getValue()) == 0 && parseInt(this.children.getValue()) > 0) {
      alert("n\nLos ni\361os de entre 5 a\361os de edad y menores de 14 a\361os que viajen solos se consideran menores sin acompa\361ante.\n\nLos menores sin acompa\361ante solamente pueden viajar en vuelos sin escala o vuelos directos (vuelos que hacen escala pero no requieren cambio de avi\363n). No se admiten en vuelos con conexi\363n.\n\nLos vuelos reservados antes del 1 de mayo de 2008, se encuentran sujetos a un cargo de \04450 por persona, por cada viaje de una v\355a para menores sin acompa\361ante. A partir del 1 de mayo de 2008, el cargo ser\341 de \04475.\n\nUna vez realizada la reservaci\363n, llama al 1-800-JETBLUE (538-2583) para suministrar el nombre, direcci\363n y n\372mero de tel\351fono, tal como aparece en la identificaci\363n con foto de la persona que llevar\341 y recoger\341 al ni\361o. La tarifa tambi\351n ser\341 calculada en ese momento.\n");
    } 

    if(parseInt(this.adults.getValue()) == 0 && parseInt(this.children.getValue()) == 0) {
      alert("Debes ingresar al menos un pasajero.");
      return false;
    }

   /* if($('multicity').checked == true) {
      if(this.panelPair.panel1.getValue() != this.MultiCityPanelPair.panel2.getValue() && this.MultiCityPanelPair.panel1.getValue() != this.panelPair.panel2.getValue()) {
        alert("\n\nThe multi-city function must include\nitineraries connected via one airport.\nThis can be either your originating or\nreturn airport. For all other multi-city\nflights please book separate one-way\nreservations.\n");
        return false;
      }

      if(this.MultiCityPanelPair.panel1.getValue() == "" || this.MultiCityPanelPair.panel2.getValue() == "") {
        alert("\nYou have selected a multi-city search, but you have\nnot entered a complete city pair for the return flight.\nPlease choose both cities.\n");
        return false;
      }
    }
   */
    this.skylightsFormatting();

    //TripType Multicity or Roundtrip
    var tripType = "";
    if($('rt').checked == true)
      tripType = 0;
    if($('ow').checked == true)
      tripType = 1;
    //if($('multicity').checked == true)
      //tripType = 3;


   if ( tripType == 1 ) {
      OWAlert( $("sector1_d").value );
   }

    

    //create recent search cookie
    cookieObject.displayValue = this.panelPair.panel1.getValue() + " hasta " + this.panelPair.panel2.getValue();
    cookieObject.fields = new Array();

    cookieObject.fields.push({"value" : this.panelPair.panel1.getValue()});
    cookieObject.fields.push({"value" : this.panelPair.panel2.getValue()});
    cookieObject.fields.push({"value" : this.calPair.getValue1()});
    cookieObject.fields.push({"value" : this.calPair.getValue2() });
    cookieObject.fields.push({"value" : this.adults.getValue()});
    cookieObject.fields.push({"value" : this.children.getValue()});
    cookieObject.fields.push({"value" : this.fares.getValue()});
    cookieObject.fields.push({"value" : tripType});
    cookieObject.fields.push({"value" : ""});
    cookieObject.fields.push({"value" : ""});

    //save cookie
    addTracking(this.cookie, cookieObject);

    return true;
    }
  else
    return false;
  }


FlightsPage.prototype.skylightsFormatting = function() {
  var parts = this.calPair.getValue1().split("/");
 
  var month1 = parts[0];
  // add leading zero
  month1 = (month1 < 10) ? "0" + parts[0] : parts[0];
  
  var day1 = parts[1];
  // add leading zero
  day1 = (day1 < 10) ? "0" + parts[1] : parts[1];
 
  var year1 = parts[2];

  parts = this.calPair.getValue2().split("/");
 
  var month2 = parts[0];
  // add leading zero
  month2 = (month2 < 10) ? "0" + parts[0] : parts[0];
  
  var day2 = parts[1];
  // add leading zero
  day2 = (day2 < 10) ? "0" + parts[1] : parts[1];
  var year2 = parts[2];

  document["flightsForm"].m1.value = year1 + month1 + day1 + this.panelPair.panel1.getValue() + this.panelPair.panel2.getValue();
  document["flightsForm"].sector1_o.value = this.panelPair.panel1.getValue();
  document["flightsForm"].sector_1_d.value = day1;
  document["flightsForm"].sector_1_m.value = "" + month1 + year1;
  
  if (this.calPair.getValue2() == "xxx") {
    document["flightsForm"].m2.value="";
    document["flightsForm"].nom.value="1";
  }
  else {
    document["flightsForm"].m2.value = year2 + month2 + day2 + this.panelPair.panel2.getValue() + this.panelPair.panel1.getValue();
    document["flightsForm"].sector1_d.value = this.panelPair.panel2.getValue();
    document["flightsForm"].sector_2_d.value = day2;
    document["flightsForm"].sector_2_m.value = "" + month2 + year2;
    document["flightsForm"].nom.value="2";
  }
	
  document["flightsForm"].pT.value = document["flightsForm"].CHILD.value + "CHILD" + document["flightsForm"].ADULT.value + "ADULT";

  document.dest1Form.dIndex.value = document["flightsForm"].sector1_d.selectedIndex;
}

FlightsPage.prototype.getDeals = function(e) {
  if(this.panel1.getValue() != "" && this.panel2.getValue() == "") {
     this.travelDeals.getDeals(this.panel1.getValue(), "");
     showToWhere(this.panel1.getValue());     
  }
  else if(this.panel1.getValue() != "" && this.panel2.getValue() != "") {
    this.travelDeals.getDeals(this.panel1.getValue(), this.panel2.getValue());
  }
  else if(this.panel1.getValue() == "" && this.panel2.getValue() != "") {
   this.travelDeals.getDeals("", this.panel2.getValue());
  }

  this.showResultCount();
}

FlightsPage.prototype.resultCountLoaded = function(e) {
  this.showResultCount();
}

FlightsPage.prototype.showResultCount = function() {
  var el = document.getElementById("countDisplay");
  if (document.getElementById("hdnCount") != null) {
      var count = document.getElementById("hdnCount").value;
      message = "Encontramos " + count + " ofertas de " + this.panel1.getReadable();
      el.innerHTML = message;

  }
  if($("area2").value != "") {
    el.innerHTML += " hasta " + this.panel2.getReadable(); 
    $("seeDeals").innerHTML = "<a href='#'>Vea todas las ofertas de " + $("area1").value + "</a>";
  }  

  var tdHeader = document.getElementById("cityToContainer");  
}

function showToWhere(place) {
  
  var container = document.getElementById("cityToContainer");
  container.className = container.className.replace("off-left ", "");
}

FlightsPage.prototype.prepopMB = function(fromCity, toCity, fromdt, todt, adults,children,tripType,Multicityfrom,Multicityto,fare) {
  this.panelPair.panel1.preset(fromCity);
  this.panelPair.panel2.preset(toCity);
  this.adults.presetAdults(adults);
  this.children.preset(children);
  this.calPair.preset0(fromdt);

  if(todt != "")
    this.calPair.preset1(todt);

  if(todt != "xxx")
    this.calPair.preset1(todt);
  
   if(tripType == '0') {
     $('rt').checked = true;
   }
   else  {
     $('ow').checked = true;  
     this.calPair.disableCal(); 
   }
   //else {
     //this.MultiCityPanelPair.panel1.preset(Multicityfrom);
     //this.MultiCityPanelPair.panel2.preset(Multicityto);
     //$("multiCityDiv").style.display = 'block';
     //this.calPair.reenableCal();
     //$('multicity').checked = true;
  //}
        
}



// Dean Edwards/Matthias Miller/John Resig

function init() {
  // quit if this function has already been called
  if (arguments.callee.done) return;

  // flag this function so we don't do the same thing twice
  arguments.callee.done = true;

  // kill the timer
  if (_timer) clearInterval(_timer);

  var page = new FlightsPage("tdFlBookerTop");

};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      init(); // call the onload handler
    }
  };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      init(); // call the onload handler
    }
  }, 10);
}

/* for other browsers */
window.onload = init;