var n = "0123456789.";
var prefix = "num";
function getnum (elm) {
  if (elm != null) {
    var s = String(elm.value);
    var v = String("");
    for (var j=0; j<s.length; j++)
      if (n.indexOf(s.charAt(j)) != -1)
        v += s.charAt(j);
    var num = parseFloat(v);
    elm.value = formatnum(num);
    if (num != null && num > 0) return num;
  }
  return 0;
}
function docalc () {
  var fm = document.forms[0];;
  var elm = document.forms[0].elements;
  var exp = 0;
  for (var i=0; i<elm.length; i++) 
    if (String(elm[i].name).indexOf(prefix) == 0) 
      exp += getnum(elm[i]);
  fm.expenses.value = formatnum(exp);
}
function clearall () {
  var fm = document.forms[0];
  var elm = document.forms[0].elements;
  for (var i=0; i<elm.length; i++) 
    if (String(elm[i].name).indexOf(prefix) == 0) 
      elm[i].value = "0.00";
  fm.income.value = "0.00";
  fm.expenses.value = "0.00";
}
function numpad (n,l) {
  var s = String(n);
  for (var i = s.length; i<l; i++) s = "0"+s;
  return s;
}
function numcomma (n) {
  if (n >= 1000)
    return numcomma(Math.floor(n/1000)) + ", " + numpad((n % 1000),3);
  return String(n);
}
function formatnum (num) {
  var snum = numcomma(Math.floor(num));
  var cents = numpad((num * 100) % 100, 2);
  if (snum == "") snum = "0";
 //xian ditches the cents. return snum + "." + cents;
  return snum;
}