//  You appear to be using an unsupported browser. You need to upgrade to version 4 or better of Netscape Navigator or Microsoft Internet Explorer before accessing this feature.

//<!--
// (c) Copyright 1997 - 2001 www.MoneyChimp.com -- used with permission


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;
}

var phiInverse = new Array (
	// 0     1     2     3     4     5     6     7     8     9
	0.00, 0.00, 0.05, 0.05, 0.10, 0.10, 0.15, 0.15, 0.20, 0.20,
    0.25, 0.25, 0.30, 0.30, 0.35, 0.40, 0.40, 0.45, 0.45, 0.50,
    0.50, 0.55, 0.60, 0.60, 0.65, 0.70, 0.70, 0.75, 0.80, 0.80,
    0.85, 0.90, 0.90, 0.95, 1.00, 1.05, 1.10, 1.15, 1.20, 1.25,
    1.30, 1.35, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90, 2.10, 2.50, 2.50);

function randomNormal(m,s)
{
	var z;
	var x = Math.round((Math.random() * 100) - 50);
	if (x > 50) x = 50; if (x < -50) x = -50;
	if (x >= 0) z = phiInverse[x];
	else		z = -1 * phiInverse[-1 * x];
	
	return m + z*s;
}

//-->
