function showEPSDetails()
{
	var eps = document.mainform.eps.value;
	var yrs = document.mainform.y1.value;
	var g = document.mainform.g1.value/100.0;

	var epss = "";
	for (i = 1; i <= yrs; i++)
	{
		var neweps = eps*1 + eps*g;
		eps = neweps;
		epss += "After "+i.toString()+" year(s) EPS = "+neweps.toFixed(2)+"\n";
	}
	document.mainform.epsforyrs.value = epss;
}

function presentValue(fv,r,y)
{
	return fv/Math.pow(1+r,y);
}

function futureValue(p,r,y)
{
	return p*Math.pow(1+r,y);
}

function geometricSeries(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 -= geometricSeries(z,0,m-1);
	return amt;
}

function doCalc()
{
	if (document.mainform.eps.value == "")
	{
		alert("Plese Enter Earnings Per Share");
		document.mainform.eps.focus();
		return;
	}	

	if (document.mainform.eps.value < 0)
	{
		alert("Plese Enter Earnings Per Share as some positive value because the algo does not work for less than zero EPS");
		document.mainform.eps.value = "0.00"
		document.mainform.eps.focus();
		return;
	}	

	if (document.mainform.g1.value == "") 
	{
		document.mainform.g1.value = "4";
	}

	var eps = document.mainform.eps.value;
	var y1 = document.mainform.y1.value;
	var g1 = document.mainform.g1.value/100.0;
	var g2 = document.mainform.g2.value/100.0;
	var Kc = document.mainform.Kc.value/100.0;

	var v1 = eps*geometricSeries((1 + g1)/(1 + Kc), 1, y1);
	var v2 = futureValue(eps, g1, y1)*(1 + g2)/(Kc - g2);
	var v = v1 + presentValue(v2, Kc, y1);

	document.mainform.v.value = v.toFixed(2);
	showEPSDetails();
}
