function format(num)
{
   if (isNaN(num)) {
      fnum = "";
   } else {
      var fnum = Math.round(num * 10.0);
      fnum = '' + (fnum / 10.0);
      if (fnum.indexOf(".") == -1) {
         fnum += '.0';
      }
   }
   return fnum;
}

function recalcAll(f)
{
   var sysvol = 0; // System Volume (Gal) G6
   
   // Loop through all pipes
   for (i = 0; i < 10; i++) {
      pipdia = parseFloat(f["pipdia" + i].value);
      piplen = parseFloat(f["piplen" + i].value);
      if (!isNaN(pipdia) && !isNaN(piplen)) { 
         pipvol = Math.PI * (pipdia * pipdia / 4.0) * (piplen * 12.0) * 0.004329004329;
         f["pipvol" + i].value = format(pipvol);
         sysvol += pipvol;
      }
   }

   // Loop through all misc. devices
   for (i = 0; i < 3; i++) { 
      miscvol = parseFloat(f["miscvol" + i].value);
      if (!isNaN(miscvol)) {
         sysvol += miscvol;
      }
   }
   f.sysvol.value = format(sysvol);
   f.systot.value = format(sysvol);

   var lotemp = parseFloat(f.lotemp.value); // Lower Temp. Value (deg F)
   var hitemp = parseFloat(f.hitemp.value); // Higher Temp. Value (deg F)
   var atmpre = parseFloat(f.atmpre.value); // Atmospheric Press. (psia)
   var preslo = parseFloat(f.preslo.value); // Press. At Lower Temp. (psig)
   var preshi = parseFloat(f.preshi.value); // Press. At Higher Temp. (psig)
   var spvolo = parseFloat(f.spvolo.value); // Spec. Vol. Of H2O at Low Temp (ft^3/lb)1
   var spvohi = parseFloat(f.spvohi.value); // Spec. Vol. Of H2O at High Temp (ft^3/lb)1
   var lincoe = parseFloat(f.lincoe.value); // Linear Coeff. Of Thermal Exp. (in/in*F)2

   var cltank = 0; // Closed Tank with Air/Water Interface
   var optank = 0; // Open Tank with Air/Water Interface
   var ditank = 0; // Diaphragm Tank
   
   if ((spvolo != 0) && (spvohi != 0)) {
      // Temporary value used in all tank calculations
      var tmp = sysvol * (((spvohi / spvolo) - 1) - (3 * lincoe * (hitemp - lotemp)));
       
      if ((atmpre != 0) && (preslo != 0) && (preshi != 0)) {
         cltank = tmp / ((atmpre / (preslo + atmpre)) - (atmpre / (atmpre + preshi)));
         ditank = tmp / (1 - ((preslo + atmpre) / (preshi + atmpre)));
      } else {
         alert("Can't calculate closed and diaphragm tanks without the pressures.");
      }
       
      optank = 2 * tmp;
   } else {
      alert("Can't calculate tank volumes without the Spec. Vol. Of H2O.");
   }

   f.cltank.value = format(cltank);
   f.optank.value = format(optank);
   f.ditank.value = format(ditank);
   return false;
}
