
function netscapeKeyPress(e) {
    if (e.which == 13)
        widthConversion();
}

function microsoftKeyPress() {
    if (window.event.keyCode == 13)
        widthConversion();
}

if (navigator.appName == 'Netscape') {
    window.captureEvents(Event.KEYUP);
    window.onKeyUp = netscapeKeyPress;
}

function get_fact(ff,from_val,to_val){
 // first convert to kelvin
 if (from_val == 0){
   ff = ff + 273.15;
 } else if (from_val == 1){
   ff = ((ff - 32)/ 1.8) + 273.15;
 } else if (from_val == 2){
   ff = ff / 1.8;
 } else if (from_val == 3){
   ff = (ff * 1.25) + 273.15;
 }

 if (ff < 0){
   // Below absolute zero
   return "Below Absolute Zero";
 }

 // now convert kelvin to unit
 if (to_val == 0){
   ff = ff - 273.15;
 } else if (to_val == 1){
   ff = (1.8 * (ff -273.15)) + 32;
 } else if (to_val == 2){
   ff = ff * 1.8;
 } else if (to_val == 3){
   ff = (ff - 273.15) / 1.25;
 }
 
 // round it off
 if (Number.prototype.toFixed) {
   ff = ff.toFixed(7);
   ff = parseFloat(ff);
 }
 else {
   var leftSide = Math.floor(ff);
   var rightSide = ff - leftSide;
   ff = leftSide + Math.round(rightSide *10000000)/10000000;
 }

return ff;
}

function tempConversion(form, field, fields){

  var v1, Factor;
    //validate the "from" field
    v1 = field.value;
    v1 = stripBad(v1);
    v1 = parseFloat(v1);
    if (isNaN(v1)) v1 = 0;
    v1 = Math.abs(v1);
    //update the subscribed fields
    for (i=0; i < fields.length; i++) {
        var obj = form[fields[i]];
        if(obj != field){
            obj.value = get_fact(v1, field.id, obj.id);
        }
    }

}

function widthConversion(form, field, fields){

  var v1, Factor;
    //validate the "from" field
    v1 = field.value;
    v1 = stripBad(v1);
    v1 = parseFloat(v1);
    if (isNaN(v1)) v1 = 0;
    v1 = Math.abs(v1);

    //update the subscribed fields
    for (i=0; i < fields.length; i++) {
        var obj = form[fields[i]];
        if(obj != field){
        //calculate the factor
            Factor = eval("(" + field.id + ")/(" + obj.id + ")");
            obj.value = get_result(v1, Factor);
        }
    }

}

function get_result(ff,factor){
 ff *= factor;

 if (Number.prototype.toFixed) {
   ff = ff.toFixed(7);
   ff = parseFloat(ff);
 }
 else {
   var leftSide = Math.floor(ff);
   var rightSide = ff - leftSide;
   ff = leftSide + Math.round(rightSide *10000000)/10000000;
 }

 ff = format(ff);
 ff = comma(ff);
 if(ff == 0) return "-";
 return ff;
}

function format(num){
    var s = num+'';
    var bNeedFormat = false;
    var eIndex = -1;
    for (var i=0, valid="eE"; i<s.length; i++){
       if (valid.indexOf(s.charAt(i)) != -1){
          bNeedFormat = true;
          eIndex = i;
          break;
        }
    }
    if(!bNeedFormat){
        return num;
    }

    var sNum = s.substr(0, eIndex);
    var sSign = s.charAt(eIndex+1);
    var nPow = eval(s.substr(eIndex+2));
    if(sSign == '+'){
        if(sNum.indexOf('.')!= -1){
            nPow -= sNum.length-sNum.indexOf('.');
            sNum = sNum.replace('.', '');
        }
        for(var i=0;i<nPow;i++){
            sNum += '0';
        }
        return sNum;
    }else if(sSign == '-'){
        if(sNum.indexOf('.')!= -1){
            nPow -= sNum.indexOf('.');
            sNum = sNum.replace('.', '');
        }
        for(var i=0;i<nPow;i++){
            sNum = '0'+sNum;
        }
        return '0.'+sNum;
    }
    return num;

}

function stripBad(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 comma(num) {
 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;
}