﻿// +++++++++++++++++++++++++++++++++++
// (C) Copyright 2003 - 2011 Niro Solutions Pty Limited ABN 89 106 967 140
// +++++++++++++++++++++++++++++++++++
// Version: 2.0.0
// +++++++++++++++++++++++++++++++++++
// Original author: Miles Glisovic
// Last update completed by: Miles Glisovic
// Modification date: 13/03/08
// +++++++++++++++++++++++++++++++++++

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 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 jsLRTrim(s) {
    return s.replace(/(^\s+)|(\s+$)/g, "");
}
function getSafeDecimalFieldValue(field) {
    var x = 0
    if (jsLRTrim(field.value) == "" || isNaN(jsLRTrim(field.value)))
        x = 0
    else
        x = parseFloat(field.value)
    return x;
}

function adjustDecimalPoint(field) {
    if ((field.value).indexOf(".") == 0)
        field.value = "0" + (field.value)
}

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 formatted_toFixed1(_value, np, _sign) {
    // _value has to be a number;
    // use getSafeDecimalFieldValue(field) or getSafeFieldValue(field) to pass in _value parameter
    return formatCurrency(_value.toFixed(np), _sign)
}
function formatCurrency(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 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 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 validField(field, fMin, fMax) {
    if (isInt(field.value) && (parseInt(field.value, 10) >= fMin) && (parseInt(field.value, 10) <= fMax))
        return true
    else
        return false
}

function resetTo0(field) {
    if (jsLRTrim(field.value) == "")
        field.value = 0
}

function openInMain(page1) {
    try {
        (window.opener).location = page1
        window.opener.focus()
    }
    catch (e) {
        msgWindow1 = null;
        msgWindow1 = window.open(page1, 'mainWindow');
        self.close()
    }
}
function openWin(page1) {
    try {
        msgW.close()
        msgW = null
    }
    catch (e)
{ }

    try {
        msgW = null;
        msgW = window.open(page1, 'CSF_Window');
        msgW.focus()
    }
    catch (e)
{ }
}
function alertFromJava(s, ind) {
    if (ind == 2)
        goToStep2(this, 2)
    else
        showTab(1)

    alert(s)
}
function isDecimal_MinMax(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 {
        switchToDIV_CSF_Opt(field)
        if (prompt1) {
            alert(prompt0)
            mySelect(field)//160608
        }
        return false;
    }
}

function switchToDIV_CSF_Opt(field) {
    var rr = getMyDIV(field);
    if (rr.style.display == "none")
        showDIV(rr, noOfTabs)
}
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) mySelect(field)
    return ret
}

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 getMaxDollarAllowed(f, contMax50000, _sgc, salary) {
    var contM = myMathFloor((contMax50000 - _sgc) / f.cmbGrossIncomeFreq.value, 2)
    if ((contM * f.cmbGrossIncomeFreq.value + _sgc) > contMax50000)
        contM = contM - 0.01
    return contM
}

function getMaxPctAllowed(f, contMax50000, _sgc, salary) {
    var contM = Math.max(myMathFloor(((contMax50000 - _sgc) / salary) * 100, 2), MIN_PCTG)
    if (salary * (contM / 100.0 + SGC_RATE) > contMax50000)
        contM = contM - 0.01
    return contM
}


function mySelect(field) {
    if ((navigator.appName).toUpperCase() != "NETSCAPE") {
        try {
            field.focus()
            field.select()
        }
        catch (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 setLarge() {
    txtsize1.className = 'largeTextSize';
    txtsize2.className = 'fullRow';
    txtsize3.className = 'fullRow';
}
function setSmall() {
    txtsize1.className = 'bodytext';
    txtsize2.className = 'middleRow';
    txtsize3.className = 'middleRow';
}
function openPrintWnd() {
    window.print()
}
function setEmptyFieldTo1(field) {
    if (jsLRTrim(field.value) == "")
        field.value = 0
}
function setEmptyFieldTo0(field) {
    var x = 0
    if (jsLRTrim(field.value) == "")
        x = 0
    else
        x = field.value
    return x;
}

function validFieldNew(field, min1, max1) {
    if (isNaN(jsLRTrim(field.value)))
        return false

    var x = getSafeDecimalFieldValue(field)
    if (x >= min1 && x <= max1)
        return true
    else
        return false
}
function numberValid(_val, _prompt) {
    if (isNaN(_val))
        alert(_prompt)
    return !isNaN(_val)
}
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)
    }
}
function limitNoDecimalPlaces(field, n) {
    // this new version will allow non-decimal number of any length
    // 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 setCursorHand(e) {
    e.style.cursor = "pointer";
}
function cursorH(e) {
    e.style.cursor = "pointer";
}
function cursorA(e) {
    e.style.cursor = "default";
}
function setNavigatorsName() {
    navigator_appName = ""
    navigator_appName = navigator.appName
}
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


    //alert("zz")
    return strValue.replace(objRegExp, '');
}
function fixCommDollSpacPercSign(field) {
    //alert("z")
    field.value = removeCommDollSpacPerc(field.value)
    //alert("zzz")
}
function fixCommDollSpacPercSignAll() {
    // 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("txtOtherFundName")
    //alert("eleObjArr.length: "+eleObjArr.length)
    for (var i = 0; i < eleObjArr.length; i++) {
        if (eleObjArr[i] != excludeField) {
            fixCommDollSpacPercSign(eleObjArr[i])
            if (eleObjArr[i].getAttribute("onkeyup") != null)
                eleObjArr[i].onkeyup()
        }
    }
}
function showStatus(s) {
    window.status = s;
    return true;
}
function openInMain2(page1) {
    try {
        (window.opener).location = page1
        window.opener.focus()
        self.close()
    }
    catch (e) {
        msgWindow1 = null;
        msgWindow1 = window.open(page1, 'mainWindow');
        self.close()
    }
}
function set2DecimalPlaces(ns) {
    var li = ns.lastIndexOf(".")
    if (li < 0)
        return ("" + ns + ".00");
    else {
        if ((ns.substring(li + 1)).length >= 2)
            return ns
        else
            return ("" + ns + "0")
    }
}
function openInMain3(_url) {
    try {
        winclose(_url)
    }
    catch (e) {
        msgWindow1 = null;
        msgWindow1 = window.open(_url, 'mainWindow');
        self.close()
    }
}
function winclose(_url) {
    window.parent.location = _url;
}

function limitNoDecimalPlaces2(field, n) {
    // this new version will allow non-decimal number of any length
    // find if '.' entered
    var li = (field.value).indexOf(".")
    if (li < 0)
        ;
    else {
        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 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 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("txtOtherFundName")

    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 parseUndefinedInt(val) {
    val = (isNaN(val) == true) ? 0 : val;
    return (val == "" || parseInt(val) == false) ? 0 : parseInt(val);
}

function parseUndefinedFloat(val) {
    val = (isNaN(val) == true) ? 0 : val;
    return (val == "" || parseFloat(val) == false) ? 0 : parseFloat(val);
}
function getResultPeriod() {
    var f = document.forms.frmName
    var ret = "";
    if (f.rdMemberCont[0].checked)
        ret = " per annum";
    else {
        switch (f.cmbDollarAmountFreq.value) {
            case "1":
                ret = " per annum";
                break;
            case "12":
                ret = " per month";
                break;
            case "26":
                ret = " per fortnight";
                break;
            case "52":
                ret = " per week";
                break;
        }
    }
    return ret;
}

function getResultPeriod2() {
    var f = document.forms.frmName
    var ret = "";
    if (f.rdMemberCont[0].checked)
        ret = "per annum";
    else {
        switch (f.cmbDollarAmountFreq.value) {
            case "1":
                ret = "annual";
                break;
            case "12":
                ret = "monthly";
                break;
            case "26":
                ret = "fortnightly";
                break;
            case "52":
                ret = "weekly";
                break;
        }
    }
    return ret;
}

