/* ---------------------------
' (C) Copyright 2009
' Niro Solutions Pty Limited
' ABN 89 106 967 140
' ---------------------------
' Revision: 3.0.0
' Author: Miles Glisovic
' Modtime: 06/07/09
' --------------------------- */
var numberOfTabs = 4
// 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 //Bruce 13072009
var MAX_FEE = 9999999
var MIN_INCOME = 1
var __MAXANNUALPENSIONINCOME = 9999999
var MIN_PCTG_SUPERBENEFIT_ORG = 4
var MAX_PCTG_SUPERBENEFIT_ORG = 9
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 = 8.0
var MIN_PCTG_RETIREMENTBENEFIT = 5
var MAX_PCTG_RETIREMENTBENEFIT = 10
var INFLATION_SALARY = 3.75
var MIN_INFLATION_SALARY = 2.5
var MAX_INFLATION_SALARY = 12
var INFLATION = 2.5
var MIN_INFLATION = 0
var MAX_INFLATION = 3
var AWOTE = INFLATION_SALARY
var INVEST_RATE_SUPBENEFIT = 7.0 //INVEST_RATE_SUPBENEFIT_B;//default investment option is BALANCED => 5.5%
var minAnnualPensionIncome = 0;
var minAnnualPensionIncomeNew = 0;
var MIN_INV_AMOUNT = 20000
var MAX_INV_AMOUNT = 99999999
var gl_FinalTotalSuperSavings, gl_FinalTotalSuperSavingsNew
var MIN_DOLLAR = 0
var MIN_PCTG = 0
var MAX_PCTG = 100
var sCurrentAgeForJava, sLifeExpectancyForJava;
var MIN_PARTTIME_PCTG = 20
var MAX_PARTTIME_PCTG = 90
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 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
var grossIncomeP, grossIncomeM
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
var TAKE_INCOME_INTO_ACCOUNT_YES=true
var TAKE_INCOME_INTO_ACCOUNT_NO=false
var ORIGINAL_SCENARIO_ONLY_YES=true
var ORIGINAL_SCENARIO_ONLY_NO=false
var sP = "Please decrease the required gross income in retirement or increase the amount of future contributions. The amount of superannuation held plus future contributions you have entered will not be enough to cover the required gross income in retirement.";
var graphParametersSentToApplet = false
var booleanFemale = null;

function preLoadImages1() {
    grossIncomeP = new Image()
    grossIncomeP.src = "images/plus.gif"
    grossIncomeM = new Image()
    grossIncomeM.src = "images/minus.gif"
}
function showDIV(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 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 showImages() {
    document.images.btnClose.style.display = "";
}
function showTab(tabNumber) {
    var f = document.forms.frmName
    if (!fcs) {
        stopGIF(true);
    }
    showImages()
    document.getElementById("divPreLoad").style.display = "none";
    document.getElementById("divIntro").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 = ''
    /*  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";

    switch (tabNumber) {
        case 1:
            document.getElementById('tabStep1').className = 'active'
            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.getElementById("divTab2").style.display = "";

            if ((navigator.appName).toUpperCase() != "NETSCAPE")
            {

							if(!graphParametersSentToApplet)
								sendGraphParametersToApplet();//040809 PROBABLY NOT NEEDED ANY MORE, AS IT'S READ IN Graph's init()
							graphParametersSentToApplet = true

                var errT = passFiguresToApplet(document.forms.frmName, tabNumber, true);
                if (errT != "")
                {
									showTab(1)
									alert(errT)
									f.txtRqdIncome.value=""
									resetToDefault(f)
                }
                else
                {
                location.href = "#top1";
                	mySelect(f.txtAfterTaxNew)
                	}
            }
            break;
        case 3:
            document.getElementById('tabStep3').className = 'active'
            document.getElementById("divTab3").style.display = "";
            break;

        case 4:
            document.getElementById('tabStep4').className = 'active'
            document.getElementById("divTab4").style.display = "";
            break;
    }
    if (tabNumber != 1 && tabNumber != 2)
    	window.location.href = "#top1"
    currentTab = tabNumber
}
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 initialise() {
    try {
        var f = document.forms.frmName
        //Initialise anything here
        f.txtFees.value = formatted_toFixed1(DEFAULT_FEES_PER_WEEK, 2, "")
        f.txtInsurance.value = formatted_toFixed1(DEFAULT_INSURANCE_PER_WEEK, 2, "")

        f.txtSupBenInvRetNew.value = formatted_toFixed1(INVEST_RATE_SUPBENEFIT, 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

AWOTE = INFLATION_SALARY
	resetToDefault(f)

	CONCESS_LIMIT_DATE = new MyDate4(2012, 6, 30)
	sCONCESS_LIMIT_DATE = CONCESS_LIMIT_DATE.get_sDD_MM_YYYY();
	setDOC()
	COCONT_ENDOFTRANSITION_DATE = new MyDate4(2015, 7, 1)
	sCOCONT_ENDOFTRANSITION_DATE = COCONT_ENDOFTRANSITION_DATE.get_sDD_MM_YYYY();
	setNavigatorsName()
		setGenderBooleanFemale(f)

	APPLY_MIN_INCOME = APPLY_MIN_INCOME_YES// S&P
	CALCULATE_YELLOW_RANGE = CALCULATE_YELLOW_RANGE_YES
	DRAW_GRAPH_BORDER = DRAW_GRAPH_BORDER_YES//CSRF
	DRAW_GRAPH_SHADES = DRAW_GRAPH_SHADES_YES//CSRF
	DRAW_TARGET_BENEFIT = DRAW_TARGET_BENEFIT_YES
	DRAW_TARGET_BENEFIT_STYLE = DRAW_TARGET_BENEFIT_STYLE_STAR
	MARK_RETIREMENT_AGE = MARK_RETIREMENT_AGE_YES
	LEGEND_TYPE = LEGEND_TYPE_GENERAL
    }
    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(("" + f.txtRtrmntBenInvRet.value), f.txtRtrmntBenInvRetNew.value) &&
				originalEqualNew(("" + f.txtSalaryInflation.value), f.txtSalaryInflationNew.value) &&
				originalEqualNew(("" + f.txtInflation.value), f.txtInflationNew.value)
		)
        return false;
    else
        return true;
}
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 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 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 = "#efefef";
}
function goToStep2(e, tabNumber)
{
	var f = document.forms.frmName

	if (validStep1(f))
	{
		// 040809/FF:
		setCurrAgeForJava()
		setLifeExpectancyFactorForJava()
	
		gl_FinalTotalSuperSavings = document.getElementById('idG_SuperAndPensionRetirement_Calc').retirementFinalTotalSuperSavings
		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").style.visibility = (contsAsDollarAmount(f) ? "visible" : "hidden")
		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) ? "" : "&nbsp;%")
		var ptc = (jsLRTrim(f.txtSalSac.value) == "") ? 0 : getSafeDecimalFieldValue(f.txtSalSac)
		document.getElementById("lblPTCN0").innerHTML = "Vary the " + getCmbText(f.cmbSalSacFreq, "l") + "ly pre-tax contribution";

		document.getElementById("lblPTCN0DP2").style.visibility = (contsAsDollarAmount(f) ? "visible" : "hidden")
		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) ? "" : "&nbsp;%")
		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") + " income in retirement";
		document.getElementById("lblINC1").innerHTML = formatted_toFixed1(inc, 2, "$")
		f.txtRqdIncomeNew.value = reformatTxtField(f.txtRqdIncomeNew.value)
		document.getElementById("lblINVRATE_SUPERBENEFIT").innerHTML = "" + formatted_toFixed1(getInvestmentOptionPctg(f), 2, "") + "%";
		document.getElementById("lblINVRATE_RETIREMENTBENEFIT").innerHTML = "" + formatted_toFixed1(getSafeDecimalFieldValue(f.txtRtrmntBenInvRet), 2, "") + "%";
		document.getElementById("lblINFLATION_SALARY").innerHTML = "" + formatted_toFixed1(getSafeDecimalFieldValue(f.txtSalaryInflation), 2, "") + "%";
		document.getElementById("lblINFLATION").innerHTML = "" + formatted_toFixed1(getSafeDecimalFieldValue(f.txtInflation), 2, "") + "%";

		showTab(tabNumber);
		mySelect(f.txtAfterTaxNew)
	}
}
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 resetNewValues(f) {
    f.txtRtrmntBenInvRetNew.value = f.txtRtrmntBenInvRet.value
    f.txtSalaryInflationNew.value = f.txtSalaryInflation.value
    f.txtInflationNew.value = f.txtInflation.value
    f.txtSupBenInvRetNew.value = f.txtSupBenInvRet.value
    f.txtRqdIncomeNew.value = f.txtRqdIncome.value
    f.txtAfterTaxNew.value = f.txtAfterTax.value
    f.txtSalSacNew.value = f.txtSalSac.value
    INVEST_RATE_RETBENEFIT = parseFloat(f.txtRtrmntBenInvRet.value)
    INVEST_RATE_SUPBENEFIT = parseFloat(f.txtSupBenInvRet.value)
    INFLATION_SALARY = parseFloat(f.txtSalaryInflation.value)
    INFLATION = parseFloat(f.txtInflation.value)
    AWOTE = INFLATION_SALARY
}
function setLabels(f)
{
document.getElementById("lblMinInc").innerHTML="Minimum "+getCmbText(f.cmbIncomeFreq,"l")+" pension income (based on age)"
document.getElementById("lblMinInc20").innerHTML="The minimum "+getCmbText(f.cmbIncomeFreq,"l")+" pension income"
document.getElementById("lblNomInc").innerHTML="Nominated "+getCmbText(f.cmbIncomeFreq,"l")+" pension income"
}
function cursorHU(e)
{
    e.style.cursor = "pointer";
    e.className = 'hrHoover1';
}
function cursorHU0(e)
{
    e.className = 'hrHoover0';
}
function dollarOrPctgCont(_this)
{
	var f = document.forms.frmName
var i1 = ((f.rdDollarPercentageContAT[0].checked)?0:1)
document.forms.frmName.rdDollarPercentageContSS[i1].click()
document.forms.frmName.rdDollarPercentageContEC[i1].click()

    f.txtAfterTax.value = ""
    f.txtSalSac.value = ""
    f.txtEmplCont.value = ""
    resetToDefault(f)

    document.getElementById("spanAT1").style.visibility = "hidden"
    document.getElementById("spanAT2").style.display = "none";
    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("spanAT2").style.display = "";
        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("spanAT2").style.display = "";
        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 showCareerBreak(f)
{
    if (document.forms.frmName.rdCareerBreak[0].checked) {
        divCB.style.display = "";
        mySelect(f.txtAgeStop)
    }
    else {
        f.txtAgeStop.value = ""
        f.txtAgeRecommence.value = ""
        f.txtPartTimePctg.value = ""
        f.txtAgeFullTimeReturn.value = ""

        divCB.style.display = "none";
    }
    selectPartTime(1)
}
function selectCBreak(i)
{
	document.forms.frmName.rdCareerBreak[i].click()
}
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)))
{
	if(_prompt)
	{
		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))
	{
		if(_prompt)
		{
			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))
	{
		if(_prompt)
		{
			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 reSetMinMaxAnnualPensionIncomes() {
    minAnnualPensionIncome = 0;
    document.getElementById("lblMinPension_Tab2").innerHTML = '<B>$' + _nbsp + minAnnualPensionIncome + ".00</B>";
    document.getElementById("lblMinPensionTab3Org").innerHTML = ("$" + minAnnualPensionIncome + ".00");
}
function getInvestmentOptionPctg(f) {
    var ret = 0.0
    ret = parseFloat(f.txtSupBenInvRet.value)
    return ret
}
function startCalculatorIEFX()
{
var noJavaStr = "<B><BR><P class='red1' STYLE='margin: 40px; PADDING:40PX'><SPAN class='cal_heading_1'>ACSRF&nbsp;-&nbsp;Super&nbsp;and&nbsp;Pension&nbsp;Calculator</SPAN><BR><BR>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 target='_blank' class='red1' href='http://www.java.com'>http://www.java.com</A>.<BR><BR></P></B>"
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("divPreLoad").style.display = "none";
			document.getElementById("divApplet").style.display = "none";
			document.getElementById("spanNoJava").innerHTML=noJavaStr
	}
}
else
{
	try
	{
		try
		{
			var xe = document.getElementById('idG_SuperAndPensionRetirement_Calc').getAppletInfo()
			appletLoadedFX()
		}
		catch(e)
		{
			document.getElementById("divPreLoad").style.display = "none";
			document.getElementById("spanNoJava").innerHTML=noJavaStr
		}
	}
	catch(e)
	{
		alert(e)
	}
}
}
function appletLoadedFX()
{
	loadAndShow()
}
function loadAndShow()
{
	try
	{
		initialise();
		populate()
		showTab(1);
		window.location.href="#top0"
if((navigator.appName).toUpperCase()!="NETSCAPE")
	window.focus()
		fcs = true

	}
		catch(e)
		{
			alert(e)
		}
}
function goToStep4(e,tabNumber)
{
	var f=document.forms.frmName
	if(validStep1(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) && 
	validGrossSalary(f, true) && 
	validEmplCont1(f, f.txtEmplCont, true) && validAfterTax1(f, f.txtAfterTax, true) && validSalSac1(f, f.txtSalSac, true)	&& 
	validFees(f, true) && validInsurance(f, true) && 
			validSuperBenefitInvestmentReturn(f, true) && 
			validRetirementBenefitInvestmentReturn(f, true) && 
			validSalaryInflation(f, true) && 
			validInflation(f, true) && 
	validFinalTotalSuperSavings1(gl_FinalTotalSuperSavings,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,true) && 
	validAnnuityIncome(f))
	{
		if(myMathFloor(getSafeDecimalFieldValue(f.txtRqdIncome)*(parseInt(f.cmbIncomeFreq.value)), 2) > gl_FinalTotalSuperSavings)
		{
			alert(sP)
			mySelect(f.txtRqdIncome)
			return false
		}
		else
		{
			resetTo00(f.txtSuperAccBalance)
			resetTo00(f.txtAfterTax)
			resetTo00(f.txtAfterTaxNew)
			resetTo00(f.txtSalSac)
			resetTo00(f.txtSalSacNew)
			resetTo00(f.txtFees)
			resetTo00(f.txtInsurance)
			return true
		}
	}
	else
	{
		return false
	}
}
function resetIncome(f)
{
resetToDefault(f)
minAnnualPensionIncomeNew = minAnnualPensionIncome
document.getElementById("lblMinPensionTab3Org").innerHTML = "$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, ""));
document.getElementById("lblMinPensionTab3New").innerHTML = document.getElementById("lblMinPensionTab3Org").innerHTML
}
function validStep2(f)
{
if(scenarioTwoEntered(TAKE_INCOME_INTO_ACCOUNT_YES))
{
	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))
		{
			if(myMathFloor(getSafeDecimalFieldValue(f.txtRqdIncomeNew)*(parseInt(f.cmbIncomeFreq.value)), 2) > gl_FinalTotalSuperSavingsNew)
			{
				alert(sP)
				mySelect(f.txtRqdIncomeNew)
				return false
			}
			else
				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 = "The required "+getCmbText(f.cmbIncomeFreq,"l")+  " retirement income amount must be at least " + formatted_toFixed1(minInc, 2, "$") + "."
		if(numberValidDecimalNumber(field.value,"", false))
		{
			if(getSafeDecimalFieldValue(field) < minInc)
			{
				alert(sMin)
				mySelect(field)
				return false
			}
			else
				return true
		}
		else
		{
			if(field.value != "")
				sMin = "Invalid retirement income amount entered. Please try again."
			alert(sMin)
			mySelect(field)
			return false
		}
	}
	else
	{
		// just in case:
		//showTab(1)
		alert("Minimum allowable retirement 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
		sMin = "The adjusted "+getCmbText(f.cmbIncomeFreq,"l")+" retirement income amount must be at least " + formatted_toFixed1(minInc, 2, "$") + "."

	if(_showPrompt)
	{
		if(!numberValidDecimalNumber(field.value,"Invalid retirement income amount entered. Please try again.", _showPrompt))
		{
			mySelect(field)
			return false
		}
	}
	else
	{
			if(!numberValidDecimalNumber(field.value))
				return false
	}
		if(numberValidDecimalNumber(field.value,"", false))
		{
			if(getSafeDecimalFieldValue(field) < minInc)
			{
				if(_showPrompt)
				{
					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 allowable retirement income amount not set. Please check the input.")
			mySelect(field)
		}
	}
	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 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 validSuperAccBalance(f, field, _prompt)
{
	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 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 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 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 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 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=f.txtSupBenInvRet.value
	f.txtRtrmntBenInvRetNew.value=f.txtRtrmntBenInvRet.value
	f.txtSalaryInflationNew.value=f.txtSalaryInflation.value
	f.txtInflationNew.value=f.txtInflation.value
}
function setLifeExpectancy(f)
{
	var field = f.txtRetirementAge
	f.txtLifeExpectancy.value=""
	document.getElementById("lblNOYIR").innerHTML="&nbsp;"
	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(getLifeExpectancyFactor2(booleanFemale, getSafeFieldValue(f.txtRetirementAge)))

		f.txtLifeExpectancy.value=(le+getSafeFieldValue(f.txtRetirementAge))
		setNoOfYrsInRet(f)
	}
}
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 scenarioTwoEntered(takeIncomeIntoAccount)
{
var f=document.forms.frmName
	if(
			originalEqualNew(f.txtAfterTax.value, f.txtAfterTaxNew.value) && 
			originalEqualNew(f.txtSalSac.value, f.txtSalSacNew.value) && 
			((takeIncomeIntoAccount)?(originalEqualNew(f.txtRqdIncome.value, f.txtRqdIncomeNew.value)):(true)) && 

			originalEqualNew(f.txtSupBenInvRet.value, f.txtSupBenInvRetNew.value) && 
			originalEqualNew(f.txtRtrmntBenInvRet.value, f.txtRtrmntBenInvRetNew.value) && 
			originalEqualNew(f.txtSalaryInflation.value, f.txtSalaryInflationNew.value) && 
			originalEqualNew(f.txtInflation.value, f.txtInflationNew.value)
		)
		return false;
	else
		return true;
}
function stopGIF(stopIt)
{
if(stopIt)
{
document.getElementById("loading").style.display = "none";
document.getElementById("loading").src = null;
}
else
{
;
}
}
function populate()
{
return
var f=document.forms.frmName
f.rdGender[0].checked=true
f.txtDOB.value="20/07/1960"
f.txtRetirementAge.value=69
f.txtLifeExpectancy.value=84
f.txtSuperAccBalance.value=500000
f.txtGrossSalary.value=60000
f.txtAfterTax.value=500
selectCmbOption(f, f.cmbAfterTaxFreq, "y")
f.txtSalSac.value=222
f.cmbSalSacFreq.selectedIndex = getCmbIndex(f.cmbSalSacFreq, "y")
f.txtEmplCont.value=5400
f.cmbEmplContFreq.selectedIndex = getCmbIndex(f.cmbEmplContFreq, "y")
f.txtFees.value=1.50
f.txtInsurance.value=2.30
f.txtRqdIncome.value=11111
f.txtRqdIncomeNew.value=11111

}
function checkDlrPctgCont(i)
{
	document.forms.frmName.rdDollarPercentageContAT[i].click()
}
function contsAsDollarAmount(f)
{
	return f.rdDollarPercentageContAT[0].checked
}
function getYearlySalary(f)
{
	return myRound(getSafeDecimalFieldValue(f.txtGrossSalary)*f.cmbGrossSalaryFreq.value, 2)
}
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 selectPartTime(i)
{
	document.forms.frmName.rdPartTime[i].click()
}
function showPartTime(f)
{
	if(document.forms.frmName.rdPartTime[0].checked)
	{
		divPartTimePctg.style.display = "";
		mySelect(f.txtPartTimePctg)
	}
	else
	{
		f.txtPartTimePctg.value=""
		f.txtAgeFullTimeReturn.value=""
		divPartTimePctg.style.display = "none";
	}
}
function selectGender(i)
{
	document.forms.frmName.rdGender[i].click()
}
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 setNoOfYrsInRet(f)
{
document.getElementById("lblNOYIR").innerHTML="&nbsp;"
if(isInt(f.txtRetirementAge.value) && (getSafeFieldValue(f.txtRetirementAge) >= MIN_R_AGE && getSafeFieldValue(f.txtRetirementAge) <= MAX_R_AGE) && isInt(f.txtLifeExpectancy.value) && (getSafeFieldValue(f.txtLifeExpectancy) > getSafeFieldValue(f.txtRetirementAge) && getSafeFieldValue(f.txtLifeExpectancy) <= MAX_LEXPECT))
		{
			if(getSafeFieldValue(f.txtLifeExpectancy) > getSafeFieldValue(f.txtRetirementAge))
				document.getElementById("lblNOYIR").innerHTML=(getSafeFieldValue(f.txtLifeExpectancy) - getSafeFieldValue(f.txtRetirementAge))
		}
}
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 setCurrAgeForJava()
{
// FireFox/Java
var f = document.forms.frmName
sCurrentAgeForJava = ""
sCurrentAgeForJava = ("" + getCurrentAgeNEW2(f.txtDOB, dateDOC))
}
function setLifeExpectancyFactorForJava()
{
// FireFox/Java
var f = document.forms.frmName
sLifeExpectancyForJava = ""
sLifeExpectancyForJava = ("" + getLifeExpectancyFactor2(booleanFemale, getSafeFieldValue(f.txtRetirementAge)))
}
function calculateFinalTotalSuperSavingsFromJava(f, originalOnly)
{
	gl_FinalTotalSuperSavings = 0
	gl_FinalTotalSuperSavingsNew = 0
	try
	{
		document.getElementById('idG_SuperAndPensionRetirement_Calc').calculateFinalTotalSuperSavings230308(
								jsLRTrim(sCONCESS_LIMIT_DATE),//290709 OK
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[2], 10),
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[1], 10),
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[0], 10),
								jsLRTrim(sDOC),
								parseInt(((sDOC).split(SEPARATOR))[2], 10),
								parseInt(((sDOC).split(SEPARATOR))[1], 10),
								parseInt(((sDOC).split(SEPARATOR))[0], 10),
								jsLRTrim(f.txtDOB.value),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[2], 10),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[1], 10),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[0], 10),
											booleanFemale,
								(getCurrentAgeNEW2(f.txtDOB, dateDOC)).toString(), 
								getSafeFieldValue(f.txtRetirementAge),
								getSafeFieldValue(f.txtLifeExpectancy), 
								(getLifeExpectancyFactor2(booleanFemale, getSafeFieldValue(f.txtRetirementAge))).toString(),
								((f.rdCareerBreak[0].checked) ? 1 : 0),
								getSafeFieldValue(f.txtAgeStop),
								getSafeFieldValue(f.txtAgeRecommence),
								((f.rdPartTime[0].checked) ? 1 : 0),
								getSafeDecimalFieldValue(f.txtPartTimePctg).toString(),
								getSafeFieldValue(f.txtAgeFullTimeReturn),
								getSafeDecimalFieldValue(f.txtSuperAccBalance).toString(),
								"0",//(getSafeDecimalFieldValue(f.txtTaxFreeComponent)).toString(),
								getSafeDecimalFieldValue(f.txtGrossSalary).toString(),
								parseInt(f.cmbGrossSalaryFreq.value),
								((f.rdDollarPercentageContAT[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtAfterTax).toString(),
								parseInt(f.cmbAfterTaxFreq.value),
								((f.rdDollarPercentageContSS[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtSalSac).toString(),
								parseInt(f.cmbSalSacFreq.value),
								((f.rdDollarPercentageContEC[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtEmplCont).toString(),
								parseInt(f.cmbEmplContFreq.value),
								getSafeDecimalFieldValue(f.txtFees).toString(),
								parseInt(f.cmbFeesFreq.value),
								"0",//getSafeDecimalFieldValue(f.txtFeesAssetBased).toString(),
								(MAX_FEE).toString(),
								getSafeDecimalFieldValue(f.txtInsurance).toString(),
								parseInt(f.cmbInsuranceFreq.value),
								1,//((f.rdPurchaseAllocatedPension[0].checked) ? 1 : 0),
								getSafeDecimalFieldValue(f.txtRqdIncome).toString(),
								parseInt(f.cmbIncomeFreq.value),
								(originalOnly == true) ? (getSafeDecimalFieldValue(f.txtAfterTax).toString()) : (getSafeDecimalFieldValue(f.txtAfterTaxNew).toString()),
								(originalOnly == true) ? (getSafeDecimalFieldValue(f.txtSalSac).toString()) : (getSafeDecimalFieldValue(f.txtSalSacNew).toString()),
								(originalOnly == true) ? ((getSafeDecimalFieldValue(f.txtRqdIncome)).toString()) : ((getSafeDecimalFieldValue(f.txtRqdIncomeNew)).toString()),
								(getSafeDecimalFieldValue(f.txtSupBenInvRet)).toString(),
								(originalOnly == true) ? ((getSafeDecimalFieldValue(f.txtSupBenInvRet)).toString()) : (jsLRTrim(f.txtSupBenInvRetNew.value)),
								(getSafeDecimalFieldValue(f.txtRtrmntBenInvRet)).toString(),
								(originalOnly == true) ? ((getSafeDecimalFieldValue(f.txtRtrmntBenInvRet)).toString()) : (jsLRTrim(f.txtRtrmntBenInvRetNew.value)),
								(getSafeDecimalFieldValue(f.txtSalaryInflation)).toString(),
								(originalOnly == true) ? ((getSafeDecimalFieldValue(f.txtSalaryInflation)).toString()) : (getSafeDecimalFieldValue(f.txtSalaryInflationNew).toString()),
								(getSafeDecimalFieldValue(f.txtInflation)).toString(),
								(originalOnly == true) ? ((getSafeDecimalFieldValue(f.txtInflation)).toString()) : (getSafeDecimalFieldValue(f.txtInflationNew).toString()),
								jsLRTrim("" + AWOTE),
								(MIN_PCTG_SUPERBENEFIT).toString(),
								(MAX_PCTG_SUPERBENEFIT).toString(),
								(MIN_PCTG_RETIREMENTBENEFIT).toString(),
								(MAX_PCTG_RETIREMENTBENEFIT).toString(),
								(MIN_INFLATION_SALARY).toString(),
								(MAX_INFLATION_SALARY).toString(),
								(MIN_INFLATION).toString(),
								(MAX_INFLATION).toString(),
								(CONCESSIONAL_MAX__SUPER_CALC_B65).toString(),
								(BASE_MAX_CONCESSIONAL).toString(),
								(MAX_CONCESSIONAL_100K_ORG).toString(),
								(MAX_CONCESSIONAL).toString(),
								parseInt(START_AGE),
								(MAX_AFTERTAX150K).toString(),
								(NON_CONCESSIONAL_MULTIPLE).toString(),
								(COCONT_LIMIT_MIN_2009).toString(),
								(COCONT_LIMIT_MAX_2009).toString(),
								(MIN_COCONT_PAYABLE).toString(),
								(MIN_COCONT_CALCULATED_ON).toString(),
								jsLRTrim(sCOCONT_ENDOFTRANSITION_DATE),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[2], 10),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[1], 10),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[0], 10),
								APPLY_MIN_INCOME,
								CALCULATE_YELLOW_RANGE
								);
		errT = ""
		errT = document.getElementById('idG_SuperAndPensionRetirement_Calc').errT;
		if(errT == "")
		{
			gl_FinalTotalSuperSavings = document.getElementById('idG_SuperAndPensionRetirement_Calc').retirementFinalTotalSuperSavings
			gl_FinalTotalSuperSavingsNew = gl_FinalTotalSuperSavings;
			if(scenarioTwoEntered(TAKE_INCOME_INTO_ACCOUNT_NO))//to get the final savings, the income parameter doesn't matter
				gl_FinalTotalSuperSavingsNew = document.getElementById('idG_SuperAndPensionRetirement_Calc').retirementFinalTotalSuperSavingsNew

			var s = "The values you have entered can not be used to calculate a projected benefit. Please check your figures."
			if (gl_FinalTotalSuperSavings <= 0)
			{
				s = s + " (1)"
				return s;
			}
			else
			{
				if(!originalOnly)
				{
					if(scenarioTwoEntered(TAKE_INCOME_INTO_ACCOUNT_NO) && gl_FinalTotalSuperSavingsNew <= 0)
					{
						s = s + " (2)"
						return s;
					}
					else
						return ""
				}
				else
					return ""
			}
		}
	}
	catch (e)
	{
		var s = "ERROR in 'calculateFinalTotalSuperSavingsFromJava()' - : " + e;
		return s
	}
}
function passFiguresToApplet(f, tabNumber, repaint) {
    var errT = ""
    var dRqdIncomeNew = getSafeDecimalFieldValue(f.txtRqdIncomeNew)
    if (getSafeDecimalFieldValue(f.txtRqdIncomeNew) < myMathCeil(minAnnualPensionIncomeNew / f.cmbIncomeFreq.value, 2))
        dRqdIncomeNew = 0
    try {
        document.getElementById('idG_SuperAndPensionRetirement_Graph').sendFiguresToApplet(
					jsLRTrim(sCONCESS_LIMIT_DATE),
					parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[2], 10),
					parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[1], 10),
					parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[0], 10),
					jsLRTrim(sDOC),
					parseInt(((sDOC).split(SEPARATOR))[2], 10),
					parseInt(((sDOC).split(SEPARATOR))[1], 10),
					parseInt(((sDOC).split(SEPARATOR))[0], 10),
											jsLRTrim(f.txtDOB.value),
											parseInt(((f.txtDOB.value).split(SEPARATOR))[2], 10),
											parseInt(((f.txtDOB.value).split(SEPARATOR))[1], 10),
											parseInt(((f.txtDOB.value).split(SEPARATOR))[0], 10),
											booleanFemale,
											(getCurrentAgeNEW2(f.txtDOB, dateDOC)).toString(),
											getSafeFieldValue(f.txtRetirementAge),
											getSafeFieldValue(f.txtLifeExpectancy),
								(getLifeExpectancyFactor2(booleanFemale, getSafeFieldValue(f.txtRetirementAge))).toString(),
											((f.rdCareerBreak[0].checked) ? 1 : 0),
											getSafeFieldValue(f.txtAgeStop),
											getSafeFieldValue(f.txtAgeRecommence),
											((f.rdPartTime[0].checked) ? 1 : 0),
											(getSafeDecimalFieldValue(f.txtPartTimePctg)).toString(),
											getSafeFieldValue(f.txtAgeFullTimeReturn),
											(getSafeDecimalFieldValue(f.txtSuperAccBalance)).toString(),
											"0",//(getSafeDecimalFieldValue(f.txtTaxFreeComponent)).toString(),
											(getSafeDecimalFieldValue(f.txtGrossSalary)).toString(),
											parseInt(f.cmbGrossSalaryFreq.value),
											((f.rdDollarPercentageContAT[0].checked) ? 0 : 1),
											(getSafeDecimalFieldValue(f.txtAfterTax)).toString(),
											parseInt(f.cmbAfterTaxFreq.value),
								((f.rdDollarPercentageContSS[0].checked) ? 0 : 1),
											(getSafeDecimalFieldValue(f.txtSalSac)).toString(),
											parseInt(f.cmbSalSacFreq.value),
								((f.rdDollarPercentageContEC[0].checked) ? 0 : 1),
											(getSafeDecimalFieldValue(f.txtEmplCont)).toString(),
											parseInt(f.cmbEmplContFreq.value),
											(getSafeDecimalFieldValue(f.txtFees)).toString(),
											parseInt(f.cmbFeesFreq.value),
											"0",//getSafeDecimalFieldValue(f.txtFeesAssetBased).toString(),
													(MAX_FEE).toString(),
											(getSafeDecimalFieldValue(f.txtInsurance)).toString(),
											parseInt(f.cmbInsuranceFreq.value),
											1,//((f.rdPurchaseAllocatedPension[0].checked) ? 1 : 0),
											(getSafeDecimalFieldValue(f.txtRqdIncome)).toString(),
											parseInt(f.cmbIncomeFreq.value),
												(getSafeDecimalFieldValue(f.txtAfterTaxNew)).toString(),
												(getSafeDecimalFieldValue(f.txtSalSacNew)).toString(),
												dRqdIncomeNew.toString(),
										(getSafeDecimalFieldValue(f.txtSupBenInvRet)).toString(),
										(getSafeDecimalFieldValue(f.txtSupBenInvRetNew)).toString(),
										(getSafeDecimalFieldValue(f.txtRtrmntBenInvRet)).toString(),
										(getSafeDecimalFieldValue(f.txtRtrmntBenInvRetNew)).toString(),
										(getSafeDecimalFieldValue(f.txtSalaryInflation)).toString(),
										(getSafeDecimalFieldValue(f.txtSalaryInflationNew)).toString(),
										(getSafeDecimalFieldValue(f.txtInflation)).toString(),
										(getSafeDecimalFieldValue(f.txtInflationNew)).toString(),
										jsLRTrim("" + minAnnualPensionIncome),
										jsLRTrim("" + minAnnualPensionIncomeNew),
										(myMathCeil(minAnnualPensionIncome / f.cmbIncomeFreq.value, 2)).toString(),
										(myMathCeil(minAnnualPensionIncomeNew / f.cmbIncomeFreq.value, 2)).toString(),
										jsLRTrim("" + AWOTE),
(MIN_PCTG_SUPERBENEFIT).toString(),
(MAX_PCTG_SUPERBENEFIT).toString(),
(MIN_PCTG_RETIREMENTBENEFIT).toString(),
(MAX_PCTG_RETIREMENTBENEFIT).toString(),
(MIN_INFLATION_SALARY).toString(),
(MAX_INFLATION_SALARY).toString(),
(MIN_INFLATION).toString(),
(MAX_INFLATION).toString(),
(CONCESSIONAL_MAX__SUPER_CALC_B65).toString(),
					(BASE_MAX_CONCESSIONAL).toString(),
					(MAX_CONCESSIONAL_100K_ORG).toString(),
					(MAX_CONCESSIONAL).toString(),
					parseInt(START_AGE),
					(MAX_AFTERTAX150K).toString(),
					(NON_CONCESSIONAL_MULTIPLE).toString(),
(COCONT_LIMIT_MIN_2009).toString(),
(COCONT_LIMIT_MAX_2009).toString(),
(MIN_COCONT_PAYABLE).toString(),
(MIN_COCONT_CALCULATED_ON).toString(),
jsLRTrim(sCOCONT_ENDOFTRANSITION_DATE),
parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[2], 10),
parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[1], 10),
parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[0], 10),
APPLY_MIN_INCOME,
CALCULATE_YELLOW_RANGE,
repaint);
        if (firstD) {
            firstD = false
        }
        else
            document.getElementById('idG_SuperAndPensionRetirement_Graph').style.height = "250px"

        errT = document.getElementById('idG_SuperAndPensionRetirement_Graph').errT;
    }
    catch (e) {
        alert("Unknown error!")
        var s = "ERROR in 'document.getElementById('idG_SuperAndPensionRetirement_Graph').sendFiguresToApplet()' - : " + e;
        alert(s)
        errT = s
    }

    tabToSwitchTo = Math.min(2, document.getElementById('idG_SuperAndPensionRetirement_Graph').tabToSwitchTo);
    return errT
}
function calculateFiguresForTab3(f, tabNumber)
{
	// this will be called after validation of Step1, Step2 and Step3
	var errT = ""

	try
	{
		document.getElementById('idG_SuperAndPensionRetirement_Calc').calculateFiguresForResultTab(
								jsLRTrim(sCONCESS_LIMIT_DATE),
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[2], 10),
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[1], 10),
								parseInt(((sCONCESS_LIMIT_DATE).split(SEPARATOR))[0], 10),
								jsLRTrim(sDOC),
								parseInt(((sDOC).split(SEPARATOR))[2], 10),
								parseInt(((sDOC).split(SEPARATOR))[1], 10),
								parseInt(((sDOC).split(SEPARATOR))[0], 10),
								jsLRTrim(f.txtDOB.value),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[2], 10),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[1], 10),
								parseInt(((f.txtDOB.value).split(SEPARATOR))[0], 10),
											booleanFemale,
								(getCurrentAgeNEW2(f.txtDOB, dateDOC)).toString(), 
								getSafeFieldValue(f.txtRetirementAge),
								getSafeFieldValue(f.txtLifeExpectancy), 
								(getLifeExpectancyFactor2(booleanFemale, getSafeFieldValue(f.txtRetirementAge))).toString(),

								((f.rdCareerBreak[0].checked) ? 1 : 0),
								getSafeFieldValue(f.txtAgeStop),
								getSafeFieldValue(f.txtAgeRecommence),
								((f.rdPartTime[0].checked) ? 1 : 0),
								getSafeDecimalFieldValue(f.txtPartTimePctg).toString(),
								getSafeFieldValue(f.txtAgeFullTimeReturn),
								getSafeDecimalFieldValue(f.txtSuperAccBalance).toString(),
								"0",//(getSafeDecimalFieldValue(f.txtTaxFreeComponent)).toString(),
								getSafeDecimalFieldValue(f.txtGrossSalary).toString(),
								parseInt(f.cmbGrossSalaryFreq.value),
								((f.rdDollarPercentageContAT[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtAfterTax).toString(),
								parseInt(f.cmbAfterTaxFreq.value),
								((f.rdDollarPercentageContSS[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtSalSac).toString(),
								parseInt(f.cmbSalSacFreq.value),
								((f.rdDollarPercentageContEC[0].checked) ? 0 : 1),
								getSafeDecimalFieldValue(f.txtEmplCont).toString(),
								parseInt(f.cmbEmplContFreq.value),
								getSafeDecimalFieldValue(f.txtFees).toString(),
								parseInt(f.cmbFeesFreq.value),
								"0",//getSafeDecimalFieldValue(f.txtFeesAssetBased).toString(),
								(MAX_FEE).toString(),
								getSafeDecimalFieldValue(f.txtInsurance).toString(),
								parseInt(f.cmbInsuranceFreq.value),
								1,//((f.rdPurchaseAllocatedPension[0].checked) ? 1 : 0),
								getSafeDecimalFieldValue(f.txtRqdIncome).toString(),
								parseInt(f.cmbIncomeFreq.value),
								getSafeDecimalFieldValue(f.txtAfterTaxNew).toString(),
								getSafeDecimalFieldValue(f.txtSalSacNew).toString(),
								getSafeDecimalFieldValue(f.txtRqdIncomeNew).toString(),
								(getSafeDecimalFieldValue(f.txtSupBenInvRet)).toString(),
								(getSafeDecimalFieldValue(f.txtSupBenInvRetNew)).toString(),
								(getSafeDecimalFieldValue(f.txtRtrmntBenInvRet)).toString(),
								(getSafeDecimalFieldValue(f.txtRtrmntBenInvRetNew)).toString(),
								(getSafeDecimalFieldValue(f.txtSalaryInflation)).toString(),
								(getSafeDecimalFieldValue(f.txtSalaryInflationNew)).toString(),
								(getSafeDecimalFieldValue(f.txtInflation)).toString(),
								(getSafeDecimalFieldValue(f.txtInflationNew)).toString(),
jsLRTrim(""+minAnnualPensionIncome),
jsLRTrim(""+minAnnualPensionIncomeNew),
(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2)).toString(),
(myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2)).toString(),


								jsLRTrim("" + AWOTE),
								(MIN_PCTG_SUPERBENEFIT).toString(),
								(MAX_PCTG_SUPERBENEFIT).toString(),
								(MIN_PCTG_RETIREMENTBENEFIT).toString(),
								(MAX_PCTG_RETIREMENTBENEFIT).toString(),
								(MIN_INFLATION_SALARY).toString(),
								(MAX_INFLATION_SALARY).toString(),
								(MIN_INFLATION).toString(),
								(MAX_INFLATION).toString(),
								(CONCESSIONAL_MAX__SUPER_CALC_B65).toString(),
								(BASE_MAX_CONCESSIONAL).toString(),
								(MAX_CONCESSIONAL_100K_ORG).toString(),
								(MAX_CONCESSIONAL).toString(),
								parseInt(START_AGE),
								(MAX_AFTERTAX150K).toString(),
								(NON_CONCESSIONAL_MULTIPLE).toString(),
								(COCONT_LIMIT_MIN_2009).toString(),
								(COCONT_LIMIT_MAX_2009).toString(),
								(MIN_COCONT_PAYABLE).toString(),
								(MIN_COCONT_CALCULATED_ON).toString(),
								jsLRTrim(sCOCONT_ENDOFTRANSITION_DATE),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[2], 10),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[1], 10),
								parseInt(((sCOCONT_ENDOFTRANSITION_DATE).split(SEPARATOR))[0], 10),
								APPLY_MIN_INCOME,
								CALCULATE_YELLOW_RANGE
					);
		errT = document.getElementById('idG_SuperAndPensionRetirement_Calc').errT;
	}
	catch(e)
	{
		var s = "ERROR in 'calculateFiguresForResultTab(f)' - : "+ e;
		alert(s)
		errT = s
	}

	return errT
}
function reSetMinMaxAnnualPensionIncomesNew()
{
	minAnnualPensionIncomeNew = 0;
	document.getElementById("lblMinPensionTab3New").innerHTML = "$" + minAnnualPensionIncomeNew;
}
function setMinMaxAnnualPensionIncomesNew()
{
	var f = document.forms.frmName;
	gl_FinalTotalSuperSavingsNew = 0;
	reSetMinMaxAnnualPensionIncomesNew()

	if( validAfterTax1(f, f.txtAfterTaxNew, false) && 
			validSalSac1(f, f.txtSalSacNew, false) && 
			validSuperBenefitInvestmentReturnNew(f, false) && 
			validRetirementBenefitInvestmentReturnNew(f, false) && 
			validSalaryInflationNew(f, false) &&
			validInflationNew(f, false))
	{
		var sRet = calculateFinalTotalSuperSavingsFromJava(f, ORIGINAL_SCENARIO_ONLY_NO)
		if(sRet != "")
		{
			return sRet
		}
		else
		{
			if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavingsNew,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,false))
			{
				minAnnualPensionIncomeNew = document.getElementById('idG_SuperAndPensionRetirement_Calc').minAnnualPensionIncomeNew

				if(minAnnualPensionIncomeNew < 0)
					minAnnualPensionIncomeNew = 0;

				if(minAnnualPensionIncomeNew == 0)
					document.getElementById('lblMinPensionTab3New').innerHTML = "&nbsp;"
				else
					document.getElementById('lblMinPensionTab3New').innerHTML = ("$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2), 2, "")))

				if(getSafeDecimalFieldValue(f.txtRqdIncomeNew) < myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2))
					f.txtRqdIncomeNew.value = myMathCeil(minAnnualPensionIncomeNew/f.cmbIncomeFreq.value, 2)
			}
			else
			{
				document.getElementById('lblMinPensionTab3New').innerHTML = "&nbsp;"
				return sTotInv
			}
			return ""
		}
	}
	else
		return "Error"
}
function invalidateGraph()
{
	try
	{
		document.getElementById('idG_SuperAndPensionRetirement_Graph').invalidateGraph();
	}
	catch(e)
	{
		var s = "ERROR in 'document.getElementById('idG_SuperAndPensionRetirement_Graph').invalidateGraph()' - : "+ e;
		alert(s)
	}
}
function passAfterTaxNew(aEvent)
{
	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 sRtrn = setMinMaxAnnualPensionIncomesNew()
			if(sRtrn != "")
				invalidateGraph()
			else
			{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
			}
		}
	}
}
function passSalSacNew(aEvent)
{
	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
			{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
			}
		}
	}
}
function passIncomeNew(aEvent)
{
	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
		{
			var errT = passFiguresToApplet(f, 2, true)
			if(errT!="")
				invalidateGraph()
		}
	}
}
function pass_salaryInflationPctgNew(true_false, field, aEvent)
{
	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
			{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
			}
		}
	}
}
function pass_InflationPctgNew(true_false, field, aEvent)
{
	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
			{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
			}
		}
	}
}
function passSuperBenefitPctgNew(true_false, field, aEvent)
{
	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
			{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
			}
		}
	}
}
function passRetirementBenefitPctgNew(true_false, field, aEvent)
{
	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
		{
				var errT = passFiguresToApplet(f, 2, true)
				if(errT != "")
					invalidateGraph()
		}
	}
}
function validSuperBenefitInvestmentReturn(f, _prompt)
{
	if(!validDecimalField3(f, f.txtSupBenInvRet, getSafeDecimalFieldValue(f.txtSupBenInvRet), (_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))
	{
		if(_prompt == true)
		{
			f.txtSupBenInvRet.value = formatted_toFixed1(INVEST_RATE_SUPBENEFIT, 2, "")
			mySelect(f.txtSupBenInvRet)
		}
		return false
	}
	else
		return true
}
function validSuperBenefitInvestmentReturnNew(f, _prompt)
{
	if(!validDecimalField3(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(!validDecimalField3(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 validRetirementBenefitInvestmentReturn(f, _prompt)
{
	if(!validDecimalField3(f, f.txtRtrmntBenInvRet, getSafeDecimalFieldValue(f.txtRtrmntBenInvRet), ((_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))
	{
		if(_prompt == true)
		{
			f.txtRtrmntBenInvRet.value = formatted_toFixed1(INVEST_RATE_RETBENEFIT, 2, "")
			mySelect(f.txtRtrmntBenInvRet)
		}
		return false
	}
	else
		return true
}
function validSalaryInflationNew(f, _prompt)
{
	if(!validDecimalField3(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 validSalaryInflation(f, _prompt)
{
	if(!validDecimalField3(f,f.txtSalaryInflation, getSafeDecimalFieldValue(f.txtSalaryInflation), ((_prompt==true)?("The adjusted salary inflation rate must be between "+MIN_INFLATION_SALARY+"% and "+MAX_INFLATION_SALARY+"%."):""), MIN_INFLATION_SALARY,MAX_INFLATION_SALARY))
	{
		if(_prompt == true)
		{
			f.txtSalaryInflation.value = formatted_toFixed1(INFLATION_SALARY, 2, "")
			mySelect(f.txtSalaryInflation)
		}
		return false
	}
	else
		return true
}
function validInflationNew(f, _prompt)
{
	if(!validDecimalField3(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 validInflation(f, _prompt)
{
	if(!validDecimalField3(f,f.txtInflation, getSafeDecimalFieldValue(f.txtInflation), ((_prompt==true)?("The adjusted inflation rate (CPI) must be between "+MIN_INFLATION+"% and "+MAX_INFLATION+"%."):""), MIN_INFLATION,MAX_INFLATION))
	{
		if(_prompt == true)
		{
			f.txtInflation.value = formatted_toFixed1(INFLATION, 2, "")
			mySelect(f.txtInflation)
		}
		return false
	}
	else
		return true
}
function ToggleDisclaimer(t)
{
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)
{
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 setMinMaxAnnualPensionIncomes()
{
	var f = document.forms.frmName;
	var sRet
	gl_FinalTotalSuperSavings = gl_FinalTotalSuperSavingsNew = 0;

	reSetMinMaxAnnualPensionIncomes()
	var cnt = false;
	if(validDOB2(f.txtDOB, dateDOC, false) && 
			validRetAge(f, false) && validLifeExpectancy(f, false) && validSuperAccBalance(f, f.txtSuperAccBalance, false) && 
			validGrossSalary(f, false) && validEmplCont1(f, f.txtEmplCont, false) && 
			validAfterTax1(f, f.txtAfterTax, false) && validSalSac1(f, f.txtSalSac, false)	&& 
			validFees(f, false) && validInsurance(f, false) && 
			validAfterTax1(f, f.txtAfterTaxNew, false) && validSalSac1(f, f.txtSalSacNew, false) && 
			validSuperBenefitInvestmentReturn(f, false) && validRetirementBenefitInvestmentReturn(f, false) && 
			validSalaryInflation(f, false) && validInflation(f, false))
	{
		cnt = validCareerBreak(f, false)
		if(cnt)
		{
			if(validSuperBenefitInvestmentReturnNew(f, false) && 
					validRetirementBenefitInvestmentReturnNew(f, false) && 
					validSalaryInflationNew(f, false) &&
					validInflationNew(f, false))
				cnt = true
			else
				cnt = false
		}
	}

	if(cnt)
	{
		sRet = ""
		sRet = calculateFinalTotalSuperSavingsFromJava(f, ORIGINAL_SCENARIO_ONLY_YES)
		if(sRet != "")
		{
			alert(sRet)
		}
		else
		{
			if(validFinalTotalSuperSavings1(gl_FinalTotalSuperSavings,MIN_INV_AMOUNT,MAX_INV_AMOUNT,sTotInv,false))
			{
				minAnnualPensionIncome = document.getElementById('idG_SuperAndPensionRetirement_Calc').minAnnualPensionIncome
				if(minAnnualPensionIncome < 0)
					minAnnualPensionIncome = 0;
				document.getElementById("lblMinPension_Tab2").innerHTML='<B>$' + (formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, "")) + '</B>';
			}
			else
			{
				return sTotInv
			}
			minAnnualPensionIncomeNew = minAnnualPensionIncome
		}
	}

	minAnnualPensionIncomeNew = minAnnualPensionIncome
	document.getElementById("lblMinPensionTab3Org").innerHTML = "$"+(formatted_toFixed1(myMathCeil(minAnnualPensionIncome/f.cmbIncomeFreq.value, 2), 2, ""));
	document.getElementById("lblMinPensionTab3New").innerHTML = document.getElementById("lblMinPensionTab3Org").innerHTML
}
function getMinSalary(f)
{
	return (Math.ceil(MIN_SALARY/f.cmbGrossSalaryFreq.value))
}
function goToStep3(e,tabNumber)
{
	var f=document.forms.frmName
	if(validStep1(f) && validStep2(f))
	{
		var errT = ""
		errT = calculateFiguresForTab3(f, tabNumber)
		if(errT=="")
		{
			setTab2FieldsToZero(f)
			var secondScenario = scenarioTwoEntered(TAKE_INCOME_INTO_ACCOUNT_YES)
			var _salary = getSafeDecimalFieldValue(f.txtGrossSalary) * f.cmbGrossSalaryFreq.value
			var csab = (jsLRTrim(f.txtSuperAccBalance.value) == "") ? "0.00" : getSafeDecimalFieldValue(f.txtSuperAccBalance);
			document.getElementById("lblCSAB1").innerHTML = formatted_toFixed1(csab, 2, "$")
			document.getElementById("lblCSAB2").innerHTML = secondScenario ? formatted_toFixed1(csab, 2, "$") : "&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 + "&nbsp;pension income"
			document.getElementById("lblRIIR1").innerHTML = formatted_toFixed1(riir1, 2, "$")
			document.getElementById("lblRIIR2").innerHTML = secondScenario ? formatted_toFixed1(riir2, 2, "$") : "&nbsp;";
			incomeWillStopAtTheEndOfThisYear = myMathFloor(document.getElementById('idG_SuperAndPensionRetirement_Calc').incomeWillStopAtTheEndOfThisYear, 2)
			document.getElementById("lblWL1").innerHTML = incomeWillStopAtTheEndOfThisYear
			if (secondScenario) {
					incomeWillStopAtTheEndOfThisYearNew = myMathFloor(document.getElementById('idG_SuperAndPensionRetirement_Calc').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(document.getElementById('idG_SuperAndPensionRetirement_Calc').getFinalTotalSuperSavingsFromJava(0))
			var finalTotalSuperSavingsNew = Math.floor(document.getElementById('idG_SuperAndPensionRetirement_Calc').getFinalTotalSuperSavingsFromJava(1))
			document.getElementById("lblELS0").innerHTML = "Estimated lump sum benefit at age " + getSafeFieldValue(f.txtRetirementAge)
			document.getElementById("lblELS1").innerHTML = formatted_toFixed1(finalTotalSuperSavings, 2, "$")
			document.getElementById("lblELS2").innerHTML = secondScenario ? formatted_toFixed1(finalTotalSuperSavingsNew, 2, "$") : "&nbsp;";
			var requiredLumpSumAtRetirementAge = Math.ceil(document.getElementById('idG_SuperAndPensionRetirement_Calc').requiredLumpSumAtRetirementAge)
			var requiredLumpSumAtRetirementAgeNew = Math.ceil(document.getElementById('idG_SuperAndPensionRetirement_Calc').requiredLumpSumAtRetirementAgeNew)
			document.getElementById("lblTBen0").innerHTML = '<B>' + "Targeted benefit at age " + getSafeFieldValue(f.txtRetirementAge) + '</B>'
			document.getElementById("lblTBen1").innerHTML = '<B>' + formatted_toFixed1(requiredLumpSumAtRetirementAge, 2, "$") + '</B>'
			document.getElementById("lblTBen2").innerHTML = '<B>' + (secondScenario ? formatted_toFixed1(requiredLumpSumAtRetirementAgeNew, 2, "$") : "&nbsp;") + '</B>';

			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 = '<b><SPAN class=red1>' + formatted_toFixed1(retSavings1, 2, "$") + '</SPAN></b>'
			else
					document.getElementById("lblShortFall1").innerHTML = '<b>' + formatted_toFixed1(retSavings1, 2, "$") + '</b>'

			if (secondScenario) {
					if (retSavings2 < 0)
							document.getElementById("lblShortFall2").innerHTML = '<b><SPAN class=red1>' + formatted_toFixed1(retSavings2, 2, "$") + '</SPAN><b>'
					else
							document.getElementById("lblShortFall2").innerHTML = '<b>' + formatted_toFixed1(retSavings2, 2, "$") + '</b>'
			}
			else
					document.getElementById("lblShortFall2").innerHTML = '&nbsp;'



			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;"

			showTab(tabNumber);
		}
		else
		{
			tabToSwitchTo = Math.min(2, document.getElementById('idG_SuperAndPensionRetirement_Calc').tabToSwitchTo);
			showTab(tabToSwitchTo)
			alert(errT)
			if(tabToSwitchTo == 1)
			{
				f.txtRqdIncome.value=""
				resetToDefault(f)
				mySelect(document.forms.frmName.txtDOB)
			}
			else
			{
				mySelect(f.txtAfterTaxNew)
			}
		}
	}
}
function setTab2FieldsToZero(f)
{
f.txtAfterTaxNew.value = setEmptyFieldTo0(f.txtAfterTaxNew)
f.txtSalSacNew.value = setEmptyFieldTo0(f.txtSalSacNew)
f.txtRqdIncomeNew.value = setEmptyFieldTo0(f.txtRqdIncomeNew)
f.txtSupBenInvRetNew.value = setEmptyFieldTo0(f.txtSupBenInvRetNew)
f.txtRtrmntBenInvRetNew.value = setEmptyFieldTo0(f.txtRtrmntBenInvRetNew)
f.txtSalaryInflationNew.value = setEmptyFieldTo0(f.txtSalaryInflationNew)
f.txtInflationNew.value = setEmptyFieldTo0(f.txtInflationNew)
}
function reSetLabelsTab3(f)
{
	document.getElementById("lblCSAB2").innerHTML="&nbsp;"
	document.getElementById("lblEC2").innerHTML="&nbsp;"
	document.getElementById("lblATC2").innerHTML="&nbsp;"
	document.getElementById("lblPTC2").innerHTML="&nbsp;"
	document.getElementById("lblIRETSB2").innerHTML="&nbsp;"
	document.getElementById("lblIRETRB2").innerHTML="&nbsp;"
	document.getElementById("lblINFLSAL2").innerHTML="&nbsp;"
	document.getElementById("lblINFL2").innerHTML="&nbsp;"
	document.getElementById("lblELS2").innerHTML="&nbsp;"
	document.getElementById("lblRIIR2").innerHTML="&nbsp;"
}
function recalcEmplConts(cmb, cmbValue, emplCont)
{
var f = document.forms.frmName
var eContMin = myRound(Math.min(myMathCeil(((getSafeDecimalFieldValue(f.txtGrossSalary))*f.cmbGrossSalaryFreq.value)*(MIN_EMPLCONT_PCTG/100.0)/f.cmbEmplContFreq.value, 2), myMathCeil(MAX_CONCESSIONAL/f.cmbEmplContFreq.value, 2)), 2)
f.txtEmplCont.value=(eContMin==0)?"":eContMin
}
function setGenderBooleanFemale(f)
{
if(!f.rdGender[0].checked && !f.rdGender[1].checked)
	booleanFemale = null
else
{
	var rdGenderValue
	if(f.rdGender[0].checked)
		rdGenderValue = f.rdGender[0].value
	else
		rdGenderValue = f.rdGender[1].value
	if(rdGenderValue.toUpperCase() == "M")
		booleanFemale = false
	else
		booleanFemale = true

}
}
