	//on page load
	function onPageLoad()
		{
		var MinDownPayment, MaxDownPayment, MinDuration, MaxDuration, AsianRate, AmericanEuropeanRate, HasMaintenance;
		var MaintResidual12, MaintResidual24, MaintResidual36, MaintResidual48, MaintResidual60
		var Price
		
		CarpaymentFrm.PackageID.focus();
		
		InterestRate = CarpaymentFrm.InterestRate.value;
		InsuranceRate2 = CarpaymentFrm.InsuranceRate2.value;
		MinDownPayment = CarpaymentFrm.MinDownPayment.value;
		MaxDownPayment = CarpaymentFrm.MaxDownPayment.value;
		MinDuration = CarpaymentFrm.MinDuration.value;
		MaxDuration = CarpaymentFrm.MaxDuration.value;
		AsianRate = CarpaymentFrm.AsianRate.value;
		AmericanEuropeanRate = CarpaymentFrm.AmericanEuropeanRate.value;
		HasMaintenance = CarpaymentFrm.HasMaintenance.value;
		
		MaintResidual12 = CarpaymentFrm.MaintResidual12.value;
		MaintResidual24 = CarpaymentFrm.MaintResidual24.value;
		MaintResidual36 = CarpaymentFrm.MaintResidual36.value;
		MaintResidual48 = CarpaymentFrm.MaintResidual48.value;
		MaintResidual60 = CarpaymentFrm.MaintResidual60.value;

		MakeID  = CarpaymentFrm.NewCarMakeHidden.value;
		ModelID = CarpaymentFrm.NewCarModelHidden.value;
		EngineID = CarpaymentFrm.NewCarEngineHidden.value;
		CreationYearHid = CarpaymentFrm.NewCarCreationYearHidden.value
		}//end function
		
	//Reset the Car Pricing Form
	function RessetForm()
		{
		document.CarpaymentFrm.reset();
		document.CarpaymentFrm.AvailableInsurance.checked = false;
		document.CarpaymentFrm.AvailableInsurance.style.visibility = "hidden";
		}
		
	
	//on change the selected loan PACKAGE
	function PackageSelected(i) 
		{
		document.CarpaymentFrm.reset();
		document.CarpaymentFrm.PackageID.selectedIndex = i;
		
		document.CarpaymentFrm.InterestRate.value = PackagesArray[i+1][3];
		document.CarpaymentFrm.MinDuration.value = PackagesArray[i+1][5];
		document.CarpaymentFrm.MaxDuration.value = PackagesArray[i+1][6];
		document.CarpaymentFrm.MinDownPayment.value = PackagesArray[i+1][7];
		document.CarpaymentFrm.MaxDownPayment.value = PackagesArray[i+1][8];
		document.CarpaymentFrm.AsianRate.value = PackagesArray[i+1][9];
		document.CarpaymentFrm.AmericanEuropeanRate.value = PackagesArray[i+1][10];
		document.CarpaymentFrm.HasMaintenance.value = PackagesArray[i+1][11];

		document.CarpaymentFrm.MaintResidual12.value = PackagesArray[i+1][12];
		document.CarpaymentFrm.MaintResidual24.value = PackagesArray[i+1][13];
		document.CarpaymentFrm.MaintResidual36.value = PackagesArray[i+1][14];
		document.CarpaymentFrm.MaintResidual48.value = PackagesArray[i+1][15];
		document.CarpaymentFrm.MaintResidual60.value = PackagesArray[i+1][16];
		
		//if (i == 1){
			document.CarpaymentFrm.PackageID2[i].checked = true;
		//	}
		//	if (i == 0){
		//	document.CarpaymentFrm.PackageID2[1].checked = true;
		//	}
		
		InterestRate = document.CarpaymentFrm.InterestRate.value;
		MinDuration = document.CarpaymentFrm.MinDuration.value;
		MaxDuration = document.CarpaymentFrm.MaxDuration.value;
		MinDownPayment = document.CarpaymentFrm.MinDownPayment.value;
		MaxDownPayment = document.CarpaymentFrm.MaxDownPayment.value;
		AsianRate = document.CarpaymentFrm.AsianRate.value;
		AmericanEuropeanRate = document.CarpaymentFrm.AmericanEuropeanRate.value;
		HasMaintenance = document.CarpaymentFrm.HasMaintenance.value;

		MaintResidual12 = document.CarpaymentFrm.MaintResidual12.value;
		MaintResidual24 = document.CarpaymentFrm.MaintResidual24.value;
		MaintResidual36 = document.CarpaymentFrm.MaintResidual36.value;
		MaintResidual48 = document.CarpaymentFrm.MaintResidual48.value;
		MaintResidual60 = document.CarpaymentFrm.MaintResidual60.value;
		
		
		if (PackagesArray[i+1][9] != 0 && PackagesArray[i+1][10] != 0)
			{
			document.CarpaymentFrm.AvailableInsurance.style.visibility = "hidden";
			document.CarpaymentFrm.InsuranceRate2.style.visibility = "hidden";
			document.CarpaymentFrm.InsuranceRate2.style.display = "none";
			document.CarpaymentFrm.InsuranceRate2.disabled = true;
			document.CarpaymentFrm.InsuranceRate2.value = 0;
			document.CarpaymentFrm.InsuranceValue.value = 0;
			document.CarpaymentFrm.InsuranceMonthlyPayment.value = 0;
			}
		else
			{
			document.CarpaymentFrm.AvailableInsurance.style.visibility = "visible";
			document.CarpaymentFrm.InsuranceRate2.style.visibility = "visible";
			document.CarpaymentFrm.InsuranceRate2.style.display = "";
			document.CarpaymentFrm.InsuranceRate2.disabled = false;
			document.CarpaymentFrm.InsuranceRate2.value = 0;
			document.CarpaymentFrm.InsuranceValue.value = 0;
			document.CarpaymentFrm.InsuranceMonthlyPayment.value = 0;
			}
		
		PackageChosen();
		
		CalculateInsurance()
		}//end function
	
	//fucntion to calculate net monthly payment in all cases
	function CalculateNetMonthlyPayment()
		{
		var Residual, Price, DownPaymentValue, MonthsNo
		var ResidualPart, MonthlyPayment, BaseLoan, InterestRatePart, InterestParameter
		
		MonthsNo = document.CarpaymentFrm.MonthsNo.value
		
		Price = document.CarpaymentFrm.NewCarPrice.value;
		InterestRate = document.CarpaymentFrm.InterestRate.value;
		Residual = parseInt(Price) * parseInt(document.CarpaymentFrm.Residual.value) / 100;		DownPaymentValue = document.CarpaymentFrm.DownPaymentValue.value;
		
		InterestParameter = parseFloat(InterestRate / 100 / 12)
		BaseLoan = Price - DownPaymentValue
		
		ResidualPart = parseFloat( Residual * (1 / (Math.pow (1+InterestParameter, Math.round(MonthsNo)) ) ) )
		InterestRatePart = parseFloat(InterestParameter / (1 - (1 / (Math.pow(1+InterestParameter, Math.round(MonthsNo))))) )
		

		MonthlyPayment = parseFloat((BaseLoan - ResidualPart) * InterestRatePart);
		document.CarpaymentFrm.NetMonthlyPayment.value = Math.round(MonthlyPayment);
		}
	
	//function to calculate insurance in all cases
	function CalculateInsurance()
		{
		var InsuranceValue, InsuranceMonthlyPayment
		var MaintenanceValue, MaintenanceRate, MaintenanceMonthlyPayment, MonthsNo
		
		MonthsNo = document.CarpaymentFrm.MonthsNo.value
		
		if (document.CarpaymentFrm.MonthsNo.value != "" && document.CarpaymentFrm.MonthsNo.value != 0 && document.CarpaymentFrm.HasMaintenance.value == "Y")
			{
			switch (MonthsNo)
				{
				case "12":
					MaintenanceRate =  parseFloat(document.CarpaymentFrm.MaintRate12.value);
					break;
				case "24":
					MaintenanceRate =  parseFloat(document.CarpaymentFrm.MaintRate24.value);
					break;
				case "36":
					MaintenanceRate =  parseFloat(document.CarpaymentFrm.MaintRate36.value);
					break;
				case "48":
					MaintenanceRate =  parseFloat(document.CarpaymentFrm.MaintRate48.value);
					break;
				case "60":
					MaintenanceRate =  parseFloat(document.CarpaymentFrm.MaintRate60.value);
					break;
				}
			
			MaintenanceValue = 	parseFloat(MaintenanceRate * document.CarpaymentFrm.NewCarPrice.value / 100);
			MaintenanceMonthlyPayment = parseFloat(MaintenanceValue / 12);
			}
		else
			{
			MaintenanceValue = parseFloat(0)
			MaintenanceMonthlyPayment = parseFloat(0)
			}
		
		
		if (document.CarpaymentFrm.NewCarEngine.selectedIndex != 0 && document.CarpaymentFrm.NewCarPrice.value != "")
			{
			InsuranceValue = parseFloat(document.CarpaymentFrm.InsuranceRate2.value * document.CarpaymentFrm.NewCarPrice.value / 100);
			document.CarpaymentFrm.InsuranceValue.value = Math.round(InsuranceValue + MaintenanceValue);

			InsuranceMonthlyPayment = parseFloat(InsuranceValue / 12);
			document.CarpaymentFrm.InsuranceMonthlyPayment.value = Math.round(InsuranceMonthlyPayment + MaintenanceMonthlyPayment);
			}
		}//end function
	
	
	//on Choose New car ENGINE
	function NewCarEngineChosen(myIndex)
		{
		var MonthsNo
		document.CarpaymentFrm.NewCarPrice.value = EnginesArray[myIndex][3]
		
		MonthsNo = document.CarpaymentFrm.MonthsNo.value
		
		CalculateInsurance()
		if (MonthsNo != "")
			{
			CalculateNetMonthlyPayment()
			}
		CalculateTotalMonthlyPayment()
		
		
			
		}//end function
	
	
	//on change down payment RATE
	function DownPaymentRateChanged(myRate)
		{
		Price = document.CarpaymentFrm.NewCarPrice.value
		MinDownPayment = document.CarpaymentFrm.MinDownPayment.value;
		MaxDownPayment = document.CarpaymentFrm.MaxDownPayment.value;
		
		if (Price != "" && myRate != "")
			{
			if (parseInt(myRate) >= parseInt(MinDownPayment) && parseInt(myRate) <= parseInt(MaxDownPayment))
				{
				DownPaymentValue = parseFloat(myRate * Price / 100)
				document.CarpaymentFrm.DownPaymentValue.value = DownPaymentValue
				CalculateTotalMonthlyPayment()
				}
			else
				{
				alert("يجب أن تكون الدفعة المقدمة ما بين " + MinDownPayment + " و " + MaxDownPayment + " بالمئة")
				return false;
				}
			return MonthsNoChanged(document.CarpaymentFrm.MonthsNo.value,'other')
			CalculateTotalMonthlyPayment()
			}
		}//end function

	
	//on change the down payment VALUE
	function DownPaymentValueChanged(myValue)
		{
		Price = document.CarpaymentFrm.NewCarPrice.value
		MinDownPayment = document.CarpaymentFrm.MinDownPayment.value;
		MaxDownPayment = document.CarpaymentFrm.MaxDownPayment.value;
		
		DownPaymentRate = parseFloat(myValue * 100 / Price)
		
		if (Price != "" && myValue != "")
			{
			if (parseInt(DownPaymentRate) >= parseInt(MinDownPayment) && parseInt(DownPaymentRate) <= parseInt(MaxDownPayment))
				{
				document.CarpaymentFrm.DownPaymentRate.value = DownPaymentRate
				CalculateTotalMonthlyPayment()
				}
			else
				{
				alert("يجب أن تكون الدفعة المقدمة ما بين " + MinDownPayment + "  و " + MaxDownPayment + " بالمئة")
				return false;
				}
			return MonthsNoChanged(document.CarpaymentFrm.MonthsNo.value,'other')
			CalculateTotalMonthlyPayment()
			}
		}//end function	
	
	
	//On Change No of Months for payment
	function MonthsNoChanged(myMonthsNo,caller)
		{
		/*
		base 	=  the total value of the loan.
		i 	=  the interest rate per month.
		n 	=  the number of payments (Tenor or the number of months).
		res  	=  the value of the residual in L.E.
		
		(base – ( res * (1 / (1 + i )n ) )) * (i / ( 1 – (   ) ))
		*/

		var DownPaymentValue, InterestRate, Residual, MonthsNo
		

		//first find how much the residual will be
		document.CarpaymentFrm.Residual.value = 0
		MonthsNo = document.CarpaymentFrm.MonthsNo.value
	
		if (document.CarpaymentFrm.HasMaintenance.value == "Y")
			{
			switch (MonthsNo)
				{
				case "12":
					document.CarpaymentFrm.Residual.value = document.CarpaymentFrm.MaintResidual12.value;
					break;
				case "24":
					document.CarpaymentFrm.Residual.value = document.CarpaymentFrm.MaintResidual24.value;
					break;
				case "36":
					document.CarpaymentFrm.Residual.value = document.CarpaymentFrm.MaintResidual36.value;
					break;
				case "48":
					document.CarpaymentFrm.Residual.value = document.CarpaymentFrm.MaintResidual48.value;
					break;
				case "60":
					document.CarpaymentFrm.Residual.value = document.CarpaymentFrm.MaintResidual60.value;
					break;
				default:
					alert("يجب أن يكون عدد الشهور 12 أو 24 أو 36 أو 48 أو 60");
					break;
					return false;
				}
			}
		
		
		MinDuration = document.CarpaymentFrm.MinDuration.value;
		MaxDuration = document.CarpaymentFrm.MaxDuration.value;

		if (parseFloat(myMonthsNo) >= parseInt(MinDuration) && parseFloat(myMonthsNo) <= parseInt(MaxDuration))
			{
			CalculateNetMonthlyPayment()
			CalculateInsurance()
			CalculateTotalMonthlyPayment()
			}
		else
			{
			if (caller == "monthsChanged")
				{
				alert("يجب أن يكون عدد الشهور ما بين " + parseFloat(MinDuration) + " و " + parseFloat(MaxDuration) + " شهر")
				return false;
				}
			}
		}//end function

	
	//On Change Insurance Rate
	function AvailableInsuranceChanged()
		{
		if (document.CarpaymentFrm.AvailableInsurance.style.visibility == "visible")
			{
			if (document.CarpaymentFrm.AvailableInsurance.checked)
				{
				document.CarpaymentFrm.InsuranceRate2.disabled = false;
				
				if (document.CarpaymentFrm.InsuranceMonthlyPayment.value != "" && document.CarpaymentFrm.InsuranceMonthlyPayment.value != 0)
					{
					document.CarpaymentFrm.TotalMonthlyPayment.value = parseFloat(document.CarpaymentFrm.TotalMonthlyPayment.value) + parseFloat(document.CarpaymentFrm.InsuranceMonthlyPayment.value)
					}
				
				}
			else
				{
				document.CarpaymentFrm.InsuranceRate2.disabled = true;
				
				if (document.CarpaymentFrm.InsuranceMonthlyPayment.value != "" && document.CarpaymentFrm.InsuranceMonthlyPayment.value != 0)
					{
					document.CarpaymentFrm.TotalMonthlyPayment.value = parseFloat(document.CarpaymentFrm.TotalMonthlyPayment.value) - parseFloat(document.CarpaymentFrm.InsuranceMonthlyPayment.value)
					}
				}
			}
		}//end function	
		
	
	//on change INSURANCE RATE
	function InsuranceRateChanged()
		{
		InsuranceRate2 = document.CarpaymentFrm.InsuranceRate2.value;
		CalculateInsurance()
		CalculateTotalMonthlyPayment()
		}//end function
		
	
	//function to calculate TOTAL MONTHLY PAYMENT in all cases
	function CalculateTotalMonthlyPayment()
		{
		var NetMonthlyPayment, InsuranceMonthlyPayment
		var TotalMonthlyPayment

		if (document.CarpaymentFrm.NetMonthlyPayment.value)
			{
			NetMonthlyPayment = document.CarpaymentFrm.NetMonthlyPayment.value;
			}
		else
			{
			NetMonthlyPayment = 0;
			}

		if (document.CarpaymentFrm.InsuranceMonthlyPayment.value)
			{
			InsuranceMonthlyPayment = document.CarpaymentFrm.InsuranceMonthlyPayment.value;
			}
		else
			{
			InsuranceMonthlyPayment = 0;
			}
		
		TotalMonthlyPayment = parseFloat(NetMonthlyPayment) + parseFloat(InsuranceMonthlyPayment);
		document.CarpaymentFrm.TotalMonthlyPayment.value = TotalMonthlyPayment;
		}
