

//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 ne peut accepter les programmes d’assurance de location de véhicule offerts par les banques ou les organismes de cartes de crédit localisés en dehors des Etats Unis ou du 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 = "S'il vous plait, notez que la surcharge de jeunes conducteurs a été ajoutée au 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);
}
