<!--
function isNum(argvalue) {
  argvalue = argvalue.toString();

  if (argvalue.length == 0)
    return false;

  for (var n = 0; n < argvalue.length; n++)
    if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
      return false;

  return true;
}

function calculate()
{
	// verify fields
	income=document.calc.income.value;
	currentAge=document.calc.currentAge.value;
	retireAge=document.calc.retireAge.value;
	salary=document.calc.salary.value;
	yearReturn=document.calc.yearReturn.value;
	inflatRate=document.calc.inflatRate.value;

	if (income == "")
	{	
			alert(mpf_err[0]);
			document.calc.income.focus();
			return; 
	}

	if (currentAge == "")
	{	
			alert(mpf_err[1]);
			document.calc.currentAge.focus();
			return; 
	}

	if (retireAge == "")
	{	
			alert(mpf_err[2]);
			document.calc.retireAge.focus();
			return; 
	}

	if (salary == "")
	{	
			alert(mpf_err[3]);
			document.calc.salary.focus();
			return; 
	}


	if (yearReturn == "")
	{	
			alert(mpf_err[4]);
			document.calc.yearReturn.focus();
			return; 
	}

	if (inflatRate == "")
	{	
			alert(mpf_err[5]);
			document.calc.inflatRate.focus();
			return; 
	}

	if (isNaN(income) || (income < 0)) // Relevant Income > 0
	{
		alert(mpf_err[6]);
		document.calc.income.focus();
		return;
	}

	if (!isNum(currentAge) || (currentAge < 18)) // current age >= 18
	{
		alert(mpf_err[7]);
		document.calc.currentAge.focus();
		return;
	}

	if (!isNum(retireAge) || (retireAge < 60) || (retireAge > 65)) // retire age >= 60 and <= 65
	{
		alert(mpf_err[8]);
		document.calc.retireAge.focus();
		return;
	}

	if (isNaN(salary)) // expected increase in salary is a number
	{
		alert(mpf_err[9]);
		document.calc.salary.focus();
		return;
	}

	if (isNaN(yearReturn)) // expected yearly return is a number
	{
		alert(mpf_err[10]);
		document.calc.yearReturn.focus();
		return;
	}

	if (isNaN(inflatRate)) // expected inflation rate is a number
	{
		alert(mpf_err[11]);
		document.calc.inflatRate.focus();
		return;
	}

	if (retireAge < currentAge)
	{
		alert(mpf_err[12]);
		document.calc.currentAge.focus();
		return;
	}

	tempYear = retireAge - currentAge;
	tempIncome = income;
	manContrib = 0;
	manEmpContrib = 0;
	volContrib = 0;

	tempManContrib = get_manContrib(tempIncome);
	tempManEmpContrib = get_manEmpContrib(tempIncome);
	tempVolContrib = get_volContrib(tempIncome);

	document.calc.manContrib.value = Math.round(tempManContrib*100)/100.0;
	if (document.calc.employFlag[0].checked== false)
		document.calc.manEmpContrib.value  = 0;
	else
		document.calc.manEmpContrib.value = Math.round(tempManEmpContrib*100)/100.0;
	if (document.calc.voluntaryFlag[0].checked== false)
		document.calc.volContrib.value = 0;
	else
		document.calc.volContrib.value = Math.round(tempVolContrib*100)/100.0;

	if (yearReturn != 0)
	{
	year = tempYear;
	tempIncome = income;
	for (i=1; year>0; i++)
	{
		year = tempYear - i;
		manContrib = manContrib + contribution(get_manContrib(tempIncome), year, yearReturn);
		tempIncome = tempIncome * (1 + (salary/100.0));

	}
	
	year = tempYear;
	if (document.calc.employFlag[0].checked== false)
		manEmpContrib = 0;
	else
	{
		tempIncome = income;
		for (i=1; year>0; i++)
		{
			year = tempYear - i;
			manEmpContrib = manEmpContrib + contribution(get_manEmpContrib(tempIncome), year, yearReturn);
			tempIncome = tempIncome * (1 + (salary/100.0));

		}
	}	

	year = tempYear;
	if (document.calc.voluntaryFlag[0].checked== false)
		volContrib = 0;
	else
	{
		tempIncome = income;
		for (i=1; year>0; i++)
		{
			year = tempYear - i;
			volContrib = volContrib + contribution(get_volContrib(tempIncome), year, yearReturn);
			tempIncome = tempIncome * (1 + (salary/100.0));
		}
	}
	projBenefit = manContrib + manEmpContrib + volContrib;
	}
	else
	{
		manContrib = get_manContrib(tempIncome);
		if (document.calc.employFlag[0].checked==false) {
			manEmpContrib = 0;
		} else {
			manEmpContrib = get_manEmpContrib(tempIncome);
		}
		if (document.calc.voluntaryFlag[0].checked==false) {
			volContrib = 0;
		} else {
			volContrib = get_volContrib(tempIncome);
		}
		projBenefit = (manContrib + manEmpContrib + volContrib)*(tempYear)*12;
	}

	document.calc.projBenefit.value = Math.round(projBenefit*100)/100.0;
	document.calc.presentValue.value = Math.round(projBenefit / Math.pow((1 + inflatRate /100.0/12.0),(tempYear*12))*100)/100.0;
}

function get_manContrib(income)
{
	if ((income >= 5000) && (income <= 20000))
		return (income*0.05);
	else if (income < 5000)
		return 0;
	else if (income > 20000)
		return 1000;
}
	
function contribution(contrib, year, yearReturn)
{
	result = (contrib * (Math.pow((1+(yearReturn/12.0/100.0)), 12) - 1) / (yearReturn/12.0/100.0)) * Math.pow((1 + yearReturn /12.0/ 100.0), (12*year));
	return result;
}

function get_manEmpContrib(income)
{
	if ((income < 20000))
		return (income*0.05);
	else if (income >= 20000)
		return 1000;
}

function get_volContrib(income)
{
	if ((income >= 5000) && (income <= 20000))
		return 0;
	else if (income < 5000)
		return (income*0.05);
	else if (income > 20000)
		return ((income*0.05)-1000);
}
//-->
