/* 	Repayment Calculator Copyright Phone a Loan Ltd 2004 */

function generate(form) {
	form.m_REPAYMENT.value = "---.--";
	form.m_APR.value = "0%";
	var breakout = false;
	var x = form.elements[0].value;
	var tempx = "";
	var temp = x.length;
	var tempstr = "";
	var decCount = 0;

	// checks for empty fields and non numeric input
	
	if (x == "" || x == null) {
		alert('\nError:\nNo loan amount has been entered.');
		form.elements[0].focus();
		form.elements[0].select();
		breakout = true;
	}
	
	if (!breakout) {
		for (var i = 0; i < temp; i++) {
			tempx = x.substring(i,i+1);
			if ((tempx <"0" && tempx!=" ") || (tempx >"9" && tempx!=" ")) {
				alert('\nError:\nLoan amount contains invalid data.\n\nPlease enter numbers only.');
				form.elements[0].focus();
				form.elements[0].select();
				breakout = true;
				break;
			}

			if ((tempx >= "0" && tempx <= "9") || tempx == "." ) {
				tempstr += tempx;
			}	

			form.elements[0].value = tempstr;
				if (tempstr == "") {
				alert('\nError:\nLoan amount has been left empty.');
				form.elements[0].focus();
				form.elements[0].select();
				breakout = true;
			}
		}
	}

	// checks for octal or zero amounts
	if (breakout == false) {
		if (x.charAt(0) == "0") {
			alert('\nError:\nLoan amount contains an Octal or zero only number\n\nPlease remove leading zeros.');
			form.elements[0].focus();
			form.elements[0].select();
			breakout = true;
		}
	}

	var intAmount=parseInt(x);
	var intTerm=parseInt(form.elements[1].value);

	if (breakout == false) {
		if (intAmount < 5000 || intAmount > 100000) {
			alert('\nFor loans of less than £5,000 or more than £100,000 please call us on the telephone\nnumber provided below to discuss your requirements.');
			form.elements[0].focus();
			form.elements[0].select();
			breakout = true;
		}
	}

	// lets do some sums
	if (breakout == false) {
		var repayment;
		var APRPowerTerm;
		intTerm = intTerm * 12;
		
		//calculate APR based on loan amount!
		var APR = 11.904; //initially assume loan is between 35000 and 50000
		var dAPR = 12.7; //var used to display APR used
		if (intAmount >=  5000 && intAmount < 10000) { APR = 12.9; dAPR = 15.8; }
		if (intAmount >=  10000 && intAmount < 15000) { APR = 12.9; dAPR = 14.7; }
		if (intAmount >= 15000 && intAmount < 25000) { APR = 12.9; dAPR = 14.4; }
		if (intAmount >= 25000 && intAmount < 35000) { APR = 12.9; dAPR = 14.1; }
		if (intAmount >= 35000 && intAmount < 50000) { APR = 11.904; dAPR = 12.9; }
		if (intAmount >= 50000 && intAmount < 75000) { APR = 11.904; dAPR = 12.8; }
		if (intAmount >= 75000 && intAmount < 100000) { APR = 11.904; dAPR = 12.7; }
		
		form.m_APR.value = dAPR + "0%";
		
		APR = 1 + (APR / 1200);
		APRPowerTerm = Math.pow(APR, intTerm);
		repayment = intAmount * (APRPowerTerm) * (APR - 1) / (APRPowerTerm - 1);
		repayment = Math.round(repayment * 100, 2) / 100;

		// add trailing zero if needed
		var strRepayment = "" + repayment;
		if (repayment != parseInt(repayment)) {
			var strLength = strRepayment.length;
			var pos = 0;
			for (var n = 0; n < strLength; n++){
				if (strRepayment.charAt(n) == ".") {
					pos = n;
				}
			}
			strLength -= pos;
			if (strLength != 3) {
				strRepayment += "0";
			}
		}

		// output to form
		form.m_REPAYMENT.value = strRepayment;
	}
}