﻿var FormatCurrency = function(number, options) {
    var fc = {
        number_to_currency: function (num, opt) {
            try {
                var opt       = opt || {};
                var precision = (typeof (opt["precision"]) == "number") ? opt["precision"]  : 2;
                var unit      = (typeof (opt["unit"]) == "string")      ? opt["unit"]       : "$";
                var separator = (typeof (opt["separator"]) == "string") ? opt["separator"]  : ".";
                var delimiter = (typeof (opt["delimiter"]) == "string") ? opt["delimiter"]  : ",";
                var parts = parseFloat(num).toFixed(precision).split('.');
                return unit + this.number_with_delimiter(parts[0], delimiter) +
                    (parts.length > 1 ? separator + parts[1].toString() : "");
            } catch(e) {
                return num
            }
        },
        number_with_delimiter: function (num, delimiter, separator) {
            try {
                var delimiter = delimiter || ",";
                var separator = separator || ".";
                var parts = num.toString().split('.');
                parts[0] = parts[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter);
                return parts.join(separator);
            } catch(e) {
                return num
            }
        }
    };
    return fc.number_to_currency(number, options);
}