// Protection Requirement Calculator

//This function will be return total financial assests of the user.

function getFinancialAssest(frmProtCurrCalc)
{
	var fieldSavingAccount = frmProtCurrCalc.savingAccount;
	var fieldPf = frmProtCurrCalc.pf;
	//var fieldFixedIncome = frmProtCurrCalc.fixedIncome;
	var fieldEquityMf = frmProtCurrCalc.equityMf;
	//var fieldDirectEquity = frmProtCurrCalc.directEquity;
	var fieldInsuranceInvest = frmProtCurrCalc.insuranceInvest;
	var floatTotalFinancialAsset;

	// if field value is empty then following condition initialize this variable by 0.
	if(fieldSavingAccount.value=="")
	{
		fieldSavingAccount.value=0;
	}
	if(fieldPf.value=="")
	{
		fieldPf.value=0;
	}
	if(fieldEquityMf.value=="")
	{
		fieldEquityMf.value=0;
	}
	if(fieldInsuranceInvest.value=="")
	{
		fieldInsuranceInvest.value=0;
	}

	savingAccount = parseFloat(fieldSavingAccount.value);
	pf = parseFloat(fieldPf.value);
	//fixedIncome=parseFloat(fieldFixedIncome.value);
	equityMf = parseFloat(fieldEquityMf.value);
	//directEquity=parseFloat(fieldDirectEquity.value);
	insuranceInvest = parseFloat(fieldInsuranceInvest.value);

	var vTotalAsset = document.getElementById('totalAsset');
	//Total Asset
	floatTotalFinancialAsset = savingAccount + pf + equityMf + insuranceInvest;

	floatTotalFinancialAsset=returnTwoDec(floatTotalFinancialAsset);
	vTotalAsset.innerHTML = floatTotalFinancialAsset;
	frmProtCurrCalc.hiddenTotalAsset.value=floatTotalFinancialAsset;
	return floatTotalFinancialAsset;
} // End of getFinancialAssest();

//This function will be return total Liabilties amount of the user.
function getLiabitiesAmount(frmProtCurrCalc)
{
	var fieldHomeLoan = frmProtCurrCalc.homeLoan;
	var fieldPersonalLoan = frmProtCurrCalc.personalLoan;
	var fieldAutoLoan = frmProtCurrCalc.autoLoan;
	var fieldOther = frmProtCurrCalc.other;
	var floatTotalLiabilitiesAmt;

	//if field value is empty then following condition initialize this variable by 0.
	if(fieldHomeLoan.value=="")
	{
		fieldHomeLoan.value=0;
	}
	if(fieldPersonalLoan.value=="")
	{
		fieldPersonalLoan.value=0;
	}
	if(fieldAutoLoan.value=="")
	{
		fieldAutoLoan.value=0;
	}
	if(fieldOther.value=="")
	{
		fieldOther.value=0;
	}
	homeLoan=parseFloat(fieldHomeLoan.value);
	personalLoan=parseFloat(fieldPersonalLoan.value);
	autoLoan=parseFloat(fieldAutoLoan.value);
	other=parseFloat(fieldOther.value);

	var vLiability = document.getElementById('liability');
	var vResultNetWorth = document.getElementById('netWorth');

	floatTotalLiabilitiesAmt=homeLoan+personalLoan+autoLoan+other;
	floatTotalLiabilitiesAmt=returnTwoDec(floatTotalLiabilitiesAmt);
	//Set total Liabilities
	vLiability.innerHTML  = (floatTotalLiabilitiesAmt);
	frmProtCurrCalc.hiddenLiability.value=floatTotalLiabilitiesAmt;
	var totalAsset=getFinancialAssest(frmProtCurrCalc);
	networth=(totalAsset-floatTotalLiabilitiesAmt);
	//Set total networth
	//Added by patni start
	frmProtCurrCalc.hiddennetWorth.value=networth;
	//alert("nertWorth=="+frmProtCurrCalc.hiddennetWorth.value);
	//Added by patni end
	vResultNetWorth.innerHTML=networth;

}// End of getLiabitiesAmount();

//This function will be return total cash inflows of the user.
function getCashInFlowAmount(frmProtCurrCalc)
{
	var fieldAnnualNetIncSelf = frmProtCurrCalc.annualNetIncSelf;
	//var fieldAnnualNetBonSelf = frmProtCurrCalc.annualNetBonSelf;
	var fieldAnnualNetIncSpouse = frmProtCurrCalc.annualNetIncSpouse;
	//var fieldAnnualNetBonSpouse = frmProtCurrCalc.annualNetBonSpouse;
	var fieldNetIncHouseProp = frmProtCurrCalc.netIncHouseProp;
	var fieldOtherInflows = frmProtCurrCalc.otherInflows;
	var floatTotalCashInflows;

	//if field value is empty then following condition initialize this variable by 0.
	if(fieldAnnualNetIncSelf.value=="")
	{
		fieldAnnualNetIncSelf.value=0;
	}
	if(fieldAnnualNetIncSpouse.value=="")
	{
		fieldAnnualNetIncSpouse.value=0;
	}
	if(fieldNetIncHouseProp.value=="")
	{
		fieldNetIncHouseProp.value=0;
	}
	if(fieldOtherInflows.value=="")
	{
		fieldOtherInflows.value=0;
	}
	annualNetIncSelf=parseFloat(fieldAnnualNetIncSelf.value);
	annualNetIncSpouse=parseFloat(fieldAnnualNetIncSpouse.value);
	netIncHouseProp=parseFloat(fieldNetIncHouseProp.value);
	otherInflows=parseFloat(fieldOtherInflows.value);

	// Total cash inflows
	floTotalCashInflows=annualNetIncSelf+annualNetIncSpouse+
							netIncHouseProp+otherInflows;

	//Added by patni start
	frmProtCurrCalc.hiddentotalInflows.value=floTotalCashInflows;
	//alert("floTotalCashInflows=="+frmProtCurrCalc.hiddentotalInflows.value);
	//Added by patni end

	// This function return value till 2 decimal
	floTotalCashInflows=returnTwoDec(floTotalCashInflows);
	var vTotalInflows = document.getElementById('totalInflows');
	vTotalInflows.innerHTML=floTotalCashInflows;
	return floTotalCashInflows;

}// End of getCashInFlowAmount()

//This function calculate value of annual field.
function monthOutFlow(monthField, yearField)
{
	numeric(monthField);
	if(monthField.value!="")
	{
		yearField.value="";
		var vYearValue=monthField.value*12;
		yearField.value=returnTwoDec(vYearValue); // set annual value
	}
	if(monthField.value=="")
	{
		yearField.value=""; //empty annual value
	}

}// End of monthOutFlow()

// This function calculate value of Monthly field
function annualOutFlow(monthField, yearField)
{
	numeric(yearField);
	if(yearField.value!="")
	{
		monthField.value="";
		var vMonthValue=yearField.value/12;
		monthField.value=returnTwoDec(vMonthValue); //set month value
	}
	if(yearField.value=="")
	{
		monthField.value=""; // Empty month field value
	}
}// End of annualOutFlow()

// This function calculate cashoutflows and annual surplus
function getCashOutFlowAmount(frmProtCurrCalc)
{

	/*var fieldHouseRentMonth = frmProtCurrCalc.houseRentMonth;
	var fieldUtilitiesMonth = frmProtCurrCalc.utilitiesMonth;
	var fieldHouseConsumpMonth = frmProtCurrCalc.houseConsumpMonth;
	var fieldGiftMonth = frmProtCurrCalc.giftMonth;
	var fieldGhildSchoolFeeMonth = frmProtCurrCalc.childSchoolFeeMonth;
	var fieldLoanEmiMonth = frmProtCurrCalc.loanEmiMonth;
	var fieldMedicalMonth = frmProtCurrCalc.medicalMonth;
	var fieldOtherMonth = frmProtCurrCalc.otherMonth;
	var fieldInvestInsuMonth = frmProtCurrCalc.investInsuMonth;
	var floTotalOutflowsMonth;
	var floTotalOutflowsAnnual;

	//if field value is empty then following condition initialize this variable by 0.
	if(fieldHouseRentMonth.value=="")
	{
		fieldHouseRentMonth.value=0;
	}
	if(fieldUtilitiesMonth.value=="")
	{
		fieldUtilitiesMonth.value=0;
	}
	if(fieldHouseConsumpMonth.value=="")
	{
		fieldHouseConsumpMonth.value=0;
	}
	if(fieldGiftMonth.value=="")
	{
		fieldGiftMonth.value=0;
	}
	if(fieldGhildSchoolFeeMonth.value=="")
	{
		fieldGhildSchoolFeeMonth.value=0;
	}
	if(fieldLoanEmiMonth.value=="")
	{
		fieldLoanEmiMonth.value=0;
	}
	if(fieldMedicalMonth.value=="")
	{
		fieldMedicalMonth.value=0;
	}
	if(fieldOtherMonth.value=="")
	{
		fieldOtherMonth.value=0;
	}
	if(fieldInvestInsuMonth.value=="")
	{
		fieldInvestInsuMonth.value=0;
	}

	houseRentMonth=parseFloat(fieldHouseRentMonth.value);
	utilitiesMonth=parseFloat(fieldUtilitiesMonth.value);
	houseConsumpMonth=parseFloat(fieldHouseConsumpMonth.value);
	giftMonth=parseFloat(fieldGiftMonth.value);
	childSchoolFeeMonth=parseFloat(fieldGhildSchoolFeeMonth.value);
	loanEmiMonth=parseFloat(fieldLoanEmiMonth.value);
	medicalMonth=parseFloat(fieldMedicalMonth.value);
	otherMonth=parseFloat(fieldOtherMonth.value)
	investInsuMonth=parseFloat(fieldInvestInsuMonth.value);

	var vTotalOutflowMonth = document.getElementById('totalOutflowMonth');
	var vTotalOutflowAnnual = document.getElementById('totalOutflowAnnual');
	// Total out flow of month
	floTotalOutflowMonth=(houseRentMonth+utilitiesMonth+houseConsumpMonth+giftMonth+
							childSchoolFeeMonth+loanEmiMonth+medicalMonth+otherMonth+
							investInsuMonth);
	floTotalOutflowMonth=returnTwoDec(floTotalOutflowMonth);
	// Total annual
	floTotalOutflowAnnual=floTotalOutflowMonth*12;

	floTotalOutflowAnnual=returnTwoDec(floTotalOutflowAnnual);

	frmProtCurrCalc.hiddenOutflowAnnual.value=floTotalOutflowAnnual;

	vTotalOutflowMonth.innerHTML=floTotalOutflowMonth; // Set total monthly
	vTotalOutflowAnnual.innerHTML=floTotalOutflowAnnual;// set total annual

	//var vTotalInflows=document.getElementById('totalInflows');
	//var totalInflows=vTotalInflows.innerHTML;
	var totalInflows=getCashInFlowAmount(frmProtCurrCalc);
	var vAnnualSurPlus=document.getElementById('annualSurPlus');
	var annualSurPlus=totalInflows-floTotalOutflowAnnual; // total annual surplus

	vAnnualSurPlus.innerHTML=annualSurPlus; // set total annualsurplus
	*/

}// End of getCashOutFlowAmount()

// This function will be return Future Value of the Goal of User.
function getFutureGoalAmount(fieldCurrent , fieldYearGoal , fieldCost , fieldId)
{
	numeric(fieldCurrent);
	numeric(fieldYearGoal);
	numeric(fieldCost);

	var floFutureGoalAmount;
	if(fieldCurrent.value=="")
	{
		return;
	}
	if(fieldYearGoal.value=="")
	{
		return;
	}
	if(fieldCost.value=="")
	{
		return;
	}
	childGraduationValue = parseFloat(fieldCurrent.value);
	childGraduationYGoal = parseFloat(fieldYearGoal.value);
	childGraduationIncCost = parseFloat(fieldCost.value);
	// this formula calculate total future goal amount.
	floFutureGoalAmount=childGraduationValue*Math.pow((1+(childGraduationIncCost/100)),childGraduationYGoal);

	floFutureGoalAmount=returnTwoDec(floFutureGoalAmount);
	//set value in passing id.
	document.getElementById(fieldId).innerHTML=floFutureGoalAmount;

	var vTotalChildGrad=document.getElementById('totalChildGrad');
	var vTotalChildPg=document.getElementById('totalChildPg');
	var vTotalChildMarriage=document.getElementById('totalChildMarriage');

	// it calculate total future value of the goal.
	//if(vTotalChildGrad.innerText!="" && vTotalChildPg.innerHTML!="" && vTotalChildMarriage.innerHTML!="")
	//{
	var totalChildGrad = 0;
	var totalChildPg = 0;
	var totalChildMarriage = 0;
	if(vTotalChildGrad.innerHTML != "")
		totalChildGrad = parseFloat(vTotalChildGrad.innerHTML);
	if(vTotalChildPg.innerHTML != "")
		totalChildPg = parseFloat(vTotalChildPg.innerHTML);
	if(vTotalChildMarriage.innerHTML != "")
		totalChildMarriage = parseFloat(vTotalChildMarriage.innerHTML);

	TotalGradPgMarr=(totalChildGrad+totalChildPg+totalChildMarriage);
	TotalGradPgMarr=returnTwoDec(TotalGradPgMarr);
	//var vCapitalExpenses=document.getElementById('capitalExpenses');
	//vCapitalExpenses.innerHTML=TotalGradPgMarr;
	//}
}// End of getFutureGoalAmount()

// This function will be return total FARE of User.
function getRetirementAmount(frmProtGoalSett)
{
	var fieldCARE = frmProtGoalSett.CARE;
	var fieldYrsToRetirement =frmProtGoalSett.yrsToRetirement;
	var fieldInflation = frmProtGoalSett.inflation;

	if(fieldCARE.value=="")
	{
		fieldCARE.value=0;
	}
	if(fieldYrsToRetirement.value=="")
	{
		fieldYrsToRetirement.value=0;
	}
	if(fieldInflation.value=="")
	{
		fieldInflation.value=0;
	}

	CARE=parseFloat(fieldCARE.value);
	yrsToRetirement= parseFloat(fieldYrsToRetirement.value);
	inflation=parseFloat(fieldInflation.value);

	// this formula return total FARE
	floFARE=CARE*Math.pow((1+(inflation/100)),yrsToRetirement);

	floFARE=returnTwoDec(floFARE);
	var vTotalFARE=document.getElementById('totalFARE');
	vTotalFARE.innerHTML=floFARE;
	var vAnnualRate=document.getElementById('annualRate');
	var vAnnualRateValue=vAnnualRate.innerHTML;
	vAnnualRateLength=vAnnualRate.innerHTML.length;
	var vAnnualRate=vAnnualRateValue.substr(0,(vAnnualRateLength-1));
	var vTotalRetireCorpus=(floFARE*100)/vAnnualRate;
	vTotalRetireCorpus=returnTwoDec(vTotalRetireCorpus);
	var vRetireCorpus=document.getElementById('retireCorpus');
	vRetireCorpus.innerHTML = vTotalRetireCorpus;
}// getRetirementAmount()

// This function set required value in Protection-Goal-Setting.
function funKeyValueURL(frmProtGoalSett)
{
	var URL = new String(document.location.href);
	//alert(URL);
	URLLength=URL.length;
	var i;
	//It will break URL from ? mark and only keep after ?.
	for(i=0; i<URLLength; i++)
	{
		if(URL.charAt(i)=="?")
		{
			break;
		}

	}
	var newURL=URL.substr(i+1); // new URL
	var seperator="&";
	var splitAmp=newURL.split(seperator);

	var keyValueArray=new Array(2);
	for (i=0; i <splitAmp.length; i++) // size of total array
	{
		keyValueArray[i]=new Array(2);
	}
	// this loop is breaking one array value into two from "=" and putting
	//into two dimension array with key and value.
	for(i=0; i<splitAmp.length; i++)
	{
		for(j=0; j<splitAmp[i].length; j++)
		{
			if(splitAmp[i].charAt(j)=="=")
			{
				keyValueArray[i][0]=splitAmp[i].substr(0,j);
				keyValueArray[i][1]=splitAmp[i].substr(j+1,splitAmp[i].length);

			}
		}
	}

	var vHiddenTotalAsset;
	var vHiddenLiability;
	var vHiddenOutflowAnnual;
	var vHiddenAnnualNetIncSelf;
	// This loop retriving required value from first page.
	for(i=0; i<keyValueArray.length; i++)
	{
		if(keyValueArray[i][0]=="hiddenTotalAsset")
		{
			vHiddenTotalAsset=keyValueArray[i][1];
		}
		if(keyValueArray[i][0]=="hiddenLiability")
		{
			vHiddenLiability=keyValueArray[i][1];
		}
		if(keyValueArray[i][0]=="hiddenOutflowAnnual")
		{
			vHiddenOutflowAnnual=keyValueArray[i][1];
		}
		if(keyValueArray[i][0]=="annualNetIncSelf")
		{
			vHiddenAnnualNetIncSelf=keyValueArray[i][1];
			//alert("Annual Income is :" + vHiddenAnnualNetIncSelf);
		}

	}
	// setting values using id's.
	var vCurrentLife = document.getElementById('currentLife');
	vCurrentLife.innerHTML  = vHiddenOutflowAnnual;

	var vCapitalLiabilities = document.getElementById('capitalLiabilities');
	vCapitalLiabilities.innerHTML = (vHiddenLiability);

	var vCapitalAssets=document.getElementById('capitalAssets');
	vCapitalAssets.innerHTML=(vHiddenTotalAsset);

	var vAvgIllness=document.getElementById('avgIllness');
	var avgIllness=vAvgIllness.innerHTML;

	var vIllness=50*(avgIllness/100);

	var vIncidentalIllness=document.getElementById('incidentalIllness');
	vIncidentalIllness.innerHTML=vIllness;

	var vIndirectLosses=document.getElementById('indirectLosses');
	//alert("vHiddenAnnualNetIncSelf" + vHiddenAnnualNetIncSelf);
	var vLosses=3*(vHiddenAnnualNetIncSelf/12);
	vIndirectLosses.innerHTML=vLosses;
	var vInvestRate=document.getElementById('investRate');
	var vInvestRateValue=vInvestRate.innerHTML;
	var vInvestRateLength=vInvestRate.innerHTML.length;
	var vInvestRate=vInvestRateValue.substr(0,(vInvestRateLength-1));

	var vCapProtected=(vHiddenOutflowAnnual*100)/vInvestRate;
	vCapProtected=returnTwoDec(vCapProtected);
	var vCapitalProtected=document.getElementById('capitalProtected');
	vCapitalProtected.innerHTML=vCapProtected;

}// End of funKeyValueURL()


//This function will be return total additional SA required for User.
function getProtectionSAReq(frmProtGoalSett)
{
	var vCurrentLife;
	var vInvestRate;
	var vInvestRateValue;
	var vInvestRate;
	var vCapProtected;
	var vCapitalProtected;
	var vToatlChildGrad;
	var vToatlChildPg;
	var vToatlChildMarriage;
	var ToatlGradPgMarr;
	var vSumAssured;
	var vAdditionalSAReq;
	vSumAssured=frmProtGoalSett.sumAssured.value;

	if(vSumAssured=="")
	{
		frmProtGoalSett.sumAssured.value=0;
		alert("vSumAssured"+vSumAssured);
	}


	// if nobody use future expenses then set here default value with 0.
	if(vCapitalExpenses.innerHTML=="")
	{

		capitalExpenses=0;
		vCapitalExpenses.innerHTML=capitalExpenses;
	}
	else
	{
		capitalExpenses=parseFloat(vCapitalExpenses.innerHTML);
		alert("capitalExpenses"+capitalExpenses);
	}

	vcurrentLife=document.getElementById('currentLife');
	var currentLife=parseFloat(vcurrentLife.innerHTML);

	vcapitalLiabilities=document.getElementById('capitalLiabilities');
	var capitalLiabilities=parseFloat(vcapitalLiabilities.innerHTML);


	vCapitalProtected=document.getElementById('capitalProtected');
	var CapitalProtected=parseFloat(vCapitalProtected.innerHTML);
	alert("capitalProtected"+capitalProtected);


	vCapitalAssets=document.getElementById('capitalAssets');
	var capitalAssets=parseFloat(vCapitalAssets.innerHTML);
	alert("capitalAssets"+capitalAssets);

	//var capitalLiabilities=document.getElementById('capitalLiabilities');
	//capitalLiabilities.innerHTML=getURLParam('hiddenLiability');
	//alert("capitalLiabilities"+capitalLiabilities);


	var currentLife=document.getElementById('currentLife');
	currentLife.innerHTML=getURLParam('hiddenOutflowAnnual');



	var capitalAssets=document.getElementById('capitalAssets');
	capitalAssets.innerHTML=getURLParam('hiddenTotalAsset');


	// CPRO = AO*100/INT means (AO*100/5/100=AO*5)
	var capitalProtected=getURLParam('hiddenOutflowAnnual')*5;
	capitalProtected1.innerHTML = capitalProtected;



	var totalAdditionalSAReq=(capitalProtected+capitalExpenses+capitalLiabilities-capitalAssets-vSumAssured);
	//alert("totalAdditionalSAReq"+totalAdditionalSAReq);
	totalAdditionalSAReq=returnTwoDec(totalAdditionalSAReq);

	// Addition SA Requirement(ADSA = CPRO + AO + TL - TA - SA)
	vAdditionalSAReq=document.getElementById('additionalSAReq');
	vAdditionalSAReq.innerHTML=totalAdditionalSAReq;




}// End of getProtectionSAReq()

//This function will be return total Goal Setting-Health Insurance of User.
function getHealthSAReq(frmProtGoalSett)
{
	var vAvgIllness;
	var vIncidentalIllness;
	var vTotalIncidentalIllness;
	var vTotalIndirectLosses;
	var vMediclaimSA;

	if(frmProtGoalSett.mediclaimSA.value=="")
	{
		frmProtGoalSett.mediclaimSA.value=0;
	}

	vAvgIllness=document.getElementById('avgIllness');
	var avgIllness=vAvgIllness.innerHTML;
	vTotalIncidentalIllness=document.getElementById('incidentalIllness');
	var incidentalIllness=parseFloat(vTotalIncidentalIllness.innerHTML);
	vTotalIndirectLosses=document.getElementById('indirectLosses');
	var indirectLosses=parseFloat(vTotalIndirectLosses.innerHTML);
	vMediclaimSA=parseFloat(frmProtGoalSett.mediclaimSA.value);
	var vAvgMedical=avgIllness-vMediclaimSA;
	var addHealthSA=Math.max(vAvgMedical,0)+incidentalIllness+indirectLosses;
	addHealthSA=returnTwoDec(addHealthSA);
	var vTotalAddHealthSA=document.getElementById('addHealthSA');
	vTotalAddHealthSA.innerHTML=addHealthSA;
}// End of getHealthSAReq()
// This function call all function on next button.
function callAllFunction(frmProtCurrCalc)
{
	getFinancialAssest(frmProtCurrCalc);
	getLiabitiesAmount(frmProtCurrCalc);
	getCashInFlowAmount(frmProtCurrCalc);
	getCashOutFlowAmount(frmProtCurrCalc);
}// End of callAllFunction()

// This function can enter only numeric value from 0-9 and .(Dot).
function onlyNums()
{
   if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode==46)
	{
		return true;
	}
	return false;
}// End of onlyNums()

function numeric(field)
{
	var vFieldValue = field.value;
	var vFieldLength = field.value.length;
	var vStringValue = new String();
	var j=0;
	var k=0;
	for(var i=0; i<vFieldLength; i++)
	{
		if(vFieldValue.charAt(i)=='.')
		{
			j=j+1;
			if(j>=2)
			{
				continue;
			}
		}
		if(vFieldValue.charAt(i)<=9 || vFieldValue.charAt(i) >=0 || vFieldValue.charAt(i)=='.')
		{
			k=k+1;
			vStringValue = vStringValue + vFieldValue.charAt(i);
		}
	}
	if(k==0)
	{
		field.value="";
		return;
	}
	field.value=parseFloat(vStringValue);
	return;
}
// This function return value till two decimal.
function returnTwoDec(twoDecValue)
{
	var strTwoDecValue= new String(twoDecValue);
	for(var i=0; i<strTwoDecValue.length; i++)
	{
		if(strTwoDecValue.charAt(i)==".")
		{
			strTwoDecValue=strTwoDecValue.substr(0,i+3);
		}
	}
	twoDecValue=parseFloat(strTwoDecValue);
	return twoDecValue;
}// returnTwoDec()


