﻿var currency = new Currency();
function getCurrency()
{
    return currency;
}

function Currency()
{
    var xe = new Array();
    xe['USD'] = [1, '$'];
    var currencyID = getCookie('CurrencyID');
    var isDefault = false;
    var template = new Array();
    template[''] = '{Symbol}{Value}';
    var rate = 1;
    var symbol = '$';
        
    this.init = function(defaultID)
    {
        if (currencyID == null)
        {
            //at least set default for CA and US
            if (defaultID && (defaultID == 'CA' || defaultID == 'US'))
                defaultID +='D';
            if (defaultID && defaultID != '' && xe[defaultID])
                currencyID = defaultID;
            else 
                currencyID = 'USD'; // reste to USD
            isDefault = true;
            
        }
        rate = xe[currencyID][0];
        symbol = xe[currencyID][1];
    };
    
    this.setCurrencyID = function(value)
    {
        setCookie('CurrencyID', value);
        currencyID = value;
        isDefault = false;        
        rate = xe[value][0];
        symbol = xe[value][1];
    };

    this.getCurrencyID = function()
    {
        return currencyID;
    };
    
    this.add = function(id, rate, symbol)
    {
        xe[id] = [rate, symbol];
    };
    
    this.addTemplate = function(id, value)
    {
        template[id] = value;
    };
    
    this.format = function(templateid, usdValue, originalValue, originalID)
    {
        var templateValues = new Array();
        templateValues["{ID}"] = currencyID;
        templateValues["{Symbol}"] = symbol;
        
        if (usdValue != null && originalID != currencyID)
            templateValues["{Value}"] = Math.round(usdValue / rate).toLocaleString().replace('.00', '');
        else if (originalValue != null && originalID == currencyID)
            templateValues["{Value}"] = Math.round(originalValue).toLocaleString().replace('.00', '');            
        else
            templateValues["{Value}"] = '';
        if (usdValue != null)
            templateValues["{USDValue}"]  = usdValue.toLocaleString();
        else if (originalValue != null && originalID != null)
            templateValues["{USDValue}"] = originalValue * xe[originalID][0];
        else
            templateValues["{USDValue}"] = '';
        if (originalID != null)
        {
            templateValues["{OrigID}"] = originalID;
            templateValues["{OrigSymbol}"] = xe[originalID][1];
        }
        else
        {
            templateValues["{OrigID}"] = '';
            templateValues["{OrigSymbol}"] = '';
        }
        
        if (originalValue != null)
            templateValues["{OrigValue}"] = Math.round(originalValue).toLocaleString().replace('.00', '');
        else
            templateValues["{OrigValue}"] = '';
        return template[templateid].replace(/{[^}]+}/g, function(str, offset, s) {var rep = templateValues[str];return rep == null ? str : rep;});
    };
    
    this.write = function(templateid, usdValue, originalValue, originalID)
    {
        document.write(this.format(templateid, usdValue, originalValue, originalID));
    };
}