Order Form Calculations

function calculate(fld, price) {
     var dir = fld.name.charAt(1);
     var num = fld.name.charAt(2);
     var quant = fld.options[fld.selectedIndex].value;
     var subtotal = eval(quant * price);
     var total = 0;

     eval('document.order.t' + dir + num).value = fix(subtotal);

     for (i = 1; i < 8; i++) {
          var itemTotal = eval('document.order.t' + dir + i).value;

          if (parseFloat(itemTotal) > 0) total += parseFloat(itemTotal);
     }

     eval('document.order.total' + dir).value = total;
}

function fix(total) {
     // var dollars = parseInt(total);
     var dollars = Math.floor(total);
     // var cents = total - dollars;
     var cents = (total * 100) - (dollars * 100); // browsers sometimes have rounding errors
     

     cents = Math.round( cents);

     if (cents < 10) cents = "0" + cents;
     if (cents == 100) dollars++;
     if (dollars == total || dollars == Math.floor(total) + 1) cents = "00";

     total = dollars + "." + cents;
     return total;
}