function netscapeKeyPress(e) {  // if ENTER pressed, run function
    if (e.which == 13) doConvert();
}

function microsoftKeyPress() {  // if ENTER pressed, run function
    if (window.event.keyCode == 13) doConvert();
}

if (navigator.appName == 'Netscape') {
    window.captureEvents(Event.KEYPRESS);
    window.onKeyPress = netscapeKeyPress;
}

function doConvert() {
  var FromVal, ToVal, FromName, ToName, RealVal, Factor;
  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;
  FromName = document.converthis.from.options[document.converthis.from.selectedIndex].text;
  ToName = document.converthis.to.options[document.converthis.to.selectedIndex].text;
  Factor = eval("(" + FromVal + ")/(" + ToVal + ")");
  document.converthis.answer.value = RealVal + " " + FromName + " = " + roundValue(RealVal*Factor) + " " + ToName;
}

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

function roundValue(TrueVal){  // round value to 5 decimals
 if (Number.prototype.toFixed) {
   TrueVal = TrueVal.toFixed(5);
   TrueVal = parseFloat(TrueVal);
 }
 else {
   var leftSide = Math.floor(TrueVal);
   var rightSide = TrueVal - leftSide;
   TrueVal = leftSide + Math.round(rightSide *100000)/100000;
 }
 return commaize(TrueVal);
}

function stripBad(string) { // cleanup string
    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 commaize(num) { // add commas
 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;
}

