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.as.value)){
		alert("Please enter positive numeric values");
		form.as.focus();
		err = 1;
	}
	if (!isNumeric(form.f1.value)){
		alert("Please enter positive numeric values");
		form.f1.focus();
		err = 2;
	}
	if (!isNumeric(form.f2.value)){
		alert("Please enter positive numeric values");
		form.f2.focus();
		err = 3;
	}
	if (!isNumeric(form.f3.value)){
		alert("Please enter positive numeric values");
		form.f3.focus();
		err = 4;
	}
	if (err){
		clearResult(form);
	}else{
		calculate(form);
	}
}
function clearResult(form){
	form.r1.value="";
	form.r2.value="";
	form.r3.value="";
	form.r4.value="";
	form.r5.value="";
	form.r6.value="";
	form.r7.value="";
	form.r8.value="";
	form.r9.value="";
	form.r10.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.as.value);
	var f1 = eval(form.f1.value*100);
	var f2 = eval(form.f2.value*100);
	var f3 = eval(form.f3.value*100);
	var tcp=Math.round(f1+f2+f3);
	var vatsavp=Math.round((f1+f3)*3/23);

	var r1 = tcp/100;

	var r2 = (tcp-vatsavp)/100;

	var r3 = Math.round((tcp-vatsavp)/12)/100;

	form.r1.value=showMoney(r1);
	form.r2.value=showMoney(r2);
	form.r3.value=showMoney(r3);

	var r4=0;
	var b22=(tcp-vatsavp); // in pence
	if (as <= taxFree[2]){
		r4 = taxFree[0]*b22;
	}else if (as <= taxLR[2]){
		r4 = taxLR[0]*b22;
	}else if (as <= taxBR[2]){
		r4 = taxBR[0]*b22;
	}else{
		r4 = taxHR[0]*b22;
	}
	r4 /= 100;	// because percentages were used
	r4 = Math.round(r4)/100;
	form.r4.value = showMoney(r4);

	var r5 = 0;
	if (as <= NIPrimary[1]){
		r5 = NIPrimary[0]*b22;
	}else if (as <= NIUEL[1]){
		r5 = NIUEL[0]*b22;
	}else{
		r5 = NIUR[0]*b22;
	}
	r5 /= 100;	// because percentages were used
	r5 = Math.round(r5)/100;
	form.r5.value = showMoney(r5);

	var r6 = vatsavp/100;
	form.r6.value = showMoney(r6);

	var r7 = r4+r5+r6;
	form.r7.value = showMoney(r7);

	if (r1 > 0){
		var r8 = r7/r1 * 100;
		form.r8.value = Math.round(r8)+'%';
	}else{
		form.r8.value = "";
	}

	var r9 = Math.round((r1 - r7)*100)/100;
	form.r9.value = showMoney(r9);

	var r10 = r9/12;
	form.r10.value = showMoney(r10);
	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 showMoney(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.f1.value=249.99;
form.f2.value=24.99;
form.f3.value=89.99;
form.as.value=25000;
calculate(form);
}

