function cal_ans01 (sal, con_rate)
{		
	if (sal < 5000){
		ans = 0;
	}
	if (sal >= 5000 && sal <= 20000){
		ans = sal * con_rate/100;
	}
	if ( sal > 20000) {
		ans = sal * con_rate/100;
	}
	return ans;
}

function cal_ans02 (sal, con_rate, e_con_rate)
{		
	if (sal < 5000){
		ans = sal * e_con_rate/100;
	}
	if (sal >= 5000 && sal <= 20000){
		ans = (sal * con_rate/100) + (sal * e_con_rate/100);
	}
	if ( sal > 20000) {
		ans = (sal * con_rate/100) + (sal * e_con_rate/100);
	}
	return ans;
}

function cal_ans03(year,in_ans02,sal,R,growthR,cRate,e_cRate)
{
	in_year = year*12;
	in_R = 1 + (R/100)/12 ;
	tot = 0;
		
	//alert ("in_year" + in_year);
	//alert ("in_R" + in_R);
		
	for (i=1; i<= in_year; i++){
	
		x = cal_ans02(sal, cRate, e_cRate)
		tot = tot + (x * Math.pow(in_R, i));
		if ((i%12) == 0){
			sal = sal * (1 + growthR/100);
		}
	}
	return tot;
}

function cal_ans04(year,I,tot)
{
	tot2 = tot/Math.pow((1+I/100), year);
	//Math.round(tot2);
	return tot2;
}

function cal_ans05(year,sal,R,growthR,cRate,e_cRate,tot)
{
	in_year = year*12;
	in_R = 1 + (R/100)/12 ;
	z = 0;
	
	//x = cal_ans02(sal, cRate, e_cRate);
	//z = (tot/(Math.pow(in_R, i)* i)) - x ;
			
	for (i=1; i<= in_year; i++){
	
		x = cal_ans02(sal, cRate, e_cRate);
	
		z = (tot/(Math.pow(in_R, i)* i)) - x ;
		
		if ((i%12) == 0){
			sal = sal * (1 + growthR/100);
		}
	}
	return z;
}

function MPFCal (formObj)
{
	salary = formObj.SAL.value;
	c_rate = parseFloat(formObj.Contri_Rate.value);
	e_c_rate = parseFloat(formObj.E_Contri_Rate.value);
	returnRate_index = formObj.Annual_return.selectedIndex;
	returnRate = parseFloat(formObj.Annual_return.options[returnRate_index].value);
	growthRate = parseFloat(formObj.growth_Rate.value);
	InflatRate = parseFloat(formObj.inflat_Rate.value);
	//targetSave = parseFloat(formObj.targetSaving.value);
	numOfYear = formObj.AGE_R.value - formObj.AGE_C.value;
	//z = formObj.Extra_Contri.value;
	
	rANS02 = 0;
	rANS03 = 0;

	rANS01 = cal_ans01(salary, c_rate);
	formObj.ANS01.value = rANS01;
	
	rANS02 = cal_ans02(salary,c_rate, e_c_rate);
	formObj.ANS02.value = rANS02;
		
	if ( !isNaN(rANS01) && !isNaN(rANS02)){
		
		//=== debug ===//
		//alert ("rANS01 passed");	
		
		if (!isNaN(returnRate) && !isNaN(growthRate) && !isNaN(InflatRate) && !isNaN(c_rate)){
			//alert ("in cal_ans03 !");
			rANS03 = cal_ans03(numOfYear,rANS02,salary,returnRate,growthRate,c_rate,e_c_rate);
			formObj.ANS03.value = Math.round(rANS03);
		}			
		if (!isNaN(returnRate) && !isNaN(growthRate) && !isNaN(InflatRate) && !isNaN(c_rate)){
			//alert ("in cal_ans04 !");
			rANS04 = cal_ans04(numOfYear, InflatRate, rANS03);
			formObj.ANS04.value = Math.round(rANS04);
		}
	}
	//if (!isNaN(targetSave)){
	//	if (!isNaN(returnRate) && !isNaN(growthRate) && !isNaN(InflatRate) && !isNaN(c_rate)){
	//		rANS05 = cal_ans05(numOfYear,salary,returnRate,growthRate,c_rate,e_c_rate,targetSave);
	//		formObj.ANS05.value = Math.round(rANS05)+ rANS01;
	//	}		
	//}

}
