<!--
//Copyright © 2002 - 2010 PracticeWEB Ltd
//-----------------------------------------------------------------------------------------------------------------
// Car Benefit Calculator 2010/11
//-----------------------------------------------------------------------------------------------------------------


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, 'N'=Not capable of producing emissions
	//   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 01 so we can trigger
		// calculaton from engine capacity
		if (co2Emission == ''){
			co2Emission = -1;
		}
	
		//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;
		}
		
		var cO2lessThan120 = (co2Emission <= 120) && !(co2Emission < 0);
        var hasTaxPercentage = false;
		
		// If the fuel type is non emissions, then the tax percentage will be 0
		// changes in 2016
		if (fuelType == 'E') {
			t = 0;
			hasTaxPercentage = true;
		}
		
		//These are the two lower bands for emissions
        //Only relevant for fuel types P and D
		if(cO2lessThan120 && !hasTaxPercentage)
        {
            switch(fuelType)
            {
                //fuelTypes: 'P'=Petrol, 'D'=Diesel, 'E'=Non emissions
                case 'P':
					t = ((co2Emission <= 75)? 5: 10);
					hasTaxPercentage = true;
					break; 
                case 'D':
					t = ((co2Emission <= 75)? 8: 13);
					hasTaxPercentage = true;
					break;
                default: break;
            }
        }
        
        // Enter Step(s) b1 & b2 if a tax percentage has not been reached
	    if(!hasTaxPercentage)
        {
	        // STEP b1
	        // If entered, round down CO2 Emission to nearest 5 g/km
	        //------------------------------------------------------
        	
		        if (co2Emission > 0){
        			 	
			        co2Emission=Math.floor(co2Emission / 5) * 5;
        	
			        /* no longer needed
					
					//Ensure CO2 value within defined range
			        if (co2Emission<135) { 
				        co2Emission=135 
			        }
					*/
					
			        if (co2Emission>230) {
				        co2Emission=230
			        }
        			
		        }
        	    
        	    
        		
	        // 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) - 11;			
        		
				        //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; }
        		
			        } 
        			
		        }
		
			/* This step should no longer be needed
	  
	        // 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 == -1 && 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 = 18000 * t;
		} else {
			// Employer does not Pay
			fb = 0;
		}
	
		// nothing should ever be less than 0
		if (cb < 0) cb = 0;
		if (fb < 0) 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 = Math.round(t * 100);
	    
	    form.totalBenefitat20.value = formatCurrency(tb*0.2);
	    form.totalBenefitat40.value = formatCurrency(tb*0.4);
	    form.totalBenefitat50.value = formatCurrency(tb*0.5);
	    /*var classABenefit = tb*0.128;
	    classABenefit = Math.floor(classABenefit*100);
	    classABenefit = classABenefit/100;
	    form.totalBenefitClassA.value = formatCurrency(classABenefit);*/
}

//-----------------------------------------------------------------------------------------------------------------

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;
	}

//-----------------------------------------------------------------------------------------------------------------

}


-->
