function stripBad(string) { // remove non-numeric in input string, allowing exponent & negatives
    for (var i=0, output='', valid="eE-0123456789."; i<string.length; i++)
       if (valid.indexOf(string.charAt(i)) != -1)
          output += string.charAt(i)
    return output;
} 

function stripBadCash(string) { // remove non-numeric in input string
    for (var i=0, output='', valid="0123456789."; i<string.length; i++)
       if (valid.indexOf(string.charAt(i)) != -1)
          output += string.charAt(i)
    return output;
} 

function doConvert() { // standard generic conversion function
  var FromVal, ToVal, FromLabel, ToLabel, RealVal;
  RealVal = document.converthis.what.value;
  RealVal = stripBad(RealVal);
  RealVal = parseFloat(RealVal);
  if (isNaN(RealVal)) RealVal = 1;
  RealVal = Math.abs(RealVal);
  document.converthis.what.value = RealVal;
  FromVal = document.converthis.from[document.converthis.from.selectedIndex].value;
  ToVal = document.converthis.to[document.converthis.to.selectedIndex].value;
  FromLabel = document.converthis.from.options[document.converthis.from.selectedIndex].text;
  ToLabel = document.converthis.to.options[document.converthis.to.selectedIndex].text;
  document.converthis.answer.value = RealVal + " " + FromLabel + " = " + calcAnswer(RealVal, FromVal, ToVal) + " " + ToLabel;
}

function resetResult() {document.converthis.answer.value = "";}

function calcAnswer(TrueVal,Numerator,Denomator) {  // calculate Answer from input conversion ratios
 var temp = a[Numerator] / a[Denomator];
 TrueVal *= temp;
 if (Number.prototype.toFixed) {
   TrueVal = TrueVal.toFixed(5);				// crop/round to 5 decimal
   TrueVal = parseFloat(TrueVal);
 }
 else {
   var leftSide = Math.floor(TrueVal);
   var rightSide = TrueVal - leftSide;
   TrueVal = leftSide + Math.round(rightSide *100000)/100000;  // round to 5 decimal the math way (7-0s)
 }
return commaize(TrueVal);
}

function commaize(num) { // insert commas for readability
 var n = Math.floor(num);
 var myNum = num + "";
 var myDec = ""
 if (myNum.indexOf('.',0) > -1){
  myDec = myNum.substring(myNum.indexOf('.',0),myNum.length);
 }
  var arr=new Array('0'), i=0; 
  while (n>0) 
    {arr[i]=''+n%1000; n=Math.floor(n/1000); i++;}
  arr=arr.reverse();
  for (var i in arr) if (i>0) //padding zeros
    while (arr[i].length<3) arr[i]='0'+arr[i];
  return arr.join() + myDec;
}

