﻿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 = document.getElementById("ddldephtime").value;// q.arrHour.options[q.arrHour.selectedIndex].value;
  var ArrMin = document.getElementById("ddldepmtime").value;// q.arrMin.options[q.arrMin.selectedIndex].value;
  var ArrDate = document.getElementById("ddldepdate").value;// q.arrDate.options[q.arrDate.selectedIndex].value;
  var ArrMonth = document.getElementById("ddldepmonth").value;// q.arrMonth.options[q.arrMonth.selectedIndex].value;
  var ArrYear = document.getElementById("ddldepyear").value;// q.arrYear.options[q.arrYear.selectedIndex].value;

  var RetHour = document.getElementById("ddlrtnhtime").value;// q.retHour.options[q.retHour.selectedIndex].value;
  var RetMin = document.getElementById("ddlrtnmtime").value;// q.retMin.options[q.retMin.selectedIndex].value;
  var RetDate = document.getElementById("ddlrtndate").value;// q.retDate.options[q.retDate.selectedIndex].value;
  var RetMonth = document.getElementById("ddlrtnmonth").value;// q.retMonth.options[q.retMonth.selectedIndex].value;
  var RetYear = document.getElementById("ddlrtnyear").value;// q.retYear.options[q.retYear.selectedIndex].value;

  // year, month, day, hour, minute, seconds
  Arrival = new Date(ArrYear, ArrMonth, ArrDate);
  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 setValues(){
	GoldService = document.getElementById("hdngoldservice").value;
	GoldService = GoldService*1;
	SilverService = document.getElementById("hdnsilverservice").value;
	SilverService = SilverService*1;
	BronzeService = document.getElementById("hdnbronzeservice").value;
	BronzeService = BronzeService*1;
	MiniValet = document.getElementById("hdnmini").value;
	MiniValet = MiniValet*1;
	ExecutiveValet = document.getElementById("hdnexecutive").value;
	ExecutiveValet = ExecutiveValet*1;
//	TariffOverrideCharge = document.getElementById("hdnTariffOverrideCharge").value;
//	TariffOverrideCharge = TariffOverrideCharge*1;
	FirstDayCharge = document.getElementById("hdnFirstDayCharge").value;
	FirstDayCharge = FirstDayCharge*1;
	
	MaxCharge = document.getElementById("hdnMaxCharge").value;
	MaxCharge = MaxCharge*1;
	MinCharge = document.getElementById("hdnMinCharge").value;
	MinCharge = MinCharge*1;
	AugToSep = document.getElementById("hdnAugToSep").value;
	AugToSep = AugToSep*1;
	AugToSepOneWeek = document.getElementById("hdnAugToSepOneWeek").value;
	AugToSepOneWeek = AugToSepOneWeek*1;
	
	Oct = document.getElementById("hdnOct").value;
	Oct = Oct*1;
	Jul = document.getElementById("hdnJul").value;
	Jul = Jul*1;
	AprToJun = document.getElementById("hdnAprToJun").value;
	AprToJun = AprToJun*1;
	Mar = document.getElementById("hdnMar").value;
	Mar = Mar*1;
	
	NovToFeb = document.getElementById("hdnNovToFeb").value;
	NovToFeb = NovToFeb*1;
	Mar = document.getElementById("hdnMar").value;
	Mar = Mar*1;
	Mar = document.getElementById("hdnMar").value;
	Mar = Mar*1;
	Mar = document.getElementById("hdnMar").value;
	Mar = Mar*1;
	
/*	TariffOverrideFrom	=	"" + document.getElementById('hdnfromdate').value;
	TariffOverrideFrom	=	new Date(TariffOverrideFrom);
	TariffOverrideTo	=	"" + document.getElementById('hdntodate').value;
	TariffOverrideTo	=	new Date(TariffOverrideTo); */
}

function GetQuote() {
  var Charge = "";
  setValues();
  var NumDays = GetDays();
  var Period = 0;
  var q = document.forms[0];

  var iMonth = document.getElementById("ddldepmonth").value;// q.arrMonth.selectedIndex;
  iMonth = (iMonth * 1);
  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(typeof(BookingAvailableDates) != 'undefined'){
		var lenb = BookingAvailableDates.length;
		if(lenb > 0){
			for(i=0;i<lenb;i++){
				var bmessage = BookingAvailableDates[i].message;
				var bfromdate = '' + BookingAvailableDates[i].fromdate;
				var btodate	=	'' + BookingAvailableDates[i].todate;
				bfromdate = new Date(bfromdate);
				btodate = new Date(btodate);
				if ((Arrival >= bfromdate) && (Arrival <= btodate)){
					alert(bmessage);
					return false;
				}
			}
		}
	}
	if(typeof(TariffOverrideCharges) != 'undefined'){
		var tr_length = TariffOverrideCharges.length;
		for(i=0;i<tr_length;i++){
			TariffOverrideCharge	=	TariffOverrideCharges[i].TariffOverrideCharge*1;
			TariffOverrideFrom	=	'' + TariffOverrideCharges[i].TariffOverrideFrom;
			TariffOverrideTo	=	'' + TariffOverrideCharges[i].TariffOverrideTo;
			TariffOverrideFrom	=	new Date(TariffOverrideFrom);
			TariffOverrideTo	=	new Date(TariffOverrideTo);
			if(TariffOverrideCharge > 0) {
		// If a 'tariff override' has been specified, use this as the new tariff
			if ((Arrival >= TariffOverrideFrom) && (Arrival <= TariffOverrideTo)) { 
				Period = TariffOverrideCharge;
			}
			}
		}
	}else{
		if(TariffOverrideCharge > 0) {
		// If a 'tariff override' has been specified, use this as the new tariff
		if ((Arrival >= TariffOverrideFrom) && (Arrival <= TariffOverrideTo)) { 
			Period = TariffOverrideCharge;
		}
    }
	}

	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 = ""
    document.getElementById("ParkingCost").value = "";
  }
  else {
    //q.ParkingCost.value = ToPounds(Charge);
    document.getElementById("ParkingCost").value = ToPounds(Charge); 
  }

    // Gold Service charge
  /*if (q.GoldService.checked) {
    Charge += NumDays * GoldService;
  }
  else {
    if (q.CancellationProtection.checked) {
      Charge += CancellationProtection;
    }
    if (q.FullVehicleInspection.checked) {
      Charge += FullVehicleInspection;
    }
  }*/
  if (document.getElementById("GoldService").checked) {
    Charge += NumDays * GoldService;
  }else if (document.getElementById("BronzeService").checked) {
	  BrozenService = document.getElementById("hdnbronzeservice").value;
	  BrozenService	=	BrozenService*1;
	  Charge += NumDays * BrozenService;
  }else if(document.getElementById("SilverService").checked) {
	  SilverService = document.getElementById("hdnsilverservice").value;
	  SilverService	=	SilverService*1;
	  Charge += NumDays * SilverService;
  }  
  else {
    if (document.getElementById("CancellationProtection").checked) {
      Charge += CancellationProtection;
    }
    if (document.getElementById("FullVehicleInspection").checked) {
      Charge += FullVehicleInspection;
    }
  }

    // 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 (!document.getElementById("Auto_Valet0").checked) {
    if (document.getElementById("Auto_Valet1").checked) {
      Charge += MiniValet;
    }
    else if (document.getElementById("Auto_Valet2").checked) {
      Charge += ExecutiveValet;
    }

    if (document.getElementById("Large_Vehicle").checked) {
      Charge += LargeVehicle;
    }
  }

  /*if (q.CompanyCarTransfer.checked) {
    Charge += CompanyCarTransfer;
  }
  if (q.HandWashWax.checked) {
	Charge += HandWashWax;
  }*/
    if (document.getElementById("CompanyCarTransfer").checked) {
    Charge += CompanyCarTransfer;
  }
  if (document.getElementById("HandWashWax").checked) {
	Charge += HandWashWax;
  }

  if (isNaN(Charge)) {
    //q.Quote.value = ""
    document.getElementById("Quote").value = "";
  }
  else {
    //q.Quote.value = ToPounds(Charge);
    document.getElementById("Quote").value = ToPounds(Charge);
    document.getElementById("Quotesec").style.display = 'Block';
  }

  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 wininfo = "https://www52.verysecuresites.net/tudorrose_co_uk/TudorRoseOnlineBooking/Booking/?";
//    wininfo = wininfo + "FromQuote=1";
    wininfo = wininfo + "&domain=tudorrose.co.uk";
    wininfo = wininfo + "&arrDate="+document.getElementById("ddldepdate").value;
    wininfo = wininfo + "&arrMonth="+document.getElementById("ddldepmonth").value;
    wininfo = wininfo + "&arrYear="+document.getElementById("ddldepyear").value;
    wininfo = wininfo + "&arrHour="+(document.getElementById("ddldephtime").value*1);
    wininfo = wininfo + "&arrMin="+(document.getElementById("ddldepmtime").value*1);
    wininfo = wininfo + "&retDate="+document.getElementById("ddlrtndate").value;
    wininfo = wininfo + "&retMonth="+document.getElementById("ddlrtnmonth").value;
    wininfo = wininfo + "&retYear="+document.getElementById("ddlrtnyear").value;
    wininfo = wininfo + "&retHour="+(document.getElementById("ddlrtnhtime").value*1);
    wininfo = wininfo + "&retMin="+(document.getElementById("ddlrtnmtime").value*1);
    wininfo = wininfo + "&ParkingCost="+document.getElementById("ParkingCost").value;
    if (document.getElementById("GoldService").checked)
    {
        wininfo = wininfo + "&GoldService=1";
    }else if(document.getElementById("SilverService").checked){
		wininfo = wininfo + "&SilverService=1";
	}else if(document.getElementById("BronzeService").checked){
		wininfo = wininfo + "&BronzeService=1";
	}
    else
    {
        wininfo = wininfo + "&GoldService=0";
    }
    if (document.getElementById("Auto_Valet0").checked)
    {
        wininfo = wininfo + "&Auto_Valet=0";
    }
    if (document.getElementById("Auto_Valet1").checked)
    {
        wininfo = wininfo + "&Auto_Valet=1";
    }
    if (document.getElementById("Auto_Valet2").checked)
    {
        wininfo = wininfo + "&Auto_Valet=2";
    }
    wininfo = wininfo + "&Quote="+document.getElementById("Quote").value;
  var BookingWindow = window.open(wininfo, "BookingWindow", "top=" + verticalMargin + ",left=" + horizontalMargin + ",width=" + windowWidth + ",height=" + windowHeight + ",status=yes,resizable=yes,scrollbars=yes");
}

function BookOnline() {
  if (GetDays() > 0) {
    OpenBookingWindow();
    //document.forms["frm"].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();
//}


