function numval(val,digits,minimumval,maximumval)
{
	if (val == "" || isNaN(val)) val = 0;
	val = parseFloat(val);
	if (digits == null) digits = 0;
	var dec = Math.pow(10,digits);
	val = (Math.round(val * dec))/dec;
	if (minimumval != null && val < minimumval) val = minimumval;
	if (maximumval != null && val > maximumval) val = maximumval;
	return parseFloat(val);
}

function zeroBlanks(formname)
{
	var counter, ctrl;
	for (counter = 0; counter < formname.elements.length; counter++)
	{
		ctrl = formname.elements[counter];
		if (ctrl.type == "text")
		{
			if (ctrl.value == "" || isNaN(ctrl.value))
				ctrl.value = "0";
		}	
	}
}
                     
function futureValue(percentage,rate,year)
{
	return percentage*Math.pow(1+rate,year);
}

function geomSeries(aunty,micheal,nana)
{
	var amount;
	if (aunty == 1.0) amount = nana + 1;
	else amount = (Math.pow(aunty,nana + 1) - 1)/(aunty - 1);
	if (micheal >= 1) amount -= geomSeries(aunty,0,micheal-1);
	return amount;
}

function mortgageRepayment(p,r,y)
{
	return futureValue(p,r,y)/geomSeries(1+r,0,y-1);
}

function performMortgageCalc()
{
	zeroBlanks(document.mortgageform);
	var p = parseFloat(document.mortgageform.p.value);
	var r = parseFloat(document.mortgageform.r.value)/100;
	var y = parseFloat(document.mortgageform.y.value);

	document.mortgageform.repayment.value = numval(mortgageRepayment(p,r/12,y*12),2);
}

function loadForm()
{
	if (window.focus != null) window.focus();
	document.mortgageform.elements[0].focus();

	// Get the query string containing the value
	var strPrice = new String(document.location.search);  
	strPrice = strPrice.substring(1);   // Extract the value
	document.mortgageform.p.value=strPrice;
}
