intSDays = 0;
intSXDays = 0;
intSWeeks = 0;
intSXWeeks = 0;

intWDays = 0;
intWXDays = 0;
intWWeeks = 0;
intWXWeeks = 0;

function calculateRentalSeasonsFix(_intDays, _blnFirstDay, _blnFirstWeek, _curDay, _curExtraDay, _curWeek, _curExtraWeek, _seas) {
	curPrice = 0;
	counter = 0;



	while (counter < _intDays) {
		if (_intDays >= counter+7) {
			if (_blnFirstWeek) {
				curPrice += _curWeek;
				_blnFirstWeek = false;
				if (_seas == "s") {
					intSWeeks++;
				} else {
					intWWeeks++;
				}
			} else {
				curPrice += _curExtraWeek;
				if (_seas == "s") {
					intSXWeeks++;
				} else {
					intWXWeeks++;
				}
			}
			
			counter = counter + 7;
		} else if (_intDays >= counter+1) {
			if (_blnFirstDay && _intDays < 7) {
				curPrice += _curDay;
				_blnFirstDay = false;
				if (_seas == "s") {
					intSDays++;
				} else {
					intWDays++;
				}
			} else {
				curPrice += _curExtraDay;
				if (_seas == "s") {
					intSXDays++;
				} else {
					intWXDays++;
				}
			}
			
			counter++;
		} else {
			counter = _intDays;
		}
	}

	return curPrice;
}

function calculateRental() {
	// Make sure both cala and calb have selected dates
	if (getObject("frmSelDaycala").value != "" && getObject("frmSelMonthcala").value != "" && getObject("frmSelYearcala").value != "" && getObject("frmSelDaycalb").value != "" && getObject("frmSelMonthcalb").value != "" && getObject("frmSelYearcalb").value != "") {
		var dtStartS = new Date(getObject("frmSelYearcala").value, getObject("frmSelMonthcala").value, getObject("frmSelDaycala").value);
		var dtEndS = new Date(getObject("frmSelYearcalb").value, getObject("frmSelMonthcalb").value, getObject("frmSelDaycalb").value);
		
		
		var dtStart = dtStartS.getTime();
		var dtEnd = dtEndS.getTime();

		var now = new Date(); 
		var tzoffset = 0;
		if (now.getTimezoneOffset() > 0 || now.getTimezoneOffset() < 0)
		{
			//tzoffset = (now.getTimezoneOffset()/60)*3600000;
			//tzoffset = (now.getTimezoneOffset() * 60000) + ((now.getTimezoneOffset()/60) * 3600000);
			tzoffset = ((now.getTimezoneOffset()/60) * 3600000)-3600000;

			dtStart = dtStart - tzoffset;
			dtEnd = dtEnd - tzoffset;
			
			
			var msg1 = "Offset: " + tzoffset + "\n<br>Start: " + dtStart + "\n<br>End: " + dtEnd;
			//getObject("debug").innerHTML = msg1;
		}
		else
		{
			var msg1 = "Offset: " + tzoffset + "\n<br>Start: " + dtStart + "\n<br>End: " + dtEnd;
			//getObject("debug").innerHTML = msg1;
		}
		
		/*dtStart = dtStart+tzoffset;
		dtEnd = dtEnd+tzoffset;
		
		dtSummerFrom = dtSummerFrom+tzoffset;
		dtSummerTo = dtSummerTo+tzoffset;
		dtWinterFrom = dtWinterFrom+tzoffset;
		dtWinterTo = dtWinterTo+tzoffset;*/

		// Milliseconds in one day
		var one_day=1000*60*60*24;

		// Number of days
		var nrdays = Math.ceil((dtEnd-dtStart)/(one_day));
		//nrdays = parseInt(nrdays)+1;

		if (nrdays <= 0) {
			alert("End date cannot be before start date");
			nullTotal();
		} else {
			var msg = "";
			msg += "summer from: " + dtSummerFrom + "<br>\n";
			msg += "summer to: " + dtSummerTo + "<br>\n";
			msg += "winter from: " + dtWinterFrom + "<br>\n";
			msg += "winter to: " + dtWinterTo + "<br>\n";
			msg += "selected from: " + dtStart + "<br>\n";
			msg += "selected to: " + dtEnd + "<br>\n";
		
			//alert(msg);
			//getObject("debug").innerHTML = msg;
			var ta = parseInt(getObject("frmTimea").value.replace(":",""), 10);
			var tb = parseInt(getObject("frmTimeb").value.replace(":",""), 10);
			if (tb > ta) {
				nrdays++;
				
			}
			//alert(parseInt(getObject("frmTimeb").value.replace(":","")));
			//alert(parseInt(getObject("frmTimea").value.replace(":","")));
			
			
			intSummerDays = 0;
			intWinterDays = 0;

			// Calculate the prices
			if (dtStart >= dtSummerFrom && dtEnd <= dtSummerTo) {
				intSummerDays = nrdays;
			} else if (dtStart >= dtWinterFrom && dtEnd <= dtWinterTo) {
				intWinterDays = nrdays;
			} else if (dtStart <= dtWinterTo && dtStart >= dtWinterFrom && dtEnd >= dtSummerFrom && dtEnd <= dtSummerTo) {
				intWinterDays = Math.ceil(((dtWinterTo+one_day)-dtStart)/(one_day));
				intSummerDays = Math.ceil((dtEnd-dtSummerFrom)/(one_day));

				if (parseInt(getObject("frmTimeb").value.replace(":","")) > parseInt(getObject("frmTimea").value.replace(":",""))) {
					intSummerDays++;
				}
			} else if (dtStart <= dtSummerTo && dtStart >= dtSummerFrom && dtEnd >= dtWinterFrom && dtEnd <= dtWinterTo) {
				intSummerDays = Math.ceil(((dtSummerTo+one_day)-dtStart)/(one_day));
				intWinterDays = Math.ceil((dtEnd-dtWinterFrom)/(one_day));

				if (parseInt(getObject("frmTimeb").value.replace(":","")) > parseInt(getObject("frmTimea").value.replace(":",""))) {
					intWinterDays++;
				}
			}
			
			// Calculate the prices for next year
			if (dtStart >= dtSummerFromN && dtEnd <= dtSummerToN) {
				intSummerDays = nrdays;
			} else if (dtStart >= dtWinterFromN && dtEnd <= dtWinterToN) {
				intWinterDays = nrdays;
			} else if (dtStart <= dtWinterToN && dtStart >= dtWinterFromN && dtEnd >= dtSummerFromN && dtEnd <= dtSummerToN) {
				intWinterDays = Math.ceil(((dtWinterToN+one_day)-dtStart)/(one_day));
				intSummerDays = Math.ceil((dtEnd-dtSummerFromN)/(one_day));

				if (parseInt(getObject("frmTimeb").value.replace(":","")) > parseInt(getObject("frmTimea").value.replace(":",""))) {
					intSummerDays++;
				}
			} else if (dtStart <= dtSummerToN && dtStart >= dtSummerFromN && dtEnd >= dtWinterFromN && dtEnd <= dtWinterToN) {
				intSummerDays = Math.ceil((dtSummerToN-dtStart)/(one_day));
				intWinterDays = Math.ceil((dtEnd-dtWinterFromN)/(one_day));

				if (parseInt(getObject("frmTimeb").value.replace(":","")) > parseInt(getObject("frmTimea").value.replace(":",""))) {
					intWinterDays++;
				}
			}
			
			if (dtStart >= dtSummerFrom && dtStart <= dtSummerTo && dtEnd >= dtWinterFromN) {
				intSummerDays = Math.ceil((dtSummerTo-dtStart)/(one_day))+1;
				intWinterDays = Math.ceil((dtEnd-dtWinterFromN)/(one_day));
			}
			
			var curPrice = 0;

			if (intSummerDays > 0 && intWinterDays <= 0) {
				curPrice += calculateRentalSeasonsFix(intSummerDays, true, true, curSummerDay, curSummerExtraDay, curSummerWeek, curSummerExtraWeek, "s");
			} else if (intWinterDays > 0 && intSummerDays <= 0) {
				curPrice += calculateRentalSeasonsFix(intWinterDays, true, true, curWinterDay, curWinterExtraDay, curWinterWeek, curWinterExtraWeek, "w");
			} else if (intWinterDays > 0 && intSummerDays > 0) {
				if (dtStart < dtSummerFrom && dtStart > dtWinterFrom) {
					curPrice += calculateRentalSeasonsFix(intWinterDays, true, true, curWinterDay, curWinterExtraDay, curWinterWeek, curWinterExtraWeek, "w");
					curPrice += calculateRentalSeasonsFix(intSummerDays, false, false, curSummerDay, curSummerExtraDay, curSummerWeek, curSummerExtraWeek, "s");
				} else {
					curPrice += calculateRentalSeasonsFix(intSummerDays, true, true, curSummerDay, curSummerExtraDay, curSummerWeek, curSummerExtraWeek, "s");
					curPrice += calculateRentalSeasonsFix(intWinterDays, false, false, curWinterDay, curWinterExtraDay, curWinterWeek, curWinterExtraWeek, "w");				
				}
			}


tr = "s: Dagar: " + intSDays + " / X Dagar: " + intSXDays + " / Vikur: " + intSWeeks + " / X Vikur: " + intSXWeeks + "\n";
tr += "w: Dagar: " + intWDays + " / X Dagar: " + intWXDays + " / Vikur: " + intWWeeks + " / X Vikur: " + intWXWeeks;
//alert(tr);

			intSDays = 0;
			intSXDays = 0;
			intSWeeks = 0;
			intSXWeeks = 0;

			intWDays = 0;
			intWXDays = 0;
			intWWeeks = 0;
			intWXWeeks = 0;
			getObject("frmRental").value = curPrice;
			


			// Earlybird
			var today = new Date();
			if (dtStartS >= addDays(today, 30)) {
				getObject("frmEarlybird").value = Math.round(curPrice * 0.05);
			} else {
				getObject("frmEarlybird").value = "0";
			}

			// Calculate the total price
			calculateTotal();
		}
	} else {
		alert("Select start and end dates");
		nullTotal();
	}
}



function calculateExtras() {
	var curExtras = 0;

	// Number of days
	var dtStart = new Date(getObject("frmSelYearcala").value, getObject("frmSelMonthcala").value, getObject("frmSelDaycala").value);
	var dtEnd = new Date(getObject("frmSelYearcalb").value, getObject("frmSelMonthcalb").value, getObject("frmSelDaycalb").value);

	var one_day=1000*60*60*24;

	var nrdays = Math.ceil((dtEnd.getTime()-dtStart.getTime())/(one_day));

	nrdays = parseInt(nrdays);
	
	var ta = parseInt(getObject("frmTimea").value.replace(":",""), 10);
	var tb = parseInt(getObject("frmTimeb").value.replace(":",""), 10);
	if (tb > ta) {
		nrdays++;
		
	}

	if (nrdays > 0) {

		// Check each extra and add to curExtras if the checkbox is checked
		if (curGpro != -1) {
			if (getObject("frmGpro").checked) {
				curExtras += (curGpro*nrdays);
			}
		}

		if (curXdriver != -1) {
			var txdr = parseInt(getObject("frmXdriver").value);
			
			if (txdr != NaN && txdr > 0)
			{
				curExtras += ((curXdriver*nrdays)*txdr);
			}
			
			/*
			if (getObject("frmXdriver").checked) {
				curExtras += (curXdriver*nrdays);
			}
			*/
		}

		if (curBseat != -1) {
			if (getObject("frmBseat").checked) {
				curExtras += (curBseat*nrdays);
			}
		}

		if (curTrope != -1) {
			if (getObject("frmTrope").checked) {
				curExtras += (curTrope*nrdays);
			}
		}

		if (curFcan != -1) {
			if (getObject("frmFcan").checked) {
				curExtras += (curFcan*nrdays);
			}
		}
		
		if (curGps != -1) {
			if (getObject("frmGps").checked) {
				curExtras += (curGps*nrdays);
			}
		}
		
		if (curScdw != -1) {
			if (getObject("frmScdw").checked) {
				curExtras += (curScdw*nrdays);
			}
		}
		
		if (curBed_linen != -1) {
		var tbed = parseInt(getObject("frmBedLinen").value);

			if (tbed != NaN && tbed > 0)
			{
				curExtras += ((curBed_linen)*tbed);
			}
		}

		strDeliveryA = getObject("frmDeliverya")[getObject("frmDeliverya").selectedIndex].value;
		strDeliveryB = getObject("frmDeliveryb")[getObject("frmDeliveryb").selectedIndex].value;
		
		if (strDeliveryA == "h" || strDeliveryA == "hr") {
			curExtras += curHpudo;
		} else if (strDeliveryA == "a") {
			curExtras += curApudo;
		}
		
		if (strDeliveryB == "h" || strDeliveryB == "hr") {
			curExtras += curHpudo;
		} else if (strDeliveryB == "a") {
			curExtras += curApudo;
		}



		var timea = getObject("frmTimea").value.replace(":","");

		if (timea.substr(0,1) == "0") {
			timea = timea.substr(1,3);
		}

		timea = parseInt(timea);

		var timeb = getObject("frmTimeb").value.replace(":","");

		if (timeb.substr(0,1) == "0") {
			timeb = timeb.substr(1,3);
		}

		timeb = parseInt(timeb);

		var night_fee = parseInt(getObject("l0x223").innerHTML);
		var night_to = parseInt(getObject("l0x221").innerHTML);
		var night_from = parseInt(getObject("l0x222").innerHTML);


		if (timea < night_to || timea > night_from) {
			curExtras += night_fee;
		}
		
		if (timeb < night_to || timeb > night_from) {
			curExtras += night_fee;
		}
	}

	getObject("frmExtras").value = curExtras;
	
	save_viewstate();
}

function save_viewstate() {
	var myConn = new XHConn();

	if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");

	//var fnWhenDone = function (oXML) { alert(oXML.responseText); };
	var fnWhenDone = function (oXML) { return false; };
	
	// Prepare string to be sent
	var send_string = "";
	
	send_string += "SelYearcala=" + getObject("frmSelYearcala").value;
	send_string += "&SelMonthcala=" + getObject("frmSelMonthcala").value;
	send_string += "&SelDaycala=" + getObject("frmSelDaycala").value;
	send_string += "&SelYearcalb=" + getObject("frmSelYearcalb").value;
	send_string += "&SelMonthcalb=" + getObject("frmSelMonthcalb").value;
	send_string += "&SelDaycalb=" + getObject("frmSelDaycalb").value;
	
	send_string += "&Timea=" + getObject("frmTimea").value;
	send_string += "&Timeb=" + getObject("frmTimeb").value;
	
	send_string += "&Deliverya=" + getObject("frmDeliverya").value;
	send_string += "&Deliveryb=" + getObject("frmDeliveryb").value;
	
	if (getObject("frmGpro") != null) {
		send_string += "&Gpro=" + getObject("frmGpro").checked;
	}
	
	if (getObject("frmXdriver") != null) {
		send_string += "&Xdriver=" + getObject("frmXdriver").value;
	}
	
	if (getObject("frmBseat") != null) {
		send_string += "&Bseat=" + getObject("frmBseat").checked;
	}
	
	if (getObject("frmTrope") != null) {
		send_string += "&Trope=" + getObject("frmTrope").checked;
	}
	
	if (getObject("frmFcan") != null) {
		send_string += "&Fcan=" + getObject("frmFcan").checked;
	}
	
	if (getObject("frmGps") != null) {
		send_string += "&Gps=" + getObject("frmGps").checked;
	}
	
	if (getObject("frmScdw") != null) {
		send_string += "&Scdw=" + getObject("frmScdw").checked;
	}
	
	if (getObject("frmBedLinen") != null) {
		send_string += "&Bed_linen=" + getObject("frmBedLinen").value;
	}
	
	send_string += "&sessionid=" + getObject("sessionid").innerHTML;

	myConn.connect("execute/save_viewstate.php", "POST", send_string, fnWhenDone);
}

function calculateTotal() {

	if (getObject("frmSelDaycala").value != "" && getObject("frmSelDaycalb").value != "") {
		// Number of days
		var dtStart = new Date(getObject("frmSelYearcala").value, getObject("frmSelMonthcala").value, getObject("frmSelDaycala").value);
		var dtEnd = new Date(getObject("frmSelYearcalb").value, getObject("frmSelMonthcalb").value, getObject("frmSelDaycalb").value);

		var one_day=1000*60*60*24;

		var nrdays = Math.ceil((dtEnd.getTime()-dtStart.getTime())/(one_day));

		nrdays = parseInt(nrdays)+1;
		
		var dtA = getObject("frmTimea").value.replace(":","");
		var dtB = getObject("frmTimeb").value.replace(":","");
		
		if (parseInt(dtA) == 0) {
			dtA = parseInt(dtA.substr(1));
		} else {
			dtA = parseInt(dtA);
		}
		
		if (parseInt(dtB) == 0) {
			dtB = parseInt(dtB.substr(1));
		} else {
			dtB = parseInt(dtB);
		}
		
		if (dtB > dtA) {
		
			nrdays++;
			getObject("extramessage").innerHTML = extramessage2 + "<br><br>";
		} else {
			getObject("extramessage").innerHTML = extramessage1;
		}
		
		

		if (nrdays > 0) {
			calculateExtras();

			curExtras = parseInt(getObject("frmExtras").value);
			curRental = parseInt(getObject("frmRental").value);
			curEarlybird = parseInt(getObject("frmEarlybird").value);

			curTotal = (curExtras+curRental)-curEarlybird;

			getObject("frmTotal").value = curTotal;

			getObject("visRental").innerHTML = getObject("frmRental").value;
			getObject("visExtras").innerHTML = getObject("frmExtras").value;
			getObject("visEarlybird").innerHTML = getObject("frmEarlybird").value;
			getObject("visTotal").innerHTML = getObject("frmTotal").value;
			
			/*getObject("action").innerHTML = "<font color=\"#E97D1E\">Click to order</font>";
			
			getObject("calcl").className = "yellowc";*/
			
			
			getObject("cr3").style.backgroundColor = "#E97D1E";
			getObject("cr3").style.paddingTop = "7px";
			getObject("cr3").style.paddingBottom = "3px";
			getObject("crimage").src = "images/arr_n.gif";
			getObject("crt").innerHTML = "Book this Vehicle";
			getObject("crt").style.fontSize = "17px";
		}
	}
}

function nullTotal() {
	// Null all prices
	getObject("visRental").innerHTML = 0;
	getObject("visExtras").innerHTML = 0;
	getObject("visEarlybird").innerHTML = 0;
	getObject("visTotal").innerHTML = 0;
}
