var gApp = null;

function kwidOnLoad(tabidx) {
  gApp = this;
  gApp.kWidget = new Object();        
  gApp.kWidget.tabIdx = tabidx;        
  var form = document.forms['kFlightForm'];
  setDefaultDates(form);
  kwidOnChangeTab(tabidx);
}

//
function kwidOnChangeTab(tabIdx) {

  // hide all other panes and tabs.
  for (var i = 0; i <= 5; i++) {
    var x = 'kPane' + i;
    if (getObjStyle(x)) {
      hideDivById(x);
    }

    x = 'kTab' + i;
    if (getObj(x)) {
	setClassById(x, 'kTabUnsel');
    }    
  }

  // Activate this pane and tab.
  unhideDivById('kPane' + tabIdx);
  
  setClassById('kTab' + tabIdx, 'kTabSel');        

  var blob = ""; 
  if (0 == tabIdx) {
	setClassById('kWidget', 'orange');  
	setClassById('kTab0', 'kTabSel');
  } else if (1 == tabIdx) {
	setClassById('kWidget', 'green');  
	setClassById('kTab1', 'kTabSel1');
  } else if (2 == tabIdx) {
	setClassById('kWidget', 'red');  
	setClassById('kTab2', 'kTabSel2');
  }else if(3 ==  tabIdx){
       setClassById('kWidget', 'lime');
       setClassById('kTab3', 'kTabSel3');       
 } 
//  setDivText('kMktBlob', blob);
  //gApp.kWidget.tabIdx = tabIdx;        
}

//
function kwidOnSubmit(tabIdx) {
  if (1 == tabIdx) {
    kwidFlightOnSearch();
  } 
  else if (2 == tabIdx) {
    kwidHotelOnSearch();
  } 
  else if (3 == tabIdx) {
    kwidCarOnSearch();
  } 
  else if (4 == tabIdx) {
    kwidCruiseOnSearch();
  } 
  else {
    alert('not yet ' + tabIdx);
  }
}

//
function kwidFlightOnSearch() {
  var fn = 'kFlightForm';
  var form = getObj(fn);
  if (!form) {
    alert("Invalid page structure " + fn);
    return false;
  }

  if (!form.ai || !form.ai.value) {
    alert("Missing required affiliate id");
    return false;
  }

  if (!form.l1 || !form.l2) {
    alert("Invalid page structure: missing l1 or l2");
    return false;       
  }

  var kayakUrl = 'http://www.kayak.com/s/search/air?' + kwUnpackForm(form);

  // Looks for "?&" within qstring and if found, replaces with "?"
  if (kayakUrl.match(/\?\&/g)) {
    kayakUrl = kayakUrl.replace(/\?\&/g,"?");
  }

  return kwidSubmitGet(kayakUrl);
}



function kwidHotelOnSearch() {
  var fn = 'kHotelForm';
  var form = getObj(fn);
  if (!form) {
    alert("Invalid page structure " + fn);
    return false;
  }

  if (!form.ai || !form.ai.value) {
    alert("Missing required affiliate id");
    return false;
  }

  if (!form.crc) {
    alert("Invalid page structure: missing crc");
    return false;       
  }

  var kayakUrl = 'http://www.kayak.com/s/search/hotel?' + kwUnpackForm(form);

  // Looks for "?&" within qstring and if found, replaces with "?"
  if (kayakUrl.match(/\?\&/g)) {
    kayakUrl = kayakUrl.replace(/\?\&/g,"?");
  }

  return kwidSubmitGet(kayakUrl);
}

function kwidCarOnSearch() {
  var fn = 'kCarForm';
  var form = getObj(fn);
  if (!form) {
    alert("Invalid page structure " + fn);
    return false;
  }

  if (!form.ai || !form.ai.value) {
    alert("Missing required affiliate id");
    return false;
  }

  if (!form.crc) {
    alert("Invalid page structure: missing crc");
    return false;       
  }

  var kayakUrl = 'http://www.kayak.com/s/search/car?' + kwUnpackForm(form);

  // Looks for "?&" within qstring and if found, replaces with "?"
  if (kayakUrl.match(/\?\&/g)) {
    kayakUrl = kayakUrl.replace(/\?\&/g,"?");
  }

  return kwidSubmitGet(kayakUrl);
}

function kwidCruiseOnSearch() {
  var fn = 'kCruiseForm';
  var form = getObj(fn);
  if (!form) {
    alert("Invalid page structure " + fn);
    return false;
  }

  if (!form.ai || !form.ai.value) {
    alert("Missing required affiliate id");
    return false;
  }

  if (!form.dest) {
    alert("Invalid page structure: missing dest");
    return false;       
  }

  var kayakUrl = 'http://www.kayak.com/s/search/cruise?' + kwUnpackForm(form);

  // Looks for "?&" within qstring and if found, replaces with "?"
  if (kayakUrl.match(/\?\&/g)) {
    kayakUrl = kayakUrl.replace(/\?\&/g,"?");
  }

  return kwidSubmitGet(kayakUrl);
}



//
// generic method to grab all the form fields.
//
function kwUnpackForm(form) {
  var s = "";
  for (var i = 0; i < form.elements.length; i++) {
    var nm = form.elements[i].name;
    var vl = form.elements[i].value;
    if (nm && vl) {
      s += "&" + nm + "=" + escape(vl);
    }
  }

  cb = Math.random()*400;
  s += "&cb=" + cb;

  return wgFixDate(s);
}

//
// tidy.
//
function wgFixDate(argList) {
  if (argList.match(/\//g)) {
    argList = argList.replace(/\//g,"%2F");
  }
  return argList;
}

//
// Route all URL redir through here.
//
function kwidSubmitGet(url) {


  if (isLinkShare()){
    url = lsn_click + '&tmpid=2304&RD_PARM1=' + escape(escape(url));
  }

  window.open(url);
  return true;
}


/* If we're in the linkShare environment, the variable lsn_clk will be
 * defined and this function will respond in the affirmative.
 */
function isLinkShare() {
  try {
    lsn_click;
    return true;
  } catch(err) {
    return false;
  }
}
