function perRound(num, precision) {
    var precision = 2; //default value if not passed from caller, change if desired
   // remark if passed from caller
    precision = parseInt(precision); // make certain the decimal precision is an integer
    var result1 = num * Math.pow(10, precision);
    var result2 = Math.round(result1);
    var result3 = result2 / Math.pow(10, precision);
    return zerosPad(result3, precision);
}

function zerosPad(rndVal, decPlaces) {
    var valStrg = rndVal.toString(); // Convert the number to a string
    var decLoc = valStrg.indexOf("."); // Locate the decimal point
    // check for a decimal
    if (decLoc == -1) {
        decPartLen = 0; // If no decimal, then all decimal places will be padded with 0s
        // If decPlaces is greater than zero, add a decimal point
        valStrg += decPlaces > 0 ? "." : "";
    }
    else {
        decPartLen = valStrg.length - decLoc - 1; // If there is a decimal already, only the needed decimal places will be padded with 0s
    }
        var totalPad = decPlaces - decPartLen;    // Calculate the number of decimal places that need to be padded with 0s
    if (totalPad > 0) {
        // Pad the string with 0s
        for (var cntrVal = 1; cntrVal <= totalPad; cntrVal++)
            valStrg += "0";
        }
    return valStrg;
}
// send the value in as "num" in a variable
function popup(mylink, windowname){
   if (! window.focus)return true;
   var href;
   if (typeof(mylink) == 'string')
   href=mylink;
   else
   href=mylink.href;
   window.open(href, windowname, 'width=600,height=700,scrollbars=no');
   return false;
}
// clears field of default value - This is used here; conditional
function clear_field(field) {
                if (field.value==field.defaultValue) {
                        field.value=''
                }
}
        
function MsgBox (textstring) {
    alert (textstring);     
}
               
var length = 0;
var width = 0;
var avdepth = 0;
var diameterl = 0;
var diameters = 0;
var shape = 0;
        
function CalcVolume() {
   shape=document.volumeform.poolshape.value;
   length=document.volumeform.plength.value;
   width=document.volumeform.pwidth.value;
   avdepth=document.volumeform.avdepth.value;
   diameterl=document.volumeform.diameterl.value;
   diameters=document.volumeform.diameters.value;
  

   if (shape=="rectangle") {
      volume = ((length * width * avdepth) * 1000);
      if (volume=="0") {
        MsgBox("Values for Length, Width and Average Depth are required!");
        }
      document.volumeform.volume.value=volume;     
   } else if (shape=="circle") {
     volume = (diameterl * diameterl * avdepth * 785);
        if (volume=="0") {
           MsgBox("A Value for Diameter and Average Depth is Required!");
        }
      document.volumeform.volume.value = volume;
   } else if (shape="oval") {
      volume = (diameterl * diameters * avdepth * 785); 
       if (volume=="0") {
        MsgBox("Values for Diameter, Diameter Short and Average Depth are required!");
        }
    volume = (diameterl * diameters * avdepth * 785); 
   document.volumeform.volume.value = volume;
}
}

var knowngallons = 0;
var totalgallons = 0;
var begsalinity = 0;
var desiredsalinity = 0;
var saltchge = 0;


function CalcSalt() {
         knowngallons = eval(document.salinityform.G.value);
         begsalinity = eval(document.salinityform.T.value);
         desiredsalinity = eval(document.salinityform.T1.value);

         saltchge = (desiredsalinity - begsalinity);
         saltadd = (knowngallons/120 * saltchge) * 1.0135; // pounds salt
         saltaddo = ((knowngallons/120 * saltchge) * 1.0135) * 16; // ounces salt
         saltaddg = ((knowngallons/120 * saltchge) * 1.0135) * 453.592; // grams salt
         saltaddkg = ((knowngallons/120 * saltchge) * 1.0135) * 0.453592; // kilograms salt

         document.salinityform.netchange.value = perRound(saltchge);
         document.salinityform.netchangem.value = perRound(saltchge * 1000);
         document.salinityform.netchangep.value = perRound(saltchge * .1);
         document.salinityform.addsalt.value = perRound(saltadd);
         document.salinityform.addsaltkg.value = perRound(saltaddkg);
         document.salinityform.twentyKGbag2.value = perRound(saltaddkg/20);
}

  var CalcIt;



  function validate(ival) {

    if (ival == '') {

      alert('Please enter a numeric pH value')

      return false;

    } else {

        if (((ival / ival) != 1) && (ival != 0)) {

        alert('Please enter a numeric pH value')

        return false;

      } else {

        return true;

      }

    //return true;

    }

  }



  function round(number) {

    // rounds number to 4 decimal places

      return Math.round(number*Math.pow(10,4))/Math.pow(10,4);

  }



  function GetLSI(totak, calchd, tmpc, pH) {

    var output;



    if (validate(pH)) {

    totak = parseFloat(totak);

    calchd = parseFloat(calchd);

    tmpc = parseFloat(tmpc);

    pH = parseFloat(pH);

    output = (pH + tmpc + calchd + totak - 12.1);

    return Math.round(output*Math.pow(10,2))/Math.pow(10,2);

    } else {

      return 0;

    }

  }



  function desc(numflag) {



    var dispmsg;



    if (numflag <= -5) {

      dispmsg = "Severe Corrosion \nTreatment Recommended";

    } else if ((numflag <= -4)&& (numflag > -5)) {

      dispmsg = "Moderate Corrosion \nTreatment Recommended";

    } else if ((numflag <= -3)&& (numflag > -4)) {

      dispmsg = "Moderate Corrosion \nTreatment Recommended";

    } else if ((numflag <= -2)&& (numflag > -3)) {

      dispmsg = "Moderate Corrosion \nTreatment Should be Considered";

    } else if ((numflag <= -1)&& (numflag > -2)) {

      dispmsg = "Mild Corrosion \nTreatment Should be Considered";

    } else if ((numflag <= -0.5)&& (numflag > -1)) {

      dispmsg = "Mild Corrosion \nTreatment Probably Not Needed";

    } else if ((numflag <= 0.5)&& (numflag > -0.5)) {

      dispmsg = "Balanced \nTreatment Generally Not Needed";

    } else if ((numflag <= 1)&& (numflag > 0.5)) {

      dispmsg = "Some Faint Coating \nTreatment Generally Not Needed";

    } else if ((numflag <= 2)&& (numflag > 1)) {

      dispmsg = "Mild Scale forming \nProbable Minor Aesthetic Problems";

    } else if ((numflag <= 3)&& (numflag > 2)) {

      dispmsg = "Mild Scale forming \nConsider Treatment";

    } else if ((numflag <= 4)&& (numflag > 3)) {

      dispmsg = "Moderate Scale forming \nTreatment Should be Considered";

    }  else if ((numflag <= 5)&& (numflag > 4)) {

      dispmsg = "Severe Scale forming \nTreatment Probably Required";

    } else if (numflag > 5) {

      dispmsg = "Severe Scale forming \nTreatment Required";

    }



    return dispmsg;

  }