/*
fday = null;

function populateForm(field) {
  if (document.getElementById('country').value != '***') {
      document.getElementById('field').value = field;
      document.getElementById('destination').value = document.getElementById('country').value;
      document.getElementById('s_index').value = document.getElementById('country').selectedIndex;
      document.getElementById('testform').submit();
  } else {
      var country = document.getElementById('country');
      alert("index = " + country.index + "; s_index = " + country.selectedIndex);
  }
}
*/
function doForm(step) {
  var area_id = document.getElementById('country').value;
  if (area_id.length > 2 && area_id.substr(0, 3) == "***") {
    if (area_id == "***") {
      alert("Please select a country");
      //return;
    } else {
      alert("The country you have selected is divided into sub-regions.\n\nPlease select the sub-region you require.");
      //return;
    }
  }

  document.getElementById('destIdx').value = document.getElementById('country').selectedIndex;
  document.getElementById('area_id').value = area_id;
  
  switch (step) {
    case 1:
      break;
    case 2:
      document.getElementById('locIdx').value = document.getElementById('pickup').selectedIndex;
      document.getElementById('location').value = document.getElementById('pickup').value;
      break;
    case 3:
      document.getElementById('locIdx').value = document.getElementById('pickup').selectedIndex;
      document.getElementById('location').value = document.getElementById('pickup').value;
      document.getElementById('dropIdx').value = document.getElementById('dropoff').selectedIndex;
      break;
  }
  document.getElementById('update').value = "noupdate";
  document.getElementById('bform').action = "/index.php?cmd=booking-form";
  document.getElementById('bform').submit();
}

var now = new Date();
var fromDate = new Date();
var toDate = new Date();

function dateInit(fday, fmonth, fyear, ftime, tday, tmonth, tyear, ttime, dt) {
  var hour;
  var minute;

  nyear = dt.substr(0, 4);
  nmonth = dt.substr(4, 2);
  nday = dt.substr(6, 2);
  now = new Date(nyear, nmonth-1, nday);

  if (fday != null && fmonth != null && fyear != null && ftime != null && isDay(fday) && isMonth(fmonth) && isYear(fyear) && isTime(ftime)) {
    hour = ftime.substr(0, 2);
    minute = ftime.substr(3, 2);
    fromDate.setFullYear(fyear, fmonth, fday);
    fromDate.setHours(hour, minute);
  } else {
    fromDate.setDate(now.getDate() + 2);
    fromDate.setHours("10", "00");
  }

  if (tday != null && tmonth != null && tyear != null && ttime != null && isDay(tday) && isMonth(tmonth) && isYear(tyear) && isTime(ttime)) {
    hour = ttime.substr(0, 2);
    minute = ttime.substr(3, 2);
    toDate.setFullYear(tyear, tmonth, tday);
    toDate.setHours(hour, minute);
  } else {
    toDate.setDate(now.getDate() + 9);
    toDate.setHours("10", "00");
  }
}

function isDay(num) {
  var valid = "0123456789";

  if (num.length < 1 || num.length > 2)
    return false;
  for (i = 0; i < num.length; i++)
    if (valid.indexOf(num.charAt(i)) == -1)
      return false;

  if (num < 1 || num > 31)
    return false;

  return true;
}

function isMonth(num) {
  var valid = "0123456789";

  if (num.length < 1 || num.length > 2)
    return false;
  for (i = 0; i < num.length; i++)
    if (valid.indexOf(num.charAt(i)) == -1)
      return false;

  if (num < 0 || num > 11)
    return false;

  return true;
}

function isYear(num) {
  var valid = "0123456789";

  if (num.length != 4)
    return false;

  for (i = 0; i < 4; i++)
    if (valid.indexOf(num.charAt(i)) == -1)
      return false;

  if (num < now.getFullYear() || num > now.getFullYear() + 2)
    return false;

  return true;
}

function isTime(time) {
  var valid = "0123456789";
  var validh1 = "012";

  if (time.length != 5)
    return false;

  if (validh1.indexOf(time.charAt(0)) == -1)
    return false;

  if (valid.indexOf(time.charAt(1)) == -1)
    return false;

  if (time.charAt(2) != ":")
    return false;

  var minute = time.substr(3, 2);

  if (!(minute == "00" || minute == "30"))
    return false;

  return true;
}

function getDay(x) {
  var selectDay = "";
  var selected;
  var d;

  if (x == "from") {
    d = fromDate.getDate();
    days = numDays(fromDate.getMonth(), fromDate.getFullYear());
  } else if (x == "to") {
    d = toDate.getDate();
    days = numDays(toDate.getMonth(), toDate.getFullYear());
  }

  for (var i = 1; i <= days; i++) {
    selected = (i == d ? 'selected="selected"' : "");
    selectDay += '<option value="' + i + '" ' + selected + '>' + i + '</option>';
  }

  return(selectDay);
}

function getMonth(x) {
  var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
  var selectMonth = "";
  var selected;
  var m;
  
  if (x == "from")
    m = fromDate.getMonth();
  else if (x == "to")
    m = toDate.getMonth();
  
  for (var i = 0; i < 12; i++) {
    selected = (i == m ? 'selected="selected"' : "");
    selectMonth += '<option value="' + i + '" ' + selected + '>' + months[i] + '</option>';
  }
  document.write(selectMonth);
}

function getYear(x) {
  var selectYear = "";
  var yearFrom = now.getFullYear();
  var yearTo = yearFrom + 2;
  var selected;
  var y;

  if (x == "from")
    y = fromDate.getFullYear();
  else if (x == "to")
    y = toDate.getFullYear();
  
  for (var i = yearFrom; i <= yearTo; i++) {
    selected = (i == y ? 'selected="selected"' : "");
    selectYear += '<option value="' + i + '" ' + selected + '>' + i + '</option>';
  }
  document.write(selectYear);
}

function getTime(x) {
  var selectTime = "";
  var time;
  var selected, selected1 = "", selected2 = "";
  var h, m;
  
  if (x == "from") {
    h = fromDate.getHours();
    m = fromDate.getMinutes();
  } else if (x == "to") {
    h = toDate.getHours();
    m = toDate.getMinutes();
  }

  for (var i = 1; i <= 24; i++) {
    time = (i % 24).toString();
    selected = (time == h ? 'selected="selected"' : "");
    selected1 = (m == "00" ? selected : "");
    selected2 = (m == "30" ? selected : "");
    time = (time.length == 2 ? time : "0" + time);

    selectTime += '<option value="' + time + ':00" ' + selected1 + '>' + time + ':00</option>';
    selectTime += '<option value="' + time + ':30" ' + selected2 + '>' + time + ':30</option>';
  }
  document.write(selectTime);
}

function numDays(month, year) {
  if (month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11)
    return 31;
  else if (month == 3 || month == 5 || month == 8 || month == 10)
    return 30;
  else
    if ((year % 4) == 0 && (year % 400) != 0)
      return 29;
    else
      return 28;
}

function recalcdays(x) {
  if (x == "from") {
    var daysnow = document.getElementById('fday').length;
    var i = document.getElementById('fmonth').selectedIndex;
    var month = document.getElementById('fmonth').options[i].value;
    var year = document.getElementById('fyear').value;
    var dayswanted = numDays(month, year);
    var change = dayswanted - daysnow;
    if (change == 0) {
      return;
    } else if (change > 0) {
      for (i = daysnow; i < dayswanted; i++)
        document.getElementById('fday').options[i] = new Option(i + 1, i + 1);
    } else {
      document.getElementById('fday').options.length = dayswanted;
    }
  } else if (x == "to") {
    var daysnow = document.getElementById('tday').length;
    var i = document.getElementById('tmonth').selectedIndex;
    var month = document.getElementById('tmonth').options[i].value;
    var year = document.getElementById('tyear').value;
    var dayswanted = numDays(month, year);
    var change = dayswanted - daysnow;
    if (change == 0) {
      return;
    } else if (change > 0) {
      for (i = daysnow; i < dayswanted; i++)
        document.getElementById('tday').options[i] = new Option(i + 1, i + 1);
    } else {
      document.getElementById('tday').options.length = dayswanted;
    }
  }
}

function doSubmit(t) {
  if (formValidate(t)) {
    // call intermediate php to set session variables and write to db
    // so, just set action to intermediate page
    document.domain = "autoxia.co.uk";
    if (window.parent.document.getElementById('searchboxalt')) {
        window.parent.document.getElementById("searchboxalt").style.display = "block";
        window.parent.document.getElementById("searchbox").style.visibility = "hidden";
    } else {
        window.parent.document.getElementById("minisearchalt").style.display = "block";
        window.parent.document.getElementById("minisearch").style.visibility = "hidden";
    }
    document.getElementById('destIdx').value = document.getElementById('country').selectedIndex;
    document.getElementById('area_id').value = document.getElementById('country').value;
    document.getElementById('locIdx').value = document.getElementById('pickup').selectedIndex;
    document.getElementById('location').value = document.getElementById('pickup').value;
    document.getElementById('dropIdx').value = document.getElementById('dropoff').selectedIndex;
    // next 4 are just for compatibility with old code - we can change this later
    var country = document.getElementById('country').options[document.getElementById('country').selectedIndex].text;
    document.getElementById('hiddenDestination').value = country;
    document.getElementById('hiddenLocation').value = document.getElementById('pickup').value;
    document.getElementById('locations').value = document.getElementById('pickup').value;
    document.getElementById('locationsdrop').value = document.getElementById('dropoff').value;
    var t = new Date();
    document.getElementById('time').value = t.getTime();

    document.getElementById('bform').action = "index.php";
    document.getElementById('bform').submit();
  }
}

function formValidate(t) {
  // The times are validated based on the users system clock. If that is wrong, the
  // validation my be wrong. Therefore, need to send server time to create the now date.
  var errstr = "";

  if (document.getElementById('country').value == "***")
    errstr += "Please select a country\n";
  else if (document.getElementById('pickup').value == "***")
    errstr += "Please select a pick up location\n";
  else if (document.getElementById('dropoff').value == "***")
    errstr += "Please select a drop off location\n";

  fy = document.getElementById('fyear').value;
  fm = document.getElementById('fmonth').value;
  fd = document.getElementById('fday').value;
  ft = document.getElementById('ftime').value;
  fh = ft.substr(0, 2);
  fmi = ft.substr(3, 2);
  ty = document.getElementById('tyear').value;
  tm = document.getElementById('tmonth').value;
  td = document.getElementById('tday').value;
  tt = document.getElementById('ttime').value;
  th = tt.substr(0, 2);
  tmi = tt.substr(3, 2);

  var fdate = new Date(fy, fm, fd, fh, fmi);
  var tdate = new Date(ty, tm, td, th, tmi);
  t *= 1000; // convert to milliseconds
  //var now = new Date();
  //var fortyeight = 48 * 3600 * 1000; // 48 hours in milliseconds

  if (fdate.valueOf() > tdate.valueOf())
    errstr += "The dates are invalid (return date is before the pick-up date)\n";

  if (fdate.valueOf() < t)
    errstr += "The pick-up date is in the past\n";
  //else if (fdate.valueOf() < now.valueOf() + fortyeight)
  //  errstr += "The pick-up time is less than 48 hours away\n";

  var age = parseInt(document.getElementById('age').value);

  if (isNaN(age))
    errstr += "Please enter a valid age\n";
  else if (age < 21 || age > 99) {
    errstr += "We use a number of suppliers to fulfil your order, some of which place restrictions ";
    errstr += "on drivers younger than 25 and older than 65.\n\nWe can still offer car hire to customers ";
    errstr += "in this category, but only through our call centre, who will have the latest information ";
    errstr += "on any potential restrictions.\n\nOur call centre can be reached on 0845 225 0845";
  }

  if (errstr.length > 0) {
    alert(errstr);
    return false;
  } else
    return true;  
}

function showoneway() {
    document.getElementById('onewayrentals').style.display = "block";
}

function showagebox() {
    document.getElementById('agerestrictionsbox').style.display = "block";
}

function closeoneway() {
    document.getElementById('onewayrentals').style.display = "none";
}

function closeagebox() {
    document.getElementById('agerestrictionsbox').style.display = "none";
}

function showframe() {
    //alert("working...");
    document.domain = "autoxia.co.uk";
    if (window.parent.document.getElementById('searchboxalt')) {
        window.parent.document.getElementById('searchboxalt').style.display = "none";
        window.parent.document.getElementById('searchbox').style.visibility = "visible";
    } else {
        window.parent.document.getElementById('minisearchalt').style.display = "none";
        window.parent.document.getElementById('minisearch').style.visibility = "visible";
    }
}

function subscribe() {
    //document.getElementById('subscribe').action = subscribe.php;
    //document.getElementById('subscribe').submit();
    w = window.open('/index.php?cmd=subscribe&e='+document.getElementById('email').value, '', 'width=900,height=670,scrollbars=yes');
//setTimeout("alert('1 = ' + w.document.getElementById('frm_email'))", 1000);
//alert("2 = " + document.getElementById('email').value);
 //   w.document.getElementById('frm_email').value = document.getElementById('email').value;
}

