var deliveryGlobal="card";

/* we always use Jquery now */

$(document).ready( function () {
  establish_rates('card');

  // Set up currency pickers to update things...
  // code that had dealt with matching buying/spending currencies has been removed
  $('#rcv_post').change(function () {
    var wants_cur = this.value;
    update_symbols('buy_cur', wants_cur);
    convert('spend');
  });

  $('#rcv_card').change(function () {
    var wants_cur = this.value;
    update_symbols('buy_cur', wants_cur);
    convert('spend');
  });

  $('#delivery_type').change(function () {
    establish_rates($(this).val());
    convert('spend');
  });

  /****** new/extended/hax0red/whatever ******/
  // home page now sports one per delivery type (omfgwtf (bbq))
  // needed to prefix id's with del type for backward compatibility
  // with existing users of fpround, hence slightly repetitive id's
  $('#post_rcv_post').change(function () {
    var wants_cur = this.value;
    update_symbols('buy_cur', wants_cur, 'post');
    convert('spend', 'post');
  });
  $('#card_recharge_rcv_card').change(function () {
    var wants_cur = this.value;
    update_symbols('buy_cur', wants_cur, 'card_recharge');
    convert('spend', 'card_recharge');
  });
  $('#card_rcv_card').change(function () {
    var wants_cur = this.value;
    update_symbols('buy_cur', wants_cur, 'card');
    convert('spend', 'card');
  });

});

function update_symbols(prefix, cur, delivery) {

  delivery = ( ( delivery == null ) ? "" : ( delivery + "_" ) );
  prefix = delivery + prefix;

  $('#' + prefix + '_symbol').html(symbols[cur]);
  $('#' + prefix + '_postsymbol').html(postsymbols[cur]);
}

function establish_rates(new_delivery, delivery) {

  delivery = ( ( delivery == null ) ? "" : ( delivery + "_" ) );

  // default to card
  deliveryGlobal="card";
  rates=card_rates;
  var estimatorfunction_class = "card";

  if (new_delivery=="post"){
    deliveryGlobal="post";
    rates=postal_rates;
    estimatorfunction_class = "post";
  }

  // set the various DOM bits that will trigger the change in menus via CSS selectors
  $('#estimatorfunction').attr('class', estimatorfunction_class);
  var wants_cur = $('#' + delivery + 'rcv_' + deliveryGlobal).val();
  update_symbols('buy_cur', wants_cur, delivery);
}

/* now accepts delivery type, backward compatible */
function convert(type, delivery) {

  delivery = "#" + ( ( delivery == null ) ? "" : ( delivery + "_" ) );

  var sp_cur   = $( delivery + "spending").val();
  var rcv_cur  = $( delivery + "rcv_" + deliveryGlobal).val();

  var rcv_amt = $( delivery + "receiving_amount");
  var sp_amt  = $( delivery + "spending_amount");

  if (sp_cur==rcv_cur && (card_same_currency == 0)) {
    rcv_amt.val("-");
    return;
  }

  var exact;
  var rounded;
  var backcalc;
  if (type == "spend") {
    var sp_amt_v = sp_amt.val();
    exact    = sp_amt_v * rates[sp_cur][rcv_cur];
    rounded  = Math.round(sp_amt_v * rates[sp_cur][rcv_cur] / multiple[rcv_cur]) * multiple[rcv_cur];
    backcalc = rounded / rates[sp_cur][rcv_cur];
    if (!isNaN(exact) && exact > 0) {
      rcv_amt.val((exact).toFixed(exponents[rcv_cur]));
    } else {
      rcv_amt.val("N/A");
    }
  } else {
    var rcv_amt_v = rcv_amt.val();
    exact    = rcv_amt_v / rates[sp_cur][rcv_cur];
    if (!isNaN(exact) && exact > 0) {
      sp_amt.val((exact).toFixed(exponents[sp_cur]));
    } else {
      sp_amt.val("N/A");
    }
  }
}

