

//changing pickup location causes return location to be set
//changing pickupdate causes returndate to be set
//all controls cause generate qoute to be called.

var updateWaiveCDWUi = function(mediator, frm)
{
	
	var waiveCDW = frm["waiveCDW"].checked;
	var country = escape(frm["country"].value);
	
	if (waiveCDW)
		waiveCDW = "true";
	else
		waiveCDW = "false";
	
	if (waiveCDW == "false" && (frm["country"].value == "36 " || country == "261" || country == "214" || country == "439"))
		;
		
	if (waiveCDW == "true" && (frm["country"].value == "36 " || country == "261" || country == "214" || country == "439"))
		;
   		
   	if (waiveCDW == "true" && !(frm["country"].value == "36 " || country == "261" || country == "214" || country == "439"))
   	{
   		alert ('carhire.ie cannot accept car rental insurance programs offered by Banks and Credit card institutions located outside the United States and Canada.');
   		frm["waiveCDW"].checked = "";
   		
   	}
 		
   	if (waiveCDW == "false" && !(frm["country"].value == "36 " || country == "261" || country == "214" || country == "439"))
   			;
}

var updateReturnLocation = function(mediator, frm)
{
	if (frm['pickupLocation'].value == 'gl')
		window.location='http://www.carhire.ie/GlobalCarhire.aspx';
		
	frm['returnLocation'].selectedIndex = frm['pickupLocation'].selectedIndex;
}

var redirectForGlobalCarhire = function(mediator, frm)
{
	if (frm['returnLocation'].value == 'gl')
		window.location='http://www.carhire.ie/GlobalCarhire.aspx';
}

var updateReturnTime = function(mediator, frm)
{
	frm['returnTime'].selectedIndex = frm['pickupTime'].selectedIndex;
}


var updateCurrency = function(mediator, frm)
{
	var countryCode = frm["country"].value;
	if (countryCode == "214" || countryCode == "439")
		frm["preferredCurrency"].value = "USD";
	else if (countryCode == "213" || countryCode == "438")
		frm["preferredCurrency"].value = "GBP";
	else
		frm["preferredCurrency"].value = "EUR";
}

var updatePickup = function(mediator, frm)
{
	var val = frm["calendarPickupDate"].value;
	pickupChanged(mediator, frm);
}

var updateReturn = function(mediator, frm)
{
	var val = frm["calendarReturnDate"].value;	
	returnChanged(mediator, frm);
}

var pickupChanged = function(mediator, frm)
{		

	var pickupDate = frm["calendarPickupDate"].value.split("/");

	var month = parseInt(parseFloat(pickupDate[1])) - 1;
	var day = parseInt(parseFloat(pickupDate[0]));
	var year = parseInt(parseFloat(pickupDate[2]));
	
	var pickup = new Date(year, month, day);
	
	var ret = new Date();
	
	ret.setDate(pickup.getDate());
	ret.setMonth(pickup.getMonth());
	
	var pickupYear = pickup.getYear().toString(10);
	if (pickupYear.length == 3)
		pickupYear = '20' + pickup.getYear().toString(10).substring(1,3);
	else
		pickupYear = '20' + pickup.getYear().toString(10).substring(2,4);
		
	ret.setYear(parseInt(parseFloat(pickupYear)));
	
	ret.setDate(ret.getDate() + 3);
	
	var returnYear = ret.getYear().toString(10);
	if (returnYear.length == 3)
		returnYear = '20' + ret.getYear().toString(10).substring(1,3);
	else
		returnYear = '20' + ret.getYear().toString(10).substring(2,4);
	
	
	if ((pickup.getMonth() +1).toString().length == 1)
		pickupMonth = '0' + (pickup.getMonth() +1).toString();
	else
		pickupMonth = (pickup.getMonth() +1).toString();
		
	
	if ((pickup.getDate()).toString().length == 1)
		pickupDate = '0' + (pickup.getDate()).toString();
	else
		pickupDate = (pickup.getDate()).toString();	
		
	if ((ret.getMonth() +1).toString().length == 1)
		returnMonth = '0' + (ret.getMonth() +1).toString();
	else
		returnMonth = (ret.getMonth() +1).toString();
	
	if ((ret.getDate()).toString().length == 1)
		returnDate = '0' + (ret.getDate()).toString();
	else
		returnDate = (ret.getDate()).toString();	
	
	frm["calendarPickupDate"].value = pickupDate + "/" + pickupMonth +"/" + pickupYear;
	frm["calendarReturnDate"].value = returnDate + "/" + returnMonth +"/" + returnYear;
}


var returnChanged = function(mediator, frm)
{
	var pickup = new Date();
	var pickupDate = frm["calendarPickupDate"].value.split("/");	
	
	pickup.setMonth(parseInt(parseFloat(pickupDate[1])) - 1);
	pickup.setDate(parseInt(parseFloat(pickupDate[0])));
	pickup.setYear(parseInt(parseFloat(pickupDate[2])));

	var ret = new Date();
	
	var returnDate = frm["calendarReturnDate"].value.split("/");
	
	ret.setMonth(parseInt(parseFloat(returnDate[1])) - 1);
	ret.setDate(parseInt(parseFloat(returnDate[0])));
	ret.setYear(parseInt(parseFloat(returnDate[2])));
	
	var pickupYear = pickup.getYear().toString(10);
	if (pickupYear.length == 3)
		pickupYear = '20' + pickup.getYear().toString(10).substring(1,3);
	else
		pickupYear = '20' + pickup.getYear().toString(10).substring(2,4);
		
	if ((pickup.getMonth() +1).toString().length == 1)
		pickupMonth = '0' + (pickup.getMonth() +1).toString();
	else
		pickupMonth = (pickup.getMonth() +1).toString();
	
	if ((pickup.getDate()).toString().length == 1)
		pickupDate = '0' + (pickup.getDate()).toString();
	else
		pickupDate = (pickup.getDate()).toString();	
	
	if (pickup > ret)
	{
		alert("Return date cannot be before pickup date");
		frm["calendarReturnDate"].value = pickupDate + "/" + pickupMonth +"/" + pickupYear;
	}
	if (frm["calendarPickupDate"].value == frm["calendarReturnDate"].value && frm["pickupTime"].value == frm["returnTime"].value)
	{
		alert("Return date/time cannot be the same as pickup date/time, please update return date or time");
	}
}

var alertForOnRequest = function(mediator, frm)
{
	var sippCode = frm["sippCode"].value;
	if (sippCode == "IDAR"
		||  sippCode == "FDAR"
		||  sippCode == "FCAR"
		||  sippCode == "PCAR"
		||  sippCode == "SVAN"
		||  sippCode == "LVMN"
		||  sippCode == "FFMR")
			alert('This vehicle is only available on a request basis. Please contact our reservations team to receive your quote – reservations@nationalcar.ie or +353214320755. Thank you for choosing carhire.ie.');
}

var updateVehicleAndPromo = function(mediator, frm)
{
	var sippCode = frm["sippCode"].value;
	if (sippCode == "EBMN")
	{
		frm["sippCode"].value = "EDMN";
		frm["promotionalCode"].value = "Upgrade";
	}
	if (sippCode == "EDMN")
	{
		frm["sippCode"].value = "CDMN";
		frm["promotionalCode"].value = "Upgrade";
	}
		
	document.getElementById('upgradeOffer').innerHTML = "";
}

var updateUpgradeOfferUI = function(mediator, frm)
{
	if (frm["sippCode"].value == "EBMN" || frm["sippCode"].value == "EDMN")
	{
		document.getElementById('upgradeOffer').innerHTML = "<a href=\"#\" class=\"button buttonupgrade\"><span>Free Upgrade</span></a>";
		frm["promotionalCode"].value = "";	
	}
	else
	{
		document.getElementById('upgradeOffer').innerHTML = "";
		frm["promotionalCode"].value = "";	
	}
}

var updateUi = function(responseText)
{
	var startOfTotalAmount = responseText.indexOf("<dd class=\"total\">");
	var startOfDepositAmount = responseText.indexOf("<dd class=\"total\" id=\"deposit\">");
	var depositText = "";
	startOfTotalAmount+= (responseText.substr(startOfTotalAmount).indexOf(">")+1);
	var endOfTotalAmount = responseText.substr(startOfTotalAmount).indexOf("</dd>");
	var amountText = responseText.substr(startOfTotalAmount, endOfTotalAmount);
	if (startOfDepositAmount != -1)
	{
		startOfDepositAmount+= (responseText.substr(startOfDepositAmount).indexOf(">")+1);
		var endOfDepositAmount = responseText.substr(startOfDepositAmount).indexOf("</dd>");
		depositText = responseText.substr(startOfDepositAmount, endOfDepositAmount);
	}
	var driverSurcharge = responseText.indexOf("<dt>Driver Surcharge</dt>");
	if (driverSurcharge != -1)
	{
		if (document.getElementById("note") != null)
			document.getElementById("note").innerHTML = "Please note: Young Drivers surcharge has been added to total";
	}
	
	if ( document.getElementById("totaltopay") != null)
	{
	if (startOfDepositAmount != -1)
		document.getElementById("totaltopay").innerHTML = depositText;
	else
		document.getElementById("totaltopay").innerHTML = amountText;
	}
	
	if ( document.getElementById("totalcost") != null)
	document.getElementById("totalcost").innerHTML = amountText;
	document.getElementById("quotationmiddle").innerHTML = responseText;	
}


var updateQuery = function(mediator, frm)
{	
	var sippCode = escape(frm["sippCode"].value);
	var promotionalCode = escape(frm["promotionalCode"].value);
	var pickupLocation = escape(frm["pickupLocation"].value);
	
	var pickupDate = frm["calendarPickupDate"].value.split("/");
	var pickupDay = escape(pickupDate[0]);
	var pickupMonth = escape(pickupDate[1]);
	var pickupYear = escape(pickupDate[2]);
	
	var pickupTime = escape(frm["pickupTime"].value);
	var returnLocation = escape(frm["returnLocation"].value);
	
	var returnDate = frm["calendarReturnDate"].value.split("/");
	var returnDay = escape(returnDate[0]);
	var returnMonth = escape(returnDate[1]);
	var returnYear = escape(returnDate[2]);
	
	var returnTime = escape(frm["returnTime"].value);
	var extraDrivers = escape(frm["extraDrivers"].value);
	var childSeats = escape(frm["childSeats"].value);
	var preferredCurrency = escape(frm["preferredCurrency"].value);
	var country = escape(frm["country"].value);
	var waiveCDW = frm["waiveCDW"].checked;
	var page = escape(frm["page"].value);
	var gps = escape(frm["gps"].value);
	var damageExcessReduction = escape(frm["damageExcessReduction"].value);
	var paymentType = escape(frm["paymentType"].value);
	var birthDay = escape(frm["birthDay"].value);
	var birthMonth = escape(frm["birthMonth"].value);
	var birthYear = escape(frm["birthYear"].value);
	
	if (waiveCDW)
		waiveCDW = "true";
	else
		waiveCDW = "false";

	
	document.getElementById("quotationmiddle").innerHTML = "<span class=\"preLoader\">Please wait...</span>";
	
	var data="sippCode="+sippCode+"&promotionalCode="+promotionalCode+"&pickupLocation="+pickupLocation+"&pickupDay="+pickupDay+"&pickupMonth="+pickupMonth+"&pickupYear="+pickupYear+"&pickupTime="+pickupTime+"&returnLocation="+returnLocation+"&returnDay="+returnDay+"&returnMonth="+returnMonth+"&returnYear="+returnYear+"&returnTime="+returnTime+"&extraDrivers="+extraDrivers+"&childSeats="+childSeats+"&preferredCurrency="+preferredCurrency+"&country="+country+"&waiveCDW="+waiveCDW+"&gps="+gps+"&damageExcessReduction="+damageExcessReduction+"&paymentType="+paymentType+"&birthDay="+birthDay+"&birthMonth="+birthMonth+"&birthYear="+birthYear+"&page="+page+"&sid="+Math.random()+"&showButtons=true";
	$.ajax({
		type: "GET",
		url: "/Quote/getQuote.aspx",
		data: data,
		success: updateUi
 });
 //alert(data);
 	mediator.stop();
}


var mediator;

onload = function()
{
	//wire up search form
	var upgradeOffer = document.getElementById('upgradeOffer');
	var frm = document.getElementById('searchForm');
	mediator = new Mediator();
	if(frm == null)
		return;
	mediator.setForm(frm);	
	//updateUpgradeOfferUI(mediator, frm);
	updateWaiveCDWUi(mediator, frm);
	mediator.register(frm["pickupLocation"], "onchange", updateReturnLocation);
	mediator.register(frm["returnLocation"], "onchange", redirectForGlobalCarhire);
	mediator.register(frm["pickupTime"], "onchange", updateReturnTime);
	
	mediator.register(frm["pickupDay"], "onchange", pickupChanged);
	mediator.register(frm["pickupMonth"], "onchange", pickupChanged);
	mediator.register(frm["pickupYear"], "onchange", pickupChanged);
	
	mediator.register(frm["returnDay"], "onchange", returnChanged);
	mediator.register(frm["returnMonth"], "onchange", returnChanged);
	mediator.register(frm["returnYear"], "onchange", returnChanged);
	
	//mediator.register(frm["promotionalCode"], "onchange", updateVehicleAndPromo);
	
	mediator.register(frm["promotionalCode"], "onchange", updateQuery);
	mediator.register(frm["pickupLocation"], "onchange", updateQuery);
	mediator.register(frm["pickupDay"], "onchange", updateQuery);
	mediator.register(frm["pickupMonth"], "onchange", updateQuery);
	mediator.register(frm["pickupYear"], "onchange", updateQuery);
	mediator.register(frm["pickupTime"], "onchange", updateQuery);
	mediator.register(frm["returnLocation"], "onchange", updateQuery);
	mediator.register(frm["returnDay"], "onchange", updateQuery);
	mediator.register(frm["returnMonth"], "onchange", updateQuery);
	mediator.register(frm["returnYear"], "onchange", updateQuery);
	mediator.register(frm["returnTime"], "onchange", updateQuery);
	
	//mediator.register(frm["sippCode"], "onchange", alertForOnRequest);
	//mediator.register(frm["sippCode"], "onchange", updateUpgradeOfferUI);
	mediator.register(frm["sippCode"], "onchange", updateQuery);
	mediator.register(frm["extraDrivers"], "onchange", updateQuery);
	mediator.register(frm["childSeats"], "onchange", updateQuery);
	
	mediator.register(frm["waiveCDW"], "onchange", updateWaiveCDWUi);
	mediator.register(frm["waiveCDW"], "onchange", updateQuery);
	
	mediator.register(frm["preferredCurrency"], "onchange", updateQuery);
	
	mediator.register(frm["country"], "onchange", updateWaiveCDWUi);
	mediator.register(frm["country"], "onchange", updateCurrency);
	mediator.register(frm["country"], "onchange", updateQuery);
	
	mediator.register(frm["calendarPickupDate"], "onchange", updatePickup);
	mediator.register(frm["calendarReturnDate"], "onchange", updateReturn);
	mediator.register(frm["calendarPickupDate"], "onchange", updateQuery);
	mediator.register(frm["calendarReturnDate"], "onchange", updateQuery);
	
	
	//mediator.register(upgradeOffer, "onclick", updateVehicleAndPromo);
	mediator.register(upgradeOffer, "onclick", updateQuery);
	//mediator.register(frm["quote"], "onclick", updateQuery);
	
	updateQuery(mediator, frm);
}
