$(function(){

$.currency = {
  rates: {},
  init: function() {
    $.get('/currency.xml',$.currency.loaded,'xml');
    $('.fn-amount').val('').keyup($.currency.convertTo);
    $('.fn-currTo').change($.currency.convertTo);
  },
  loaded: function(xml) {
    var items = $('item',xml);
    items.each(
      function(){
        var title = $('title',this).text();
        rate = title.match(/[0-9.]+/gi);
        var data = { rate: Math.round(0.1/rate[1]) }
	var key = title.match(/[a-z]{3}/gi)[1];
        $.currency.rates[key] = data;
        $('.fn-currTo').append('<option value=\''+key+'\'>'+key+'</option>');
      }
    );
    $('.fn-currTo option[value=USD]').attr('selected',true);
    var importants = [ {type:'USD' ,rate: $.currency.rates['USD'].rate}, {type:'EUR' ,rate: $.currency.rates['EUR'].rate}, {type:'AED' ,rate: $.currency.rates['AED'].rate}, {type:'GBP' ,rate: $.currency.rates['GBP'].rate}, {type:'CNY' ,rate: $.currency.rates['CNY'].rate} ];
    $('.fn-currencyRateTemplate').bindTo( importants, { fill:true } )
    $('.fn-currencyRateTemplate').removeClass('hidden');
  },
  convertTo: function() {
    var amount = $('.fn-amount').val().replace(/[^0-9]+/ig,'');
    var rate = $.currency.rates[$('.fn-currTo option:selected').val()].rate;
    var converted = Math.round(amount/rate).toString();
    $('.fn-convertedTo').text($.currency.format(converted));
    $('.fn-amount').val($.currency.format(amount));
  },
  format: function(num){
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(num)) {
      num = num.replace(rgx, '$1' + ',' + '$2');
    }
    return num;
  }
}
$.currency.init();

});
