   // Date arrays
   Today = new Date()
   Day = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
   Month = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

   // Period Prices, in pence
   NovToFeb = 495;
        Mar = 495;
   AprToJun = 495;
        Jul = 495;
   AugToSep = 595;
   AugToSepOneWeek = 695;
   Oct = 495;

   // Minimum charge, in pence
   MinCharge = 4000;
   MaxCharge = 0;
   FirstDayCharge = 2550;

   // Service charges (other than basic service)
   GoldService = 200;

   // Supplement charges, in pence
   CompanyCarTransfer = 0;
   FullVehicleInspection = 1000;
   HandWashWax = 1250;
   MiniValet = 1950;
   ExecutiveValet = 3450;
   LargeVehicle = 500;

   // Special offer notification
   Notified = false;

function ToPounds(amount) {
  amount = Math.round(amount);
  amount /= 100;
  amount = amount.toString();
  if (amount.indexOf(".") > -1) {
    if (amount.length - amount.indexOf(".") < 3) {
      amount += "0";
    }
  }
  else {
    amount += ".00";
  }

  return amount;
}

function GetDays() {
  var q = document.forms[0];

  // Get dates
  var ArrHour = q.arrHour.options[q.arrHour.selectedIndex].value;
  var ArrMin = q.arrMin.options[q.arrMin.selectedIndex].value;
  var ArrDate = q.arrDate.options[q.arrDate.selectedIndex].value;
  var ArrMonth = q.arrMonth.options[q.arrMonth.selectedIndex].value;
  var ArrYear = q.arrYear.options[q.arrYear.selectedIndex].value;

  var RetHour = q.retHour.options[q.retHour.selectedIndex].value;
  var RetMin = q.retMin.options[q.retMin.selectedIndex].value;
  var RetDate = q.retDate.options[q.retDate.selectedIndex].value;
  var RetMonth = q.retMonth.options[q.retMonth.selectedIndex].value;
  var RetYear = q.retYear.options[q.retYear.selectedIndex].value;

  // year, month, day, hour, minute, seconds
  var Arrival = new Date(ArrYear, ArrMonth, ArrDate);
  var Return = new Date(RetYear, RetMonth, RetDate);

  // Calculate number of days
  var NumDays = Math.round((Return - Arrival) / 1000 / 60 / 60 / 24 + 1);

  if (NumDays < 1) {
    alert('You chose an invalid date.');
    return -1;
  }

  // Force user to choose valid times
  if (ArrHour == '' || ArrMin == '') {
    alert('Please supply an arrival time.');
    return -1;
  }
  else if (RetHour == '' || RetMin == '') {
    alert('Please supply a return time.');
    return -1;
  }

  //if (RetHour < 5 && RetHour != 0) {
  //  NumDays -= 1;
  //}
  if (RetHour < 5) {
    NumDays -= 1;
  }

  NumDays = parseInt(NumDays);

  return NumDays;
}

function GetQuote() {
  var Charge = "";
  var NumDays = GetDays();
  var Period = 0;
  var q = document.forms[0];

  var iMonth = q.arrMonth.selectedIndex;
  
  switch (iMonth) {
    case 10 :
    case 11 :
    case 0 :
    case 1 :
      Period = NovToFeb;
      break;
    case 2 :
      Period = Mar;
      break;
    case 3 :
    case 4 :
    case 5 :
      Period = AprToJun;
      break;
    case 6 :
      Period = Jul;
      break;
    case 7 :
    case 8 :
      Period = AugToSep;
      break;
    case 9 :
      Period = Oct;
      break;
  }
  
  if (Period != 0) {
    if ((iMonth == 7 || iMonth == 8) && NumDays <= 8) {
      Period = AugToSepOneWeek;
    }

	if (FirstDayCharge > 0) {
		// If a 'first day charge' should apply, apply it and work out rest of duration based on tariff
		Charge = FirstDayCharge;
		Charge += Period * (NumDays - 1);
	}
	else {
		// No 'first day charge' so apply tariff for entire duration
	    Charge = NumDays * Period;
	}
  }
  else {
    alert('Error.');
    return;
  }

  // Apply other modifications

  if (  !isNaN(NumDays) &&
      NumDays > 20 &&
      NumDays <= 36 ) {
        Charge = Charge * (1 - ((NumDays - 11) / 100));
  }
  else if (NumDays > 36 && !Notified) {
    alert('For booking periods longer than 36 days please contact Tudor Rose for a special quote.');
    Notified = true;
    Charge = "";
  }

  if (Charge < MinCharge) {
    Charge = MinCharge;
  }
  
  if ((MaxCharge > 0) && (Charge > MaxCharge)) {
	Charge = MaxCharge;
  }

  if (isNaN(Charge)) {
    q.ParkingCost.value = ""
  }
  else {
    q.ParkingCost.value = ToPounds(Charge);
  }

    // Gold Service charge
  if (q.GoldService.checked) {
    Charge += NumDays * 250;
  }

    // Add Auto Valet charges
    if (!q.Auto_Valet[0].checked) {
    if (q.Auto_Valet[1].checked) {
      Charge += MiniValet;
    }
    else if (q.Auto_Valet[2].checked) {
      Charge += ExecutiveValet;
    }

    if (q.Large_Vehicle.checked) {
      Charge += LargeVehicle;
    }
  }

  if (q.CompanyCarTransfer.checked) {
    Charge += CompanyCarTransfer;
  }
  if (q.FullVehicleInspection.checked) {
    Charge += FullVehicleInspection;
  }
  if (q.HandWashWax.checked) {
	Charge += HandWashWax;
  }

  if (isNaN(Charge)) {
    q.Quote.value = ""
  }
  else {
    q.Quote.value = ToPounds(Charge);
  }

  return;
}


function OpenBookingWindow() {
  var horizontalMargin = 20;
  var verticalMargin = 40;
  var windowWidth = 745;
  var windowHeight = screen.availHeight - (4 * verticalMargin);

  var QueryString = "";
  if (location.href.indexOf("?") != -1) {
    QueryString = location.href.substring(location.href.indexOf("?")+1);
  }

  var BookingWindow = window.open("", "BookingWindow", "top=" + verticalMargin + ",left=" + horizontalMargin + ",width=" + windowWidth + ",height=" + windowHeight + ",status=yes,resizable=yes,scrollbars=yes");
}

function BookOnline() {
  if (GetDays() > 0) {
    OpenBookingWindow();
    document.forms[0].submit();
  }
  else {
    alert('Your arrival or return date is incorrect. Please check the date and time you have supplied.');
  }
}

//if (location.href.indexOf("?") != -1) {
//  OpenBookingWindow();
//}
