function getURLParameters() {
  var sURL = window.document.URL.toString();
  var params = new Object();
  if (sURL.indexOf("?") > 0) {
    var arrParams = sURL.split("?");
    var arrURLParams = arrParams[1].split("&");

    for (i = 0; i < arrURLParams.length; i++) {
      if (arrURLParams[i].substring(0, 3) == "to=")
        params.to = unescape(arrURLParams[i].substring(3));
      else if (arrURLParams[i].substring(0, 5) == "from=")
        params.from = unescape(arrURLParams[i].substring(5));
    }
  }
  return params;
}

function PanelPair(targetId1, targetId2, title1, title2, hiddenId1, hiddenId2, pIndex, dataSrc1, dataSrc2, form, dropdownPosX, dropdownPosY, dropdownPosX2, dropdownPosY2) {
  this.panel1 = new GenericPanel(targetId1, title1, hiddenId1, pIndex, dataSrc1, form, dropdownPosX, dropdownPosY);
  this.panel1.onItemSelect.subscribe(this.filter1, this, true);
  this.panel2 = new GenericPanel(targetId2, title2, hiddenId2, pIndex + 1, dataSrc2, form, dropdownPosX2, dropdownPosY2);

  //parse url parameters, preset minibooker
  var urlVars = getURLParameters();
  if (urlVars.from) {
    this.panel1.preset(urlVars.from);
    if (urlVars.to)
      this.panel2.preset(urlVars.to);
  }
}

PanelPair.prototype.filter1 = function(e) {
  var panel1Value = this.panel1.getValue();
  var panel2Value = this.panel2.getValue();
  // switch for vacation/airports route variable prefix
  var newCodes = this.panel1.targetId == "cityFrom3" ? eval("a" + panel1Value) : eval("r" + panel1Value);

  // sort newCode based on airport names
  if (this.panel1.targetId == "cityFrom2") {
    var tmpSet = new Array();
    var tmpCode = new Array();
    for (var i = 0; i < newCodes.length-1; i++) {
      var cityObj = eval("o" + newCodes[i]);
      tmpSet.push(cityObj);
    }
    tmpSet.sort(compareObject);
    for (var i = 0; i < tmpSet.length; i++)
      tmpCode.push(tmpSet[i].code);
    tmpCode.push(0);
    newCodes = tmpCode;
  }

  var newSet = new Array();
  var reselect = false;
  for (var i = 0; i < newCodes.length-1; i++) {
    if (this.panel1.targetId == "cityFrom3") { //Load route data using VacationList.js data format
      var airportName = eval("s" + newCodes[i]);
      newSet.push(new Array(newCodes[i], airportName, i));
    }
    else { //Load route data using airports.js data format
      var airport = eval("o" + newCodes[i]);
      newSet.push(new Array(airport.code, airport.name, i));
    }
  }
  
  newSet[newSet.length] = 0; // make last item null or zero

  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();
}

GenericPanel.prototype.setField = function(text) {
  document.getElementById(this.inputName).value = text;
  if (this.hiddenId == "area2") {
    var destination = this.set[this.selectedItem.id.split("_")[1]][0];
    this.form[this.hiddenId].value = destination.replace(/_/g, " "); // replace all '_' with spaces
  }
  else {
    this.form[this.hiddenId].value = this.set[this.selectedItem.id.split("_")[1]][0];
  }
}

