
    function calc()

    {

      trimAll()

      setBordersToNormal()

      

      if (validateNull()){

        var vBatch = document.getElementById("txtBatch").value * 1

        var vGrain = document.getElementById("txtGrain").value * 1

        var vBoilTime = document.getElementById("txtBoilTime").value * 1

        var vTrub = document.getElementById("txtTrub").value * 1

        var vEquipment = document.getElementById("txtEquipment").value * 1

        var vThickness = document.getElementById("txtThickness").value * 1

        var vGrainTemp = document.getElementById("txtGrainTemp").value * 1

        var vTargetTemp = document.getElementById("txtTargetTemp").value * 1

        var vShrinkage = document.getElementById("txtShrinkage").value * 1

        var vAbsorptionRate = document.getElementById("txtAbsorption").value * 1

        var vBoiloff = document.getElementById("txtBoiloff").value * 1

	



        var vTotalWater = (((vBatch+vTrub)/(1-(vShrinkage/100)))/(1-(vBoilTime*(vBoiloff/100)))) + vEquipment + (vGrain * vAbsorptionRate)

        document.getElementById("txtTotalWater").value = vTotalWater.toFixed(2)



        var vMashVolume = (vGrain * vThickness)/4

        document.getElementById("txtMashVolume").value = vMashVolume.toFixed(2)



        var vSpargeVolume = vTotalWater - vMashVolume

        document.getElementById("txtSpargeVolume").value = vSpargeVolume.toFixed(2)



        var vStrikeWater = ((((vGrain*0.05)+vMashVolume *1)*vTargetTemp) - ((vGrain*0.05)*vGrainTemp))/vMashVolume *1

        document.getElementById("txtStrikeTemp").value = vStrikeWater.toFixed(2)



	var vPreBoilVolume = vTotalWater - (vGrain * vAbsorptionRate) - vEquipment

	document.getElementById("txtPreBoilVolume").value = vPreBoilVolume.toFixed(2)







      }

      else{

        //do something here later with an icon or something to note an error in addition to the red box

      }

    }





    function validateNull()

    {

     if (document.getElementById("txtBatch").value==null||document.getElementById("txtBatch").value==""||document.getElementById("txtBatch").value==0) {makeBorderRed("txtBatch");return false}

     if (document.getElementById("txtGrain").value==null||document.getElementById("txtGrain").value==""||document.getElementById("txtGrain").value==0) {makeBorderRed("txtGrain");return false}

     if (document.getElementById("txtBoilTime").value==null||document.getElementById("txtBoilTime").value==""||document.getElementById("txtBoilTime").value==0) {makeBorderRed("txtBoilTime");return false}

     if (document.getElementById("txtTrub").value==null||document.getElementById("txtTrub").value==""||document.getElementById("txtTrub").value==0) {makeBorderRed("txtTrub");return false}

     if (document.getElementById("txtEquipment").value==null||document.getElementById("txtEquipment").value==""||document.getElementById("txtEquipment").value==0) {makeBorderRed("txtEquipment");return false}

     if (document.getElementById("txtThickness").value==null||document.getElementById("txtThickness").value==""||document.getElementById("txtThickness").value==0) {makeBorderRed("txtThickness");return false}

     if (document.getElementById("txtGrainTemp").value==null||document.getElementById("txtGrainTemp").value==""||document.getElementById("txtGrainTemp").value==0) {makeBorderRed("txtGrainTemp");return false}

     if (document.getElementById("txtTargetTemp").value==null||document.getElementById("txtTargetTemp").value==""||document.getElementById("txtTargetTemp").value==0) {makeBorderRed("txtTargetTemp");return false}

     if (document.getElementById("txtShrinkage").value==null||document.getElementById("txtShrinkage").value==""||document.getElementById("txtShrinkage").value==0) {makeBorderRed("txtShrinkage");return false}

     if (document.getElementById("txtAbsorption").value==null||document.getElementById("txtAbsorption").value==""||document.getElementById("txtAbsorption").value==0) {makeBorderRed("txtAbsorption");return false}

     if (document.getElementById("txtBoiloff").value==null||document.getElementById("txtBoiloff").value==""||document.getElementById("txtBoiloff").value==0) {makeBorderRed("txtBoiloff");return false}

     return true

    }





    function trimAll() {

	document.getElementById("txtBatch").value = document.getElementById("txtBatch").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtGrain").value = document.getElementById("txtGrain").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtBoilTime").value = document.getElementById("txtBoilTime").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtTrub").value = document.getElementById("txtTrub").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtEquipment").value = document.getElementById("txtEquipment").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtThickness").value = document.getElementById("txtThickness").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtGrainTemp").value = document.getElementById("txtGrainTemp").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtTargetTemp").value = document.getElementById("txtTargetTemp").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtShrinkage").value = document.getElementById("txtShrinkage").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtAbsorption").value = document.getElementById("txtAbsorption").value.replace(/^\s+|\s+$/g,"");

	document.getElementById("txtBoiloff").value = document.getElementById("txtBoiloff").value.replace(/^\s+|\s+$/g,"");

    }

    function setBordersToNormal() {

        for(i=0; i<document.form1.elements.length; i++){

            if(document.form1.elements[i].type=="text"){

                 document.form1.elements[i].style.border = "1px solid #928876";

            }

        }

    }





    function makeBorderRed(vField){

        document.getElementById(vField).style.border = "2px solid #FF0000";

    }

