
$.fn.extend({
    'currencyConverter': function($params) {
        var $select = $(this);
        var select  = this;
        
        this.defaultCurrency = $params.defaultCurrency;
        this.currentCurrency = this.defaultCurrency;
        
        this.currencies = $params.currencies;
        this.currenciesShort = $params.currenciesShort;
        this.moneyPrecision = $params.moneyPrecision;
        
        this.onChange = $params.onChange || function(){};
        this.onDefault = $params.onDefault || function(){};
        
        var changeCurrency = function(currencyKey) {
            if (!$select.val()) {
                return;
            }
            $('.rate_count').each(function() {
                var exchangeRate = select.getCurrencyExchangeRate() / select.getCurrencyExchangeRate(select.defaultCurrency);
                
                var $container = $(this);
              // var $signContainer = $container.next();
                
                this.baseRate = this.baseRate || $container.text();
                
                $container.text(moneyFormat(this.baseRate * exchangeRate, select.moneyPrecision));
               // $signContainer.text(select.getCurrencyShort());
            });
            select.currentCurrency = $select.val();
            select.onChange();
            if ($select.val() == select.defaultCurrency) {
                select.onDefault();
            }
        };
        
        var moneyFormat = function(val, precision) {
          var multiplier = Math.pow(10, precision);
          return (Math.round(val*multiplier))/multiplier;  
        };
        
        this.getCurrencyShort = function(currencyKey) {
            var currencyKey = currencyKey || $select.val();
            
            return this.currenciesShort[currencyKey];
        };
        
        this.getCurrencyExchangeRate = function(currencyKey) {
            var currencyKey = currencyKey || $select.val();
            var currencyShort = this.getCurrencyShort(currencyKey);
            
            return currencyShort ? this.currencies[currencyShort] : null;
        };
        
        $select.change(function(){
            changeCurrency($select.val());
        });
        $select.keypress(function(){
            $select.change();
        });
    }
});

