function filterNum(str) {
// remove "$" and ","
re = /^\$|,/g;
return str.replace(re, "");
}

function round(number,X) {
// rounds number to X decimal places, defaults to 2
X = (!X ? 2 : X);
return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function addDecimals(amount) {
 var s = String(amount);
 var d = s.indexOf(".");
 var l = s.length;
 var p = l-d-1;
 if (d==s.length-1){s=s+'00'; return s; }
 if (d==-1){s=s+'.00'; return s; }
 if (p==1) {s=s+'0'; return s;}
 if (p>2) {s= round(s,2); return s;}
 return s;
}

function calculateForm(field1,field2,oper,field3) {
 var v1=filterNum(field1.value);
 var v2=filterNum(field2.value);
 var v3 = 0;
 switch(oper) {
  case "+" : v3 = eval(v1) + eval(v2); break;
  case "-" : v3 = eval(v1) - eval(v2); break;
  case "/" : if (v2 == 0) v2=1; v3 = v1 / v2; break;
  case "*" : v3 = eval(v1) * eval(v2); break;
  default  : v3 = eval(v1) + eval(v2); break;
 }
 field3.value=v3;
 field3.value=round(field3.value,2);
 field3.value=addDecimals(field3.value);
 
 return;
}

function currFormat(fld) {
var milSep = "";
var decSep = ".";
var sep = 0;
fld.value = filterNum(fld.value);
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
len = fld.value.length;
for(i = 0; i < len; i++)
 if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
 aux = '';
 for(; i < len; i++)
  if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  len = aux.length;
  if (len == 0) {fld.value = '';}
  if (len == 1) {fld.value = '0'+ decSep + '0' + aux;}
  if (len == 2) {fld.value = '0'+ decSep + aux;}
  if (len > 2) {
   aux2 = '';
   for (j = 0, i = len - 3; i >= 0; i--) {
    if (j == 3) {
     aux2 += milSep;
     j = 0;
    }
   aux2 += aux.charAt(i);
   j++;
  }
 fld.value = '';
 len2 = aux2.length;
 for (i = len2 - 1; i >= 0; i--)
  fld.value += aux2.charAt(i);
 fld.value += decSep + aux.substr(len - 2, len);
 }
 if (fld.value == "") {fld.value="0.00";}
 fld.value = ""+fld.value; 
 return false;
}

function calculateFld(field1,field2,oper,field3) {
 var v1=filterNum(field1.value);
 var v2=filterNum(field2.value);
 var v3 = 0;
 switch(oper) {
  case "+" : v3 = eval(v1) + eval(v2); break;
  case "-" : v3 = eval(v1) - eval(v2); break;
  case "/" : if (v2 == 0) v2=1; v3 = v1 / v2; break;
  case "*" : v3 = eval(v1) * eval(v2); break;
  default  : v3 = eval(v1) + eval(v2); break;
 }
 field3.value=v3;
 field3.value=round(field3.value,2);
 
 
 return;
}


