
//util for debugging
function debug(message)
{
  //alert(message);
}

//util for debugging
function handleError(e)
{
  //dumpProperties(e, handleError.caller);
}

//util for debugging
function dumpProperties(myEvent, caller)
{
  if(typeof(myEvent) == 'undefined' || myEvent == null) {
    debug('null');
    return;
  }
  var alerttext = "";
  if(caller)
  {
    alerttext += caller + "\n";
  }

  for(p in myEvent)
  {
    if(p.toUpperCase() != p && (typeof(myEvent[p]) == 'string' || typeof(myEvent[p]) == 'number' || typeof(myEvent[p]) == 'boolean'))
    {
      alerttext += p + " = " + myEvent[p] + "\n";
    }
  }
  debug(alerttext);
}

function showError(message)
{
  $('FLIGHT_FORM').getElement('span.error_msg').setContent(message).show();
}

function invalidAirport()
{
  showError(js_0014);
  checkBestFaresStatus = 2;
}

function clearErrors()
{
  $('FLIGHT_FORM').getElement('span.error_msg').setContent('').hide();
}

var checkBestFaresStatus = 0; // 0 = ok, 1 = waiting on AJAX request, 2 = invalid From field, 3 = no matching airfares (no providers)

function updateRoundTrip() {
  var oneWay = $('oneWay').checked;
  $('checkOut').disabled = oneWay;
  $('retTime').disabled = oneWay;
  dynamicUpdate();
}
function dynamicUpdate()
{
  // Perform AJAX request
  var orig = $('airportFrom').value + '';
  var dest = $('airportTo').value + '';
  if (orig.length == 3 && dest.length == 3) {
    var uri = "/FlightsController?";
    uri += buildQueryString('geo Orig Dest roundtrip');
    checkBestFaresStatus = 1;
    new Ajax(uri, {
      update: $('PROVIDERS'),
      evalScripts: true,
      onFailure: function(xhr) {
        if(xhr.status == 404) {
            invalidAirport();
        }
      }
    }).request();
  }
  else {
    providers = [];
    checkBestFaresStatus = 3;
    $('PROVIDERS').innerHTML = '';
    $('WRAP_CHECK_FARES_BTN').hide();
  }
}

// Defer to allow type-ahead to complete
function updateFromAirport() { updateFromAirportDefer.delay(250); }
function updateFromAirportDefer()
{
  var elmt = $('airportFrom');

  // Set the previous value
  if ( typeof elmt.previousValue == "undefined" )
  {
    elmt.previousValue = elmt.defaultValue;
  }

  // If there is a new value then update
  if (elmt.value != elmt.previousValue)
  {
    elmt.value = elmt.value.toUpperCase();

    dynamicUpdate();

    // Reset previous value
    elmt.previousValue = elmt.value;
  }
}

// Defer to allow type-ahead to complete
function updateToAirport() { updateToAirportDefer.delay(250); }
function updateToAirportDefer()
{
  var elmt = $('airportTo');

  // Set the previous value
  if ( typeof elmt.previousValue == "undefined" )
  {
    elmt.previousValue = elmt.defaultValue;
  }

  // if cleared, reset
  if (elmt.value == '') {
    elmt.value = elmt.previousValue;
  }

  // If there is a new value then update
  if (elmt.value != elmt.previousValue) {
    checkBestFaresStatus = 1;
    // Submit the form as lots changes.
    $('FLIGHT_FORM').submit();
  }
}

rules['#airportFrom'] = function(elmt) { if ($('PROVIDERS')) { elmt.addEvents({
  'blur': updateFromAirport,
  'airportupdate': updateFromAirport
});} }
rules['#airportTo'] = function(elmt)   { if ($('PROVIDERS')) { elmt.addEvents({
  'blur': updateToAirport,
  'airportupdate': updateToAirport
}); } }

/**
 * build query string from form fields. If limitParams is specified, only those
 * parameter names will be included in the query.
 * This function does _not_ do any validation
 * @param limitParams array of strings, or space/comma delimited string
 */
function buildQueryString(limitParams)
{
	if(typeof(limitParams) == 'string')
	{
		limitParams = limitParams.split(/[,\s]+/);
	}
    var sInMonthYear = $('leaveMonth').value.split(/\//);
    var sOutMonthYear = $('retMonth').value.split(/\//);
	var paramMap = {
	    'Orig': $('airportFrom').value,
	    'Dest': $('airportTo').value,
        'inMonth': escape(sInMonthYear[0] + " " + sInMonthYear[1]),
        'inDay': escape($('leaveDay').value),
        'outMonth':  escape(sOutMonthYear[0] + " " + sOutMonthYear[1]),
        'outDay':  escape($('retDay').value),
        'adults':  escape($('adults').selectedIndex+1),
        'leavetime':  escape($('leaveTime').value),
        'rettime':  escape($('retTime').value),
        'nonstop':  escape($('nonstopOnly').checked ? 'yes' : ''), //server treats anything other than empty string as true
        'nearby':  escape($('includeNearby').checked ? 'yes' : '')  //server treats anything other than empty string as true
	};
	if($('roundTrip').checked)
	{
		paramMap['roundtrip'] = 'yes';
	}
    if (geos = /g(\d+)/.exec(window.location))
	{
		paramMap['geo'] = geos[1];
	}

	var queryString = '';
	for(k in paramMap)
	{
		if(typeof(limitParams) == 'undefined' || limitParams.indexOf(k) > -1)
		{
			if(queryString.length > 0)
			{
				queryString += '&';
			}
			queryString += k + '=' + paramMap[k];
		}
	}
	return queryString;
}

var slots;
var slotsByName = {};
var bWinXPSP2 = false;
var bOneAtATime = false;
var bUpdating = false;

// 330 days in future
var dTooFar = new Date();
for(var i = 0; i < 330; i++)
{
  dTooFar.setMilliseconds(86400000);
}

if(navigator.appVersion.indexOf('SV1') != -1)
{
  bWinXPSP2 = true;
  bOneAtATime = true;
}

function getSlotByName(lName)
{
  return slotsByName[lName];
}

function Slot(lx, ly, lw, lh){
  this.x = lx;
  this.y = ly;
  this.w = lw;
  this.h = lh;
  this.name = null;
  this.occupied = null;

  this.hasOpenWindow = function() {
    try
  {
      return this.occupied != null && !this.occupied.closed;
  } catch(e) {
    // may be a mozilla permissions problem
    this.occupied = null;
    return false;
  }
  }

}

function makeSlots(){
  var nW = 525;
  var nH = 460;
  var nXI = 24;
  var nYI = 24;
  //move all the pop windows away from the dhtml popup
  var nX = lb_ie_enabled ? 500 : 205;
  var nY = 5;

  if(screen.width > 1024){
    nW = 800;
    nH = 600;
    nXI = 80;
    nYI = 40;
  } else if(screen.width > 800){
    nW = 620;
    nH = 500;
    nXI = 60;
    nYI = 30;
  }
  slots = [];
  for (var i=0; i<20; i++){
    slots[i] = new Slot(nX,nY,nW,nH);
    nX = nX + nXI;
    nY = nY + nYI;
  }
}

function getOpenSlot(n){
  if(n<=0){
    n=1;
  }
  for (var i=n-1; i>=0; i-=1){
    if (!slots[i].hasOpenWindow()){
      return slots[i];
    }
  }
  for (var i=n; i<slots.length; i++){
    if (!slots[i].hasOpenWindow()){
      return slots[i];
    }
  }
  return null;
}

function focusSlots(){
  for (var i=0; i<slots.length; i++){
    if (slots[i].hasOpenWindow())
    {
      try {
        slots[i].occupied.focus();
      } catch(e) { handleError(e); }
    }
  }
}

var providers = [];
function addProvider(provider){
  providers[providers.length] = provider;
  var elmt = $(provider.checkbox);
  elmt.addEvent('click', toggleProvider.bindAsEventListener(elmt));
}

function Provider(lName, lCheckbox, lUrl){
  this.name = lName;
  this.checkbox = lCheckbox;
  this.url = lUrl;
  this.lastDates = "";
  this.bOpened = false;

  this.hasOpenWindow = function() {
    var s = getSlotByName(this.name);
  return s != null && s.hasOpenWindow();
  }
}

function validFromAirport()
{
  if(checkBestFaresStatus >= 2)
  {
    return;
  }

  var elmt = $('airportFrom');
  if(elmt)
  {
    var fromValue = elmt.value;
    if(fromValue == null || fromValue.length < 3 || fromValue.length > 3)
    {
      checkBestFaresStatus = 2;
    }
  }

}


function displayProviders()
{
  validFromAirport();
  switch(checkBestFaresStatus)
  {
    case 3:
      alert(js_0017);
      break;
    case 1:
      alert(js_0015);
      break;
    case 2:
      alert(js_0016);
      break;
    default:
      try {
        if(popwindows())
        {
          if(typeof overlayRemindMe != 'undefined' && overlayRemindMe !== null)
          {
            overlayRemindMe();
          }
        }
      } catch(e) { handleError(e); }
  }
  return false;
}

function validateForm()
{
	if(checkBestFaresStatus == 2)
	{
		//skip it - invalid from airport message should be showing already
		return false;
	}
  clearErrors();
  var oneWay = $('oneWay').checked;
  var form = $('FLIGHT_FORM');
  if (form.calendar && !form.calendar.validate()){
    return false;
  }

  // User Supplied Dates
  var sInMonthYear = $('leaveMonth').value.split(/\//);
  var dCheckin = new Date( sInMonthYear[1], sInMonthYear[0]-1 , $('leaveDay').value ).getTime();
  var sOutMonthYear = $('retMonth').value.split(/\//);
  var dCheckout = new Date(sOutMonthYear[1], sOutMonthYear[0]-1, $('retDay').value).getTime();

  // Today; Force to midnight
  var dToday = new Date();
  dToday.setHours(0,0,0,0);

  // Calendar protects against this but keep it anyway
  if (dCheckin < dToday || (!oneWay && dCheckout < dToday)) {
    alert(js_0002); // "Please choose dates in the future."
    return false;
  }

  if (!oneWay && dCheckin > dCheckout) {
    alert(js_0003); // "Please choose a check-out date that is at least one day later than your check-in date."
    return false;
  }

  if(!oneWay && dCheckin == dCheckout && !validateTimes()) {
    return false;
  }

  if (dCheckin > dTooFar || (!oneWay && dCheckout > dTooFar)) {
    alert(js_0004); // "Please choose dates that are less than 330 days away."
    return false;
  }

  return true;
}

var lastInDate = "";
var lastOutDate = "";
//check if dates have changed, even if other fields haven't
function checkDatesChanged()
{
    var testInDate = $('checkIn').value;
    var testOutDate = $('checkOut').value;
    if(testInDate != lastInDate || testOutDate != lastOutDate)
    {
      bUpdating = false;
    }
    lastInDate = testInDate;
    lastOutDate = testOutDate;
}

function validateTimes()
{
  //only called when dates are the same
  var leaveTime =$('leaveTime').value;
  var retTime = $('retTime').value;

  if(leaveTime == "anytime" || leaveTime == "morning" || retTime == "anytime")
  {
    return true;
  }
  if((leaveTime == "afternoon" && retTime == "morning") || (leaveTime == "evening" && retTime != "evening"))
  {
    $('FLIGHT_FORM').getElement('span.error_msg').setContent(sInvalidDates).show();
    return false;
  }
  return true;
}

function popwindows()
{
  var numChecked = 0;

  for (var i=0; i<providers.length; i++)
  {
    if (providers[i].checkbox.checked)
    {
      numChecked++;
    }
  }

  if (numChecked == 0)
  {
    alert(js_0001); // "Please select at least one vendor from the list."
    return false;
  }

  checkDatesChanged();

  if(!validateForm())
  {
    return false;
  }

  $("msgbox").innerHTML = js_0005; // "Searching for deals ... this may take a few moments"

  var sUserData = buildQueryString('inMonth inDay outMonth outDay adults leavetime rettime nonstop nearby roundtrip');

  if(lb_ie_enabled)
  {
    popAll(sUserData);
    setUpdateText();
  }
  else{
    if(bOneAtATime)
    {
      var nIndex = getNextWindowIndex(sUserData);
      if(nIndex > -1)
      {
        popOne(nIndex, sUserData);
      }
      else if(bUpdating)
      {
        $("msgbox").innerHTML = '';
        alert(js_0006); // "Your selections have not changed."
      }

      // Are we done?
      nIndex = getNextWindowIndex(sUserData);
      if(nIndex == -1)
      {
        setUpdateText();
      }
      else
      {
        setPopAnotherText();
      }
    }
    else
    {
      if(bUpdating && getNextWindowIndex(sUserData) == -1)
      {
        $("msgbox").innerHTML = '';
        alert(js_0006); // "Your selections have not changed."
      }
      else if(popAll(sUserData))
      {
        setUpdateText();
      }
      else
      {
        setPopAnotherText();
      }
    }
  }

  focusSlots();

  return true;
}

function getNextWindowIndex(sUserDataVar)
{
  for (var i=0; i<providers.length; i++)
  {
    if(providers[i].checkbox.checked && !providers[i].hasOpenWindow())
    {
      return i;
    }
  }

  for (var i=0; i<providers.length; i++)
  {
    if(providers[i].checkbox.checked
       && providers[i].lastDates != sUserDataVar)
      {
        return i;
      }
  }

  return -1;
}

function popOne(nIndex, sUserDataVar)
{
  try {
    var bReturn = false;
    var bHasWindow = (providers[nIndex].hasOpenWindow());
    var sFinalUrl = providers[nIndex].url + '&' + sUserDataVar;
    var slot;
    if (bHasWindow)
    {
      slot = getSlotByName(providers[nIndex].name);
    }
    else
    {
      slot = getOpenSlot(0);
    }

    var sProps = 'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes,alwaysraised=true';
    var sMyProps = sProps + ',screenX=' + slot.x + ',screenY=' + slot.y + ',left=' + slot.x + ',top=' + slot.y + ',height=' + slot.h + ',width=' + slot.w;
    var wRef = window.open(sFinalUrl, providers[nIndex].name, sMyProps);

    if(wRef != null)
    {
      slot.occupied = wRef;
    slotsByName[providers[nIndex].name] = slot;
      wRef.focus();
      providers[nIndex].bOpened = true;
      providers[nIndex].lastDates = sUserDataVar;
      bReturn = true;
    }
  } catch(e) { handleError(e); }

  return bReturn;
}

function popAll(sUserDataVar)
{  		
  for (var i=0; i<providers.length; i++)
  {
    if (providers[i].checkbox.checked)
    {
      if (sUserDataVar != providers[i].lastDates || providers[i].bOpened == false
          || !providers[i].hasOpenWindow())
      {
        if(!popOne(i, sUserDataVar))
        {
          bOneAtATime = true;
          if(lb_ie_enabled)
          {
            new ta.overlays.AbsoluteOverlay({
              backdrop: ta.overlays.BACKDROP_ALWAYS,
              style: 'typeB4'
            }).loadRemoteContent('http://' + document.domain + '/vpages/flights_lb.html');
          }
          return false;
        }
      }
    }
  }

  return true;
}

function setUpdateText()
{
  $("errbox").innerHTML = "";
  $("msgbox").innerHTML = "";
  bUpdating = true;
}

function setPopAnotherText()
{
  if(bWinXPSP2) {
    $("msgbox").innerHTML = js_0013; // "Please click the \"Check Rates!\" button above to open each window."
    $("errbox").innerHTML = qcErrorImage;
  }
  else {
    $("msgbox").innerHTML = js_0010; // "Please click again to open each window or adjust browser settings to disable popup blockers."
    $("errbox").innerHTML = qcErrorImage;
  }
}

function providerInit()
{
  makeSlots();
  addProviders();
  if (providers.length > 0) {
    checkBestFaresStatus = 0;
    $('WRAP_CHECK_FARES_BTN').show();
  }
  else {
    checkBestFaresStatus = 3;
    $('WRAP_CHECK_FARES_BTN').hide();
  }
}

function updateProviders(){
  providers = [];
  addProviders();
  if (providers.length > 0) {
    checkBestFaresStatus = 0;
    $('WRAP_CHECK_FARES_BTN').show();
  }
  else {
    checkBestFaresStatus = 3;
    $('WRAP_CHECK_FARES_BTN').hide();
  }
  updateLinks();
}

function toggleProvider(event)
{
  var box = $('pli_' + this.id);
  if(box != null)
  {
    if(this.checked) {
      $(box).addClass('checked');
    }
    else
    {
      $(box).removeClass('checked');
    }
  }

  if(this.checked)
  {
    bUpdating = false;
  }
}

function updateLinks()
{
  bUpdating = false;

  if(!validateForm())
  {
    return false;
  }

  var sUserData = buildQueryString('inMonth inDay outMonth outDay adults leavetime rettime nonstop nearby roundtrip');
  updateBookingBuddyLink(sUserData);
  updateOneTimeLink(sUserData);
}

var bookingBuddyShortURL = null;
function setBookingBuddyShortURL(url)
{
  bookingBuddyShortURL = url;
}

var OneTimeShortURL = null;
function setOneTimeShortURL(url)
{
  OneTimeShortURL = url;
}

function updateBookingBuddyLink(sUserData)
{
  var bbtease = $('BookingBuddyTeaser');
  if (bbtease != null) {
    var links = bbtease.getElements('a');
    for (var i = 0; i < links.length; i++) {
      links[i].href = bookingBuddyShortURL + '&' + sUserData;
    }
  }
}

function updateOneTimeLink(sUserData)
{
  var ottease = $('OneTimeTextLink');
  if (ottease != null) {
    var links = ottease.getElements('a');
    for (var i=0; i < links.length; i++) {
      links[i].href = oneTimeShortURL + '&' + sUserData;
    }
  }
}
    

function recordAction(evt, pid, action)
{
  if (pid && action)
  {
    var mycookie = Cookie.set('NPID', pid, {domain: cookieDomain, time:5});
    new Ajax('/ActionRecord?action=' + action).request();
    Cookie.remove(mycookie);
  }
}

rules['#CHECK_FARES_BTN'] = function(elmt) {
  //order appears to be important here!
  var pidarray = $('CHECK_FARES_BTN').className.match(/pid(\d+)/) ;
  if (pidarray && pidarray.length > 1) {
    var pid = pidarray[1];
    elmt.addEvent('click', recordAction.bindAsEventListener(elmt, [pid, 'CheckBestFares']));
  }

  elmt.addEvent('click', displayProviders.bindAsEventListener(elmt));
  
  if(typeof cr_loc_vend != "undefined")
  {
    cr_loc_vendImg = new Image().src = cr_loc_vend;
    cr_loc_vend_chImg = new Image().src = cr_loc_vend_ch;
    new Image().src = cr_loc_logo;
  }
  
};

rules['#FLIGHT_FORM'] = function(elmt) {
  //set up event handlers to track form data changes
  $(elmt.elements["adults"]).addEvent('change', updateLinks);
  $(elmt.elements["leavetime"]).addEvent('change', updateLinks);
  $(elmt.elements["rettime"]).addEvent('change', updateLinks);
  $(elmt.elements["nearby"]).addEvent('click', updateLinks);
  $(elmt.elements["nonstop"]).addEvent('click', updateLinks);
  $(elmt.elements["checkIn"]).onSelectDefer = updateLinks;
  $(elmt.elements["checkOut"]).onSelectDefer = updateLinks;
  $('roundTrip').addEvent('click', updateRoundTrip);
  $('oneWay').addEvent('click', updateRoundTrip);
}

window.addEvent(TAReadyEvent, providerInit);

rules['#FLIGHT_FORM input.flightTypeAhead[type=text]'] = function(elmt) {
  var action = elmt.className.match(/\bact(\w+)\b/);
  if (action) {
    new Autocompleter.Ajax.Json2(elmt, "/TypeAheadJson?action="+action[1], {
      ajaxOptions: {method:'get'},
      postVar: 'query',
      className: 'autocompleter-choices flights',
      inheritWidth: false,
      selectOnBlur: true,
      onSelect: function(elmt, resObj) {
        elmt.value = resObj.value;
        elmt.fireEvent('updateairport');
      }
    });
  }
};

rules['#lb_close'] = function(elmt) {
  elmt.addEvent('click', function(e){
    $('msgbox').innerHTML = js_0018;
  });
}

rules['div.CHECKED_SITES'] = function(elmt) {
  
  var totOpenedProv = 0;
  var totCheckedProv = 0;
  for( x = 0; x < providers.length; x++ ){
    if(providers[x].checkbox.checked)
    {
      totCheckedProv++;
      if(providers[x].bOpened)
      {
        totOpenedProv++;
      }
    }
  }
  
  elmt.getElement('span.opnSites').innerHTML = totOpenedProv;
  elmt.getElement('span.totSites').innerHTML = totCheckedProv;
}

rules['#FLIGHTS_LB'] = function(elmt) {
  var sInMonthYear = $('leaveMonth').value.split(/\//);
  var dCheckin = new Date( sInMonthYear[1], sInMonthYear[0]-1 , $('leaveDay').value );
  var sOutMonthYear = $('retMonth').value.split(/\//);
  var dCheckout = new Date(sOutMonthYear[1], sOutMonthYear[0]-1, $('retDay').value);
  sUserData = (
          "inMonth=" + escape(sInMonthYear[0] + " " + sInMonthYear[1]) +
          "&inDay=" + escape($('leaveDay').value) +
          "&outMonth=" + escape(sOutMonthYear[0] + " " + sOutMonthYear[1]) +
          "&outDay=" + escape($('retDay').value) +
          "&adults=" + escape($('adults').selectedIndex+1) +
      "&leavetime=" + escape($('leaveTime').value) +
      "&rettime=" + escape($('retTime').value) +
      "&roundtrip=" + escape($('roundTrip').checked ? 'yes' : 'no') +
      "&nonstop=" + escape($('nonstopOnly').checked ? 'yes' : '') + //server treats anything other than empty string as true
      "&nearby=" + escape($('includeNearby').checked ? 'yes' : '')  //server treats anything other than empty string as true
        );

  var providersShown = 0;
  for( x = 0; x < providers.length; x++ ){
    if(providers[x].checkbox.checked)
    {
      providersShown++;

      var elemAnchor = new Element('a', {'id' : 'qc_'+x , 'href' : providers[x].url})
        .injectInside(new Element('div', {'class': 'qc_lb_name'})
          .injectInside($('FLIGHTS_LB_ARROW')) ).setContent(providers[x].name);

	    var imgUrl = providers[x].bOpened ? cr_loc_vend_ch : cr_loc_vend;
      elemAnchor.setStyle('background', 'url(' + imgUrl + ') no-repeat');
		  
      elemAnchor.addEvent('click', function(e){
        new Event(e).preventDefault();
        var clickedProviderName = this.innerHTML;
        //update opened status of the popped provider
        var iPopProvider = -1;
        var unopenedProviders = false;
        
        for(var x = 0; x < providers.length; x++ )
        {
          if(providers[x].name == clickedProviderName)
          {
            if(!providers[x].bOpened)
  	        {
  	          var targ = new Event(e).target;
  	          if(targ)
  	          {
  	            $(targ).setStyle('background', 'url(' + cr_loc_vend_ch + ') no-repeat');
  	          }
  	          iPopProvider = x;
  	          var osElem = $E('span.opnSites');
  	          if(osElem)
  	          {
  	            var openSites = parseInt(osElem.innerHTML);
    		        osElem.innerHTML = openSites+1;
    		      }
    		      providers[x].bOpened = true;
    		    }
            popOne(x, sUserData);
          }
        
          if(providers[x].checkbox.checked && !providers[x].bOpened)
    		  {
    		    unopenedProviders = true;
    		  }
        }

        if(!unopenedProviders)
        {
          //if all vendors have popped, reset them and close the lb
          for( x = 0; x < providers.length; x++ ){
              providers[x].bOpened = false;
          }
  	      //clear stored user data
  	      sUserData = null;
  	      var lb = ta.retrieve('overlays.current');
  	      if (lb) lb.hide();
  	    }
  
  	    focusSlots();
  	    
  	    return false;
      });
    }
  }
};

function replaceBBDiv(newElements)
{
	var smParent = $('SearchMoreParent');
	if( smParent != null)
	    {
		smParent.removeClass('sngl');
		var bbElmt = $('BookingBuddyTeaser');
		if(bbElmt) 
		    { 
			bbElmt.remove();
		    }
		var newContent = $('SearchMoreInner').innerHTML + newElements;
		$('SearchMoreInner').setHTML(newContent);
	    }
}

function replaceOTDiv(newElements)
{
  var smParent = $('SearchMoreParent');
  if( smParent != null)
  {
    smParent.removeClass('sngl');
    var otElmt = $('OneTimeTextLink');
    if(otElmt)
    {
      otElmt.remove();
    }
    var newContent = $('TopTextLinksInner').innerHTML + newElements;
    $('TopTextLinksInner').setHTML(newContent);
  }
}
     

function hideBBDiv()
{
    var smParent = $('SearchMoreParent');
    if( smParent != null)
	{
	    smParent.addClass('sngl');
	    var bbElmt = $('BookingBuddyTeaser');
	    if(bbElmt) 
		{ 
		    bbElmt.remove();
		}
	}
}

function hideOTDiv()
{
  var smParent = $('SearchMoreParent');
  if( smParent != null)
  {
    smParent.addClass('sngl');
    var otElmt = $('OneTimeTextLink');
    if(otElmt)
    {
      otElmt.remove();
    }
  }
}
