Event.observe(window, 'load', function() {

  var today = new Date();
  var defaultFromDate = new Date();
  defaultFromDate.setDate(today.getDate()+21);
  var defaultToDate = new Date();
  defaultToDate.setDate(today.getDate()+25);

  var selectTemplate = new Template('<select id="#{id}_monthyear" name="#{id}_monthyear" class="monthyear"></select> <select id="#{id}_day" name="#{id}_day" class="day"></select>');

  // Replace date text inputs with <select>s.
  $$('#bezurk_flights_box #departure', '#bezurk_flights_box #return').each(function(e) {
    new Insertion.After(e, selectTemplate.evaluate({ id: e.id }));
    e.hide();
  });

  var fromDateSelector = new BezurkDateSelector($('departure_day'), $('departure_monthyear'), defaultFromDate, true, true);
  var toDateSelector = new BezurkDateSelector($('return_day'), $('return_monthyear'), defaultToDate, true, true);

  Event.observe($('departure_monthyear'), 'change', function(){
    var dep = $F(this);
    var ret = $F('return_monthyear');
    var dep_month = parseInt(dep.split(',')[0]);
    var dep_year = parseInt(dep.split(',')[1]);
    var ret_month = parseInt(ret.split(',')[0]);
    var ret_year = parseInt(ret.split(',')[1]);

    if (dep_year > ret_year
        || (dep_year == ret_year && dep_month > ret_month)) {
      $('return_monthyear').value = dep;
    }
  });

  Event.observe($$('#bezurk_flights_box form').first(), 'submit', function(event) {

    if ($('from').value.blank()) {
      alert('Please enter where you are flying from.');
      Event.stop(event);
      return false;
    }
    if ($('to').value.blank()) {
      alert('Please enter where you want to fly to.');
      Event.stop(event);
      return false;
    }
    if ($('departure_day')) {
      var dep = $F('departure_monthyear');
      var ret = $F('return_monthyear');
      var dep_day = parseInt($F('departure_day'));
      var dep_month = parseInt(dep.split(',')[0]);
      var dep_year = parseInt(dep.split(',')[1]);
      var ret_day = parseInt($F('return_day'));
      var ret_month = parseInt(ret.split(',')[0]);
      var ret_year = parseInt(ret.split(',')[1]);

      var dep_date = new Date();
      dep_date.setFullYear(dep_year, dep_month, dep_day);
      var ret_date = new Date();
      ret_date.setFullYear(ret_year, ret_month, ret_day);

      if (dep_date < new Date()) {
        alert("Departure date shouldn't be before today.");
        Event.stop(event);
        return false;
      }

      if (ret_date < dep_date) {
        alert("Departure date shouldn't be after return date.");
        Event.stop(event);
        return false;
      }

      $('departure').value = $F('departure_day') + '/' + ((dep_month | 0) + 1) + '/' + dep_year;
      $('return').value = $F('return_day') + '/' + ((ret_month | 0) + 1) + '/' + ret_year;
    }

    return true;
  });
});