function validate(form)
{
  var errors = '';
  if (!form.group_id.selectedIndex) {
    errors += '- Car size\n';
  }
  if (form.name == 'reserve') {
    if (!form.deliver_id.selectedIndex && form.arriveflt.value == '') {
      errors += '- Arrive flight no\n';
    }
    if (!form.collect_id.selectedIndex && form.departflt.value == '') {
      errors += '- Depart flight no\n';
    }
  }
  if (form.firstname.value == '') {
    errors += '- Name\n';
  }
  if (form.lastname.value == '') {
    errors += '- Surname\n';
  }
  if (form.tel.value == '') {
    errors += '- Phone\n';
  }
  if (form.name == 'reserve') {
    if (form.age.value == '' || isNaN(form.age.value)) {
      errors += '- Age\n';
    } else {
      if (form.age.value < 23) {
        errors += '- You must be at least 23 years old to rent a car\n';
      }
    }
    if (form.license.value == '') {
      errors += '- License\n';
    } else {
      if (form.license.selectedIndex == 2) {
        errors += '- You must have a valid license to rent a car\n';
      }
    }
  }
  if (!validEmail(form.email.value)) {
    errors += '- Email\n';
  }
  if (form.name == 'reserve') {
    if (form.passw.value == '') {
      errors += '- Password\n';
    }
    if (form.passw.value != form.confirm.value) {
      errors += '- Confirm password\n';
    }
  }
  if (errors != '') {
    alert('The following fields are missing or invalid\n\n'+errors);
    return false;
  }
  return true;
}

function validEmail(email)
{
  var re = /^\w+[\w.-]*\w+@\w+[\w.-]*\w+$/;
  return re.test(email);
}

function toggleDeliver(obj)
{
  var form = document.forms[0];
  if (obj.selectedIndex == 0) {
  	form.arriveflt.disabled = false;
  } else {
  	form.arriveflt.disabled = true;
  }
}

function toggleCollect(obj)
{
  var form = document.forms[0];
  if (obj.selectedIndex == 0) {
  	form.departflt.disabled = false;
  } else {
  	form.departflt.disabled = true;
  }
}

function table(o1_2, o3_6, o7_13, o14_29, o30_59, o60)
{
  x = new Array();
  x['1-2'] = o1_2;
  x['3-6'] = o3_6;
  x['7-13'] = o7_13;
  x['14-29'] = o14_29;
  x['30-59'] = o30_59;
  x['60+'] = o60;
  return x;
}

var cost = new Array();
cost['A'] = table(249, 199, 189, 179, 159, 149);
cost['S'] = table(299, 269, 259, 249, 199, 189);
cost['B'] = table(369, 339, 329, 319, 229, 219);
cost['C'] = table(429, 399, 389, 379, 249, 239);
cost['D'] = table(579, 549, 539, 529, 399, 389);
cost['J'] = table(1099, 999, 949, 909, 659, 649);

var free_km = new Array();
free_km['1-2'] = 250;
free_km['3-6'] = 250;
free_km['7-13'] = 250;
free_km['14-29'] = 250;
free_km['30-59'] = 100;
free_km['60+'] = 100;

var per_km = new Array();
per_km['A'] = 2.49;
per_km['S'] = 2.99;
per_km['B'] = 3.09;
per_km['C'] = 3.29;
per_km['D'] = 3.59;
per_km['J'] = 4.99;

var insurance = new Array();
insurance['A'] = 60;
insurance['S'] = 65;
insurance['B'] = 70;
insurance['C'] = 75;
insurance['D'] = 85;
insurance['J'] = 105;

var excess = new Array();
excess['A'] = 6000;
excess['S'] = 7000;
excess['B'] = 8000;
excess['C'] = 9000;
excess['D'] = 10000;
excess['J'] = 14000;

function calculate(form)
{
  var carstr = form.carsize.options[form.carsize.selectedIndex].value;
  var car = carstr.substr(carstr.length-1,1);
  
  var pickupTime = getDateFromFormat(form.pickupDate.value+' '+form.pickupTime.value, 'yyyy-MM-dd HH:mm:ss');
  var returnTime = getDateFromFormat(form.returnDate.value+' '+form.returnTime.value, 'yyyy-MM-dd HH:mm:ss');
  if (pickupTime > returnTime) {
  	alert('Invalid return date');
  	return false;
  }
  var days = Math.ceil((returnTime-pickupTime)/(60*60*24*1000));
  var z = ( days <= 2 ? '1-2' : ( days <= 6 ? '3-6' : ( days <= 13 ? '7-13' : ( days <= 29 ? '14-29' : ( days <= 59 ? '30-59' : '60+' ) ) ) ) );
  form.totalDays.value = days;
  form.totalCost.value = days*cost[car][z];
  form.totalCostPerKm.value = per_km[car];
  form.totalFreeKm.value = days*free_km[z];
  
  form.totalInsurance.value = form.insurance.selectedIndex == 1 ? days*insurance[car] : 0;
  form.totalExcess.value = form.insurance.selectedIndex == 0 ? excess[car] : 0;
  
  var deliver = form.deliver.options[form.deliver.selectedIndex].value.split(' - ');
  form.totalDeliver.value = deliver[1].substring(1,deliver[1].length);
  
  var collect = form.collect.options[form.collect.selectedIndex].value.split(' - ');
  form.totalCollect.value = collect[1].substring(1,collect[1].length);
  
  var pickupDate = new Date();
  pickupDate.setTime(pickupTime);
  form.totalPickup.value = (form.deliver.selectedIndex > 0 ? 0 : (pickupDate.getHours() >= 8 && Math.ceil(parseFloat(pickupDate.getHours()+'.'+pickupDate.getMinutes()) <= 17) ? 0 : 50) );
  
  var returnDate = new Date();
  returnDate.setTime(returnTime);
  //form.totalDrop.value = (form.airportDrop.selectedIndex == 2 ? 0 : (returnDate.getHours() >= 8 && Math.ceil(parseFloat(returnDate.getHours()+'.'+returnDate.getMinutes()) <= 17) ? 0 : 50) );
  
  return true;
}
