
  var search = new function() {

    /*
    @public
    */
    this.init = function() {
      $('#searchButton').bind('click', handleSearchClick);
      $('#searchContainerTabs DIV').click(handleTabClick);

      $(document).ready(function(){
          $("#airport, #resort").mousedown(function(){
              if($.browser.msie) {
                  $(this).css("width","auto");
              }
          });
          $("#airport, #resort").change(function(){
              if ($.browser.msie) {
                  $(this).css("width","100%");
              }
          });
          $("#airport, #resort").blur(function(){
              if ($.browser.msie) {
                  $(this).css("width","100%");
              }
          });
      });
    }

    /*
    @private
    */
    function getTransferType() {
      return ($('#searchContainerTabs .tabActive').html() == lang.get("Resort to Airport") ? 'RA' : 'AR');
    }

    /*
    @private
    */
    function handleTabClick() {
      $('#searchContainerTabs DIV').each(function() {
        this.className = 'tabInactive';
      });
      this.className = 'tabActive';

      if (this.id == "searchTabRA") {    
        var airportLabel = lang.get("Departure airport:");
        var resortLabel = lang.get("Departure resort:");
        var arrivalLabel = lang.get("Flight departure:");
      } else {
        var airportLabel = lang.get("Arrival airport:");
        var resortLabel = lang.get("Arrival resort:");
        var arrivalLabel = lang.get("Flight arrival:");
      }
      $('label[for="airport"]').html(airportLabel);
      $('label[for="resort"]').html(resortLabel);
      $('label[for="flightArrivalHours"]').html(arrivalLabel);
    }

    /*
    @private
    */
    function handleSearchClick() {

       if(validate()) {

         // Transfer date
         var tDay   = addLeadingZeros(parseInt($('#transferDay').val(), 10));
         var tMonth = addLeadingZeros(parseInt($('#transferMonth').val(), 10));
         var tYear  = parseInt($('#transferYear').val(), 10);

         var country = 'NA';
         var gateway = $('#airport').val();
         var resort = $('#resort').val();
         var transferDate = tDay  +'-' + tMonth + '-' + tYear;
         var flightArrivalTime = $('#flightArrivalHours').val() + $('#flightArrivalMinutes').val();
         var adults = $('#adults').val();
         var infants = $('#infants').val();
         var children = $('#children').val();
         var currency = $('#currency').val();

         if($('#returnTransfer').val() == '1') {

           var inDateObj = new Date(tYear, tMonth-1, tDay);
           inDateObj.setDate(inDateObj.getDate()+7);
           var y = inDateObj.getFullYear();
           var m = addLeadingZeros(inDateObj.getMonth()+1);
           var d = addLeadingZeros(inDateObj.getDate());
           var returnDate = d +'-' + m + '-' + y;
           var returnTime = '1200';
         }
         else {
           var returnDate = '';
           var returnTime = '';
         }

         var searchURL = $('head base')[0].href + 'search-results/' + getTransferType() + '/' + country + '_' + gateway + '/' + resort + '/' + transferDate + '/' + flightArrivalTime + '/' + returnDate + '/' + returnTime + '/' + adults + '/' + infants + '_' + currency + '/' + children + '/';
         window.location.href = searchURL;
       }
       return false;
    }

    /*
    @private
    */
    function validate() {

       // Gateway
      if($('#airport').val() == '') {
        alert(lang.get("Please select an airport."));
        $('#airport')[0].focus();
        return false;
      }

      // Resort
      if($('#resort').val() == '') {
        alert(lang.get("Please select an resort."));
        $('#resort')[0].focus();
        return false;
      }

      return true;
    }

    /*
    @private
    */
    function addLeadingZeros(x) {
      if(x < 10) {
        x = '0' + x
      }

      return x;
    }
  }

  $(document).ready(search.init);
