  var io = 0.05;

	function checkField(finput) {
		if (finput.value != null && finput.value.length > 0)
		{
			finput.value = "" + eval(finput.value);
		}
	}

	function process(subform) {
		var l = subform.loan.value;
		var p = subform.period.value;
		var i = subform.interest.value;

		if (l == "" || i == "" || p == "") {
			return;
		}

		if (!checkNumber(subform.loan, 1, 99999999, "Amount") ||
			!checkNumber(subform.interest, .001, 1000, "Interest Rate") ||
			!checkNumber(subform.period, 5, 30, "Period")) 
		{
			document.outputForm.repayment.value = "Invalid";
			return;
		}

		i = i/100;
		var result = ((l*i)/12)*(1/(1-(Math.pow(1/(1+i),p))));
		document.outputForm.repayment.value = poundsPence(result);
		result = ((l*i)/12);
		document.outputForm.interest.value = poundsPence(result);
	}

	function checkNumber(input, min, max, msg) {

		msg = msg + " contains invalid characters: " + input.value;

		var str = input.value;
		for (var i = 0; i < str.length; i++) {
			var ch = str.substring( i, i + 1)
			if ((ch < "0" || "9" < ch) && ch != '.') {
				alert(msg);
				return false;
			}
		}

		var num = 0 + str
		if (num < min || max < num) {
			alert(msg + " not in range [" + min + ".." + max + "]");
			return false;
		}
		input.value = str;
		return true;
	}

	function poundsPence(N) {
		if ((navigator.appName.indexOf('Microsoft')>-1)
			&& (navigator.appVersion.indexOf('3.0')>-1) )
		{	
			return N;
		}
		var S = new String(N);
		var i = S.indexOf('.');
		if (i != -1) {
			S = S.substr( 0, i+3 );
			if (S.length-i < 3)
				S = S + '0';
		}
		return S;
	}
