
function init () {
   // set date format
   jQuery.datepicker.setDefaults(jQuery.datepicker.regional['en-GB']);
   // add date validator
   jQuery.Validation.addRule("date",{
       check: function(value) {
           if(value != '' && Date.parseExact(value, 'd/M/yyyy') == null)
               return false;
           return true;
       },
       msg : "Enter a valid date."
   });
   // initialise the datepickers
   var options = {
      minDate: 0,
      showButtonPanel: true,
      changeMonth: true,
      changeYear: true,
      numberOfMonths: 2,
      firstDay: 1,
      showWeek: true
   };
   
   // set jquery datepicker if no html5 support
   var i = document.createElement("input");
      i.setAttribute("type", "localised_date"); // This should be date but the current support for date doesn't support localised dates
      if (i.type == "text") {
         // No native date picker support :(
         jQuery("#arrival_date").datepicker(options);
         options.minDate += 1;
         jQuery("#departure_date").datepicker(options);
    }
   
   
   // Set the change handlers
   
   jQuery("#arrival_date").change(arrivalChange);
   jQuery("#departure_date").change(departureChange);
   
   // initialise form validation
    var form = jQuery("#enquiry");
    
    form.validation();
}
jQuery(init);

function arrivalChange (e) {
   var
      arrive = Date.parse(jQuery(this).val()),
      depart = Date.parse(jQuery("#departure_date").val());
         
   if (arrive != null) {
      arrive.clearTime();
      
      if (depart == null || depart <= arrive) jQuery("#departure_date").val(arrive.addDays(2).toString("d/M/yyyy"));
      
      updateNights();
   } else jQuery("#arrival_date").val('');
}
function departureChange (e) {
   var
      depart = Date.parse(jQuery(this).val()),
      arrive = Date.parse(jQuery("#arrival_date").val());
         
   if (depart != null) {
      depart.clearTime();
      
      if (arrive == null || depart <= arrive) jQuery("#arrival_date").val(depart.addDays(-1).toString("d/M/yyyy"));
      
      updateNights();
   } else jQuery("#departure_date").val('');
}
function updateNights () {
   var
      day = 1000 * 60 * 60 * 24,
      arrive = Date.parse(jQuery("#arrival_date").val()),
      depart = Date.parse(jQuery("#departure_date").val()),
      nights;
   
   arrive.clearTime();
   depart.clearTime();
      
   nights = Math.floor((depart - arrive) / day);
   
   nights = ( !(nights > 0) ) ? 0 : nights;
   
   jQuery("#number_of_nights").val(nights);
}

