Monday, June 17, 2013

Extend the default Number object with a formatMoney() method

// usage: someVar.formatMoney(decimalPlaces, symbol, thousandsSeparator, decimalSeparator)
        // defaults: (2, "$", ",", ".")
        Number.prototype.formatMoney = function(places, symbol, thousand, decimal) {
            places = !isNaN(places = Math.abs(places)) ? places : 2;
            symbol = symbol !== undefined ? symbol : "$";
            thousand = thousand || ",";
            decimal = decimal || ".";
            var number = this,
                negative = number < 0 ? "-" : "",
                i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
                j = (j = i.length) > 3 ? j % 3 : 0;
            return symbol + negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "");
        };
        var n = new Number(12000);
        document.getElementById('{!$Component.lblMoney}').value=n.formatMoney(2, "$", ",", ".");

Some useful links:  http://josscrowcroft.github.io/accounting.js/