/*
var taxFree=[0, 4895, 4895];
var taxLR=[10, 2020, 6915];
var taxBR=[22, 29380, 36295];
var taxHR=[40, 0, 0];
var NIPrimary=[0,4888];
var NIUEL=[11,32760];
var NIUR=[1];
*/
function isNumeric(value){
	if (value.length > 0){
		var digits="0123456789.";
		var i;
		for (i = 0;i < value.length;i++){
			if (digits.indexOf(value.charAt(i)) < 0){
				return false;
			}
		}
	}
	return true;
}
function keyUp(event, form){
	if (event.keyCode == 13){
		calculate(form);
	}
}
function fieldChange(field, form){
	var err = 0;
	field.value=stripComma(field.value);
	if (!isNumeric(form.annualSalary.value)){
		alert("Please enter positive numeric values");
		form.annualSalary.focus();
		err = 1;
	}
	if (!isNumeric(form.bikeCost.value)){
		alert("Please enter positive numeric values");
		form.bikeCost.focus();
		err = 2;
	}
	if (!isNumeric(form.helmetCost.value)){
		alert("Please enter positive numeric values");
		form.helmetCost.focus();
		err = 3;
	}
	if (!isNumeric(form.accessoriesCost.value)){
		alert("Please enter positive numeric values");
		form.accessoriesCost.focus();
		err = 4;
	}
	if (err){
		clearResult(form);
	}else{
		calculate(form);
	}
}
function clearResult(form){
	form.totalCostIncVat.value="";
	form.totalCostExVat.value="";
	form.monthlySalarySacrifice.value="";
	form.incomeTaxSaving.value="";
	form.niSaving.value="";
	form.vatSaving.value="";
	form.totalSavings.value="";
	form.percentSavings.value="";
	form.totalCostAfterSaving.value="";
	form.effectiveMonthlyCost.value="";
}
function calculate(form){

	// n.b. arrays not available in 1.0
// strip commas from all inpouts and then check for Nan.

	var as = eval(form.annualSalary.value);
	var bikeCost = eval(form.bikeCost.value*100);
	var helmetCost = eval(form.helmetCost.value*100);
	var accessoriesCost = eval(form.accessoriesCost.value*100);
	var tcp=Math.round(bikeCost+helmetCost+accessoriesCost);
	var vatsavp=Math.round((bikeCost+accessoriesCost)*7/47);

	var totalCostIncVat = tcp/100;

	var totalCostExVat = (tcp-vatsavp)/100;

	var monthlySalarySacrifice = Math.round((tcp-vatsavp)/12)/100;

	form.totalCostIncVat.value=formatMoney(totalCostIncVat);
	form.totalCostExVat.value=formatMoney(totalCostExVat);
	form.monthlySalarySacrifice.value=formatMoney(monthlySalarySacrifice);

	var incomeTaxSaving=0;
	var b22=(tcp-vatsavp); // in pence
	if (as <= taxFree[2]){
		incomeTaxSaving = taxFree[0]*b22;
	}else if (as <= taxLR[2]){
		incomeTaxSaving = taxLR[0]*b22;
	}else if (as <= taxBR[2]){
		incomeTaxSaving = taxBR[0]*b22;
	}else{
		incomeTaxSaving = taxHR[0]*b22;
	}
	incomeTaxSaving /= 100;	// because percentages were used
	incomeTaxSaving = Math.round(incomeTaxSaving)/100;
	form.incomeTaxSaving.value = formatMoney(incomeTaxSaving);

	var niSaving = 0;
	if (as <= NIPrimary[1]){
		niSaving = NIPrimary[0]*b22;
	}else if (as <= NIUEL[1]){
		niSaving = NIUEL[0]*b22;
	}else{
		niSaving = NIUR[0]*b22;
	}
	niSaving /= 100;	// because percentages were used
	niSaving = Math.round(niSaving)/100;
	form.niSaving.value = formatMoney(niSaving);

	var vatSaving = vatsavp/100;
	form.vatSaving.value = formatMoney(vatSaving);

	var totalSavings = incomeTaxSaving+niSaving+vatSaving;
	form.totalSavings.value = formatMoney(totalSavings);

	if (totalCostIncVat > 0){
		var percentSavings = totalSavings/totalCostIncVat * 100;
		form.percentSavings.value = Math.round(percentSavings)+'%';
	}else{
		form.percentSavings.value = "";
	}

	var totalCostAfterSaving = Math.round((totalCostIncVat - totalSavings)*100)/100;
	form.totalCostAfterSaving.value = formatMoney(totalCostAfterSaving);

	var effectiveMonthlyCost = totalCostAfterSaving/12;
	form.effectiveMonthlyCost.value = formatMoney(effectiveMonthlyCost);
	return false;
}

function stripComma(val){
	var x = val.indexOf(',');
	if (x == 0){
		return stripComma(val.substring(1));
	}else if (x > 0){
		if (x < (val.length - 1)){
			return stripComma(val.substring(0, x) + val.substring(x+1));
		}else{	// comma at end
			return val.substring(0, x);
		}
	}else{
		return val;
	}
}
function formatMoney(val){
	var rval;
	var valp = Math.round(val * 100);
	if ((valp % 100) == 0){
		rval = Math.round(val) +".00";
	}else if ((valp % 10) == 0){
		rval = valp / 100 + "0";
	}else{
		rval = Math.round(valp)/100;
	}
	return rval;
}

function bodge(form){
form.bikeCost.value=249.99;
form.helmetCost.value=24.99;
form.accessoriesCost.value=89.99;
form.annualSalary.value=25000;
calculate(form);
}

