/* ---------------------------
' (C) Copyright 2007
' Niro Solutions Pty Limited
' ABN 89 106 967 140
' ---------------------------
' Revision: 5.0.0
' Author: Miles Glisovic
' Modtime: 29/03/11
' --------------------------- */
var cCol="";
var numberOfTabs = 5
var fcs=false
// parameter STRINGS to be retreived from DB and used in initialise()
var initCurrentAge="";
var initGrossSalary="";
var initGrossSalaryFreq="";
var MIN_AGE = 15;
var MAX_AGE = 69;
var MIN_R_AGE = 55;
var MAX_R_AGE = MAX_AGE+1;
var MAX_LEXPECT = 99
var MIN_SUPACCBAL=0
var MAX_SUPACCBAL=9999999
var MIN_TAXFREE_COMPNENT=0
var MAX_TAXFREE_COMPNENT=0
var MIN_SALARY=10000//p.a.
var MAX_SALARY=554938
var MIN_AFTERTAX=0
var MIN_SALSAC=0
var BASE_MAX_CONCESSIONAL = 25000
var MAX_CONCESSIONAL = BASE_MAX_CONCESSIONAL
var NON_CONCESSIONAL_MULTIPLE = 6
var MAX_AFTERTAX150K = BASE_MAX_CONCESSIONAL*NON_CONCESSIONAL_MULTIPLE
var MAX_CONCESSIONAL_100K_ORG = 50000
var MIN_EMPLCONT_PCTG = 9;
var MAX_EMPLCONT_PCTG = 50;
var MIN_FEES_PCTG=0;
var MAX_FEES_PCTG = 20;
var MIN_ASSETBASEDFEES_PCTG = 0;
var MAX_ASSETBASEDFEES_PCTG = 3;
var MIN_ADMIN_FEES_PCTG=0;
var MAX_ADMIN_FEES_PCTG = 10;
var MIN_INSURANCEPREMIUMS_PCTG=0;
var MAX_INSURANCEPREMIUMS_PCTG = 20;
var DEFAULT_FEES_PER_WEEK = 1.50
var DEFAULT_INSURANCE_PER_WEEK = 3.00
var DEFAULT_ASSETBASEDFEE_PCTG = 0.20
var MAX_FEE=500
var MIN_INCOME=1
var __MAXANNUALPENSIONINCOME=9999999
var MIN_PCTG_SUPERBENEFIT_ORG = 3
var MAX_PCTG_SUPERBENEFIT_ORG = 8
var MIN_PCTG_SUPERBENEFIT_CP = 2.5
var MAX_PCTG_SUPERBENEFIT_CP = 6.5
var MIN_PCTG_SUPERBENEFIT = MIN_PCTG_SUPERBENEFIT_ORG
var MAX_PCTG_SUPERBENEFIT = MAX_PCTG_SUPERBENEFIT_ORG
var INVEST_RATE_RETBENEFIT=5.5
var MIN_PCTG_RETIREMENTBENEFIT=3
var MAX_PCTG_RETIREMENTBENEFIT=8
var INFLATION_SALARY=4.5
var MIN_INFLATION_SALARY=0
var MAX_INFLATION_SALARY=8
var INFLATION=2.5
var MIN_INFLATION=0
var MAX_INFLATION=3

var AWOTE=4.5
//180311:
var AWOTENew=AWOTE

var INVEST_RATE_SUPBENEFIT_CG = INFLATION + 1
var INVEST_RATE_SUPBENEFIT_CS = INFLATION + 2
var INVEST_RATE_SUPBENEFIT_B = INFLATION + 3
var INVEST_RATE_SUPBENEFIT_G = INFLATION + 4
var INVEST_RATE_SUPBENEFIT = INVEST_RATE_SUPBENEFIT_B;//default investment option is BALANCED => 5.5%
//var INVEST_RATE_SUPBENEFIT_CP for ChoicePlus option, user will enter the rate
var _nbsp = "&nbsp;"
var minAnnualPensionIncome = 0;
var minAnnualPensionIncomeNew = 0;
var MIN_INV_AMOUNT=20000
var MAX_INV_AMOUNT=99999999
var navigator_appName=""
var gl_FinalTotalSuperSavings, gl_FinalTotalSuperSavingsNew
var _DOLLAR = 0
var _PCTG = 1
//270710:
var MEDICARE_MIN = 18488
var MEDICARE_MID = 21751
var MEDICARE_PCT_02 = 0.1
var MEDICARE_PCT_0015 = 0.015

var MIN_DOLLAR = 0
var MIN_PCTG=0
var MAX_PCTG=100
var sCurrentAgeForJava, sLifeExpectancyForJava;
var SEPARATOR = "/";
var MIN_PARTTIME_PCTG=20
var MAX_PARTTIME_PCTG=90
var firstD = true
var sTotInv = "The calculated total investment must be between "+formatted_toFixed1(MIN_INV_AMOUNT, 0, "$")+" and "+formatted_toFixed1(MAX_INV_AMOUNT, 0, "$")+". Please check your figures and related frequencies to ensure they are correct."
var CONCESS_LIMIT_AGE = 50
var CONCESS_LIMIT_DATE
var sCONCESS_LIMIT_DATE
var sDOC
var START_AGE = 50
var currentTab = 1
var tabToSwitchTo = 1
var sMyOriginal = "#0066a1"
var sMyNew = "#A3AB02"
var CONCESSIONAL_MAX__SUPER_CALC_B65 = 25000;
var COCONT_LIMIT_MIN_2009=31920
var COCONT_LIMIT_MAX_2009=61920
var MIN_COCONT_PAYABLE=20
var MIN_COCONT_CALCULATED_ON=0.05
var COCONT_ENDOFTRANSITION_DATE
var sCOCONT_ENDOFTRANSITION_DATE
//060810:
var requiredLumpSumAtRetirementAge, requiredLumpSumAtRetirementAgeNew
//090810:
var DEFAULTINSURANCE29 = 3.51//$3.51 per week
var DEFAULTINSURANCE30 = 6.00//$6.00 per week
//240211:
var APPLY_MIN_INCOME_NO = 0
var APPLY_MIN_INCOME_YES = 1
var APPLY_MIN_INCOME
var CALCULATE_YELLOW_RANGE_NO = 0
var CALCULATE_YELLOW_RANGE_YES = 1
var CALCULATE_YELLOW_RANGE



function preLoadImages1(noOfTabs)
{
	expand= new Image()
	expand.src="../images/info_expand.gif"
    collapse= new Image()
	collapse.src="../images/info_collapse.gif"
	
	var i;
	for(i=1;i<=noOfTabs;i++)
	{
		eval("img"+i+"on = new Image();")
		eval("img"+i+"on.src = '../images/step"+i+"on.gif';")
		eval("img"+i+"off = new Image();")
		eval("img"+i+"off.src = '../images/step"+i+"off.gif';")
	}
    grossIncomeP= new Image()
    grossIncomeP.src="../images/info_expand.gif"
    grossIncomeM= new Image()
    grossIncomeM.src="../images/info_collapse.gif"
}
function showDIV_CARE(myDIV, noOfTabs)
{
	var setDIV = myDIV.getAttribute("ID");
	for(i=1;i<=noOfTabs;i++)
	{
		// disable all DIVs
		eval("divTab"+i+".style.display = 'none';")
		eval("document['i"+i+"'].src = img"+i+"off.src;")
	}
	myDIV.style.display = "";
	for(i=1;i<=noOfTabs;i++)
	{
		eval("if(setDIV == 'divTab"+i+"')	{	document['i"+i+"'].src = img"+i+"on.src;}")
	}
}
function cursorH(e)
{
	e.style.cursor = "pointer";
}
function cursorA(e)
{
	e.style.cursor = "default";
}							
function doChanges(e)
{
	// get this 'e' element's table and set backgroundColor
	// of rows to cCol
	var rr = getMyTable(e);
	for(i=0;i<rr.rows.length-3;i++)
		rr.rows[i].style.backgroundColor=cCol
	e.style.backgroundColor = "#f1f5f5";
}
function restore(e)
{
	var rr = getMyTable(e);
	for(i=0;i<rr.rows.length-3;i++)
		rr.rows[i].style.backgroundColor=cCol
	e.style.backgroundColor = cCol;
}
function mySelect(field)
{
	try
	{
		field.focus()
		field.select()
	}
	catch(e)
	{
		;//alert(e)
	}
}
function getMyDIV(x)
{
	// start with an element and go up through the tree trying to find
	// a <DIV> HTML element;
	// return a reference to an object of type <DIV>
	// or, if not found, return null
	if(x!=null && x.tagName!="DIV")
		return (getMyDIV(x.parentNode));
	else
		return x;
}
function getMyTable(x)
{
	if(x!=null && x.tagName!="TABLE")
		return (getMyTable(x.parentNode));
	else
		return x;
}

function switchToDIV(field)
{
	var rr = getMyDIV(field);
	if(rr.style.display=="none")
		showDIV_CARE(rr,numberOfTabs)
}
function selectCmb(field)
{
	switchToDIV(field)
	field.focus()
}
function getCmbText(cmb1,u_l_p)
{
//u=>upper
//l=>lower
//p=>plain (as-is)
var s = cmb1.options[cmb1.selectedIndex].text
if(u_l_p.toUpperCase()=="U")
	return s.toUpperCase();
else if(u_l_p.toUpperCase()=="L")
	return s.toLowerCase();
else
	return s;
}
function removeDecimalPart(ns)
{
var li = ns.lastIndexOf(".")
if(li<0)
	return ns;
else
	return (ns.substring(0,li))
}
function isValidValue77(field,value,vMin,vMax,sMin,sMax,sAll, _prompt)
{
	var ret = false;
	if(isInt(field.value))
	{
		if(value < vMin)
		{
			switchToDIV(field)
			if(_prompt)
			{
				alert(sMin)
			mySelect(field)
			}
		}
		else if(value > vMax)
		{
			switchToDIV(field)
			if(_prompt)
			{
				alert(sMax)
			mySelect(field)
			}
		}
		else
			ret=true
	}
	else
	{
		switchToDIV(field)
		if(_prompt)
		{
			alert(sAll)
		mySelect(field)
		}
	}
	return ret;
}
function validField(field, fMin, fMax)
{
	if(isInt(field.value) && (parseInt(field.value,10) >= fMin) && (parseInt(field.value,10) <= fMax))
		return true
	else
		return false
}
function isInt(v)
{
var ret=false;
var int1 = /^\d{1,8}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret)
	ret=true;
return ret
}
function getCmbIndex(cmb1,firstLetter)
{
	for(i=0;i<cmb1.options.length;i++)
	{
		if(((cmb1.options[i].text).charAt(0)).toUpperCase()==firstLetter.toUpperCase())
			return i;
	}
	return --i;//just in case
}
function getSafeFieldValue(field)
{
	var x=0
	if(jsLRTrim(field.value)=="" || isNaN(jsLRTrim(field.value)))
		x=0
	else
		x = parseInt(field.value,10)
	return x;
}
function getSafeDecimalFieldValue(field)
{
	var x = 0
	if(jsLRTrim(field.value)=="" || isNaN(jsLRTrim(field.value)))
		x = 0
	else
		x = parseFloat(field.value)
	return x;
}

function showTab(tabNumber)
{
	if(!fcs)
		stopGIF(true);
		s=1
		
		document.getElementById("divPreLoad").style.display = "none";
		document.getElementById("divIntro").style.display = "";
		document.getElementById("divIntro1").style.display = "none";
		document.getElementById("divIntro2").style.display = "";
		document.getElementById("divHowToUse").style.display = "";
		document.getElementById("divMain").style.display = "";
		document.getElementById("divAssumption").style.display = "";
		document.getElementById("divDisclaimer").style.display = "";
		document.getElementById ('tabStep1').className=''
		document.getElementById ('tabStep2').className=''
		document.getElementById ('tabStep3').className=''
		document.getElementById ('tabStep4').className=''
		document.getElementById ('tabStep5').className=''
		/*  disable all DIVs */
		document.getElementById("divTab1").style.display = "none";
		document.getElementById("divTab2").style.display = "none";
		document.getElementById("divTab3").style.display = "none";
		document.getElementById("divTab4").style.display = "none";
		document.getElementById("divTab5").style.display = "none";
		
		document["i1"].src = img1off.src;
		document["i2"].src = img2off.src;
		document["i3"].src = img3off.src;
		document["i4"].src = img4off.src;
		document["i5"].src = img5off.src;
		       
		switch (tabNumber)
		{
			case 1 :
				document.getElementById ('tabStep1').className='active'
				document["i1"].src = img1on.src;
				document.getElementById("divTab1").style.display = "";
				if(fcs)
				{
					window.location.href="#top1"
				}
				if(document.forms.frmName.rdGender[0].checked || document.forms.frmName.rdGender[1].checked)
					mySelect(document.forms.frmName.txtDOB)
				break;
			case 2 :
				document.getElementById ('tabStep2').className='active'
				document["i2"].src = img2on.src;
				document.getElementById("divTab2").style.display = "";
				window.location.href="#top1"
				break;

			case 3 :
				document.getElementById ('tabStep3').className='active'
				document["i3"].src = img3on.src;
				document.getElementById("divTab3").style.display = "";
				window.location.href="#top1"
				break;
			case 4 :
				document.getElementById ('tabStep4').className='active'
				document["i4"].src = img4on.src;
				document.getElementById("divTab4").style.display = "";
				window.location.href="#top1"
				break;
			case 5 :
			     document.getElementById ('tabStep5').className='active'
				document["i5"].src = img5on.src;
				document.getElementById("divTab5").style.display = "";
				window.location.href="#top1"
				break;
			}

	currentTab = tabNumber
}
function goToStep2(e,tabNumber)
{
	var f=document.forms.frmName
	if(validStep1(f))
	{
		showTab(tabNumber);
		if(document.forms.frmName.rdPurchaseAllocatedPension[0].checked || document.forms.frmName.rdPurchaseAllocatedPension[1].checked)
			mySelect(f.cmbIncomeFreq)
	}
}
function goToStep3(e,tabNumber)
{
	var f=document.forms.frmName

	if(validStep1(f))
	{
		if(validStep2(f))
		{
				var atc = (jsLRTrim(f.txtAfterTax.value)=="")?0:getSafeDecimalFieldValue(f.txtAfterTax)
				document.getElementById("lblATCN0").innerHTML=contsAsDollarAmount(f)?("Vary the " +getCmbText(f.cmbAfterTaxFreq,"l") + "ly after-tax contribution"):
					("Vary the after-tax contribution percentage");
				document.getElementById("lblATCN0DP2").innerHTML = (contsAsDollarAmount(f)?"$":"")
				document.getElementById("lblATCN1").innerHTML=((contsAsDollarAmount(f)?"$":"") + formatted_toFixed1(atc, 2, "") +(contsAsDollarAmount(f)?"":"%"));
				f.txtAfterTaxNew.value = reformatTxtField(f.txtAfterTaxNew.value)
				document.getElementById("spanAfterTaxNew").innerHTML = (contsAsDollarAmount(f)?"":"%")
				var ptc = (jsLRTrim(f.txtSalSac.value)=="")?0:getSafeDecimalFieldValue(f.txtSalSac)
				document.getElementById("lblPTCN0").innerHTML=contsAsDollarAmount(f)?("Vary the " +getCmbText(f.cmbSalSacFreq,"l") + "ly salary sacrifice contribution"):
					("Vary the salary sacrifice contribution percentage");
				document.getElementById("lblPTCN0DP2").innerHTML = (contsAsDollarAmount(f)?"$":"")
				document.getElementById("lblPTCN1").innerHTML=((contsAsDollarAmount(f)?"$":"") + formatted_toFixed1(ptc, 2, "") + (contsAsDollarAmount(f)?"":"%"));
				f.txtSalSacNew.value = reformatTxtField(f.txtSalSacNew.value)
				document.getElementById("spanSalSacNew").innerHTML = (contsAsDollarAmount(f)?"":"%")
				document.getElementById("lblMinInc20").innerHTML="The minimum "+getCmbText(f.cmbIncomeFreq,"l")+" pension income"
				var inc = (jsLRTrim(f.txtRqdIncome.value)=="")?0:getSafeDecimalFieldValue(f.txtRqdIncome);
				document.getElementById("lblINC0").innerHTML="Vary the required " +getCmbText(f.cmbIncomeFreq,"l") + ((document.forms.frmName.rdPurchaseAllocatedPension[0].checked)?" pension":"") + " income in retirement";
				document.getElementById("lblINC1").innerHTML = formatted_toFixed1(inc, 2, "$")
				f.txtRqdIncomeNew.value = reformatTxtField(f.txtRqdIncomeNew.value)
				document.getElementById("lblINVRATE_SUPERBENEFIT0").innerHTML="Superannuation account (between "+MIN_PCTG_SUPERBENEFIT+"% and "+MAX_PCTG_SUPERBENEFIT+"%)"
				document.getElementById("lblINVRATE_RETIREMENTBENEFIT0").innerHTML="Pension account (between "+MIN_PCTG_RETIREMENTBENEFIT+"% and "+MAX_PCTG_RETIREMENTBENEFIT+"%)"
				document.getElementById("lblINFLATION_SALARY0").innerHTML="Vary the salary inflation rate (between "+MIN_INFLATION_SALARY+"% and "+MAX_INFLATION_SALARY+"%)"
				document.getElementById("lblINFLATION0").innerHTML="Vary the inflation rate (between "+MIN_INFLATION+"% and "+MAX_INFLATION+"%)"
				document.getElementById("lblINVRATE_SUPERBENEFIT").innerHTML=""+  formatted_toFixed1(getInvestmentOptionPctg(f), 2, "") +"%";
				document.getElementById("lblINVRATE_RETIREMENTBENEFIT").innerHTML=""+ formatted_toFixed1(INVEST_RATE_RETBENEFIT, 2, "") +"%";
				document.getElementById("lblINFLATION_SALARY").innerHTML=""+ formatted_toFixed1(INFLATION_SALARY, 2, "") + "%";
				document.getElementById("lblINFLATION").innerHTML=""+formatted_toFixed1(INFLATION, 2, "")+ "%";
				showTab(tabNumber);
		if(validStep3(f))
		{
			calculateAndPaintFLOT(f, tabNumber)
		}
		else
		{
		;
		}
		}
	}
}
function goToStep4(e, tabNumber)
{
	var f=document.forms.frmName
	var totalTaxPension, totalTaxPensionNew, totalTaxBank, totalTaxBankNew,
				totalGrossPaymentBank, totalGrossPaymentBankNew, totalGrossPaymentPension, totalGrossPaymentPensionNew,
				totalNetPaymentBank, totalNetPaymentBankNew, totalNetPaymentPension, totalNetPaymentPensionNew,
				_incomeWillStopAtTheEndOfThisYear, _incomeWillStopAtTheEndOfThisYearNew
	if(validStep1(f))
	{
		var sRet = ""
		if(sRet == "")
		{
			if(validStep2(f))
			{
				if(sRet == "")
				{
					if(validStep3(f))
					{
						requiredLumpSumAtRetirementAge = requiredLumpSumAtRetirementAgeNew = 0.0
						var errT = calculateFiguresForTab4(f, tabNumber)
						if(errT=="")
						{
							document.getElementById("rowT4_1").style.display = "none";
							document.getElementById("rowT4_2Org").style.display = "none";
							document.getElementById("rowT4_2Org2").style.display = "none";
							document.getElementById("rowT4_2Org3").style.display = "none";
							document.getElementById("rowT4_2New").style.display = "none";
							document.getElementById("rowT4_2New2").style.display = "none";
							document.getElementById("rowT4_2New3").style.display = "none";

							var secondScenario = scenarioTwoEntered()
							var _salary = getSafeDecimalFieldValue(f.txtGrossSalary)*f.cmbGrossSalaryFreq.value
							var csab=(jsLRTrim(f.txtSuperAccBalance.value)=="")?"0.00":getSafeDecimalFieldValue(f.txtSuperAccBalance);
							document.getElementById("lblCSAB1").innerHTML = removeDecimalPart(formatted_toFixed1(csab, 0, "$"))
							document.getElementById("lblCSAB2").innerHTML = secondScenario?removeDecimalPart(formatted_toFixed1(csab, 0, "$")):"&nbsp;";
							var ec=(jsLRTrim(f.txtEmplCont.value)=="")?0:getSafeDecimalFieldValue(f.txtEmplCont);
							ec = contsAsDollarAmount(f)?(ec*f.cmbEmplContFreq.value):(Math.floor((ec/100.0)*_salary))
							document.getElementById("lblEC1").innerHTML = formatted_toFixed1(ec, 2, "$")
							document.getElementById("lblEC2").innerHTML = secondScenario?formatted_toFixed1(ec, 2, "$"):"&nbsp;";
							var atc1=(jsLRTrim(f.txtAfterTax.value)=="")?0:getSafeDecimalFieldValue(f.txtAfterTax);
							atc1 = contsAsDollarAmount(f)?(atc1*f.cmbAfterTaxFreq.value):(Math.floor((atc1/100.0)*_salary))
							var atc2=(jsLRTrim(f.txtAfterTaxNew.value)=="")?0:getSafeDecimalFieldValue(f.txtAfterTaxNew);
							atc2 = contsAsDollarAmount(f)?(atc2*f.cmbAfterTaxFreq.value):(Math.floor((atc2/100.0)*_salary))
							document.getElementById("lblATC1").innerHTML = formatted_toFixed1(atc1, 2, "$")
							document.getElementById("lblATC2").innerHTML = secondScenario?formatted_toFixed1(atc2, 2, "$"):"&nbsp;";
							var ptc1=(jsLRTrim(f.txtSalSac.value)=="")?0:getSafeDecimalFieldValue(f.txtSalSac);
							ptc1 = contsAsDollarAmount(f)?(ptc1*f.cmbSalSacFreq.value):(Math.floor((ptc1/100.0)*_salary))
							var ptc2=(jsLRTrim(f.txtSalSacNew.value)=="")?0:getSafeDecimalFieldValue(f.txtSalSacNew);
							ptc2 = contsAsDollarAmount(f)?(ptc2*f.cmbSalSacFreq.value):(Math.floor((ptc2/100.0)*_salary))
							document.getElementById("lblPTC1").innerHTML = formatted_toFixed1(ptc1, 2, "$")
							document.getElementById("lblPTC2").innerHTML = secondScenario?formatted_toFixed1(ptc2, 2, "$"):"&nbsp;";
				var riir1=(jsLRTrim(f.txtRqdIncome.value)=="")?0:getSafeDecimalFieldValue(f.txtRqdIncome);
				var riir2=(jsLRTrim(f.txtRqdIncomeNew.value)=="")?0:getSafeDecimalFieldValue(f.txtRqdIncomeNew);
				var s7=getCmbText(f.cmbIncomeFreq,"l")
				s7 = (s7.substring(0,1)).toUpperCase() + s7.substring(1)
				document.getElementById("lblRIIR0").innerHTML = (s7 + ((f.rdPurchaseAllocatedPension[0].checked)?" pension":"") + " income")
				document.getElementById("lblRIIR1").innerHTML = formatted_toFixed1(riir1, 2, "$")
				document.getElementById("lblRIIR2").innerHTML = secondScenario?formatted_toFixed1(riir2, 2, "$"):"&nbsp;";
				document.getElementById("lblWL0").innerHTML = ((f.rdPurchaseAllocatedPension[0].checked)?" pension ":"")
				_incomeWillStopAtTheEndOfThisYear = myMathFloor(incomeWillStopAtTheEndOfThisYear, 2)
				document.getElementById("lblWL1").innerHTML = _incomeWillStopAtTheEndOfThisYear
				if(secondScenario)
				{
					_incomeWillStopAtTheEndOfThisYearNew = myMathFloor(incomeWillStopAtTheEndOfThisYearNew, 2)
					document.getElementById("lblWL2").innerHTML = _incomeWillStopAtTheEndOfThisYearNew
				}
				else
					document.getElementById("lblWL2").innerHTML = "&nbsp;"

				document.getElementById("lblLEXP1").innerHTML=f.txtLifeExpectancy.value
				document.getElementById("lblLEXP2").innerHTML=secondScenario?f.txtLifeExpectancy.value:"&nbsp;"



				var finalTotalSuperSavings = Math.floor(getFinalTotalSuperSavingsFromJava(0))
				var finalTotalSuperSavingsNew = Math.floor(getFinalTotalSuperSavingsFromJava(1))

				document.getElementById("lblELS0").innerHTML="Estimated lump sum benefit at age "+ getSafeFieldValue(f.txtRetirementAge)
				document.getElementById("lblELS1").innerHTML = removeDecimalPart(formatted_toFixed1(finalTotalSuperSavings, 0, "$"))
				document.getElementById("lblELS2").innerHTML = secondScenario?removeDecimalPart(formatted_toFixed1(finalTotalSuperSavingsNew, 0, "$")):"&nbsp;";
				document.getElementById("lblTBen0").innerHTML="Target benefit at age "+ getSafeFieldValue(f.txtRetirementAge)
				document.getElementById("lblTBen1").innerHTML = removeDecimalPart(formatted_toFixed1(requiredLumpSumAtRetirementAge, 0, "$"))
				document.getElementById("lblTBen2").innerHTML = secondScenario?removeDecimalPart(formatted_toFixed1(requiredLumpSumAtRetirementAgeNew, 0, "$")):"&nbsp;";

				var retSavings1 = -1*((removeCommasDollars(formatted_toFixed1(requiredLumpSumAtRetirementAge, 0, "")) - removeCommasDollars(formatted_toFixed1(finalTotalSuperSavings, 0, ""))))
				var retSavings2 = 0
				if(secondScenario)
					retSavings2 = -1*((removeCommasDollars(formatted_toFixed1(requiredLumpSumAtRetirementAgeNew, 0, "")) - removeCommasDollars(formatted_toFixed1(finalTotalSuperSavingsNew, 0, ""))))
				if(retSavings1 < 0)
					document.getElementById("lblShortFall1").innerHTML = '<SPAN class=red1>'+removeDecimalPart(formatted_toFixed1(retSavings1, 0, "$"))+'</SPAN>'
				else
					document.getElementById("lblShortFall1").innerHTML = removeDecimalPart(formatted_toFixed1(retSavings1, 0, "$"))

				if(secondScenario)
				{
					if( retSavings2 < 0 )
						document.getElementById("lblShortFall2").innerHTML = '<SPAN class=red1>'+removeDecimalPart(formatted_toFixed1(retSavings2, 0, "$"))+'</SPAN>'
					else
						document.getElementById("lblShortFall2").innerHTML = removeDecimalPart(formatted_toFixed1(retSavings2, 0, "$"))
				}
				else
					document.getElementById("lblShortFall2").innerHTML = '&nbsp;'


				if(!secondScenario)
				{
					document.getElementById("lblShortFall_01").style.display = "none";
					if(retSavings1 < 0)
					{
						document.getElementById("lblShortFall_00").style.display = "none";
						document.getElementById("lblShortFall_02").style.display = "";
					}
					else
					{
						document.getElementById("lblShortFall_02").style.display = "none";
						document.getElementById("lblShortFall_00").style.display = "";
					}
				}
				else
				{
					if(retSavings1 < 0 && retSavings2 < 0)
					{
						document.getElementById("lblShortFall_01").style.display = "none";
						document.getElementById("lblShortFall_00").style.display = "none";
						document.getElementById("lblShortFall_02").style.display = "";
					}
					if(retSavings1 >= 0 && retSavings2 >= 0)
					{
						document.getElementById("lblShortFall_01").style.display = "none";
						document.getElementById("lblShortFall_00").style.display = "";
						document.getElementById("lblShortFall_02").style.display = "none";
					}
					if((retSavings1 >= 0 && retSavings2 < 0) || (retSavings1 < 0 && retSavings2 >= 0))
					{
						document.getElementById("lblShortFall_01").style.display = "";
						document.getElementById("lblShortFall_00").style.display = "";
						document.getElementById("lblShortFall_02").style.display = "";
					}
				}

				document.getElementById("lblSBIRET1").innerHTML=(""+formatted_toFixed1(getInvestmentOptionPctg(f), 2, "")+"%");
				var s=jsLRTrim(f.txtSupBenInvRetNew.value)
				if(s.length==2 && s.substring(1,2) == '.')
					s=s.substring(0,1)
				document.getElementById("lblSBIRET2").innerHTML=secondScenario?(formatted_toFixed1(parseFloat(s), 2, "")+"%"):"&nbsp;";
				document.getElementById("lblRBIRET1").innerHTML=(""+formatted_toFixed1(INVEST_RATE_RETBENEFIT, 2, "")+"%");
				s=jsLRTrim(f.txtRtrmntBenInvRetNew.value)
				if(s.length==2 && s.substring(1,2) == '.')
					s=s.substring(0,1)
				document.getElementById("lblRBIRET2").innerHTML=secondScenario?(formatted_toFixed1(parseFloat(s), 2, "")+"%"):"&nbsp;";
				document.getElementById("lblSAL_INFLATION_T31").innerHTML = (""+formatted_toFixed1(INFLATION_SALARY, 2, "")+"%");
				s=jsLRTrim(f.txtSalaryInflationNew.value)
				if(s.length==2 && s.substring(1,2) == '.')
					s=s.substring(0,1)
				document.getElementById("lblSAL_INFLATION_T32").innerHTML = secondScenario?(formatted_toFixed1(parseFloat(s), 2, "")+"%"):"&nbsp;";
				document.getElementById("lblINFLATION_T31").innerHTML = (""+formatted_toFixed1(INFLATION, 2, "")+"%");
				s=jsLRTrim(f.txtInflationNew.value)
				if(s.length==2 && s.substring(1,2) == '.')
					s=s.substring(0,1)
				document.getElementById("lblINFLATION_T32").innerHTML = secondScenario?(formatted_toFixed1(parseFloat(s), 2, "")+"%"):"&nbsp;";

				var sh1 = -myRound(getSafeFieldValue(f.txtLifeExpectancy) - _incomeWillStopAtTheEndOfThisYear, 2)
				var sh2 = 0
				if(secondScenario)
					sh2 = -myRound(getSafeFieldValue(f.txtLifeExpectancy) - _incomeWillStopAtTheEndOfThisYearNew, 2)

				if(sh1 < 0)
					document.getElementById("lblSHORT1").innerHTML = '<SPAN class=red1>'+sh1+'</SPAN>'
				else
					document.getElementById("lblSHORT1").innerHTML = sh1

				if(secondScenario)
				{
					if(sh2 < 0)
						document.getElementById("lblSHORT2").innerHTML='<SPAN class=red1>'+sh2+'</SPAN>'
					else
						document.getElementById("lblSHORT2").innerHTML=sh2
				}
				else
					document.getElementById("lblSHORT2").innerHTML="&nbsp;"


				if(!secondScenario)
				{
					document.getElementById("lblShortFall_11").style.display = "none";
					if(retSavings1 < 0)
					{
						document.getElementById("lblShortFall_10").style.display = "none";
						document.getElementById("lblShortFall_12").style.display = "";
					}
					else
					{
						document.getElementById("lblShortFall_12").style.display = "none";
						document.getElementById("lblShortFall_10").style.display = "";
					}
				}
				else
				{
					if(retSavings1 < 0 && retSavings2 < 0)
					{
						document.getElementById("lblShortFall_11").style.display = "none";
						document.getElementById("lblShortFall_10").style.display = "none";
						document.getElementById("lblShortFall_12").style.display = "";
					}
					if(retSavings1 >= 0 && retSavings2 >= 0)
					{
						document.getElementById("lblShortFall_11").style.display = "none";
						document.getElementById("lblShortFall_10").style.display = "";
						document.getElementById("lblShortFall_12").style.display = "none";
					}
					if((retSavings1 >= 0 && retSavings2 < 0) || (retSavings1 < 0 && retSavings2 >= 0))
					{
						document.getElementById("lblShortFall_11").style.display = "";
						document.getElementById("lblShortFall_10").style.display = "";
						document.getElementById("lblShortFall_12").style.display = "";
					}
				}
				totalGrossPaymentPension = gTotalGrossPaymentPension
				document.getElementById("lblTGROSSPMNT1").innerHTML = formatted_toFixed1(totalGrossPaymentPension, 2, "$")
				totalGrossPaymentBank = gTotalGrossPaymentBank
				document.getElementById("lblTGROSSPMNT2").innerHTML = formatted_toFixed1(totalGrossPaymentBank, 2, "$")
				totalTaxPension = totalTaxPensionNew = totalTaxBank = totalTaxBankNew = 0
				totalTaxPension = gTotalTaxPayableIfTakenAsAPension
				document.getElementById("lblTPAYG1").innerHTML = formatted_toFixed1(totalTaxPension, 2, "$")
				totalTaxBank = gTotalTaxBank
				document.getElementById("lblTPAYG2").innerHTML = formatted_toFixed1(totalTaxBank, 2, "$")
				totalNetPaymentPension = totalGrossPaymentPension - totalTaxPension
				document.getElementById("lblTNETP1").innerHTML = formatted_toFixed1(totalNetPaymentPension, 2, "$")
				totalNetPaymentBank = totalGrossPaymentBank - totalTaxBank
				document.getElementById("lblTNETP2").innerHTML = formatted_toFixed1(totalNetPaymentBank, 2, "$")
				document.getElementById("lblDIFF1").innerHTML = "<B>"+formatted_toFixed1(((0 + removeCommasDollars(formatted_toFixed1(totalNetPaymentPension, 2, ""))) - (0 + removeCommasDollars(formatted_toFixed1(totalNetPaymentBank, 2, "")))), 2, "$")+"</B>"

				if(secondScenario)
				{
					document.getElementById("tab4_row2").style.display = "";
					document.getElementById("tab4_row5").style.display = "";
					document.getElementById("tab4_row7").style.display = "";
					document.getElementById("tab4_row9").style.display = "";
					document.getElementById("tab4_row11").style.display = "";

					totalGrossPaymentPensionNew = gTotalGrossPaymentPensionNew
					document.getElementById("lblTGROSSPMNT11").innerHTML = formatted_toFixed1(totalGrossPaymentPensionNew, 2, "$")
					totalGrossPaymentBankNew = gTotalGrossPaymentBankNew
					document.getElementById("lblTGROSSPMNT22").innerHTML = formatted_toFixed1(totalGrossPaymentBankNew, 2, "$")

					totalTaxPensionNew = gTotalTaxPayableIfTakenAsAPensionNew
					document.getElementById("lblTPAYG11").innerHTML = formatted_toFixed1(totalTaxPensionNew, 2, "$")
					totalTaxBankNew = gTotalTaxBankNew
					document.getElementById("lblTPAYG22").innerHTML = formatted_toFixed1(totalTaxBankNew, 2, "$")
					totalNetPaymentPensionNew = totalGrossPaymentPensionNew - totalTaxPensionNew
					document.getElementById("lblTNETP11").innerHTML = formatted_toFixed1(totalNetPaymentPensionNew, 2, "$")
					totalNetPaymentBankNew = totalGrossPaymentBankNew - totalTaxBankNew
					document.getElementById("lblTNETP22").innerHTML = formatted_toFixed1(totalNetPaymentBankNew, 2, "$")
					document.getElementById("lblDIFF11").innerHTML = "<B>"+formatted_toFixed1(((0 + removeCommasDollars(formatted_toFixed1(totalNetPaymentPensionNew, 2, ""))) - (0 + removeCommasDollars(formatted_toFixed1(totalNetPaymentBankNew, 2, "")))), 2, "$")+"</B>"
				}
				else
				{
					document.getElementById("tab4_row2").style.display = "none";
					document.getElementById("tab4_row5").style.display = "none";
					document.getElementById("tab4_row7").style.display = "none";
					document.getElementById("tab4_row9").style.display = "none";
					document.getElementById("tab4_row11").style.display = "none";
				}
	var hit110Pension_TrueFalse = glHit110Pension_TrueFalse;
	var hit110_atAge_Pension = glHit110_atAge_Pension;
	var hit110_BalanceAt110_Pension = glHit110_BalanceAt110_Pension;
	var hit110Pension_TrueFalseNew = glHit110Pension_TrueFalseNew;
	var hit110_atAge_PensionNew = glHit110_atAge_PensionNew;
	var hit110_BalanceAt110_PensionNew = glHit110_BalanceAt110_PensionNew;
	var hit110Bank_TrueFalse = glHit110Bank_TrueFalse;
	var hit110_atAge_Bank = glHit110_atAge_Bank;
	var hit110_BalanceAt110_Bank = glHit110_BalanceAt110_Bank;
	var hit110Bank_TrueFalseNew = glHit110Bank_TrueFalseNew;
	var hit110_atAge_BankNew = glHit110_atAge_BankNew;
	var hit110_BalanceAt110_BankNew = glHit110_BalanceAt110_BankNew;
	
if((hit110Pension_TrueFalse == true && hit110_atAge_Pension >= 110 && hit110_BalanceAt110_Pension > 0) ||
		(hit110Bank_TrueFalse == true && hit110_atAge_Bank >= 110 && hit110_BalanceAt110_Bank > 0))
{
	if(hit110_BalanceAt110_Pension > 0)
		document.getElementById("lblAccBlnce110Pension").innerHTML = formatted_toFixed1(hit110_BalanceAt110_Pension, 2, "$")
	else
		document.getElementById("lblAccBlnce110Pension").innerHTML = "$0.00"

	if(hit110_BalanceAt110_Bank > 0)
		document.getElementById("lblAccBlnce110Bank").innerHTML = formatted_toFixed1(hit110_BalanceAt110_Bank, 2, "$")
	else
		document.getElementById("lblAccBlnce110Bank").innerHTML = "$0.00"

	document.getElementById("rowT4_2Org").style.display = "";
	document.getElementById("rowT4_2Org2").style.display = "";
	document.getElementById("rowT4_2Org3").style.display = "";
}
if((hit110Pension_TrueFalseNew == true && hit110_atAge_PensionNew >= 110 && hit110_BalanceAt110_PensionNew > 0) ||
		(hit110Bank_TrueFalseNew == true && hit110_atAge_BankNew >= 110 && hit110_BalanceAt110_BankNew > 0))
{
	if(hit110_BalanceAt110_PensionNew > 0)
		document.getElementById("lblAccBlnce110PensionNew").innerHTML = formatted_toFixed1(hit110_BalanceAt110_PensionNew, 2, "$")
	else
		document.getElementById("lblAccBlnce110PensionNew").innerHTML = "$0.00"

	if(hit110_BalanceAt110_BankNew > 0)
		document.getElementById("lblAccBlnce110BankNew").innerHTML = formatted_toFixed1(hit110_BalanceAt110_BankNew, 2, "$")
	else
		document.getElementById("lblAccBlnce110BankNew").innerHTML = "$0.00"

	document.getElementById("rowT4_2New").style.display = "";
	document.getElementById("rowT4_2New2").style.display = "";
	document.getElementById("rowT4_2New3").style.display = "";
}
if(minIncomeKickedIN || minIncomeKickedINNew)
	document.getElementById("rowT4_1").style.display = "";

					showTab(tabNumber);
				}
			else
			{
				if(errT.indexOf("(2)") >= 0)
				{
					showTab(2);
					mySelect(f.txtAfterTaxNew)
				}
				else
				{	
					showTab(1);
					mySelect(f.txtDOB)
				}
				alert(errT)
			}
			}
			else
				;
			}
		else
			alert(sRet)
		}
	}
	else
		;
	}
}
function goToStep5(e,tabNumber)
{
	var f=document.forms.frmName
	if(validStep1(f) && validStep2(f))
	{
			showTab(tabNumber);
	}
}
function validStep1(f)
{
if(validGender(f,true) && validDOB2(f.txtDOB, dateDOC, true) && validRetAge(f, true) && 
		validLifeExpectancy(f, true) && validCareerBreak(f, true) && 
		validSuperAccBalance(f, f.txtSuperAccBalance, true) && 
		validTaxFreeComponent(f, f.txtTaxFreeComponent, true) && 
	validGrossSalary(f, true) && validInvestmentOption(f, true) &&
	validEmplCont1(f, f.txtEmplCont, true) && validAfterTax1(f, f.txtAfterTax, true) && validSalSac1(f, f.txtSalSac, true)	&& 
	validFees(f, true) && validAssetBasedFees(f, true) && validInsurance(f, true))
	{
		resetTo00(f.txtSuperAccBalance)
		resetTo00(f.txtAfterTax)
		resetTo00(f.txtAfterTaxNew)
		resetTo00(f.txtSalSac)
		resetTo00(f.txtSalSacNew)
		resetTo00(f.txtFees)
		resetTo00(f.txtFeesAssetBased)
		resetTo00(f.txtInsurance)
		if(currentTab == 1)
		{
			var sRet = ""
			sRet = setMinMaxAnnualPensionIncomes()
			if(sRet != "")
			{
				showTab(1);
				alert(sRet)
				return false
			}
			else
				return true
		}
		else
			return true
	}
	else
	{
		return false
	}
}
function validStep2(f)
{
	if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavings,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,true) && 
			validPurchaseAP(f,true) && 
			validAnnuityIncome(f))
	{
		if(!scenarioTwoEntered())
		{
			gl_FinalTotalSuperSavingsNew = gl_FinalTotalSuperSavings
			minAnnualPensionIncomeNew = minAnnualPensionIncome
			document.getElementById("lblMinPensionTab3Org").innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")))
			document.getElementById("lblMinPensionTab3New").innerHTML = document.getElementById("lblMinPensionTab3Org").innerHTML
			setEstimatedLumpSumBenefitTab2(document.forms.frmName)
			return true
		}
		else
		{
			if(validAfterTax1(f, f.txtAfterTaxNew, true) && 
					validSalSac1(f, f.txtSalSacNew, true)	&& 
					validSuperBenefitInvestmentReturnNew(f, true) && 
					validRetirementBenefitInvestmentReturnNew(f, true) && 
					validSalaryInflationNew(f, true) && 
					validInflationNew(f, true))
			{
				var sRet = calculateFinalTotalSuperSavingsFromJava(f, false)
				if(sRet != "")
				{
					showTab(3)
					alert(sRet)
					return false
				}
				else
				{
					if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavingsNew,MIN_INV_AMOUNT,MAX_INV_AMOUNT,"",false))
					{
						minAnnualPensionIncomeNew = minAnnualPensionIncomeJJSNew;
						if(minAnnualPensionIncomeNew < 0)
							minAnnualPensionIncomeNew = 0;
						setEstimatedLumpSumBenefitTab2(document.forms.frmName)
						document.getElementById("lblMinPensionTab3Org").innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")))
						document.getElementById("lblMinPensionTab3New").innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2), 2, "")))
						return true
					}
					else
					{
						showTab(3)
						invalidateGraph()
						alert(sTotInv)
						return false
					}
				}
			}
			else
			{
				return false
			}
		}
	}
	else
		return false
}
function validStep3(f)
{
if(scenarioTwoEntered())
{
	if(validAfterTax1(f, f.txtAfterTaxNew, true) && validSalSac1(f, f.txtSalSacNew, true) && 
			validAnnuityIncomeNew(f, true) &&
			validSuperBenefitInvestmentReturnNew(f, true) && 
			validRetirementBenefitInvestmentReturnNew(f, true) && 
			validSalaryInflationNew(f, true) &&
			validInflationNew(f, true))
	{
		if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavingsNew,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,true))
			return true
		else
			return false
	}
	else
		return false
}
else
	return true
}
function validAnnuityIncome(f)
{
	var minInc = myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2)
	if(minInc > 0)
	{
		var field = f.txtRqdIncome
		var sMin = (f.rdPurchaseAllocatedPension[0].checked)?"":("As this calculator does a comparison between a nominated retirement income from a bank account and an allocated pension, the retirement income needs to be greater than the minimum allocated pension prescribed by legislation.")
		sMin = sMin + "The required "+getCmbText(f.cmbIncomeFreq,"l")+  ((f.rdPurchaseAllocatedPension[0].checked)?" pension":" income") + " amount must be at least " + formatted_toFixed1(minInc, 2, "$") + "."
		if(numberValidDecimalNumber(field.value,"", false))
		{
			if(getSafeDecimalFieldValue(field) < minInc)
			{
				showTab(2)
				alert(sMin)
				mySelect(field)
				return false
			}
			else
				return true
		}
		else
		{
			showTab(2)
			if(field.value != "")
				sMin = "Invalid" + ((f.rdPurchaseAllocatedPension[0].checked)?" pension":" income") + " amount entered. Please try again."
			alert(sMin)
			mySelect(field)
			return false
		}
	}
	else
	{
		// just in case:
		showTab(1)
		alert("Minimum " + ((f.rdPurchaseAllocatedPension[0].checked)?"pension":"income") + " amount not set. Please check the input.")
	}
	return false;
}
function validAnnuityIncomeNew(f, _showPrompt)
{
	var minInc = myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2)
	if(minInc > 0)
	{
		var field = f.txtRqdIncomeNew

		var sMin = (f.rdPurchaseAllocatedPension[0].checked)?"":("As this calculator does a comparison between a nominated retirement income from a bank account and an allocated pension, the retirement income needs to be greater than the minimum allocated pension prescribed by legislation.")
		sMin = sMin + "The adjusted "+getCmbText(f.cmbIncomeFreq,"l")+" pension income amount must be at least " + formatted_toFixed1(minInc, 2, "$") + "."

	if(_showPrompt)
	{
		if(!numberValidDecimalNumber(field.value,"Invalid income in retirement. Please try again.", _showPrompt))
		{
			if(document.getElementById('divTab3').style.display == 'none')
				showTab(3)

			mySelect(field)
			return false
		}
	}
	else
	{
			if(!numberValidDecimalNumber(field.value))
				return false
	}
		if(numberValidDecimalNumber(field.value,"", false))
		{
			if(getSafeDecimalFieldValue(field) < minInc)
			{
				if(_showPrompt)
				{
					if(document.getElementById('divTab3').style.display == 'none')
						showTab(3)
					alert(sMin)
					mySelect(field)
				}
				return false
			}
			else
				return true
		}
		else
		{
			if(_showPrompt)
			{
				alert(sMin)
				mySelect(field)
			}
			return false
		}

	}
	else
	{
		if(_showPrompt)
			alert("The adjusted minimum pension income not set. Please check the input.")
	}
	return false;
}
function validGender(f,prompt)
{
	var ret = false;
	if(!f.rdGender[0].checked && !f.rdGender[1].checked)
	{
		if(prompt)
		{
			alert("Please specify gender.")
			location.href='#top1';
		}
	}
	else
		ret=true;
	return ret;
}
function validPurchaseAP(f,prompt)
{
	var ret = false;
	if(!f.rdPurchaseAllocatedPension[0].checked && !f.rdPurchaseAllocatedPension[1].checked)
	{
		if(prompt)
		{
			showTab(2)
			alert("Please specify whether you intend to purchase an allocated pension.")
			location.href='#top1';
		}
	}
	else
		ret=true;
	return ret;
}
function isInt_MinMax1(field,min1,max1)
{
var res=false;
var v=field.value
var int1 = /^\d{1,7}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);

if(ret && v >= min1 && v <= max1)
	res = true;
return res;
}
function isInt_MinMax(field,min1,max1,prompt1)
{
var v=field.value
var int1 = /^\d{1,7}$/;
var reg=new RegExp(int1);
var ret = reg.test(v);

if(ret && v >= min1 && v <= max1)
	return true;
else
{
	switchToDIV(field)
	mySelect(field)
	if(prompt1)
		alert("Please enter a whole number between " + min1 + " and " + max1 +".")
	return false;
}
}
function validRetAge(f, _prompt)
{
	var field = f.txtRetirementAge
	var currAge = Math.ceil(getCurrentAgeNEW2(f.txtDOB, dateDOC))

	var MIN_R_AGE1 = Math.max(currAge + 1, MIN_R_AGE)
	var sAll="Please enter retirement age in whole numbers."
	var sMin="Please enter retirement age between "+MIN_R_AGE1+" and "+MAX_R_AGE+"."
	if(MIN_R_AGE1 == MAX_R_AGE)
		sMin="Based on your date of birth, the retirement age must be "+MIN_R_AGE1+"."
	if(isValidValue77(field,getSafeFieldValue(field),MIN_R_AGE1,MAX_R_AGE,sMin,sMin,sAll, _prompt))
	{
		if(currAge < getSafeFieldValue(field))
			return true
		else
		{
			if(_prompt)
				alert("Current age must be less than retirement age.")
			return false
		}
	}
	else
		return false
}

function validLifeExpectancy(f, _prompt)
{
var field = f.txtLifeExpectancy
var leMin = (1+getSafeFieldValue(f.txtRetirementAge))
var sAll="Please enter life expectancy in whole numbers. Alternatively, please re-enter current age or re-select gender."
var sMin="Life expectancy must be between "+leMin+" and "+MAX_LEXPECT+"."
return (isValidValue77(field,getSafeFieldValue(field),leMin,MAX_LEXPECT,sMin,sMin,sAll, _prompt));
}
function validCareerBreak(f, _prompt)
{
	if(!f.rdCareerBreak[1].checked)
	{
		if((jsLRTrim(f.txtAgeStop.value)=="" && jsLRTrim(f.txtAgeRecommence.value)=="") ||
		(jsLRTrim(f.txtAgeStop.value)=="" && jsLRTrim(f.txtAgeRecommence.value)!="") ||
			(jsLRTrim(f.txtAgeStop.value)!="" && jsLRTrim(f.txtAgeRecommence.value)==""))
		{
			if(_prompt)
			{
				alert("Both stop age and re-commence age must be entered.")
				mySelect(f.txtAgeStop)
			}
			return false
		}
		var currAge = Math.ceil(getCurrentAgeNEW2(f.txtDOB, dateDOC))
		if((currAge+1) >= getSafeFieldValue(f.txtRetirementAge) - 1)
		{
			if(_prompt)
			{
				alert("Based on the details you have entered, no career break can occur. Please adjust your figures.")
				mySelect(f.txtAgeStop)
			}
			return false
		}

		if(jsLRTrim(f.txtAgeStop.value)!="")
		{
			var field = f.txtAgeStop
			var sAll="Please enter stop age in whole numbers."
			var sMin="Please enter stop age between "+(currAge+1)+" and "+(getSafeFieldValue(f.txtRetirementAge) - 1)+"."
			if(!(isValidValue77(field,getSafeFieldValue(field),(currAge+1),(getSafeFieldValue(f.txtRetirementAge) - 1),sMin,sMin,sAll, _prompt)))
				return false;
		}
		if(jsLRTrim(f.txtAgeRecommence.value)!="")
		{
			var field = f.txtAgeRecommence
			var sAll="Please enter re-commence age in whole numbers."
			var sMin="Please enter re-commence age between "+ (getSafeFieldValue(f.txtAgeStop) + 1) +" and "+(getSafeFieldValue(f.txtRetirementAge)-1)+"."
			if(!(isValidValue77(field,getSafeFieldValue(field),(getSafeFieldValue(f.txtAgeStop) + 1),(getSafeFieldValue(f.txtRetirementAge)-1),sMin,sMin,sAll, _prompt)))
				return false;
		}
		var sAge = getSafeFieldValue(f.txtAgeStop)
		var rAge = getSafeFieldValue(f.txtAgeRecommence)
		if(sAge >= rAge)
		{
			if(_prompt)
				alert("Stop age must be less than re-commence age.")
			return false
		}
		if(sAge <= currAge)
		{
			if(_prompt)
				alert("Stop age must be greater than current age.")
			return false
		}
		if(rAge >= getSafeFieldValue(f.txtRetirementAge))
		{
			if(_prompt)
				alert("Re-commence age must be less than retirement age.")
			return false
		}
		if(!f.rdPartTime[1].checked)
		{
			if(validPartTimePctg(f, f.txtPartTimePctg, _prompt) && validAgeFullTimeReturn(f, f.txtAgeFullTimeReturn, _prompt))
				return true
			else
				return false
		}
		else
			return true

	}
	else
		return true
}

function validSuperAccBalance(f, field, _prompt)
{
	resetTo00(field)
	adjustDecimalPoint(field)
	var sMin="Please enter your current super account balance between "+formatted_toFixed1(MIN_SUPACCBAL, 2, "$")+" and "+formatted_toFixed1(MAX_SUPACCBAL, 2, "$")+"."
	var ret = isDecimal_MinMax(field, MIN_SUPACCBAL, MAX_SUPACCBAL, sMin, _prompt)
	if(_prompt && !ret)
		mySelect(field)
	return ret
}
function validTaxFreeComponent(f, field, _prompt)
{
	resetTo00(field)
	adjustDecimalPoint(field)

	MAX_TAXFREE_COMPNENT = getSafeDecimalFieldValue(f.txtSuperAccBalance)
	var sMin = "Please enter tax free component amount between "+formatted_toFixed1(MIN_TAXFREE_COMPNENT, 2, "$")+" and "+formatted_toFixed1(MAX_TAXFREE_COMPNENT, 2, "$")+" ."
	var ret = isDecimal_MinMax(field, MIN_TAXFREE_COMPNENT, MAX_TAXFREE_COMPNENT, sMin, _prompt)
	if(_prompt && !ret)
		mySelect(field)
	return ret
}
function validGrossSalary(f, _prompt)
{
	var field = f.txtGrossSalary
	var cmb = f.cmbGrossSalaryFreq
	var minInc = myMathCeil(MIN_SALARY/cmb.value,2)
	var maxInc = myMathFloor(MAX_SALARY/cmb.value,2)
	var sMin="Please enter yearly gross salary for superannuation purposes between "+formatted_toFixed1(MIN_SALARY, 2, "$")+" and "+formatted_toFixed1(MAX_SALARY, 2, "$")
	if(cmb.value != 1)
		sMin = sMin +" (between "+formatted_toFixed1(minInc, 2, "$")+" and "+formatted_toFixed1(maxInc, 2, "$")+ " per "+getCmbText(cmb,"l")+")."
	else
		sMin = sMin +"."
	var ret1 = isDecimal_MinMax(field, minInc, maxInc, sMin, _prompt)
	if(_prompt && !ret1)
		mySelect(field)
	return ret1
}
function iGetMinPerFrequency(f, cmb, minYearly)
{
	return (Math.ceil(minYearly/cmb.value))
}
function iGetMaxPerFrequency(f, cmb, maxYearly)
{
	return (Math.floor(maxYearly/cmb.value))
}
function dGetMinPerFrequency(f, cmb, minYearly)
{
	return (myMathCeil(minYearly/cmb.value, 2))
}
function dGetMaxPerFrequency(f, cmb, maxYearly)
{
	return (myMathFloor(maxYearly/cmb.value, 2))
}
function setEmployerCont1(f)
{
	var eContMin = 0
	var totalEmplCont = 0
	if(isNaN(jsLRTrim(f.txtGrossSalary.value)))
	{
		;
	}
	else
	{
		var cmb = f.cmbGrossSalaryFreq
		var salary = getYearlySalary(f)
		var salaryPF = getSafeDecimalFieldValue(f.txtGrossSalary)
		var minSal = myMathCeil(MIN_SALARY/cmb.value,2)
		var maxSal = myMathFloor(MAX_SALARY/cmb.value,2)

		if(salaryPF >= minSal && salaryPF <= maxSal)
		{
			if(contsAsDollarAmount(f))
			{
				eContMin = Math.min(myMathCeil(salary*(MIN_EMPLCONT_PCTG/100.0)/f.cmbEmplContFreq.value, 2), myMathFloor(MAX_CONCESSIONAL/f.cmbEmplContFreq.value, 2))
				totalEmplCont = myRound(eContMin*f.cmbEmplContFreq.value, 2)
			}
			else
			{
				eContMin = MIN_EMPLCONT_PCTG
				if(myRound(eContMin/100, 2)*salary > MAX_CONCESSIONAL)
					eContMin = myMathFloor((MAX_CONCESSIONAL/salary)*100,2)
			
				totalEmplCont = myRound((eContMin/100.0)*salary, 2)
			}
		}
	}
	f.txtEmplCont.value = (eContMin == 0)?"":eContMin
}
function getMaxAfterTaxD(f, _field)
{
	return getSafeDecimalFieldValue(_field)
}
function validAfterTax1(f, field, _showPrompt)
{
	var s1, s2 = "The amount of after-tax contributions, for the purposes of this calculator, is limited to 100% of your gross income less PAYG tax. "
	if(jsLRTrim(field.value) == "")
		return true
	if(_showPrompt)
	{
		if(!numberValidDecimalNumber(field.value,"Invalid after-tax contribution "+getDlrPctgString(contsAsDollarAmount(f))+". Please try again.", _showPrompt))
		{
			switchToDIV(field)
			mySelect(field)
			return false
		}
	}
	else
	{
		if(!numberValidDecimalNumber(field.value))
			return false
	}
	var salary = getYearlySalary(f)
	var MAX_DOLLAR1 = MAX_AFTERTAX150K
	var aTaxPossible = MAX_AFTERTAX150K
	var aTaxEntered

	if(contsAsDollarAmount(f))
	{
		MAX_DOLLAR1 = myMathFloor(MAX_DOLLAR1/f.cmbAfterTaxFreq.value, 2)
		aTaxEntered = getSafeDecimalFieldValue(field)*f.cmbAfterTaxFreq.value
		if(aTaxEntered >= MAX_AFTERTAX150K)
		{
			s1 = "The amount of after-tax contributions, for the purposes of this calculator, is capped at "+
						formatted_toFixed1(MAX_AFTERTAX150K, 2, "$")+" per year. Based on the details you have entered, this yearly limit has been exceeded by "+
						formatted_toFixed1((aTaxEntered - MAX_AFTERTAX150K), 2, "$")+
						". You should either change the "+ getCmbText(f.cmbAfterTaxFreq,"l")+
						"ly after-tax contribution amount to less than or equal to "+formatted_toFixed1((myMathFloor(MAX_AFTERTAX150K/f.cmbAfterTaxFreq.value, 2)), 2, "$")+" or check your details and try again."
		}
		else
		{
			if(MAX_DOLLAR1 > 0)
				s1 = s2 + "Please reduce your after-tax contribution to be within the range of $0.00 and "+formatted_toFixed1(MAX_DOLLAR1, 2, "$")+" per "+getCmbText(f.cmbAfterTaxFreq,"l")+"."
			else
				s1 = s2 + "Based on the details you have entered this limit has been exceeded by " + formatted_toFixed1(aTaxEntered, 2, "$") + " ("+formatted_toFixed1(getSafeDecimalFieldValue(field), 2, "$")+" per "+getCmbText(f.cmbAfterTaxFreq,"l")+"). You should either change the after-tax contribution amount to $0.00 or check your details and try again."
		}
		return validDecimalField2(f, field, ((_showPrompt)?s1:""), MIN_DOLLAR, MAX_DOLLAR1);
	}
	else
	{
		var MAX_PCTG1 = myMathFloor((MAX_AFTERTAX150K/salary)*100, 2)
		var aTaxPossiblePctg = myMathFloor((MAX_AFTERTAX150K/salary)*100, 2)
		aTaxEntered = getSafeDecimalFieldValue(field)
		var max150PCTG = myMathFloor((MAX_AFTERTAX150K/salary)*100, 2)
		if(aTaxEntered >= max150PCTG)
		{		
			s1 = "After-tax contributions are capped at "+NON_CONCESSIONAL_MULTIPLE+" times the concessional contributions cap ie "+formatted_toFixed1(MAX_AFTERTAX150K, 2, "$")+" as per legislation (this is equivalent to "+max150PCTG+"% of your gross salary). Based on the details you have entered, this limit has been exceeded by "+
						formatted_toFixed1(myRound((aTaxEntered - max150PCTG), 2), 2, "")+
						"%. You should either change the after-tax contribution amount to less than or equal to "
						+formatted_toFixed1(max150PCTG, 2, "")+"% or check your details and try again."
		}
		else
		{
			if(MAX_PCTG1 > 0)
				s1 = s2 + "Please reduce your after-tax contribution to be within the range of 0.00% and "+formatted_toFixed1(MAX_PCTG1, 2, "")+"%."
			else
				s1 = s2 + "Based on the details you have entered this limit has been exceeded by " + formatted_toFixed1(aTaxEntered, 2, "")+ "%. You should either change the after-tax contribution amount to 0.00% or check your details and try again."
		}

		return validDecimalField2(f, field, ((_showPrompt)?s1:""), MIN_PCTG, MAX_PCTG1);
	}
}
function validSalSac1(f, field, _showPrompt)
{
	var sMin, s2
	if(jsLRTrim(field.value) == "")
		return true
	if(_showPrompt)
	{
		if(!numberValidDecimalNumber(field.value,"Invalid salary sacrifice contribution "+getDlrPctgString(contsAsDollarAmount(f))+". Please try again.", _showPrompt))
		{
			switchToDIV(field)
			mySelect(field)
			return false
		}
	}
	else
	{
			if(!numberValidDecimalNumber(field.value))
				return false
	}
	var salary = getYearlySalary(f)
	var sM2 = "Concessional (salary sacrifice plus SG) contributions are capped at a maximum of $"+removeDecimalPart(MAX_CONCESSIONAL.toLocaleString())+". "
	var emplCont = getEmplContEntered(f)
	if(contsAsDollarAmount(f))
	{
		if(emplCont >= MAX_CONCESSIONAL)
		{
			if(getSafeDecimalFieldValue(field)*f.cmbSalSacFreq.value != 0)
			{
				if(_showPrompt)
				{
					switchToDIV(field)
					alert(sM2 +"Please reduce salary sacrifice contribution dollar amount to $0.00.")
					mySelect(field)
				}
				return false
			}
			else
				return true
		}
		else
		{
			var eContMin = MIN_DOLLAR
			var eContMax = getMAX_SALSAC_Yearly(f);
			sMin = ""
			if(salary < eContMax)
				sMin = "Yearly sacrifice contribution can not be greater than yearly gross salary for super purposes ("+formatted_toFixed1(salary, 2, "$")+"). Please enter "+getCmbText(f.cmbSalSacFreq,"l")+"ly salary sacrifice contribution dollar amount between " + formatted_toFixed1(eContMin, 2, "$")+" and "+formatted_toFixed1(myMathFloor(salary/f.cmbSalSacFreq.value, 2), 2, "$")+"."
			else
			{
				var mn = getNumberFromLabel(formatted_toFixed1(eContMin, 2, "$"))
				var mx = getNumberFromLabel(formatted_toFixed1(myMathFloor(eContMax/f.cmbSalSacFreq.value, 2), 2, "$"))
				if(mn != mx)
					sMin = sM2+ "Please enter "+getCmbText(f.cmbSalSacFreq,"l")+"ly salary sacrifice contribution dollar amount between " + formatted_toFixed1(eContMin, 2, "$")+" and "+formatted_toFixed1(myMathFloor(eContMax/f.cmbSalSacFreq.value, 2), 2, "$")+"."
				else
					sMin = sM2+ "Therefore, the "+getCmbText(f.cmbSalSacFreq,"l")+"ly salary sacrifice contribution dollar amount must be " + formatted_toFixed1(eContMin, 2, "$")+"."
			}

			eContMax = Math.min(eContMax, salary)
			if(!validDecimalField3(f, field, getSafeDecimalFieldValue(field)*f.cmbSalSacFreq.value, ((_showPrompt)?sMin:""), eContMin, eContMax))
				return false
			else
				return true
		}
	}
	else
	{
		var s00 = "Please reduce salary sacrifice contribution percentage of salary to 0.00%."
		if(emplCont >= MAX_CONCESSIONAL)
		{
			if(getSafeDecimalFieldValue(field) != 0)
			{
				if(_showPrompt)
				{
					switchToDIV(field)
					alert(sM2 + s00)
					mySelect(field)
				}
				return false
			}
			else
				return true
		}
		else
		{
			var eContMaxPctg = myMathFloor(getMAX_SALSAC_Yearly(f)/salary*100, 2)
			var sal100 = 100.0;
			if(sal100 < eContMaxPctg)
				s2 = "Yearly sacrifice contribution can not be greater than "+formatted_toFixed1(sal100, 2, "")+"% of yearly gross salary for super purposes. Please enter salary sacrifice contribution percentage between "+formatted_toFixed1(MIN_PCTG, 2, "")+"% and "+formatted_toFixed1(sal100, 2, "")+"%."
			else
			{
				if(myRound(eContMaxPctg, 2) == 0)
					s2 = sM2+s00
				else
					s2 = sM2+("Please enter salary sacrifice contribution percentage between "+formatted_toFixed1(MIN_PCTG, 2, "")+"% and "+formatted_toFixed1(eContMaxPctg, 2, "")+"%.")
			}
			eContMaxPctg = Math.min(eContMaxPctg, sal100)
			
			return (validDecimalField2(f,field, ((_showPrompt)?s2:""), MIN_PCTG, eContMaxPctg))
		}
	}
}
function validEmplCont1(f, field, _showPrompt)
{
	adjustDecimalPoint(field)
	if(_showPrompt)
	{
		if(!numberValidDecimalNumber(field.value, "Invalid employer contribution "+getDlrPctgString(contsAsDollarAmount(f))+". Please try again.", _showPrompt))
		{
			mySelect(field)
			return false
		}
	}
	else
	{
		if(!numberValidDecimalNumber(field.value))
			return false
	}
	var salary = getYearlySalary(f)
	var s50 = "Based on the gross salary you have entered, the yearly concessional employer contribution has to be limited to $"+removeDecimalPart(formatted_toFixed1(MAX_CONCESSIONAL, 2, ""))+"."
	var ecMax, eContMin, eContMax, sMin, eContMaxConcess
	if(contsAsDollarAmount(f))
	{
		eContMin = myMathCeil(salary*(MIN_EMPLCONT_PCTG/100.0)/f.cmbEmplContFreq.value, 2);
		ecMax = myMathFloor((salary)*(MAX_EMPLCONT_PCTG/100.0)/f.cmbEmplContFreq.value, 2)
		eContMaxConcess = myMathFloor(MAX_CONCESSIONAL/f.cmbEmplContFreq.value, 2)

		eContMax = Math.min(ecMax, myMathFloor(MAX_CONCESSIONAL/f.cmbEmplContFreq.value, 2))
		sMin = "Please enter "+getCmbText(f.cmbEmplContFreq,"l")+"ly employer contribution between " + formatted_toFixed1(eContMin, 2, "$")+" and "+formatted_toFixed1(eContMax, 2, "$")+"."
		if(eContMaxConcess <= eContMin)
		{
			if(eContMaxConcess != getSafeDecimalFieldValue(field))
			{
				sMin = s50
				if(f.cmbEmplContFreq.value != 1)
				sMin = sMin + " Therefore, the "+getCmbText(f.cmbEmplContFreq,"l")+"ly employer contribution must be "+formatted_toFixed1(eContMaxConcess, 2, "$") +"."
				if(_showPrompt)
				{
					alert(sMin)
					mySelect(field)
				}
				return false
			}
			else
				return true
		}
		else
		{
			if(!validDecimalField2(f, field, ((_showPrompt)?sMin:""), eContMin, eContMax))
				return false
			else
				return true
		}
	}
	else
	{
		eContMin = MIN_EMPLCONT_PCTG
		ecMax = MAX_EMPLCONT_PCTG
		eContMaxConcess = myMathFloor((MAX_CONCESSIONAL/salary)*100, 2)
		eContMax = Math.min(ecMax, myMathFloor((MAX_CONCESSIONAL/salary)*100, 2))
		if(eContMaxConcess <= eContMin)
		{
			if(eContMaxConcess != getSafeDecimalFieldValue(field))
			{
				sMin = s50 + " Therefore, the employer contribution percentage must be "+formatted_toFixed1(eContMaxConcess, 2, "") +"%."
				if(_showPrompt)
				{
					alert(sMin)
					mySelect(field)
				}
				return false
			}
			else
				return true
		}
		else
		{
			{
				var s2="The employer contribution percentage must be between "+formatted_toFixed1(eContMin, 2, "")+"% and "+formatted_toFixed1(eContMax,2,"")+"%."
				return (validDecimalField2(f,field, ((_showPrompt)?s2:""), eContMin, eContMax))
			}
		}
	}
}
function validFees(f, _prompt)
{
	var field = f.txtFees
	if(jsLRTrim(field.value)=="")
		return true;

	adjustDecimalPoint(field)
	var feesMin = myMathCeil((((getSafeDecimalFieldValue(f.txtGrossSalary))*f.cmbGrossSalaryFreq.value)*(MIN_FEES_PCTG/100.0)/f.cmbFeesFreq.value), 2);
	var feesMax = myMathFloor((((getSafeDecimalFieldValue(f.txtGrossSalary))*f.cmbGrossSalaryFreq.value)*(MAX_FEES_PCTG/100.0)/f.cmbFeesFreq.value), 2);
	var sMin = "Please enter "+getCmbText(f.cmbFeesFreq,"l")+"ly deducted fees between " + formatted_toFixed1(feesMin, 2, "$")+" and "+formatted_toFixed1(feesMax, 2, "$")+"."
	if(!validDecimalField3(f, field, getSafeDecimalFieldValue(field), ((_prompt==true)?sMin:""), feesMin, feesMax))
		return false
	else
		return true
}
function validAssetBasedFees(f, _prompt)
{
	var field = f.txtFeesAssetBased

	if(jsLRTrim(field.value)=="")
		return true;
	adjustDecimalPoint(field)
	var sMin = "Please enter asset based management fee between " + formatted_toFixed1(MIN_ASSETBASEDFEES_PCTG, 2, "")+"% and "+formatted_toFixed1(MAX_ASSETBASEDFEES_PCTG, 2, "")+"%."
	if(!validDecimalField3(f, field, getSafeDecimalFieldValue(field), ((_prompt==true)?sMin:""), MIN_ASSETBASEDFEES_PCTG, MAX_ASSETBASEDFEES_PCTG))
		return false
	else
		return true
}
function validInsurance(f, _prompt)
{
	var field = f.txtInsurance
	if(jsLRTrim(field.value)=="")
		return true;
adjustDecimalPoint(field)
	var insMin = myMathCeil((((getSafeDecimalFieldValue(f.txtGrossSalary))*f.cmbGrossSalaryFreq.value)*(MIN_INSURANCEPREMIUMS_PCTG/100.0)/f.cmbInsuranceFreq.value), 2);
	var insMax = myMathFloor((((getSafeDecimalFieldValue(f.txtGrossSalary))*f.cmbGrossSalaryFreq.value)*(MAX_INSURANCEPREMIUMS_PCTG/100.0)/f.cmbInsuranceFreq.value), 2);

	var sMin = "Please enter "+getCmbText(f.cmbInsuranceFreq,"l")+"ly deducted insurance premiums between " + formatted_toFixed1(insMin, 2, "$")+" and "+formatted_toFixed1(insMax, 2, "$")+"."
	if(!validDecimalField3(f, field, getSafeDecimalFieldValue(field), ((_prompt==true)?sMin:""), insMin, insMax))
		return false
	else
		return true
}
function setCaretAtEnd(input)
{ 
input.focus(); 
if (input.createTextRange)
{ 
	var range = input.createTextRange(); 
	range.collapse(false); 
	range.select(); 
} 
} 
function setCaretAtStart(input)
{ 
input.focus(); 
if (input.createTextRange)
{ 
	var range = input.createTextRange(); 
	range.collapse(true); 
	range.select(); 
} 
} 
function resetTo0(field)
{
	if(jsLRTrim(field.value)=="")
		field.value=0
}
function resetTo00(field)
{
	if(jsLRTrim(field.value)=="")
		field.value = "0.00"
}
function setEmptyFieldTo1(field)
{
	if(jsLRTrim(field.value) == "")
		field.value = 0
}
function showImages()
{
		btnClose.style.display = "";
		btnPrint1.style.display = "";
		btnPrint2.style.display = "";
		btnArrTop.style.display = "";
}
function setEstimatedLumpSumBenefitTab2(f)
{
	document.getElementById("lblEstmtdLSBen0").innerHTML="Estimated lump sum benefit at age "+ getSafeFieldValue(f.txtRetirementAge)



	document.getElementById("lblEstmtdLSBenTab3Org").innerHTML = ("$"+removeDecimalPart(formatted_toFixed1(Math.floor(getFinalTotalSuperSavingsFromJava(0)), 0, "")))
	document.getElementById("lblEstmtdLSBenTab3New").innerHTML = scenarioTwoEntered()?("$"+(removeDecimalPart(formatted_toFixed1(Math.floor(getFinalTotalSuperSavingsFromJava(1)), 0, "")))):document.getElementById("lblEstmtdLSBenTab3Org").innerHTML
	

	setWarning110(f)
}
function resetToDefault_Field(_field, _fieldNew)
{
	var fld = _field.value
	var fldNew = _fieldNew.value

	if(fld != fldNew)
	{
		_fieldNew.value = _field.value
		return true
	}
	else
		return false
}
function resetToDefault(f)
{
	f.txtAfterTaxNew.value=(f.txtAfterTax.value=="")?0:(f.txtAfterTax.value)
	f.txtSalSacNew.value=(f.txtSalSac.value=="")?0:(f.txtSalSac.value)
	f.txtRqdIncomeNew.value=f.txtRqdIncome.value
	f.txtSupBenInvRetNew.value=formatted_toFixed1(getInvestmentOptionPctg(f), 2, "")

	f.txtRtrmntBenInvRetNew.value=formatted_toFixed1(INVEST_RATE_RETBENEFIT, 2, "")
	f.txtSalaryInflationNew.value=formatted_toFixed1(INFLATION_SALARY, 2, "")
	f.txtInflationNew.value=formatted_toFixed1(INFLATION, 2, "")

f.txtSupBenInvRet.value = f.txtSupBenInvRetNew.value
f.txtRtrmntBenInvRet.value = f.txtRtrmntBenInvRetNew.value
f.txtSalaryInflation.value = f.txtSalaryInflationNew.value
f.txtInflation.value = f.txtInflationNew.value
f.txtInsuranceInflation.value = f.txtInflation.value
f.txtInsuranceInflationNew.value = f.txtInflationNew.value
	document.getElementById("lblMinPensionTab3New").innerHTML = document.getElementById("lblMinPensionTab3Org").innerHTML
	document.getElementById("lblEstmtdLSBenTab3New").innerHTML = document.getElementById("lblEstmtdLSBenTab3Org").innerHTML
}
function setLabels(f)
{
document.getElementById("lblMinInc").innerHTML="Minimum "+getCmbText(f.cmbIncomeFreq,"l")+" pension (based on age)"
document.getElementById("lblNomInc").innerHTML="Nominate your required "+getCmbText(f.cmbIncomeFreq,"l")+" <SPAN id=span2>pension</SPAN> in retirement"
setLblPensionIncome(f)
}
function alertFromJava(s,ind)
{
	if(ind==2)
		goToStep2(this,2)
	else
		showTab(1)

	alert(s)
}
function limit4Dec2(field)
{
// find if '.' entered
var li = (field.value).indexOf(".")
if(li<0)
{
	if((field.value).length > 6)
		field.value=(field.value).substring(0,6)
}
else
{
	var s1 = (field.value).substring(0, li)
	var s2 = ((field.value).substring(li+1,(field.value).length))
	if(s2.length > 4)
		field.value=s1+"."+s2.substring(0,4)
	//else
		//field.value=s1+"."+s2
}
}
function validDecimalField2(f,fld, prompt, minV,maxV)
{
	var ret=false
	var field=fld;
	sAll = prompt
// find if '.' entered
var li = (field.value).indexOf(".")
	// if last character is '.'
	if(li >= 0 && (field.value).charAt((field.value).length - 1) == '.')
	{
		if(!isNaN((field.value).substring(0,li)))
		{
			var n=parseInt((field.value).substring(0,li),10)
			if(!(n >= minV && n <= maxV))
			{
				;//field.value=""
			}
			else
				ret=true
		}
		else
			;//field.value=""

		if(!ret && sAll!="")
			alert(sAll)
	}
	else
	{
		if(!isDecimal_MinMax(field,minV,maxV,sAll,(sAll==""?false:true)))
			;//field.value=""
		else
			ret=true
	}

	if(!ret && sAll!="") mySelect(field)
	return ret
}

function setLifeExpectancy(f)
{
	var field = f.txtRetirementAge
	f.txtLifeExpectancy.value=""
	if((f.rdGender[0].checked || f.rdGender[1].checked) && isInt(field.value) && (getSafeFieldValue(field) >= MIN_R_AGE && getSafeFieldValue(field) <= MAX_R_AGE))
	{
		var le = Math.floor(getLifeExpectancyFactor2005_2007(booleanFemale, getSafeFieldValue(f.txtRetirementAge)))
		f.txtLifeExpectancy.value=(le+getSafeFieldValue(f.txtRetirementAge))
	}
}
function validFinalTotalSuperSavings(field,min1,max1,prompt0,prompt1)
{
var v=field.value
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
{
	if(prompt1)
		alert(prompt0)
	return false;
}
}
function validFinalTotalSuperSavings1(_value, min1, max1, prompt0, prompt1)
{
var v=_value
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
{
	if(prompt1)
		alert(prompt0)
	return false;
}
}
function setNavigatorsName()
{
navigator_appName=""
navigator_appName=navigator.appName
}
function showGrossIncome(t)
{
var x = document["grossIncomePM"].src
hideDIVs()

	if(x == grossIncomeP.src)
	{
		document["grossIncomePM"].src = grossIncomeM.src;
		document.getElementById("divGI").style.display = "";
	}
	else
	{
		document["grossIncomePM"].src = grossIncomeP.src;
		document.getElementById("divGI").style.display = "none";
	}
}
function hideDIVs()
{
document.getElementById("divGI").style.display = "none";
document["grossIncomePM"].src = grossIncomeP.src;
}
function jsLRTrim(s)
{
	return s.replace(/(^\s+)|(\s+$)/g, "");
}
function initialise()
{
try
{
	var f=document.forms.frmName
	//Initialise anything here
f.txtFees.value = formatted_toFixed1(DEFAULT_FEES_PER_WEEK, 2, "")
f.txtInsurance.value = ''//090810 start with emty and set based on DOB formatted_toFixed1(DEFAULT_INSURANCE_PER_WEEK, 2, "")

f.txtSupBenInvRetNew.value = formatted_toFixed1(getInvestmentOptionPctg(f), 2, "")
f.txtRtrmntBenInvRetNew.value = formatted_toFixed1(INVEST_RATE_RETBENEFIT, 2, "")
f.txtSalaryInflationNew.value = formatted_toFixed1(INFLATION_SALARY, 2, "")
f.txtInflationNew.value = formatted_toFixed1(INFLATION, 2, "")

f.txtSupBenInvRet.value = f.txtSupBenInvRetNew.value
f.txtRtrmntBenInvRet.value = f.txtRtrmntBenInvRetNew.value
f.txtSalaryInflation.value = f.txtSalaryInflationNew.value
f.txtInflation.value = f.txtInflationNew.value
//280710:
f.txtInsuranceInflation.value = f.txtInflation.value
f.txtInsuranceInflationNew.value = f.txtInflationNew.value
f.txtFeesAssetBased.value = formatted_toFixed1(DEFAULT_ASSETBASEDFEE_PCTG, 2, "")
CONCESS_LIMIT_DATE = new MyDate4(2012, 6, 30)
sCONCESS_LIMIT_DATE = CONCESS_LIMIT_DATE.get_sDD_MM_YYYY();
dateconcessDate = cloneDate(CONCESS_LIMIT_DATE)

setDOC()

COCONT_ENDOFTRANSITION_DATE = new MyDate4(2015, 7, 1)
sCOCONT_ENDOFTRANSITION_DATE = COCONT_ENDOFTRANSITION_DATE.get_sDD_MM_YYYY();

//240211:
APPLY_MIN_INCOME = APPLY_MIN_INCOME_NO// S&P
//280311 for CARE S&P:
APPLY_MIN_INCOME = APPLY_MIN_INCOME_YES

CALCULATE_YELLOW_RANGE = CALCULATE_YELLOW_RANGE_NO

setNavigatorsName()
setGenderBooleanFemale(f)
setDefaultInsuranceAssumptions()
}
catch(e)
{
	alert(e)
}
}
function scenarioTwoEntered()
{
	var f=document.forms.frmName
	if(
				originalEqualNew(f.txtAfterTax.value, f.txtAfterTaxNew.value) && 
				originalEqualNew(f.txtSalSac.value, f.txtSalSacNew.value) && 
				originalEqualNew(f.txtRqdIncome.value, f.txtRqdIncomeNew.value) && 

				originalEqualNew((""+getInvestmentOptionPctg(f)), f.txtSupBenInvRetNew.value) && 
				originalEqualNew((""+INVEST_RATE_RETBENEFIT), f.txtRtrmntBenInvRetNew.value) && 
				originalEqualNew((""+INFLATION_SALARY), f.txtSalaryInflationNew.value) && 
				originalEqualNew((""+INFLATION), f.txtInflationNew.value) &&
				originalEqualNew((""+AWOTE), getAWOTENew(f))
		)
		return false;
	else
		return true;
}
function openInMain(page1)
{
try
{
	(window.opener).location=page1
	window.opener.focus()
}
catch(e)
{
	msgWindow1=null;
	msgWindow1=window.open(page1,'mainWindow');
	self.close()
}
}
function isDecimal_MinMax(field,min1,max1,prompt0,prompt1)
{
var v=field.value
//var int1 = /^\d{1,2}(\.\d{1,})?$/;
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
{
	switchToDIV(field)
	if(prompt1)
		//alert("Please enter a number between " + min1 + " and " + max1 +".")
		alert(prompt0)
	return false;
}
}
function openWin(page1)
{
try
{
		msgW.close()
		msgW=null
}
catch(e)
{}

try
{
	msgW=null;
	msgW=window.open(page1,'CSF_Window');
	msgW.focus()
}
catch(e)
{}
}
function setCursorHand(e)
{
	e.style.cursor = "pointer";
}
function setActiveTab(e,s)
{
	if(e.className == 'active')
		e.className='active hov'
	else
		e.className='hov'
	setCursorHand(e);
	showStatus(s)
}
function setInactiveTab(e)
{
	if((e.className).indexOf("active") < 0)
		e.className=''
	else
		e.className='active'
	showStatus('')
}
function showStatus(s)
{
	window.status=s;
	return true;
}
function stopGIF(stopIt)
{
if(stopIt)
{
document.getElementById("loading").style.display = "none";
document.getElementById("loading").src = null;
}
else
{
;
}
}
function accepted()
{
s=1
document.getElementById("divIntro").style.display = "";
document.getElementById("divIntro1").style.display = "none";
document.getElementById("divIntro2").style.display = "";
document.getElementById("divHowToUse").style.display = "";
document.getElementById("divAccept").style.display = "none";
document.getElementById("topbar").style.display = "none";
document.getElementById("tblAssumptions").style.display = "none";
document.getElementById("imgAssumption").style.display = "";
document.getElementById("tblDisclaimer").style.display = "none";
document.getElementById("imgDisclaimer").style.display = "";
	showTab(1);
	window.location.href="#top0"
	fcs = true
}
function notAccepted()
{
if(confirm("You cannot access the calculator unless you accept the Assumptions and Disclaimer. Click on 'OK' to close the calculator or 'Cancel' to return to the Assumptions and Disclaimer."))
{
	window.close()
}
}
/***********************************************
* Floating Top Bar script- ?Dynamic Drive (www.dynamicdrive.com)
* Sliding routine by Roy Whittle (http://www.javascript-fx.com/)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var persistclose=0 //set to 0 or 1. 1 means once the bar is manually closed, it will remain closed for browser session
var startX = 0 //set x offset of bar in pixels
var startY = 10 //set y offset of bar in pixels
var verticalpos="fromtop" //enter "fromtop" or "frombottom"

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function closebar()
{
if (persistclose)
document.cookie="remainclosed=1"
document.getElementById("topbar").style.visibility="hidden"
}
function staticbar()
{
	barheight=document.getElementById("topbar").offsetHeight
	barwidth=document.getElementById("topbar").offsetWidth
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	var d = document;
	function ml(id){
		var el=d.getElementById(id);
		if (!persistclose || persistclose && get_cookie("remainclosed")=="")
			el.style.visibility="visible"
		if(d.layers)
			el.style=el;
		el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
		el.x = ns ? startX + innerWidth/2 - 8 - barwidth/2 : startX + iecompattest().scrollLeft + document.body.clientWidth/2 - barwidth/2

		if (verticalpos=="fromtop")
		el.y = startY;
		else{
		el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
		el.y -= startY;
		}
		return el;
	}

	window.stayTopLeft=function(){
		var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
		if (verticalpos=="fromtop")
		{
			var pY = ns ? pageYOffset : iecompattest().scrollTop;
			ftlObj.y += (pY + startY - ftlObj.y)/8;
		}
		else
		{
			var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
			ftlObj.y += (pY - startY - ftlObj.y)/8;
			ftlObj.x = ns ? startX + innerWidth/2 - 8 - barwidth/2 : startX + iecompattest().scrollLeft + document.body.clientWidth/2 - barwidth/2
		}
		ftlObj.sP(ftlObj.x, ftlObj.y);
		setTimeout("stayTopLeft()", 10);
	}
	ftlObj = ml("topbar");
	stayTopLeft();
}

if (window.addEventListener)
	window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
	window.attachEvent("onload", staticbar)
else if (document.getElementById)
	window.onload=staticbar

function cursorHU(e)
{
	e.style.cursor = "pointer";
	e.className='hrHoover1';
}
function cursorHU0(e)
{
	e.className='hrHoover0';
}
function limitNoDecimalPlaces(field, n)
{
// find if '.' entered
var li = (field.value).indexOf(".")
if(li >= 0)
{
	var s1 = (field.value).substring(0, li)
	var s2 = ((field.value).substring(li+1,(field.value).length))
	if(s2.length > n)
		field.value=s1+"."+s2.substring(0,n)
}
}
function myRound(number,dp)
{
return Math.round(number*Math.pow(10,dp))/Math.pow(10,dp);
}
function myMathFloor(number,dp)
{
return myRound((Math.floor(number*Math.pow(10,dp)))/Math.pow(10,dp),dp)
}
function myMathCeil(number,dp)
{
return myRound((Math.ceil(number*Math.pow(10,dp)))/Math.pow(10,dp),dp)
}
function validDecimalField2_11_1(f, fld, prompt, minV, maxV)
{
	var ret=false
	var field=fld;
	sAll = prompt
// find if '.' entered
var li = (field.value).indexOf(".")
	// if last character is '.'
	if(li >= 0 && (field.value).charAt((field.value).length - 1) == '.')
	{
		if(!isNaN((field.value).substring(0,li)))
		{
			var n=parseInt((field.value).substring(0,li),10)
			if(!(n >= minV && n <= maxV))
			{
				field.value=""
			}
			else
				ret=true
		}
		else
			field.value=""

		if(!ret && sAll!="")
			alert(sAll)
	}
	else
	{
		if(!isDecimal_MinMax11(field,minV,maxV,sAll,(sAll==""?false:true)))
		{
			//if(minV == 0)
			//	field.value=""
			;
		}	
		else
			ret=true
	}
	return ret
}
function isDecimal_MinMax11(field,min1,max1,prompt0,prompt1)
{
var v=field.value
//var int1 = /^\d{1,2}(\.\d{1,})?$/;
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
	return false;
}

function populate()
{
if(_DEBUG1())
{
var f=document.forms.frmName
f.rdGender[0].checked=true
f.txtDOB.value="30/06/199"
f.txtRetirementAge.value=55
f.txtLifeExpectancy.value=85
f.txtSuperAccBalance.value=250000
f.txtTaxFreeComponent.value=0
f.txtGrossSalary.value=90000
f.txtAfterTax.value=0
selectCmbOption(f, f.cmbAfterTaxFreq, "w")
f.txtSalSac.value=0
f.cmbSalSacFreq.selectedIndex = getCmbIndex(f.cmbSalSacFreq, "w")
f.txtEmplCont.value=155.77
f.cmbEmplContFreq.selectedIndex = getCmbIndex(f.cmbEmplContFreq, "w")
f.txtFees.value=1.50
f.txtFeesAssetBased.value=0.20
f.txtInsurance.value=3.00

f.txtRqdIncome.value=2700

//060810:
setConcessionalLimits2(document.forms.frmName, dateDOC);setRemainingWorkingYears(document.forms.frmName);
selectGender(0)
selectGender(1)
resetToDefault(document.forms.frmName)
}
}
//010810:
function formatted_toFixed1(_value, np, _sign)
{
// _value has to be a number;
// use getSafeDecimalFieldValue(field) or getSafeFieldValue(field) to pass in _value parameter
try
{
	return formatCurrency1(_value.toFixed(np), _sign)
}
catch(e)
{
	// 010210MZG: needed because of Chrome bug
	return formatCurrency1(_value, _sign)
}
}
function formatCurrency1(num, _sign)
{
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + _sign + num + '.' + cents);
}
function removeCommasDollars(strValue)
{
  var objRegExp = /,|\$|%/g; //search for commas or $ sign globally
  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}
function fixCommasDollarSign(field)
{
field.value = removeCommasDollars(field.value)
}
function fixCommasDollarSign2(field)
{
var in1 = field.value
var out1 = removeCommasDollars(in1)
field.value = out1
if(in1 != out1)
	return true
else
	return false
}
function fixCommasDollarSignAll()
{
	// find all INPUT txt boxes; for each, remove '$' and ','; for each, if there is onkeyup event, execute it
	var eleObjArr=document.getElementsByTagName("input");
	
	var excludeField = document.getElementById("txtGrossSalary")
	
	for(var i = 0; i < eleObjArr.length; i++)
	{
		if(eleObjArr[i] != excludeField)
		{
			fixCommasDollarSign(eleObjArr[i])
			if(eleObjArr[i].getAttribute("onkeyup") != null)
			{
				eleObjArr[i].onkeyup()
			}
		}
	}
}
function dollarOrPctgCont(_this)
{
	var f=document.forms.frmName
	f.txtAfterTax.value=""
	f.txtSalSac.value=""
	f.txtEmplCont.value=""
	resetToDefault(f)

	document.getElementById("spanAT1").style.visibility="hidden"
	document.getElementById("spanAT3").style.display = "none";
	document.getElementById("spanAT4_1").style.display = "none";
	document.getElementById("spanAT4_2").style.display = "none";
	document.getElementById("spanSS1").style.visibility="hidden"
	document.getElementById("spanSS2").style.display = "none";
	document.getElementById("spanSS3").style.display = "none";
	document.getElementById("spanSS4_1").style.display = "none";
	document.getElementById("spanSS4_2").style.display = "none";
	document.getElementById("spanEC1").style.visibility="hidden"
	document.getElementById("spanEC2").style.display = "none";
	document.getElementById("spanEC3").style.display = "none";
	document.getElementById("spanEC4_1").style.display = "none";
	document.getElementById("spanEC4_2").style.display = "none";

	if(_this.value == _DOLLAR)
	{
		document.getElementById("spanAT1").style.visibility="visible"
		document.getElementById("spanAT3").innerHTML = "&nbsp;per&nbsp;";
		document.getElementById("spanAT3").style.display = "";
		document.getElementById("spanAT4_1").style.display = "";
		f.cmbAfterTaxFreq.selectedIndex=0
		document.getElementById("spanSS1").style.visibility="visible"
		document.getElementById("spanSS2").style.display = "";
		document.getElementById("spanSS3").innerHTML = "&nbsp;per&nbsp;";
		document.getElementById("spanSS3").style.display = "";
		document.getElementById("spanSS4_1").style.display = "";
		f.cmbSalSacFreq.selectedIndex=0
		document.getElementById("spanEC1").style.visibility="visible"
		document.getElementById("spanEC2").style.display = "";
		document.getElementById("spanEC3").innerHTML = "&nbsp;per&nbsp;";
		document.getElementById("spanEC3").style.display = "";
		document.getElementById("spanEC4_1").style.display = "";
		f.cmbEmplContFreq.selectedIndex=0
	}
	else
	{
		document.getElementById("spanAT3").innerHTML = "&nbsp;%";
		document.getElementById("spanAT3").style.display = "";
		document.getElementById("spanAT4_2").style.display = "";
		document.getElementById("spanSS2").style.display = "";
		document.getElementById("spanSS3").innerHTML = "&nbsp;%";
		document.getElementById("spanSS3").style.display = "";
		document.getElementById("spanSS4_2").style.display = "";
		document.getElementById("spanEC2").style.display = "";
		document.getElementById("spanEC3").innerHTML = "&nbsp;%";
		document.getElementById("spanEC3").style.display = "";
		document.getElementById("spanEC4_2").style.display = "";
	}

setEmployerCont1(f)

	mySelect(f.txtAfterTax)
}
function setAfterTax1(f, prevATax, prevATaxFreq)
{
	var previousContsAsDollarAmount = (!contsAsDollarAmount(f))

	if(previousContsAsDollarAmount)
		f.txtAfterTax.value = myRound(100*(prevATax*prevATaxFreq)/getYearlySalary(f), 2)
	else
		f.txtAfterTax.value = myRound((prevATax/100.0)*getYearlySalary(f), 2)
}
function setSalSac1(f, prevSalSac, prevSalSacFreq)
{
	var previousContsAsDollarAmount = (!contsAsDollarAmount(f))

	if(previousContsAsDollarAmount)
		f.txtSalSac.value = myRound(100*(prevSalSac*prevSalSacFreq)/getYearlySalary(f), 2)
	else
		f.txtSalSac.value = myRound((prevSalSac/100.0)*getYearlySalary(f), 2)
}
function checkDlrPctgCont(i)
{
	document.forms.frmName.rdDollarPercentageCont[i].click()
}
function contsAsDollarAmount(f)
{
	return f.rdDollarPercentageCont[0].checked
}
function adjustDecimalPoint(field)
{
	if((field.value).indexOf(".")==0)
		field.value="0"+(field.value)
}
function setEmptyFieldTo0(field)
{
	var x=0
	if(jsLRTrim(field.value)=="")
		x=0
	else
		x = field.value
	return x;
}
function numberValid2(_val, _sPrompt, _promptYesNo)
{
	if(isNaN(_val))
	{
		if(_promptYesNo)
			alert(_sPrompt)
	}
	return !isNaN(_val)
}
function getDlrPctgString(trueFalse)
{
return ((trueFalse)?"dollar amount":"percentage")
}
function getYearlySalary(f)
{
	return myRound(getSafeDecimalFieldValue(f.txtGrossSalary)*f.cmbGrossSalaryFreq.value, 2)
}
function numberOfChars(s, chr)
{
	var ind = 0
	for(var i = 0; i < s.length; i++)
	{
		if(s.charAt(i) == chr)
			ind++;
	}
	return ind
}
function getEmplContEntered(f)
{
	if(contsAsDollarAmount(f))
		return myMathFloor(getSafeDecimalFieldValue(f.txtEmplCont)*f.cmbEmplContFreq.value, 2)
	else
		return myMathFloor(((getSafeDecimalFieldValue(f.txtEmplCont)/100.0)*getYearlySalary(f)), 2)
}
function getMAX_SALSAC_Yearly(f)
{
	var sgc = getEmplContEntered(f)
	return Math.max(myMathFloor(MAX_CONCESSIONAL - sgc, 2), 0)
}
function showCareerBreak(f)
{
	if(document.forms.frmName.rdCareerBreak[0].checked)
	{
		document.getElementById("divCB").style.display = "";
		mySelect(f.txtAgeStop)
	}
	else
	{
		f.txtAgeStop.value=""
		f.txtAgeRecommence.value=""
		f.txtPartTimePctg.value=""
		f.txtAgeFullTimeReturn.value=""

		document.getElementById("divCB").style.display = "none";
	}
	selectPartTime(1)
}
function selectCBreak(i)
{
	document.forms.frmName.rdCareerBreak[i].click()
}
function selectPartTime(i)
{
	document.forms.frmName.rdPartTime[i].click()
}
function showPartTime(f)
{
	if(document.forms.frmName.rdPartTime[0].checked)
	{
		document.getElementById("divPartTimePctg").style.display = "";
		mySelect(f.txtPartTimePctg)
	}
	else
	{
		f.txtPartTimePctg.value=""
		f.txtAgeFullTimeReturn.value=""
		document.getElementById("divPartTimePctg").style.display = "none";
	}
}
function validDate(field)
{
var ret=false;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var strDate=field.value;

var intDay, intMonth, intYear

	if(strDate.indexOf(SEPARATOR) != -1)
	{
		strDateArray = strDate.split(SEPARATOR);
		if (strDateArray.length == 3)
		{
			strDay = jsLRTrim(strDateArray[0]);
			strMonth = jsLRTrim(strDateArray[1]);
			strYear = jsLRTrim(strDateArray[2]);
			if(strYear.length!=4)
				return false

			if(isNaN(strDay) || isNaN(strMonth) || isNaN(strYear))
				return false

			intDay = parseInt(strDay, 10);
			intMonth = parseInt(strMonth, 10);
			intYear = parseInt(strYear, 10);

			if(isInt(intDay) && isInt(intMonth) && isInt(intYear))
			{
				if(intMonth <= 12 && intMonth >= 1)
				{
					if((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1))
						return false;

					if((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1))
						return false;

					if(intMonth == 2)
					{
						if(intDay >= 1)
						{
							if(LeapYear(intYear) == true)
							{
								if(intDay > 29)
									return false;
							}
							else
							{
								if(intDay > 28)
									return false;
							}
						}
						else
							return false
					}
					ret=true
				}
			}
		}
	}
	return ret
}
function LeapYear(intYear)
{
	if(intYear % 100 == 0)
	{
		if(intYear % 400 == 0)
			return true;
	}
	else
	{
		if((intYear % 4) == 0)
			return true;
	}
	return false;
}
function selectGender(i)
{
	document.forms.frmName.rdGender[i].click()
}
function selectPAP(i)
{
	document.forms.frmName.rdPurchaseAllocatedPension[i].click()
}
function setPensionOrIncome(f)
{
	if(document.forms.frmName.rdPurchaseAllocatedPension[1].checked)
	{
		document.getElementById("rowMinPension1").style.display = "none";
		document.getElementById("rowMinPension2").style.display = "none";
	}
	else
	{
		document.getElementById("rowMinPension1").style.display = "";
		document.getElementById("rowMinPension2").style.display = "";
	}
	setLblPensionIncome(f)
}
function setLblPensionIncome(f)
{
	if(document.forms.frmName.rdPurchaseAllocatedPension[1].checked)
	{
		document.getElementById("span1").innerHTML = "income"
		document.getElementById("span2").innerHTML = "income"
	}
	else
	{
		document.getElementById("span1").innerHTML = "pension"
		document.getElementById("span2").innerHTML = "pension"
	}
}
function validPartTimePctg(f, field, _prompt)
{
	field.value = setEmptyFieldTo0(field)
	adjustDecimalPoint(field)
	var sMin="Please enter the % of full-time salary when working part-time between "+MIN_PARTTIME_PCTG+"% and "+MAX_PARTTIME_PCTG+"%."
	return validDecimalField3(f, field, getSafeDecimalFieldValue(field), ((_prompt)?sMin:""), MIN_PARTTIME_PCTG, MAX_PARTTIME_PCTG)
}
function validAgeFullTimeReturn(f, field, _prompt)
{
	if(isNaN(parseFloat(field.value)))
	{
		alert("Please enter the age you intend to return to full-time work in whole numbers.")
		mySelect(field)
		return false
	}
	else
	{
			var m1 = getSafeFieldValue(f.txtAgeRecommence) + 1
			var m2 = getSafeFieldValue(f.txtRetirementAge) - 1
			if(getSafeFieldValue(field) <= getSafeFieldValue(f.txtAgeRecommence))
			{
					alert("The age you intend to return to full-time work must be greater than the age returning from break. Please check your figures.")
					mySelect(field)
					return false
			}
			if(getSafeFieldValue(field) >= getSafeFieldValue(f.txtRetirementAge))
			{
				alert("The age you intend to return to full-time work must be less than the retirement age. Please check your figures.")
				mySelect(field)
				return false
			}

			var sAll="Please enter the age you intend to return to full-time work in whole numbers."
			var sMin="Please enter the age you intend to return to full-time work between "+m1+" and "+m2+"."
			if(!(isValidValue77(field, getSafeFieldValue(field), m1, m2, sMin, sMin, sAll, _prompt)))
			{
				return false;
			}
			else
				return true
	}
}
function validInvestmentOption(f, _prompt)
{
var x = document.forms.frmName.cmbInvestmentOption.value
if(x == "CP")
{
	if(validSuperBenefitInvestmentReturn(f, _prompt))
		return true
	else
		return false
}
else
	return true
}
function reSetMinMaxAnnualPensionIncomes()
{
		minAnnualPensionIncome = 0;
		document.getElementById("lblMinPension_Tab2").innerHTML='<B>$' + _nbsp + minAnnualPensionIncome+".00</B>";
		document.getElementById("lblMinPensionTab3Org").innerHTML = ("$"+minAnnualPensionIncome+".00");
		document.getElementById("lblEstmtdLSBenTab3Org").innerHTML = "$0.00"
}
function selectCmbOption(f, cmb, firtsLetter)
{
cmb.selectedIndex = getCmbIndex(cmb, firtsLetter)
}

function enableDisableChoicePlus(f)
{
var x = document.forms.frmName.cmbInvestmentOption.value
MIN_PCTG_SUPERBENEFIT = getMinPctgSuperBenefit()
MAX_PCTG_SUPERBENEFIT = getMaxPctgSuperBenefit()

if(x == "CP")
{
	document.getElementById("sp99").innerHTML = MIN_PCTG_SUPERBENEFIT+"% - "+MAX_PCTG_SUPERBENEFIT+"%"
	document.getElementById("divChoicePlus").style.display = "";
	mySelect(f.txtChoicePlusInvRate)
}
else
{
	f.txtChoicePlusInvRate.value=""
	document.getElementById("divChoicePlus").style.display = "none";
	f.txtSupBenInvRetNew.value = formatted_toFixed1(getInvestmentOptionPctg(f), 2, "")
	f.txtSupBenInvRet.value = f.txtSupBenInvRetNew.value
}
}
function getInvestmentOptionPctg(f)
{
	var ret = 0.0
	var x = f.cmbInvestmentOption.value

	if(x == "CG")
		ret = INVEST_RATE_SUPBENEFIT_CG
	else if(x == "CS")
		ret = INVEST_RATE_SUPBENEFIT_CS
	else if(x == "B")
		ret = INVEST_RATE_SUPBENEFIT_B
	else if(x == "G")
		ret = INVEST_RATE_SUPBENEFIT_G
	else if(x == "CP")
		ret = getSafeDecimalFieldValue(f.txtChoicePlusInvRate)

	return ret
}
function setRemainingWorkingYears(f)
{
	var ret = 0;
	var currAge
if(validDOB2(f.txtDOB, dateDOC, false))
{
	currAge = getCurrentAgeNEW2(f.txtDOB, dateDOC)

	if(isInt(f.txtRetirementAge.value) && (getSafeFieldValue(f.txtRetirementAge) >= MIN_R_AGE && getSafeFieldValue(f.txtRetirementAge) <= MAX_R_AGE) && (Math.ceil(currAge) < getSafeFieldValue(f.txtRetirementAge)) && 
		((jsLRTrim(f.txtAgeStop.value)=="" && jsLRTrim(f.txtAgeRecommence.value)=="") || (isInt(f.txtAgeStop.value) && isInt(f.txtAgeRecommence.value))))
	{
		if(isInt(f.txtAgeStop.value) && isInt(f.txtAgeRecommence.value))
		{
			if(Math.ceil(currAge) < getSafeFieldValue(f.txtAgeStop) &&
				getSafeFieldValue(f.txtAgeStop) < getSafeFieldValue(f.txtAgeRecommence) &&
				getSafeFieldValue(f.txtAgeRecommence) < getSafeFieldValue(f.txtRetirementAge))
			ret = getRemainingWorkingYears(Math.ceil(currAge),getSafeFieldValue(f.txtRetirementAge),getSafeFieldValue(f.txtAgeStop),getSafeFieldValue(f.txtAgeRecommence))
		}
		else
			ret = getRemainingWorkingYears(Math.ceil(currAge),getSafeFieldValue(f.txtRetirementAge),getSafeFieldValue(f.txtAgeStop),getSafeFieldValue(f.txtAgeRecommence))
	}
}
		document.getElementById("lblRWY").innerHTML = ((ret==0)?"&nbsp;":ret);
}
function getRemainingWorkingYears(cAge,rAge,aStop,aRecomm)
{
	var ret = 0;
	if(rAge < MIN_R_AGE || rAge > MAX_R_AGE)
		return 0;

	if(cAge < MIN_AGE || cAge > MAX_AGE)
		return 0;

	if(cAge >= rAge)
		return 0;

	if(aStop == 0 && aRecomm == 0)
	{ // no career interruption
		ret = rAge - cAge;
	}
	else
	{
		if(aStop > 0 && aRecomm > 0)
		{
			if( aStop >= aRecomm )
				return 0;
			if( cAge >= aStop )
				return 0;
			if( aRecomm >= rAge )
				return 0;
			ret = rAge - (aRecomm - aStop) - cAge;
		}
	else
		return 0;
	}
	return ret;
}
function getAllProperties(obj,pr)
{
// accept an object and list all it's attributes (name and value pairs)
    var k=0
    var s=pr + ":             ";
    for (var ii in obj)
    {
    	s=s+ (ii + " - " + ((obj[ii]=='' || obj[ii]==null)?'.':obj[ii]) +"*")
    	k++;
		}
		alert(s)
		   alert("Total number of object's properties: " + k)
return s
}
function setCurrAgeForJava()
{
var f = document.forms.frmName
sCurrentAgeForJava = ""
sCurrentAgeForJava = ("" + getCurrentAgeNEW2(f.txtDOB, dateDOC))
}
function calculateFinalTotalSuperSavings_JS(f)
{
	var retCalculateBenefit07 = calculateBenefit07(scenarioTwoEntered(f))
	if(retCalculateBenefit07!=FINALTOTALSUPERSAVINGS_OK)
	{
		if(retCalculateBenefit07==TOTALBENEFIT_TOOBIG)
			alert("Total benefit is greater than $10 billions. Please adjust your figures.");
		if(retCalculateBenefit07==FEESINSURANCE_TOOHIGH || retCalculateBenefit07==FEESINSURANCE_TOOHIGH_NEW)
			alert("Fees and/or insurance premiums exceed the benefit.");
		return false;
	}
	return true
}
function calculateFinalTotalSuperSavingsFromJava(f, originalOnly)
{
	gl_FinalTotalSuperSavings = 0
	gl_FinalTotalSuperSavingsNew = 0
	try
	{
		var s = "The values you have entered can not be used to calculate a projected benefit. Please check your figures."
		var ret = calculateFinalTotalSuperSavings230308(f)
		gl_FinalTotalSuperSavings = retirementFinalTotalSuperSavings
		gl_FinalTotalSuperSavingsNew = gl_FinalTotalSuperSavings;
		if(scenarioTwoEntered())
			gl_FinalTotalSuperSavingsNew = retirementFinalTotalSuperSavingsNew

		if(gl_FinalTotalSuperSavings == 0)
		{
			s = s +" (1)"
			return s;
		}
		else
		{
			if(!originalOnly)
			{
				if(scenarioTwoEntered() && gl_FinalTotalSuperSavingsNew == 0)
				{
					s = s +" (2)"
					return s;
				}
				else
					return ""
			}
			else
				return ""
		}
	}
	catch(e)
	{
		var s = "ERROR in 'calculateFinalTotalSuperSavingsFromJava()' - : "+ e;
		return s
	}
}
function calculateFiguresForTab4(f, tabNumber)
{
	// this will be called after validation of Step1, Step2 and Step3
	var _errT = ""

	try
	{
		calculateFiguresForResultTab(f)
		_errT = errT
	}
	catch(e)
	{
		var s = "ERROR in 'calculateFiguresForTab4(f)' - : "+ e;
		alert(s)
		_errT = s
	}




	return _errT
}
function appletLoaded(isNetscape)
{
	if(!isNetscape)
	{
		showAccept(true)
		fcs=true
	}
}
function getMinPctgSuperBenefit()
{
	var f = document.forms.frmName
	var x = f.cmbInvestmentOption.value

	MIN_PCTG_SUPERBENEFIT = MIN_PCTG_SUPERBENEFIT_ORG
	if(x == "CP")
	{
		MIN_PCTG_SUPERBENEFIT = MIN_PCTG_SUPERBENEFIT_CP
	}
	return MIN_PCTG_SUPERBENEFIT
}
function getMaxPctgSuperBenefit()
{
	var f = document.forms.frmName
	var x = f.cmbInvestmentOption.value

	MAX_PCTG_SUPERBENEFIT = MAX_PCTG_SUPERBENEFIT_ORG

	if(x == "CP")
	{
		MAX_PCTG_SUPERBENEFIT = MAX_PCTG_SUPERBENEFIT_CP
	}
	return MAX_PCTG_SUPERBENEFIT
}
function isDecimal_MinMaxValue(_value,field,min1,max1,prompt0,prompt1)
{
var v=_value//field.value
//var int1 = /^\d{1,2}(\.\d{1,})?$/;
var int1 = /^\d{1,}(\.\d{1,})?$/;
var reg=new RegExp(int1);
var ret = reg.test(v);
if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
	return true;
else
{
	switchToDIV(field)
	if(prompt1)
		alert(prompt0)
	return false;
}
}
function passRetirementBenefitPctgNew(true_false, field, aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var sAll = "The retirement benefit investment return must be between "+MIN_PCTG_RETIREMENTBENEFIT+"% and "+MAX_PCTG_RETIREMENTBENEFIT+"%.";

	var invalid1 = false

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validRetirementBenefitInvestmentReturnNew(f, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
				calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
		}
	}
}
function setMinMaxAnnualPensionIncomes()
{
	var f = document.forms.frmName;
	reSetMinMaxAnnualPensionIncomes()
	var cnt = false;

	if(true)
	{
		// if input OK, run Java function to get retirementFinalTotalSuperSavings
		var sRet = calculateFinalTotalSuperSavingsFromJava(f, true)
	if(sRet != "")
	{
		return sRet
	}
	else
	{
		if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavings,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,false))
		{
			minAnnualPensionIncome = minAnnualPensionIncomeJJS;
			if(minAnnualPensionIncome < 0)
				minAnnualPensionIncome = 0;
			document.getElementById("lblMinPension_Tab2").innerHTML='<B>$' + _nbsp + (formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")) + '</B>';
		}
		else
		{
			return sTotInv
		}
		minAnnualPensionIncomeNew = minAnnualPensionIncome
		document.getElementById("lblMinPensionTab3Org").innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")))
		document.getElementById("lblMinPensionTab3New").innerHTML = document.getElementById("lblMinPensionTab3Org").innerHTML

		return ""
	}
	}
	else
		return ""
}
function reSetMinMaxAnnualPensionIncomesNew()
{
		minAnnualPensionIncomeNew = 0;
		document.getElementById("lblMinPensionTab3New").innerHTML = "$"+minAnnualPensionIncomeNew;
		document.getElementById("lblEstmtdLSBenTab3New").innerHTML = "$0.00"
}
function setMinMaxAnnualPensionIncomesNew()
{
	var f = document.forms.frmName;
	reSetMinMaxAnnualPensionIncomesNew()
	var sRet = calculateFinalTotalSuperSavingsFromJava(f, false)

	if(sRet != "")
	{
		return sRet
	}
	else
	{
		if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavingsNew,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,false))
		{
			minAnnualPensionIncomeNew = minAnnualPensionIncomeJJSNew;

			if(minAnnualPensionIncomeNew < 0)
				minAnnualPensionIncomeNew = 0;
			document.getElementById("lblMinPension_Tab2").innerHTML='<B>$' + _nbsp + (formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")) + '</B>';

			if(minAnnualPensionIncomeNew == 0)
				document.getElementById('lblMinPensionTab3New').innerHTML = document.getElementById('lblMinPensionTab3Org').innerHTML
			else
				document.getElementById('lblMinPensionTab3New').innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2), 2, "")))

			var minInc = myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2)
			if(getSafeDecimalFieldValue(f.txtRqdIncomeNew) < minInc)
			{
				var sMin = "Calculator is adjusting the entered pension income amount: the adjusted "+getCmbText(f.cmbIncomeFreq,"l")+" pension income amount must be at least " + formatted_toFixed1(minInc, 2, "$") + ", which is, based on your input figures, the minimum allocated pension prescribed by legislation."
				alert(sMin)
				f.txtRqdIncomeNew.value = minInc
			}

		}
		else
		{
			document.getElementById('lblMinPensionTab3New').innerHTML = document.getElementById('lblMinPensionTab3Org').innerHTML
			return sTotInv
		}
		return ""
	}
}
function originalEqualNew(originalValue, newValue)
{
	var rtrn = false
	if(originalValue == newValue)
		rtrn = true
	else
	{
		if(numberValidDecimalNumber(originalValue) && numberValidDecimalNumber(newValue))
		{
			if(parseFloat(originalValue) == parseFloat(newValue))
				rtrn = true
		}
	}
	return rtrn
}
function numberValidDecimalNumber(_val, _sPrompt, _promptYesNo)
{
	var int1 = /^\d{1,}(\.\d{1,})?$/;
	var reg=new RegExp(int1);
	var ret = reg.test(_val);
	if(!ret)
	{
		if(_promptYesNo)
			alert(_sPrompt)
	}
	return ret
}
function passAfterTaxNew(aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var field=f.txtAfterTaxNew
	var invalid1 = false
	var fldContent  = ""

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validAfterTax1(f, f.txtAfterTaxNew, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
				var yMax = plot.getAxes().yaxis.max
				var xMin = plot.getAxes().xaxis.min
				var xMax = plot.getAxes().xaxis.max

plot = $.plot($("#flotAppletPlaceholder"), [
        {
            data: [],
            label: "Original",
            lines: { show: true },
            points: { show: true },
            color:"#0066A1"
        },
        {
            data: [],
            label: "Adjusted",
            lines: { show: true },
            points: { show: true },
            color:"#A3AB02"
        }
    ],
    {
		 xaxis: { min: xMin, max: xMax, tickDecimals: 0},
		 yaxis: { min: 0, max: yMax, tickFormatter: function (v, axis) { return "$"+formatted_toFixed1(parseFloat(removeCommDollSpacPerc(""+v)), 2, "")}}
		}
);
//plot.draw()

var cc = plot.getCanvas()
ctx=cc.getContext("2d");
ctx.fillStyle = "rgb(200,0,0)";   
        ctx.fillRect (10, 10, 55, 50);   
  
        ctx.fillStyle = "rgba(80, 90, 200, 1.0)";
        ctx.fillRect (90, 90, 120, 120);   

			showDivFlotApplet(false)
			var sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
				invalidateGraph()
			else
			{
	calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
showDivFlotApplet(true)
var c = plot.getCanvas()
ctx=c.getContext("2d");
ctx.fillStyle = "rgb(200,0,0)";   
        ctx.fillRect (10, 10, 55, 50);   
        ctx.fillStyle = "rgba(0, 0, 200, 1.0)";
        ctx.fillRect (40, 40, 120, 120);   

			}
		}
	}
}
function passSalSacNew(aEvent)
{
return;

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var field=f.txtSalSacNew
	var invalid1 = false
	var fldContent  = ""

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validSalSac1(f, field, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
			var sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
				invalidateGraph()
			else
			{
				calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
			}
		}
	}
}
function passIncomeNew(aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var field=f.txtRqdIncomeNew
	var invalid1 = false

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validAnnuityIncomeNew(f, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
				calculateAndPaintFLOT(f, 3)
			setEstimatedLumpSumBenefitTab2(f)
		}
	}
}
function pass_salaryInflationPctgNew(true_false, field, aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var sAll = "The salary inflation rate must be between "+MIN_INFLATION_SALARY+"% and "+MAX_INFLATION_SALARY+"%.";
	var invalid1 = false

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validSalaryInflationNew(f, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
			var sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
				invalidateGraph()
			else
			{
				calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
			}
		}
	}
}
function pass_InflationPctgNew(true_false, field, aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var sAll = "The new inflation rate must be between "+MIN_INFLATION+"% and "+MAX_INFLATION+"%.";
	var invalid1 = false

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validInflationNew(f, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
			var sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
				invalidateGraph()
			else
			{
				calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
			}
		}
	}
}
function reformatTxtField(sOriginalValue)
{
	var xs = (0 + parseFloat(removeCommasDollars((jsLRTrim(sOriginalValue) == "")?"0":(jsLRTrim(sOriginalValue)))))
	return removeCommasDollars(formatted_toFixed1(xs, 2, ""))
}
function passSuperBenefitPctgNew(true_false, field, aEvent)
{
return;//030810

	var myEvent = window.event ? window.event : aEvent;
	var f=document.forms.frmName
	var sAll = "The superannuation benefit investment return must be between "+MIN_PCTG_SUPERBENEFIT+"% and "+MAX_PCTG_SUPERBENEFIT+"%.";
	var invalid1 = false

	if(myEvent.keyCode != 9 && myEvent.keyCode != 16)
	{
		if(field.value != "")
		{
			if(!numberValidDecimalNumber(field.value))
			{
				invalid1 = true
			}
			else
			{
				if(!validSuperBenefitInvestmentReturnNew(f, false))
					invalid1 = true
			}
		}
		else
			invalid1 = true

		if(invalid1)
			invalidateGraph()
		else
		{
			var sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
			{
				invalidateGraph()
			}
			else
			{
				calculateAndPaintFLOT(f, 3)
				setEstimatedLumpSumBenefitTab2(f)
			}
		}
	}
}
function validSuperBenefitInvestmentReturn(f, _prompt)
{
	if(!validDecimalField3(f, f.txtChoicePlusInvRate, getSafeDecimalFieldValue(f.txtChoicePlusInvRate), (_prompt==true)?("The net investment rate for the accumulation phase must be between "+MIN_PCTG_SUPERBENEFIT+"% and "+MAX_PCTG_SUPERBENEFIT+"%."):"", MIN_PCTG_SUPERBENEFIT,MAX_PCTG_SUPERBENEFIT))
		return false
	else
		return true
}
function validSuperBenefitInvestmentReturnNew(f, _prompt)
{
	if(!validDecimalField33(f, f.txtSupBenInvRetNew, getSafeDecimalFieldValue(f.txtSupBenInvRetNew), ((_prompt==true)?("The adjusted net investment rate for the accumulation phase must be between "+MIN_PCTG_SUPERBENEFIT+"% and "+MAX_PCTG_SUPERBENEFIT+"%."):""), MIN_PCTG_SUPERBENEFIT,MAX_PCTG_SUPERBENEFIT))
		return false
	else
		return true
}
function validRetirementBenefitInvestmentReturnNew(f, _prompt)
{
	if(!validDecimalField33(f, f.txtRtrmntBenInvRetNew, getSafeDecimalFieldValue(f.txtRtrmntBenInvRetNew), ((_prompt==true)?("The adjusted net investment rate whilst in retirement must be between "+MIN_PCTG_RETIREMENTBENEFIT+"% and "+MAX_PCTG_RETIREMENTBENEFIT+"%."):""), MIN_PCTG_RETIREMENTBENEFIT,MAX_PCTG_RETIREMENTBENEFIT))
		return false
	else
		return true
}
function validSalaryInflationNew(f, _prompt)
{
	if(!validDecimalField33(f,f.txtSalaryInflationNew, getSafeDecimalFieldValue(f.txtSalaryInflationNew), ((_prompt==true)?("The adjusted salary inflation rate must be between "+MIN_INFLATION_SALARY+"% and "+MAX_INFLATION_SALARY+"%."):""), MIN_INFLATION_SALARY,MAX_INFLATION_SALARY))
		return false
	else
		return true
}
function validInflationNew(f, _prompt)
{
	if(!validDecimalField33(f,f.txtInflationNew, getSafeDecimalFieldValue(f.txtInflationNew), ((_prompt==true)?("The adjusted inflation rate (CPI) must be between "+MIN_INFLATION+"% and "+MAX_INFLATION+"%."):""), MIN_INFLATION,MAX_INFLATION))
		return false
	else
		return true
}
function validDecimalField3(f, fld, checkThisValue, prompt, minV, maxV)
{
	var ret = false
	var field = fld;
	sAll = prompt
	if(numberValidDecimalNumber(field.value))
	{
		if(!isDecimal_MinMax3(field, checkThisValue, minV, maxV, sAll, (sAll==""?false:true)))
			;
		else
			ret = true
	}
	else
	{
		if(sAll != "")
		{
			alert(sAll)
			mySelect(field)
		}
		ret = false
	}

	if(!ret && sAll != "")
		mySelect(field)
	return ret
}
function isDecimal_MinMax3(field, checkThisValue, min1, max1, prompt0, prompt1)
{
	var v = checkThisValue
	//var int1 = /^\d{1,2}(\.\d{1,})?$/;
	var int1 = /^\d{1,}(\.\d{1,})?$/;
	var reg = new RegExp(int1);
	var ret = reg.test(v);
	if(ret && parseFloat(v) >= min1 && parseFloat(v) <= max1)
		return true;
	else
	{
		switchToDIV(field)
		if(prompt1)
			//alert("Please enter a number between " + min1 + " and " + max1 +".")
			alert(prompt0)
		return false;
	}
}
function setToolTip(_element, trueFalse)
{
if(trueFalse)
	_element.title = "Rate of investment on superannuation benefit - Account balance before retirement (between "+MIN_PCTG_SUPERBENEFIT+"% and "+MAX_PCTG_SUPERBENEFIT+"%)";
else
	_element.title = "";

return;
}
function ToggleDisclaimer(t)
{
if (s==1) {
var x = document["imgDisclaimer"].src
if (x==expand.src)
{
	document["imgDisclaimer"].src = collapse.src;
	document.getElementById("tblDisclaimer").style.display = "";
}
else
{
	document["imgDisclaimer"].src = expand.src;
	document.getElementById("tblDisclaimer").style.display = "none";
}
}
}
function ToggleAssumption(t)
{
if (s==1) {
var x = document["imgAssumption"].src
if (x==expand.src)
{
	document["imgAssumption"].src = collapse.src;
	document.getElementById("tblAssumptions").style.display = "";
}
else
{
	document["imgAssumption"].src = expand.src;
	document.getElementById("tblAssumptions").style.display = "none";
}
}
}
function showAccept(truefalse)
{
if(truefalse)
{
s=0
document.getElementById("divAccept").style.display = "";
document.getElementById ('topbar').className='onnn'
	document.getElementById("divPreLoad").style.display = "none";
	document.getElementById("divIntro1").style.display = "";
	document.getElementById("divIntro2").style.display = "";
	document.getElementById("divDisclaimer").style.display = "";
	document.getElementById("divAssumption").style.display = "";
	document.getElementById("tblAssumptions").style.display = "";
	document.getElementById("tblDisclaimer").style.display = "";
}
else
{
s=1
	document.getElementById("topbar").style.display = "none";
	document.getElementById("divPreLoad").style.display = "none";
	document.getElementById("divIntro1").style.display = "none";
	document.getElementById("divIntro2").style.display = "none";
	document.getElementById("divDisclaimer").style.display = "none";
	document.getElementById("divAssumption").style.display = "none";
	document.getElementById("tblAssumptions").style.display = "none";
	document.getElementById("tblDisclaimer").style.display = "none";

}
	window.location.href="#top0"
}
function startCalculatorIEFX()
{
var noJavaStr = "<P STYLE='margin: 15px'><TABLE class=spanNoJava_body cellspacing='0' cellpadding='10' border=0><TR><TD><B>CareSuper - Super and Pension calculator</B><BR><BR><SPAN class='red1'>This calculator requires the Java Runtime Environment or JVM to be installed in your browser. It appears that you either have not enabled Java in your browser or it has not been installed. Please contact your system administrator for more information about Java or visit <A class='red1' target='_blank' href='http://www.java.com'><SPAN class=spanNoJava_body>http://www.java.com</SPAN></A>.</TD></TR></TABLE></P>"
document.getElementById("spanNoJava").innerHTML="&nbsp;"

if((navigator.appName).toUpperCase()=="NETSCAPE")
{
	if(window.navigator.javaEnabled())
	{
		document.getElementById("spanNoJava").innerHTML="&nbsp;"
		try
		{
			appletLoadedFX()
		}
		catch(e)
		{
			alert(e)
		}
	}
	else
	{
			document.getElementById("idMainTable").style.display = "none";
			document.getElementById("spanNoJava").innerHTML=noJavaStr
	}
}
else
{
	try
	{
		try
		{
			//. not needed in the applet-less calculator var xe = document.getElementById('idCARE_SuperAndPension_Calc').getAppletInfo()
			appletLoadedFX()
		}
		catch(e)
		{
			showAccept(false)
			document.getElementById("spanNoJava").innerHTML=noJavaStr
		}
	}
	catch(e)
	{
		alert(e)
	}
}
}
function loadAndShow()
{
	try
	{
		initialise();
		populate()
		if((navigator.appName).toUpperCase()!="NETSCAPE")
			window.focus()

		document.getElementById("topbar").style.opacity = 1
		document.getElementById("topbar").style.filter = 'alpha(opacity=100)'
		showAccept(true)
//270710
if($.browser.msie && (parseFloat($.browser.version) < 7))
{
 //do this for ie6
 alert("It appears you are using an older web browser that does not meet the minimum requirements for using this calculator. As a result you may experience display or calculation issues. It is recommended that you upgrade your web browser to a minimum of Internet Explorer 7.0, Firefox 3.0 or Chrome 5.0 in order to use the full functionality of this calculator.")
}
	}
		catch(e)
		{
			alert(e)
		}
}
function showFX()
{
if((navigator.appName).toUpperCase()=="NETSCAPE")
{
	if(window.navigator.javaEnabled())
	{
		document.getElementById("spanNoJava").innerHTML="&nbsp;"
		try
		{
			appletLoadedFX()
		}
		catch(e)
		{
			alert(e)
		}
	}
	else
	{
		showAccept(false)
		var noJavaStr = "<P STYLE='margin: 15px'><TABLE class=spanNoJava_body cellspacing='0' cellpadding='10' border=0><TR><TD><B>CareSuper - Super and Pension calculator</B><BR><BR><SPAN class='red1'>This calculator requires the Java Runtime Environment or JVM to be installed in your browser. It appears that you either have not enabled Java in your browser or it has not been installed. Please contact your system administrator for more information about Java or visit <A class='red1' target='_blank' href='http://www.java.com'><SPAN class=spanNoJava_body>http://www.java.com</SPAN></A>.</TD></TR></TABLE></P>"
		document.getElementById("spanNoJava").innerHTML=noJavaStr
	}
}
}
function appletLoadedFX()
{
	loadAndShow()
}
function setWarning110(f)
{
	var str110_0 = "This projection does not project amounts further than an age of 110. The "
	var str110_1 = " account balance is greater than $0.00 at this age."
	var str110
//290710:
	var hit110Pension_TrueFalse = glHit110Pension_TrueFalse;
	var hit110_atAge_Pension = glHit110_atAge_Pension;
	var hit110_BalanceAt110_Pension = glHit110_BalanceAt110_Pension;
	var hit110Pension_TrueFalseNew = glHit110Pension_TrueFalseNew;
	var hit110_atAge_PensionNew = glHit110_atAge_PensionNew;
	var hit110_BalanceAt110_PensionNew = glHit110_BalanceAt110_PensionNew;
	var hit110Bank_TrueFalse = glHit110Bank_TrueFalse;
	var hit110_atAge_Bank = glHit110_atAge_Bank;
	var hit110_BalanceAt110_Bank = glHit110_BalanceAt110_Bank;
	var hit110Bank_TrueFalseNew = glHit110Bank_TrueFalseNew;
	var hit110_atAge_BankNew = glHit110_atAge_BankNew;
	var hit110_BalanceAt110_BankNew = glHit110_BalanceAt110_BankNew;

}
function getNumberFromLabel(l)
{
return parseFloat(removeCommDollSpacPerc(l.toString()))
}
function removeCommDollSpacPerc(strValue)
{
	//remove $, commas, spaces and % signs
  var objRegExp = /,|\$|\s|%/g; //search for $, commas, spaces and % sign globally
  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}
function setInsuranceInflationRate()
{
	var f = document.forms.frmName
	f.txtInsuranceInflationNew.value = f.txtInflationNew.value
}
function paintFLOT(f)
{
	var _secondScenarioEntered = scenarioTwoEntered()
	getDollarAmountsFromJava(f, _secondScenarioEntered)
	finaliseFLOT(f, _secondScenarioEntered)
}
function calculateAndPaintFLOT(f, tabNumber)
{
invalidateGraph()
		document.getElementById('divFlotAppletON').style.display="none"
		document.getElementById('divFlotAppletOFF').style.display=""
	var errT = calculateFiguresForTab4(f, tabNumber)
		document.getElementById('divFlotAppletOFF').style.display="none"
		document.getElementById('divFlotAppletON').style.display=""

	if(errT=="")
	{
		document.getElementById('divFlotAppletON').style.display="none"
		document.getElementById('divFlotAppletOFF').style.display=""
		paintFLOT(f)
		document.getElementById('divFlotAppletOFF').style.display="none"
		document.getElementById('divFlotAppletON').style.display=""
	}
	else
	{
		if(errT.indexOf("(2)") >= 0)
		{
			showTab(2);
			mySelect(f.txtAfterTaxNew)
		}
		else
		{	
			showTab(1);
			mySelect(f.txtDOB)
		}
		alert(errT)
	}
}
function invalidateGraph()
{
return;//020810

plot = null
plot = $.plot($("#flotAppletPlaceholder"), [
        {
            data: [],
            label: "Original",
            lines: { show: true },
            points: { show: true },
            color:"#0066A1"
        },
        {
            data: [],
            label: "Adjusted",
            lines: { show: true },
            points: { show: true },
            color:"#A3AB02"
        }
    ]);
plot.draw()
}
function dummy()
{
;
}
function showDivFlotApplet(_divFlotAppletON)
{
if(_divFlotAppletON)
{
	document.getElementById('divFlotAppletOFF').style.display="none"
	document.getElementById('divFlotAppletON').style.display=""
}
else
{
	document.getElementById('divFlotAppletON').style.display="none"
	document.getElementById('divFlotAppletOFF').style.display=""
}
}
function recalculate()
{
var f=document.forms.frmName
	if(validStep3(f))
	{
		var sRtrn = setMinMaxAnnualPensionIncomesNew()
		if(sRtrn != "")
			invalidateGraph()
		else
		{
			var errT = ""//030810 THIS VALUE HAS TO BE SET PROPERLY!!!!!!!!!!! mzg
			calculateAndPaintFLOT(f, 3)
			setEstimatedLumpSumBenefitTab2(f)
			if(errT != "")
				invalidateGraph1()
			else
				window.location.href="#top1"
		}
	}
	else
	{
		invalidateGraph1()
	}
}
function invalidateGraph1()
{
				var yMax = plot.getAxes().yaxis.max
				var xMin = plot.getAxes().xaxis.min
				var xMax = plot.getAxes().xaxis.max
plot = null
plot = $.plot($("#flotAppletPlaceholder"), [
        {
            data: [],
            label: "Original",
            lines: { show: true },
            points: { show: true },
            color:"#0066A1"
        },
        {
            data: [],
            label: "Adjusted",
            lines: { show: true },
            points: { show: true },
            color:"#A3AB02"
        }
    ],
    {
		 xaxis: { min: xMin, max: xMax, tickDecimals: 0},
		 yaxis: { min: 0, max: yMax, tickFormatter: function (v, axis) { return "$"+formatted_toFixed1(parseFloat(removeCommDollSpacPerc(""+v)), 2, "")}}
		}
);
plot.draw()
}

function setDefaultInsuranceAssumptions()
{
document.getElementById("spanDefaultInsurance29").innerHTML = formatted_toFixed1(DEFAULTINSURANCE29, 2, "")
document.getElementById("spanDefaultInsurance30").innerHTML = formatted_toFixed1(DEFAULTINSURANCE30, 2, "")
}
function setDefaultInsuranceTxtField(aEvent)
{
	var f=document.forms.frmName
	var currAge
	var myEvent = window.event ? window.event : aEvent;
if((myEvent.keyCode >= 48 && myEvent.keyCode <=57) || (myEvent.keyCode >= 96 && myEvent.keyCode <=105))
{
	if(validDOB2(f.txtDOB, dateDOC, false))
	{
		currAge = getCurrentAgeNEW2(f.txtDOB, dateDOC)
		if(currAge < 30)
			f.txtInsurance.value = formatted_toFixed1(DEFAULTINSURANCE29, 2, "")
		else
			f.txtInsurance.value = formatted_toFixed1(DEFAULTINSURANCE30, 2, "")
	}
	else
		f.txtInsurance.value = ''

	selectCmbOption(f, f.cmbInsuranceFreq, "w")
}
}
function validDecimalField33(f, fld, checkThisValue, prompt, minV, maxV)
{
	var ret = false
	var field = fld;
	sAll = prompt
	if(numberValidDecimalNumber(field.value))
	{
		var rr = isDecimal_MinMax11(field,minV,maxV,sAll,sAll)
		if(!rr)
		{
			if(sAll != "")
			{
				showAssump1()
				alert(sAll)
				mySelect(field)
			}
		}
		else
			ret = true
	}
	else
	{
		if(sAll != "")
		{
			showAssump1()
			alert(sAll)
			mySelect(field)
		}
		ret = false
	}

	if(!ret && sAll != "")
	{
		showAssump1()
		mySelect(field)
	}
	return ret
}
function showAssump1()
{
	if(document.getElementById('divTab3').style.display == 'none')
		showTab(3)
	if(document.getElementById('divGI').style.display == 'none')
		showGrossIncome("")
}
//210211
function getAWOTENew(f)
{
//return here whatever the value is; it could be AWOTE or AWOTENew or salaryInflation or salaryInflationNew
//180311 return AWOTE
return AWOTENew
}
//180311:
function setAWOTENew(_txtField)
{
/*180311
	normally, AWOTE=salaryInflation and AWOTENew=salaryInflationNew, but not for AWM
*/
AWOTENew = getSafeDecimalFieldValue(_txtField)
}

