function round(n, nd)
 {
    if (isFinite(n) && isFinite(nd))
    {
        var sign_n = (n < 0) ? -1: 1;
        var abs_n = Math.abs(n);
        var factor = Math.pow(10, nd);
        return sign_n * Math.round(abs_n * factor) / factor;
    }
    else {
        return NaN;
    }
};


function eeparseFloat(str) {
    var res = parseFloat(str);
    if (isNaN(res)) {
        return 0;
    }
    else {
        return res;
    };
};

function eeparsePercent(str) {
    var parts = String(str).split('%');
    var res = parseFloat(parts[0]) / 100;
    if (isNaN(res)) {
        return 0;
    } else {
        return res;
    };
};

function eedisplayFloatND(x, nd) {
    if (isNaN(x)) {
        return Number.NaN;
    }
    else {
        var res = round(x, nd);
        if (nd > 0) {
            var parts = String(res).split('.');
            if (parts.length < 2) {
                var decimals = ('00000000000000').substring(0, nd);
                return (parts[0]).toString() + '.' + decimals;
            }
            else {
                var decimals = ((parts[1]).toString() + '00000000000000').substring(0, nd);
                return (parts[0]).toString() + '.' + decimals;
            }
        } else {
            return res;
        };
    };
};
function eedisplayPercentND(x, nd) {
    if (isNaN(x)) {
        return Number.NaN;
    } else {
        return eedisplayFloatND(x * 100, nd) + '%';
    };
}
function eeparseFloatTh(str) {
    str = String(str).replace(/,/g, "");
    var res = parseFloat(str);
    if (isNaN(res)) {
        return 0;
    } else {
        return res;
    };
};
function eedisplayFloatNDTh(x, nd) {
    if (isNaN(x)) {
        return Number.NaN;
    } else {
        var res = round(x, nd);
        if (nd > 0) {
            var parts = String(res).split('.');
            var res2 = eeinsertThousand(parts[0].toString());
            if (parts.length < 2) {
                var decimals = ('00000000000000').substring(0, nd);
                return (res2 + '.' + decimals);
            } else {
                var decimals = ((parts[1]).toString() + '00000000000000').substring(0, nd);
                return (res2 + '.' + decimals);
            }
        } else {
            return (eeinsertThousand(res.toString()));
        };
    };
};
function eeinsertThousand(whole) {
    if (whole == "" || whole.indexOf("e") >= 0) {
        return whole;
    } else {
        var minus_sign = "";
        if (whole.charAt(0) == "-") {
            minus_sign = "-";
            whole = whole.substring(1);
        };
        var res = "";
        var str_length = whole.length - 1;
        for (ii = 0; ii <= str_length; ii++) {
            if (ii > 0 && ii % 3 == 0) {
                res = "," + res;
            };
            res = whole.charAt(str_length - ii) + res;
        };
        return minus_sign + res;
    }
};
