
//if ((location.host.indexOf("moneychimp.com") < 0) && (location.host.indexOf("127.0.0.1") < 0) && (location.host.indexOf("localhost") < 0))
	//location.href = "http://www.moneychimp.com";


function zeroBlanks(formname)
{
	var i, ctrl;
	for (i = 0; i < formname.elements.length; i++)
	{
		ctrl = formname.elements[i];
		if (ctrl.type == "text")
		{
			if (makeNumeric(ctrl.value) == "")
				ctrl.value = "0";
		}
	}
}

function filterChars(s, charList)
{
	var s1 = "" + s; // force s1 to be a string data type
	var i;
	for (i = 0; i < s1.length; )
	{
		if (charList.indexOf(s1.charAt(i)) < 0)
			s1 = s1.substring(0,i) + s1.substring(i+1, s1.length);
		else
			i++;
	}
	return s1;
}

function makeNumeric(s)
{
	return filterChars(s, "1234567890.-");
}

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

function formatNumber(val,digits,minval,maxval)
{
	var sval = "" + numval(val,digits,minval,maxval);
	var i;
	var iDecpt = sval.indexOf(".");
	if (iDecpt < 0) iDecpt = sval.length;
	if (digits != null && digits > 0)
	{
		if (iDecpt == sval.length)
			sval = sval + ".";
		var places = sval.length - sval.indexOf(".") - 1;
		for (i = 0; i < digits - places; i++)
			sval = sval + "0";
	}
	var firstNumchar = 0;
	if (sval.charAt(0) == "-") firstNumchar = 1;
	for (i = iDecpt - 3; i > firstNumchar; i-= 3)
		sval = sval.substring(0, i) + " " + sval.substring(i);

	return sval;
}

function futureValue(p,r,y)
{
	return p*Math.pow(1+r,y);
}

function returnRate(pv,fv,y)
{
	return Math.pow(fv/pv,1.0/y) - 1.0;
}

function geomSeries(z,m,n)
{
	var amt;
	if (z == 1.0) amt = n + 1;
	else amt = (Math.pow(z,n + 1) - 1)/(z - 1);
	if (m >= 1) amt -= geomSeries(z,0,m-1);
	return amt;
}

function basicInvestment(p,r,y,c)
{
	if (c == null) c = 0;

	return futureValue(p,r,y) + c*geomSeries(1+r,1,y);
}

document.mainform.p.focus();

function doCalc()
{
	zeroBlanks(document.mainform);
	var p = numval(document.mainform.p.value);
	var c = numval(document.mainform.c.value);
	var r = numval(document.mainform.r.value)/100;
	var y = numval(document.mainform.y.value);
	var n = 1;

	document.mainform.fv.value = formatNumber(basicInvestment(p,r/n,y*n,c/n),2);
}
//-->
