/*global $, jQuery */

(function($) {
  $.fn.auto_calc = function(sum_id) {
    var elements = this;

    function extract_float(val) {
      return parseFloat(Number(val.replace(/[^\d\.]/, ''))).toFixed(2);
    }

    function format_currency(val) {
      var v = extract_float(val);
      if (v == "NaN") {
        return "$0.00";
      } else {
        return "$" + v;
      }
    }

    function form_sum(form_id) {
      var sum = 0.00;
      elements.each(function() {
        sum += Number(extract_float($(this).val()));
      });
      return String(sum);
    }

    function _unfocus_event() {
      $(this).val(format_currency($(this).val()));
      $("#" + sum_id).val(format_currency(form_sum()));
    }

    elements.blur(_unfocus_event);
  };
})(jQuery);

$(function() {
  $("#de_form :input:not(:last)").auto_calc("de_total");
  $("#nde_form :input:not(:last)").auto_calc("nde_total");
});
