function setAll(name, input)
{
  var vals = '';
  $.each($("input[name='" + name + "']"), function() {
    vals = vals + $(this).val() + ',';
    $(this).attr("checked", "checked");
  });
  $(input).val(vals);
}

function setupCheckboxes(name, input, toggle)
{
  setAll(name, input);

  $(toggle).change(function() {
    if ($(this).filter(':checked').val() == null) {
      $(input).val('');
      $("input[name='" + name + "']").removeAttr("checked");
    } else {
      setAll(name, input);
    }
  });
}

function carschecker()
{
  var has_errors = true;

  $.ajax({
    type: "POST",
    async: false,
    url: "/suggester/carschecker",
    dataType: "json",
    data: {
      pickup_phrase: $("#pickup").val(),
      dropoff_phrase: $("#dropoff").val(),
      pckloc: $("#drploc").val(),
      drploc: $("#drploc").val()
    },
    beforeSend: function(XMLHttpRequest) {
      $('#pickup').removeClass('error');
      $('#dropoff').removeClass('error');
    },
    success: function(data) {
      if (data.message == "OK") {
        $("#dropoff").val(data.dropoff.loc_name);
        $("#drploc").val(data.dropoff.loc_code);
        $("#pickup").val(data.pickup.loc_name);
        $("#pckloc").val(data.pickup.loc_code);

        has_errors = false;
      } else {
        $('#pickup').addClass('error');
        $('#dropoff').addClass('error');
      }
    }
  });

  return has_errors;
}

$(document).ready(function() {
  var lang = $('body').attr('id');
   /**
   * CARS SEARCHFORM
   *
   */

  // partners toggle
  setupCheckboxes('cartype', '#hidden-cartypes', '#cartypes-toggle');

  // datepicker
  $('#searcher_cars .calendar').ypscalendar({
    startInput: '#pckdate',
    endInput: '#drpdate',

    dateFormat: 'dd.mm.yy',

    minDate: +2,
    range: 1
  });

  // suggester
  $('#pckloc').val('');
  $('#pickup').val('');
  $('#drploc').val('');
  $('#dropoff').val('');

  $('#searcher_cars .suggester').suggester({
    focusOn: '#pickup_name',
    requestUrl: '/proxy.php?st=os&aid=cpo1&lang=' + lang + '&phrase=',
    suggesterFade: true,

    pickup_loc_name: 'pickup',
    pickup_loc_code: 'pckloc',

    dropoff_loc_name: 'dropoff',
    dropoff_loc_code: 'drploc',

    callbackOnEnter: function() {
        submit_search();
    }
  });

  // validation
  $('#searcher_cars').submit(function() {
    var has_errors = false;

    if ($.trim($('#pckloc').val()) == "") {
      has_errors = true;
    }

    if ($.trim($('#drploc').val()) == "") {
      has_errors = true;
    }

    if (has_errors) {
      has_errors = carschecker();
    }

    return !has_errors;
  });

  /**
   * HOTELS SEARCHFORM
   *
   */

  // toggle rooms quantity
  $('#roomQuantity').change(function() {
    // mark as available rooms form 0..quantity-1
    for (var i = quantity - 1; i >= 0; i--) {
      $('#room-' + i + '-adults').removeAttr('disabled');
    }

    // mark as disabled rooms from quantity..3 (max val)
    for (var i = quantity; i < 3; i++) {
      $('#room-' + i + '-adults').attr('disabled', 'disabled');
    }
  });

  // suggester
  $('#destination').suggester({
    requestUrl:'/' + lang + '/suggester/hotel/phrase/',
    suggesterFade: true,

    pickup_loc_name: 'destination',
    pickup_loc_code: 'destinationId',

    callbackOnEnter: function(){
        //submit_search();
    }
  });

  // datepicker
  $('#searcher_hotels .calendar').ypscalendar({
    startInput: '#arrivalDate',
    endInput: '#departureDate',
    dateFormat: 'dd.mm.yy',
  });

  // validation
  $('#searcher_hotels').submit(function() {
    if (($.trim($('#destination').val()) == "") && ($.trim($('#destinationId').val()) == "") && ($.trim($('#hotel').val()) == "")) {
      $('#destination').addClass('error');
      return false;
    } else {
      return true;
    }
  });

  /**
   * FLIGHTS SEARCHFORM
   *
   */

  // round trip toggle
  $("input[name='onewayswitch']").change(function() {
    if ($(this).filter('#flyonewayswitch1').val() == 1) {
      $('#flysecondDate').attr('disabled', 'disabled');
      $('#flyretTimeEarliest').attr('disabled', 'disabled');
    } else {
      $('#flysecondDate').removeAttr('disabled');
      $('#flyretTimeEarliest').removeAttr('disabled');
    }
  });

  // suggester
  $('.fly_suggester').suggester({
    requestUrl:'/' + lang + '/suggester/fly/phrase/',
    suggesterFade: true,

    pickup_loc_name: 'flydepApt',
    pickup_loc_code: 'flyhid_depApt',

    dropoff_loc_name: 'flydstApt',
    dropoff_loc_code: 'flyhid_dstApt',

    dropoffOverride: false,

    callbackOnEnter: function(){
        submit_search();
    }
  });

  // datepicker
  $('#flysearcher_flights .calendar').ypscalendar({
    startInput: '#flyfirstDate',
    endInput: '#flysecondDate',
    dateFormat: 'dd.mm.yy',
    minDate: +3,
    range: 1,

    startAltDate: '#flyday',
    startAltMonthYear: '#flymonth_1',

    endAltDate: '#flyretDay',
    endAltMonthYear: '#flymonth_2'
  });

  // validation
  $('#flysearcher_flights').submit(function() {
    var has_errors = false;

    if ($.trim($('#flyhid_depApt').val()) == "") {
      has_errors = true;
      $('#flydepApt').addClass('error');
    } else {
      $('#flydepApt').removeClass('error');
    }

    if ($.trim($('#flyhid_dstApt').val()) == "") {
      has_errors = true;
      $('#flydstApt').addClass('error');
    } else {
      $('#flydstApt').removeClass('error');
    }

    return !has_errors;
  });

  /**
   * FLY & DRIVE & STAY SEARCHFORM
   *
   */

  // round trip toggle
  $("input[name='onewayswitch']").change(function() {
    if ($(this).filter('#fdsonewayswitch1').val() == 1) {
      $('#fdssecondDate').attr('disabled', 'disabled');
      $('#fdsretTimeEarliest').attr('disabled', 'disabled');
    } else {
      $('#fdssecondDate').removeAttr('disabled');
      $('#fdsretTimeEarliest').removeAttr('disabled');
    }
  });

  // suggester
  $('.fds_suggester').suggester({
    requestUrl:'/' + lang + '/suggester/fly/phrase/',
    suggesterFade: true,

    pickup_loc_name: 'fdsdepApt',
    pickup_loc_code: 'fdshid_depApt',

    dropoff_loc_name: 'fdsdstApt',
    dropoff_loc_code: 'fdshid_dstApt',

    dropoffOverride: false,

    callbackOnEnter: function(){
        submit_search();
    }
  });

  // datepicker
  $('#fdssearcher_flights .calendar').ypscalendar({
    startInput: '#fdsfirstDate',
    endInput: '#fdssecondDate',
    dateFormat: 'dd.mm.yy',
    minDate: +2,
    range: 1,

    startAltDate: '#fdsday',
    startAltMonthYear: '#fdsmonth_1',

    endAltDate: '#fdsretDay',
    endAltMonthYear: '#fdsmonth_2'
  });

  // validation
  $('#fdssearcher_flights').submit(function() {
    var has_errors = false;

    if ($.trim($('#fdshid_depApt').val()) == "") {
      has_errors = true;
      $('#fdsdepApt').addClass('error');
    } else {
      $('#fdsdepApt').removeClass('error');
    }

    if ($.trim($('#fdshid_dstApt').val()) == "") {
      has_errors = true;
      $('#fdsdstApt').addClass('error');
    } else {
      $('#fdsdstApt').removeClass('error');
    }

    return !has_errors;
  });
});

jQuery(function($){
    $.datepicker.regional['pl'] = {
        clearText: 'Wyczyść',
        clearStatus: 'Wyczyść obecną datę',
        closeText: 'Zamknij',
        closeStatus: 'Zamknij bez zapisywania',
        prevText: '&#x3c;Poprzedni',
        prevStatus: 'Pokaż poprzedni miesiąc',
        nextText: 'Następny&#x3e;',
        nextStatus: 'Pokaż następny miesiąc',
        currentText: 'Dzień',
        currentStatus: 'Pokaż aktualny miesiąc',
        monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec',
        'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
        monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
        'Lip','Sie','Wrz','Pa','Lis','Gru'],
        monthStatus: 'Pokaż inny miesiąc',
        yearStatus: 'Pokaż inny rok',
        weekHeader: 'Tydz',
        weekStatus: 'Tydzień roku',
        dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'],
        dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'],
        dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
        dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia',
        dateStatus: 'Wybierz D, M d',
        dateFormat: 'yy-mm-dd',
        firstDay: 1,
        initStatus: 'Wybierz datę',
        isRTL: false
    };
    $.datepicker.setDefaults($.datepicker.regional['pl']);
});

