
<!--

//-----------------------------------------------------------------------------------------------------------------
// Car Benefit Calculator 2004/5
//-----------------------------------------------------------------------------------------------------------------


function validateNumber(number){

	// Purpose: Check for valid number
	// Author:  Mark Skingle
	// Date:    24/03/2004
	
	var digits="0123456789.";

	if(isNaN(number)){
		return false;
	}
	
	if (number.length==0){
		return false;
	}
	
	for (var i=0;i<number.length;i++){
		if (digits.indexOf(number.substring(i,i+1))==-1 && number.substring(i,i+1)!="."){
			return false;
		}
	}
	
	if (number<0){
		return false;
	}
	return true;
}

//-----------------------------------------------------------------------------------------------------------------


function formatCurrency(amount){

	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;

}

//-----------------------------------------------------------------------------------------------------------------


function calculateCar(){

	// Purpose: To Calculate Car and Fuel Benefits
	//
	// Comments:
	//   fuelType:				'P'=Petrol, 'D'=Diesel, 'E'=Electric
	//   engineCapacity:		'X'=1400cc or Less, 'Y'=1401cc - 2000cc, 'Z'=Over 2000cc or other
	//   registrationDate:		'M'=1.1.98 or later, 'N'=31.12.97 or earlier
	
	
	var form=document.carbenefitcalc;
	
	var t;	//Taxable Rate
	var cb;	//Car Benefit
	var fb;	//Fuel Benefit
	var tb;	//Total Benefit
	var a1; //Taxable value of car
		
	// Extract form values

	if (form.capitalContribution.value=='') {form.capitalContribution.value='0';}
	
	var listPrice = parseFloat(form.listPrice.value);			
	var capitalContribution = parseFloat(form.capitalContribution.value);		
	var fuelType = form.fuelType.value;						
	var co2Emission = form.co2Emission.value;					
	var engineCapacity = form.engineCapacity.value;			
	var registrationDate = form.registrationDate.value;				
	var payEmployee = form.payEmployee.value;		
	var payEmployer = form.payEmployer.checked;	

	var validated = true;  //Default to True
	var errorMessage = '';
	
	
	
	// Validate Entries
	//-----------------
	
		if (!validateNumber(listPrice)){
			errorMessage += "The List Price is invalid.\n";
		}

		if (!validateNumber(capitalContribution)){
			errorMessage += "The Capital Contribution is invalid.\n";
		}
	
		if (!validateNumber(co2Emission) && co2Emission.length!=0){
			errorMessage += "The CO2 Emission is invalid.\n";
		}
	
		if (!validateNumber(payEmployee) && payEmployee.length!=0){
			errorMessage += "Payments made by Employee is invalid.\n";
		}
	
		if(parseFloat(listPrice) < parseFloat(capitalContribution)) {
			errorMessage += "\nCapital contribution made by employee \ncannot exceed the list price of the car.\n";
		}


		//If error has occurred notify user and terminate.
		if (errorMessage.length!=0) {
			alert("The following entries are incorrect:\n\n"+errorMessage+"\nPlease correct these entries and\ntry again.");
			return false;
		}


		//If CO2 value was not entered, set to zero
		if (co2Emission == ''){
			co2Emission = 0;
		}
	
		//If Capital Contribution value was not entered, set to zero
		if (capitalContribution == ''){
			capitalContribution = 0;
		}

	
	// STEP a
	// Calculate Taxable value of car
	//-------------------------------
	
		if (capitalContribution>5000) {
			capitalContribution=5000;
		}
		
		a1 = listPrice - capitalContribution;
		
		if (a1 > 80000) {
			a1 = 80000;
		}
		
		
	// STEP b1
	// If entered, round down CO2 Emission to nearest 5 g/km
	//------------------------------------------------------
	
		if (co2Emission != 0){
			 	
			co2Emission=Math.floor(co2Emission / 5) * 5;
	
			//Ensure CO2 value within defined range
			if (co2Emission<140) { 
				co2Emission=140 
			}
	
			if (co2Emission>240) {
				co2Emission=240
			}
			
			
		}
	
		
	// STEP b2
	// If Petrol or Diesel, and CO2 Emission specified, calculate t based on CO2 emission
	//-----------------------------------------------------------------------------------
	
		if (co2Emission != 0){		
		
			if (fuelType == "P" || fuelType == "D") {

				//Calculate t value
				t = Math.floor(co2Emission/5) - 13;			
		
				//If Diesel, increase t percentage by 3
				if (fuelType == "D"){
					t = t + 3;
				}
				
				//Ensure t is still within defined range
				if (t<15) { t=15; }
				if (t>35) { t=35; }
		
			} 
			
		}
		
		
	// STEP b3
	// If Electric, calculate t based on Registration Date
	//----------------------------------------------------
	
		if (fuelType == "E") {
		
			if (registrationDate == "N") {
				t=15;
			}
			
			if (registrationDate == "M") {
				t=9;
			}	

		}
	
	
	// STEP b4
	// If no CO2 emission entered, use engine capacity to calculate t
	//---------------------------------------------------------------
	
		if (co2Emission == 0 && fuelType != "E"){
			
			if (engineCapacity == "X") { t=15; }
			if (engineCapacity == "Y" && registrationDate == "M") { t=25; }
			if (engineCapacity == "Y" && registrationDate == "N") { t=22; }
			if (engineCapacity == "Z" && registrationDate == "M") { t=35; }
			if (engineCapacity == "Z" && registrationDate == "N") { t=32; }
	
		}
	
	
	// STEP c
	// Calculate benefits
	//-------------------

	
		//Convert Percentage to a fraction
		t = t/100;
	
		//Calculate Car Benefit
		cb = (t * a1) - payEmployee;
	
		//Calculate Fuel Benefit
		if (payEmployer == true) {
			// Employer Pays
			fb = 14400 * t;
		} else {
			// Employer does not Pay
			fb = 0;
		}
	
		//total benefit = car benefit + fuel benefit
		tb = cb + fb;
	
	
	// Display Results
	//----------------
	
		form.carBenefit.value = formatCurrency(cb);
		form.fuelBenefit.value = formatCurrency(fb);
		form.totalBenefit.value = formatCurrency(tb);
		form.percentUsed.value = t * 100;
	
}

//-----------------------------------------------------------------------------------------------------------------

function doReset(){

	// Purpose: Reset Calculator Form Values
		var form=document.carbenefitcalc;

		form.payEmployer.disabled = false;
		form.reset();	
		
	
}


//-----------------------------------------------------------------------------------------------------------------

function fuelTypeChange(){

	// Purpose: If user selects Electric Power then disable fuel payments from employer checkbox

	var form=document.carbenefitcalc;

	if (form.fuelType.value == "E") {
		form.payEmployer.disabled = true;
		form.payEmployer.checked = false;
	} else {
		form.payEmployer.disabled = false;
	}

//-----------------------------------------------------------------------------------------------------------------

}


-->