        function compute(calc) {

          //READ IN THE VALUES ENTERED BY THE USER
          var D = document.getElementById("calc");
          var S = document.getElementById("scale");	  
          var temp = D.temp.value;
          var dew = D.dew.value;
          var rh = D.rh.value;
          var precision = 2;

     	  //CONVERT INPUT TEMPERATURE & DEWPOINT TO CELCIUS IF ENTERED IN FAHRENHEIT
	  if ((temp != " ") && (S.choose[0].checked)) { 
            temp = parseFloat((temp-32.0000000001)/1.8);
	    //alert (temp);
          }
          if ((dew != " ") && (S.choose[0].checked)) { 
            dew = parseFloat((dew-32.0000000001)/1.8);
	    //alert (dew); 
          }
                    
          //CALCULATE THE MISSING VARIABLE (AND CONVERT BACK TO FAHRENHEIT IF NECESSARY)
          if ((temp == " " ) && (dew != " ") && (rh != " ")) {
	    var gamma = (17.27*eval(dew))/(237.7+eval(dew));
            var temp_numer = 237.7*(gamma-Math.log(rh/100));
            var temp_denom = 17.27+Math.log(rh/100)-gamma;
            var dummy_temp = temp_numer/temp_denom;
              if (S.choose[0].checked) { 
                dummy_temp = (dummy_temp*1.8)+32.; 
              } 
            D.temp.value = " "+Round(dummy_temp,precision);
          } else if ((dew == " ") && (rh != " ") && (temp != " ")) {
            var dew_numer = 237.7*(Math.log(rh/100)+((17.27*eval(temp))/(eval(temp)+237.7)));   //Math.log(rh/100*6.112/6.1078*Math.exp((17.67*temp)/(temp-0+243.5)));
            var dew_denom = 17.27-Math.log(rh/100)-((17.27*eval(temp))/(eval(temp)+237.7));
            var dummy_dew = dew_numer/dew_denom;
              if (S.choose[0].checked) { 
                dummy_dew = (dummy_dew*1.8)+32.; 
              } 
            D.dew.value = " "+Round(dummy_dew,precision);
          } else if ((rh == " ") && (temp != " ") && (dew != " ")) {
            var rh_numer = 100.0*Math.exp((17.27*eval(dew))/(eval(dew)+237.7));
            var rh_denom =       Math.exp((17.27*eval(temp))/(eval(temp)+237.7));
            D.rh.value = " "+Round(rh_numer/rh_denom,precision);
          } else if ((rh != " ") && (temp != " ") && (dew != " ")) {
	    alert ("You must leave one of the fields blank!");
	  } else if ((rh == " ") && (temp == " ") && (dew == " ")) {
	    alert ("You must fill in only two of the fields!");
	  }
        }

        //WHEN "RESET ALL" BUTTON IS PRESSED, CLEAR ALL THREE TEXT BOXES
        function erase_ALL(calc) {
          var D = document.getElementById("calc");
          D.temp.value = " ";
          D.dew.value = " ";
          D.rh.value = " ";
        }

        //WHEN "CLEAR" BUTTON IS PRESSED, CLEAR CORRESPONDING TEXT BOX
        function erase_T(calc) {
          var D = document.getElementById("calc");
          D.temp.value = " ";
        }
        function erase_D(calc) {
          var D = document.getElementById("calc");
          D.dew.value = " ";
        }
        function erase_R(calc) {
          var D = document.getElementById("calc");
          D.rh.value = " ";
        }

        //ROUND RESULTS TO SPECIFIED PRECISION
        function Round(num,precision) { 
          //convert num to string
          num = "" + num;
          precision = parseFloat(precision);
          
          //convert desired result to integer
          //unwanted digits will be after the decimal point
          var fullNum = "" + Math.round(num* Math.pow(10, precision));
	  
          //find decimal point should go
          var decPoint = fullNum.length - precision;
          if (decPoint > 0) {
            //concatenate left and right part of the decimal together
            result = fullNum.substring(0, decPoint);
            result += ".";
            result += fullNum.substring(decPoint, fullNum.length);
          } else {
            result = "0."+fullNum;
          }
          return result;
        }
