//Car Benefit Charge Calculator
//JavaScript Code
//(c)1999 digita.com
//Written by Lisa Devlin
//17.12.1999
//--------------------------------------------------------------------------------

function calculate()  {
	var form=document.car;
	var cc=form.cc.value;
	var listprice=form.listprice.value;
	var capital=form.capital.value;
	var miles=form.mileage.value;	
	var age=form.age.value;
	var payments=form.payments.value;
	var fuel=form.fuel.value;
	var fueltype=form.fueltype.value;



			
listprice=evalnum(listprice);
if (listprice=="") { listprice=0; }
	if (listprice==0) 	{
		alert ("Plese enter the list price of the car, including extras.");
			form.listprice.focus();
			return;
			}

	
//Check to make sure date input boxes are valid

    var day1=form.day1.value;
	var day2=form.day2.value;
	var month1=form.month1.value;
	var month2=form.month2.value;
	var year1=form.year1.value;
	var year2=form.year2.value;

day1=evalnum(day1);
if ((day1=="") || (day1<1) || (day1>31)) {
	alert("Please enter a valid date.")
		form.day1.focus();
		return;
		}
		
month1=evalnum(month1);
if ((month1=="") || (month1<1) || (month1>12)){	
	alert("Please enter a valid date.")
		form.month1.focus();
		return;
		}
		

		
		
day2=evalnum(day2);
if ((day2=="") || (day2<1) || (day2>31)) {	
	alert("Please enter a valid date.")
		form.day2.focus();
		return;
		}
		
month2=evalnum(month2);
if ((month2=="") || (month2<1) || (month2>12)){	
	alert("Please enter a valid date.")
		form.month2.focus();
		return;
		}
		

	

//------------------------------------------------------------------------------------------
//car benefit calculation

capital=evalnum(capital);
if (capital>5000)	{
	capital=5000
	}

var totala

if (listprice <= 80000) {
	totala = listprice-capital
	}
	else {
	totala = 80000-capital
	}
	
var totalb
if (form.mileage[0].selected)	{
	totalb = totala * 0.35
	}
else if (form.mileage[1].selected)	{
	totalb = totala * 0.25
	}
else {
	totalb = totala * 0.15
	}

var totalc
if (form.age[0].selected)	{
	totalc = totalb - (totalb/4)
	}
	else {
	totalc = totalb
	}
	
var startDate=new Date(year1, month1, day1);
var endDate=new Date(year2, month2, day2);
var dateDiff = endDate-startDate
var daysuse = dateDiff / (1000 * 60 * 60 * 24);

payments=evalnum(payments);
if (payments=="") {
	payments=0;
	}

var totald = totalc - payments;
var carbenefit = totald * (daysuse/365);

if (carbenefit<payments)	{
	carbenefit=0;
	}


 	 document.car.carbenefit.value=evalpound(carbenefit);

	 
//----------------------------------------------------------------------------------------
//fuel benefit calculation

var fuelbenefit;

if (form.fuel[1].selected) {
	fuelbenefit=0;
	}
	
		
if ((form.cc[0].selected) && (form.fuel[0].selected) && (form.fueltype[0].selected)) {
		fuelbenefit=1210 * (daysuse/365);
		}
if ((form.cc[1].selected) && (form.fuel[0].selected) && (form.fueltype[0].selected))	{
		fuelbenefit=1540 * (daysuse/365);
		}

if ((form.fueltype[1].selected) && ((form.cc[0].selected)||(form.cc[1].selected))  && (form.fuel[0].selected))	{
		fuelbenefit=1540 * (daysuse/365);
		}
		
if ((form.cc[2].selected) && (form.fuel[0].selected) && (form.fueltype[0].selected))	{
		fuelbenefit=2270 * (daysuse/365);
		}
		
if ((form.cc[2].selected) && (form.fuel[0].selected) && (form.fueltype[1].selected))	{
		fuelbenefit=2270 * (daysuse/365);
		}	
		

		document.car.fuelbenefit.value = evalpound(fuelbenefit);

	}

// -------------------------------------------------------------------------
// strips out invalid charaters from a string to convert to a numeric value
function evalnum(numstr) {

	var i,c;
	var ret="";
	var p=false;

	for (i=numstr.length-1; i>=0; i--) {
		c=numstr.charAt(i);

		if (c == ".") {
			if (p == false) p=true;
			else c="";
		}

		if ((c < "0" || c > "9") && c != ".") c="";

		ret = c + ret;
	}

	if (ret=="") ret="0";
	return parseFloat(ret);

}


// ----------------------------------------------------------------------------
// shows a number as pounds
function evalpound(num) {

	var i,l,d;
	var nums;
	var ret;

	nums = String(Math.round(num*100));

	while (nums.length <3) nums = "0" + nums;

	l = nums.length-3;
	ret = "." + nums.charAt(l+1) + nums.charAt(l+2);

	d=0;
	for (i=l; i>=0; i--) {
		ret = nums.charAt(i) + ret;
		d++;
		if (d==3 && i>0) {
			ret="," + ret;
			d=0;
		}
	}

	ret = "£" + ret;
	return ret;

}




	
	
	


	 
	 
	 



	


	
	
		

	
	

	