

<!-- Beginning of JavaScript Applet ---


	 // Make sure that its a number
	 function checkNumber(input, min, max, msg) {

		  msg = msg + " input field has invalid data: " + input.value;

        var str = input.value;
        for (var i = 0; i < str.length; i++) {
            var ch = str.substring(i, i + 1)
            if ((ch < "0" || "9" < ch) && ch != '.') {
                alert(msg);
                return false;
            }
        }
        var num = 0 + str
        if (num < min || max < num) {
            alert(msg + " not in range [" + min + ".." + max + "]");
            return false;
        }
        input.value = str;
        return true;
    }


	 // Convert string to float
    function computeField(input) {

        if (input.value != null && input.value.length != 0)
				input.value = parseFloat(input.value);
		  computeForm(input.form);
    }

    function computeForm(form) {

		  if ((form.nFlow.value == null || form.nFlow.value.length == 0) ||
				(form.nDiam.value == null || form.nDiam.value.length == 0) ||
				(form.nLen.value == null || form.nLen.value.length == 0) ||
                                (form.nElv.value == null || form.nElv.value.length == 0)) {
           return;
        }

		  if (!checkNumber(form.nFlow, 0, 9999999, "Flow rate") ||
				!checkNumber(form.nDiam, 0, 9999, "Diameter") ||
				!checkNumber(form.nLen, 0, 999999, "Length") ||
				!checkNumber(form.nElv, 0, 999999, "Length")) {
                                form.nKW.value = "Invalid";
            return;
        }

		  var nArNo=form.cUnitQ.options.selectedIndex + 1;
		  var aRay = new initArray(1/15.852, 1/60, 1, 1/3.6, 1/13.2);
		  var nConQ=aRay[nArNo];

		  // Diam
		  nArNo=form.cUnitD.options.selectedIndex + 1;
		  aRay = new initArray(25.4 ,1);
		  var nConD=aRay[nArNo];

		  // Length
		  nArNo=form.cUnitL.options.selectedIndex + 1;
		  aRay = new initArray(0.305, 1);
		  var nConL=aRay[nArNo];

               	  // Hazen Williams
		  nArNo=form.cPipe.options.selectedIndex + 1;
		  aRay = new initArray(150, 120, 120, 105, 80);
		  var nHazen=aRay[nArNo];

                  // Elevation
                  nArNo=form.cUnitE.options.selectedIndex + 1;
                  aRay = new initArray(0.305, 1);
                  var nConE=aRay[nArNo];                  

		  // Friction
		  nArNo=form.cUnitOut.options.selectedIndex + 1;
		  aRay = new initArray(0.305, 1);
		  var nConOut=aRay[nArNo];
                   
                  
                  
		  var nQ=form.nFlow.value*nConQ * 15.852;		// US gpm
		  var nD=form.nDiam.value*nConD / 25.4;		// inches
		  var nL=form.nLen.value							// m
                  var nE=form.nElv.value                                                        // m

                  

		  form.nOut.value = nE*nConE / nConOut + 0.002083*Math.pow(100/nHazen, 1.85)*
								  Math.pow(nQ, 1.85) / Math.pow(nD, 4.8655)*
								  nL*nConL / nConOut;

	 }

    function clearForm(form) {
		  form.nFlow.value = "";
		  form.nDiam.value = "";
		  form.nLen.value = "";
                  form.nElv.value = "";
	 }

    function initArray() {
      this.length = initArray.arguments.length
      for (var i = 0; i < this.length; i++)
        this[i+1] = initArray.arguments[i]
    }

// <!-- End of JavaScript code ---------------->

