// Declaring the class
var FormManager = Class.create();

// Defining the rest of the class implementation
FormManager.prototype = {
initialize: function() {
    // Create a manager variable to reference this instance
    this._manager = this;
    // Set default properties of FormManager class   
    this._manager._calc = new Calculator(); // Class handles all calculations
    this._manager._flowRateUnit = 'gpm';
    this._manager._medium = $F('medium'); // Medium used in calcuations
    this._manager._variable; // Variable to solve for in calcuations
    this._manager.setMedia('medium'); // Set current media
    // Set all error messages here
    this._manager._P2WarningGas = "For calculation purposes, the Pressure Drop should be less than 47% of the Inlet Pressure for gases. Please modify one of the values. See <a href=\"valvedefinitions.html\">Variable Definitions.</a>";
    this._manager._P2WarningSteam = "For calculation purposes, the Pressure Drop should be less than 43% of the Inlet Pressure for gases. Please modify one of the values. See <a href=\"valvedefinitions.html\">Variable Definitions.</a>";
    this._manager._PressureWarningLiquid = "Pressure Drop must be less than or equal to the Maximum Inlet Pressure. Please increase or decrease your pressures accordingly.";
    this._manager._varWarnMessage = "Please see the <a href=\"valvedefinitions.html\" target=\"_blank\">variable definitons</a> to see how Pressure Drop is calculated for Gas and Steam.";
    // Call function to grab current variable to solve for from dropdown
    this._manager.setVariable($F('variable'));
    // Event listeners for form events
    Event.observe('medium', 'change', this._manager.selectMedia.bindAsEventListener(this));
    Event.observe('btnCalculate', 'click', this._manager.calculate.bindAsEventListener(this));
    Event.observe('variable', 'change', this._manager.setVarBuffer.bindAsEventListener(this));
    }, //End of initialize
    // Sets variable media used
    setMedia: function(medium){
        this._manager._medium = $F(medium);
        this._manager.displayForm();
        },
    // Sets variable being used   
    setVarBuffer: function(event){
        this._manager.selectVariable(Event.element(event).value);
        },
        
    setVariable: function(variable){
        this._manager._variable = variable;
        $('resultLabel').innerHTML = variable+":&nbsp;";
        $('CvPanel').hide();
        this._manager.selectVariable(this._variable);
        if(variable== 'Pressure Drop' && (this._manager._medium == 'gas' || this._manager._medium == 'steam')){
            $('variableWarning').show();
            $('variableWarning').innerHTML = this._manager._varWarnMessage;
        }
        },
        
    displayForm:function(){
        Element.show('SPanel', 'TPanel', 'XPanel', 'FPanel', 'PPanel', 'P1Panel');
        switch(this._manager._medium){
        case 'liquid':
            Element.hide('TPanel','XPanel');
            break;
        case 'gas':
            Element.hide('XPanel');
            break;
        case 'steam':
            Element.hide('TPanel', 'SPanel');
            break;
            }// End of switch
        },// End of displayForm

    selectMedia: function(event){
        this._manager.clearAllErrors('PPanel', 'SPanel', 'FPanel', 'TPanel', 'P1Panel', 'XPanel', 'CvPanel');       
        // Set medium attribute based on input
        this._manager._medium = Event.element(event).value;
        // Handle each form display based on input
        switch (Event.element(event).value){
            case "liquid":
                this._manager._flowRateUnit = 'gpm';
                $('fUnit').innerHTML = this._manager._flowRateUnit;
                this._manager.displayForm();
                this._manager.selectVariable(this._manager._variable);
                break;
            case "gas":
                this._flowRateUnit = 'SCFH';
                $('fUnit').innerHTML = this._manager._flowRateUnit;
                this._manager.displayForm();
                this._manager.selectVariable(this._manager._variable);       
                break;
            case "steam":
                this._flowRateUnit = 'lbs/hr';
                $('fUnit').innerHTML = this._manager._flowRateUnit;
                this._manager.displayForm(); 
                this._manager.selectVariable(this._manager._variable);          
                break;
            }
        }, // End of selectMedia
        
     selectVariable: function(variable){
        $('variableWarning').hide();
        this.clearAllErrors('PPanel', 'SPanel', 'FPanel', 'TPanel', 'P1Panel', 'XPanel', 'CvPanel');
        // Set variable property based on input
        Element.show('PPanel', 'CvPanel', 'FPanel');
        switch(variable){
            case "Cv Factor":
                $('txtCv').value = $F('txtResult');
                break;
            case "Flow Rate":
                $('txtF').value = $F('txtResult');
                break;
            case "Pressure Drop":
                $('txtP').value = $F('txtResult');
                if(this._manager._medium == 'gas' || this._manager._medium == 'steam'){
                    $('variableWarning').show();
                    $('variableWarning').innerHTML = this._manager._varWarnMessage;
                }
                break;
            }
        this._manager._variable = variable;
        // Display fields accordingly and change text
        switch (this._manager._variable){
            case "Cv Factor":
                $('CvPanel').hide();
                $('resultLabel').innerHTML = this._manager._variable+":&nbsp;";
                $('resultUnit').innerHTML = ""; 
                $('txtResult').value = $F('txtCv');
                break;
            case "Flow Rate":
                $('FPanel').hide();
                $('resultLabel').innerHTML = this._manager._variable+":&nbsp;";
                $('resultUnit').innerHTML = "&nbsp;"+this._manager._flowRateUnit;
                $('txtResult').value = $F('txtF');      
                break;
            case "Pressure Drop":
                $('PPanel').hide();
                $('resultLabel').innerHTML = this._manager._variable+":&nbsp;";
                $('resultUnit').innerHTML = "&nbsp;psid";
                $('txtResult').value = $F('txtP');         
                break;
            }
        }, // End of selectMedia
        
    clearAllErrors:function(){
        for (var i = 0; i < arguments.length; i++) {
            $$("#"+arguments[i]+" input").each(
                function(input){$(input.id).removeClassName('errorInput');}
                )// End of each
            }
            $$('.error').each(function(error){
            error.innerHTML = "";
            error.hide();
            }
        )
        }, // End of clearAllErrors

    // Displays message if matching valve is found
    calculate: function(){
        $('resultslist').innerHTML = "";
        var mngr = this._manager;
        var calc = mngr._calc;
        $('message').innerHTML = "";
        $('message').hide();
        $('txtResult').value = "";
        switch(mngr._medium){
            case 'liquid':
            // Medium selected is liquid
                 // Select variable
                 switch(mngr._variable){
                    case 'Cv Factor':
                        // Validate P SG and F
                        if (mngr.validateInputs('PPanel', 'SPanel', 'FPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){
                                // Set form variables
                                calc.P = parseFloat($F('txtP'));
                                calc.P1 = calc.convertPSIA(parseFloat($F('txtP1')));
                                calc.S = parseFloat($F('txtSG'));
                                calc.F = parseFloat($F('txtF'));
                                // Set actual variable
                                calc.Cv = calc.getLiquidFlowCoeff(calc.P,calc.S,calc.F);
                                mngr.displayResult(calc.Cv);
                            }else{
                                mngr.setErrorMessage(mngr._PressureWarningLiquid);
                            }
                            }
                        break;
                    case 'Flow Rate':
                        // Validate P SG and Cv
                        if (mngr.validateInputs('PPanel', 'SPanel', 'CvPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){
                                calc.P =    parseFloat($F('txtP'));
                                calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                                calc.S =    parseFloat($F('txtSG'));
                                calc.Cv =   parseFloat($F('txtCv'));
                                
                                calc.F = calc.getLiquidFlowRate(calc.Cv, calc.P, calc.S);
                                mngr.displayResult(calc.F);
                            }else{
                                mngr.setErrorMessage(mngr._PressureWarningLiquid);
                            }
                            }
                        break;                
                    case 'Pressure Drop':
                        // Validate P SG and Cv
                        if (mngr.validateInputs('CvPanel', 'SPanel', 'FPanel', 'P1Panel')){
                            calc.F =    parseFloat($F('txtF'));
                            calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                            calc.S =    parseFloat($F('txtSG'));
                            calc.Cv =   parseFloat($F('txtCv'));
                            
                            calc.P = calc.getLiquidPressureDrop(calc.Cv, calc.F, calc.S);
                            mngr.displayResult(calc.P);
                            }
                        break;
                 }// End of nested switch
                 break;
            case 'gas':
                switch(mngr._variable){
                    case 'Cv Factor':
                        if (mngr.validateInputs('PPanel', 'SPanel', 'FPanel', 'TPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){
                                calc.P =    parseFloat($F('txtP'));
                                calc.S =    parseFloat($F('txtSG'));
                                calc.F =    parseFloat($F('txtF'));
                                calc.T =    calc.convertAbsTemp(parseFloat($F('txtT')));
                                calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                                calc.P2 =   calc.getBackPressure(calc.P, calc.P1);
                                
                                if(calc.IsP2Greater(calc.P1, calc.P2, 0.53)){
                                    calc.Cv = calc.getGasFlowCoeffHigh(calc.S, calc.T, calc.P, calc.P2, calc.F);
                                    mngr.displayResult(calc.Cv);
                                }else{
                                    calc.Cv = calc.getGasFlowCoeffLow(calc.S, calc.T, calc.P1, calc.F);
                                    mngr.displayResult(calc.Cv);
                                }
								
							}else{
                                mngr.setErrorMessage(mngr._PressureWarningLiquid);
							}

                        }
                        break;
                    case 'Flow Rate':
                        if (mngr.validateInputs('PPanel', 'SPanel', 'CvPanel', 'TPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){
                                calc.P =    parseFloat($F('txtP'));
                                calc.S =    parseFloat($F('txtSG'));
                                calc.Cv =   parseFloat($F('txtCv'));
                                calc.T =    calc.convertAbsTemp(parseFloat($F('txtT')));
                                calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                                calc.P2 =   calc.getBackPressure(calc.P, calc.P1);
                                
                                //alert('GasFlowRateP1: '+calc.P1);
                                //alert('GasFlowRateP2: '+calc.P2);
                                
                                if(calc.IsP2Greater(calc.P1, calc.P2, 0.53)){
                                    calc.F = calc.getGasFlowRateHigh(calc.Cv, calc.S, calc.T, calc.P2, calc.P);
                                    mngr.displayResult(calc.F);
                                }else{
                                    calc.F = calc.getGasFlowRateLow(calc.Cv, calc.S, calc.T, calc.P1);
                                    mngr.displayResult(calc.F);
                                }
							}else{
								mngr.setErrorMessage(mngr._PressureWarningLiquid);
							}
						}
                        break;                
                    case 'Pressure Drop':                
                         if (mngr.validateInputs('FPanel', 'SPanel', 'CvPanel', 'TPanel', 'P1Panel')){
                            calc.S =    parseFloat($F('txtSG'));
                            calc.F =    parseFloat($F('txtF'));
                            calc.T =    calc.convertAbsTemp(parseFloat($F('txtT')));
                            calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                            calc.P2 =   calc.P1 - (calc.P1*.46);
                            calc.Cv =   parseFloat($F('txtCv'));
                            
                            calc.P = calc.getGasPressureDrop(calc.Cv, calc.S, calc.T, calc.F, calc.P2);
                            mngr.displayResult(calc.P);
                          }
                          break;
                 } // End of nested switch
                break;
            case 'steam':
                switch(mngr._variable){
                    case 'Cv Factor':
                        if (mngr.validateInputs('PPanel', 'FPanel', 'XPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){
                                calc.X =    calc.percentToDec(parseFloat($F('txtS')));
                                calc.P =    parseFloat($F('txtP'));                            
                                calc.F =    parseFloat($F('txtF'));
                                calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                                calc.P2 =   calc.getBackPressure(calc.P, calc.P1);
                              
                                if(calc.IsP2Greater(calc.P1, calc.P2, 0.57)){
                                    calc.Cv = calc.getSteamFlowCoeffHigh(calc.F, calc.P2, calc.P, calc.X);
                                    mngr.displayResult(calc.Cv);
                                }else{
                                    calc.Cv = calc.getSteamFlowCoeffLow(calc.F, calc.P1, calc.X);
                                    mngr.displayResult(calc.Cv);
                                }
                            }else{
								mngr.setErrorMessage(mngr._PressureWarningLiquid);
                            }
							
                        }
                        break;
                    case 'Flow Rate':
                        if (mngr.validateInputs('PPanel', 'CvPanel', 'XPanel', 'P1Panel')){
                            if(mngr.isPressureDropLess(parseFloat($F('txtP')), parseFloat($F('txtP1')))){

								calc.X =    calc.percentToDec(parseFloat($F('txtS')));
	                            calc.P =    parseFloat($F('txtP'));                            
	                            calc.Cv =   parseFloat($F('txtCv'));
	                            calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
	                            calc.P2 =   calc.getBackPressure(calc.P, calc.P1);
	                              
	                            if(calc.IsP2Greater(calc.P1, calc.P2, 0.57)){
	                                calc.F = calc.getSteamFlowRateHigh(calc.Cv, calc.P2, calc.P, calc.X);
	                                mngr.displayResult(calc.F);
	                            }else{
	                                calc.F = calc.getSteamFlowRateLow(calc.Cv, calc.P1, calc.X);
	                                mngr.displayResult(calc.F);
	                            }
							}else{
								mngr.setErrorMessage(mngr._PressureWarningLiquid);
                            }
                        }
                        break;                
                    case 'Pressure Drop':
                        if (this._manager.validateInputs('FPanel', 'CvPanel', 'XPanel', 'P1Panel')){
                            calc.X =    calc.percentToDec(parseFloat($F('txtS')));
                            calc.F =    parseFloat($F('txtF'));                            
                            calc.Cv =   parseFloat($F('txtCv'));
                            calc.P1 =   calc.convertPSIA(parseFloat($F('txtP1')));
                            calc.P2 =   calc.P1 - (calc.P1*.42);
                            
                            if(calc.IsP2Greater(calc.P1, calc.P2, 0.57)){
                                calc.P = calc.getSteamPressureDrop(calc.Cv, calc.F, calc.P2, calc.X);
                                mngr.displayResult(calc.P);
                            }
                        }
                        break;  
                 }// End of nested switch
                break;
            
        } // End of switch
    }, // End of calculate
        
    validateInputs:function(){
          this._manager.clearAllErrors('SPanel', 'TPanel', 'XPanel', 'CvPanel', 'FPanel', 'PPanel', 'P1Panel');
          var errorFree = true;
          for (var i = 0; i < arguments.length; i++) {
            var panelName = arguments[i];
            var element = $$("#"+arguments[i]+" input");
            element.each(function(item){
                if(!Field.present(item.id)){
                    if(errorFree){errorFree = false;}
                    $(item.id).addClassName('errorInput');
                    var display = $$("#"+panelName+" p");
                    display.each(
                        function(displayItem){
                            displayItem.show();
                            $(displayItem.id).innerHTML = "Please enter a value.";
                        }
                    )// End of display.each
                }else if(!Field.isNum(item.id)){
                    if(errorFree){errorFree = false;}
                    $(item.id).addClassName('errorInput');
                    var display = $$("#"+panelName+" p");
                    display.each(
                        function(displayItem){
                            displayItem.show();
                            $(displayItem.id).innerHTML = "Value is not a number.";
                        }
                    )// End of display.each
                }
            })
            }// End of for loop
            return errorFree; 
    },// End of validateInputs
    
    displayValves: function(){
        var calc = this._manager._calc;
        var finder = new valveFinder();
        var medium = this._manager._medium
        var valves = finder.findValve(calc.Cv, this._manager._medium, calc.P1);
        var tempDrop; // Temporary Variable to hold Pressure Drop for a given valve
        var inletPressureFlag = false;
        var lowPressureFlag = false;
        
        // Check to make sure valves were returned
        if(valves.length > 0)
		{
            // Loop through all valves
            valves.each(function(valve){
                var strHTML = "";
                var verifyTempDrop = false;
                // Display basic valve information
                if(valve.name != 'TYPE F SERIES' && valve.name != 'TYPE G SERIES'){
                    // Calculate Adjusted Pressure Drop for each valve
                    //alert('Inlet Pressure: '+calc.P1);
                    //alert('Outlet Pressure: '+calc.P2);
                    //alert('IsP2Greater: '+calc.IsP2Greater(calc.P1, calc.P2, 0.53));
                    switch(this._manager._medium){
                        case 'liquid':              
                            tempDrop = calc.getLiquidPressureDrop(parseFloat(valve.coefficient), calc.F, calc.S);
                            verifyTempDrop = true;
                            break;
                        case 'gas':          
                            if(calc.IsP2Greater(calc.P1, calc.P2, 0.53)){
                                tempDrop = calc.getGasPressureDrop(parseFloat(valve.coefficient), calc.S, calc.T, calc.F, calc.P2);
                                verifyTempDrop = true;
                            }else{
                                var tmpP2 =   calc.P1 - (calc.P1*.46);
                                tempDrop = calc.getGasPressureDrop(parseFloat(valve.coefficient), calc.S, calc.T, calc.F, tmpP2);
                                verifyTempDrop = true;
                            }
                            break;
                        case 'steam':
                            if(calc.IsP2Greater(calc.P1, calc.P2, 0.57)){
                                tempDrop = calc.getSteamPressureDrop(parseFloat(valve.coefficient), calc.F, calc.P2, calc.X);
                                verifyTempDrop = true;
                            }else{
                                var tmpP2 =   calc.P1 - (calc.P1*.46);
                                tempDrop = calc.getGasPressureDrop(parseFloat(valve.coefficient), calc.S, calc.T, calc.F, tmpP2);
                                verifyTempDrop = true;
                            }   
                            break;
                    
                    } // End of switch
										
                    // ****************************************************** //
                    // STARTING THE LIST ELEMENT CONTAINING VALVE INFORMATION
                    // ****************************************************** //
				    strHTML += "<li><a href=\""+valve.url+"\" target=\"_blank\">"+valve.name+"</a><br />Cv: "+parseFloat(valve.coefficient)+"<br />"+valve.seriessize+": "+valve.size+"&quot;<br />";

					// ******************************************************************
					// CHECKING TO SEE IF THE ADJUSTED DOWN PRESSURE CAN BE DISPLAYED
					// BY CHECKING THE verifyTempDrop FLAG.
					// ******************************************************************

					if(verifyTempDrop == true)
					{
					 	// Calculate the difference between the calculate pressure and the adjusted pressure
                        var difference = ((calc.P - tempDrop)/calc.P)*100;
                        var tempdiff;
                        var displaydiff;
                        // Format the string that displays the valve's adjusted pressure drop difference
                        if(difference > 0){
                            tempdiff = difference.toFixed(2);
                            displaydiff = "+"+tempdiff.toString();
                        } else if (difference < 0){
                            tempdiff = difference.toFixed(2);
                            displaydiff = tempdiff.toString();
                        } else if (difference == 0){
                            displaydiff = 0.00;
                        }
                                                
                        if((tempDrop > calc.P1) || (tempDrop < 5))
                        {
                            strHTML+="<span style=\"color:#FF0000\">";
                        }
                        
                        strHTML += "Adjusted &Delta;P: "+tempDrop.toFixed(2)+" psid";
                        
                        if(tempDrop > calc.P1)
                        {
                            strHTML+="*";
                            if(inletPressureFlag == false){
                                inletPressureFlag = true;
                            }
                            
                        }
                        
                        if(tempDrop < 5)
                        {
                            strHTML+="&dagger;";
                            if(lowPressureFlag == false){
                                lowPressureFlag = true;
                            }
                        }
                        
                        if((tempDrop <= calc.P1) || (tempDrop < 5))
                        {
                            strHTML+="</span>";
                        }
                        
                        strHTML += "<br />";
                        strHTML+="Difference: "+displaydiff+"%";
     
                    }
					else
					{
					    strHTML+="<span style=\"color:#FF0000\">Adjusted &Delta;P: Error</span>";
					}
                    
                    // ****************************************************** //
                    // CLOSING THE LIST ELEMENT CONTAINING VALVE INFORMATION
                    // ****************************************************** //
                    strHTML+= "</li>";
					
					// Insert valves HTML into DIV tag
					$('resultslist').innerHTML += strHTML;
					
				} // End of valves.name != 'TYPE F &amp; G SERIES: 1/8&quot; - 3/8&quot;'
            	
            }.bind(this._manager));// End of each
			
			// ******************************************************************
			// CHECK TO SEE IF ANY VALVES WERE DISPLAYED BY CHECKING THE 
			// DISPLAY COUNT
			// ******************************************************************
			if (inletPressureFlag)
			{
				// NO VALVES DISPLAYED
				$('resultslist').innerHTML += "<p style=\"color:#FF0000;\">* The Adjusted &Delta;P for this valve is greater than the Max Inlet Pressure entered. To use this valve you must increase or decrease your pressure/flow rate/Cv accordingly.</p>";
			}
			
			if (lowPressureFlag)
			{
			    $('resultslist').innerHTML += "<p style=\"color:#FF0000;\">&dagger; These valves may require minimum of 5 PSI to operate properly.";
			}
			
            // Insert final message at end of resultlist 
            $('resultslist').innerHTML += "<p>For more information on the valves above please visit our <a href=\"catalogandvideo.htm\" target=\"_blank\">catalog pages</a>.</p><p>Optional valve seats, discs and other features may also be required. Consult our factory experts for further details - Call 800-634-6853 or email us at <a href=\"mailto:sales@gouldvalve.com\">sales@gouldvalve.com</a>.</p>";
       } else {
            if(this._manager._medium == "steam" && this._manager._calc.P1 > 200){
                $('resultslist').innerHTML += "<p><strong>No Recommended Valves over 200 psi for steam.</strong></p><p> Please contact customer service at 800-634-6853 or email us at <a href=\"mailto:sales@gouldvalve.com\">sales@gouldvalve.com</a>.</p>";
            }else if(this._manager._medium == "gas" && this._manager._calc.P1 > 1000){
                $('resultslist').innerHTML += "<p><strong>No Recommended Valves over 1000 psi for gases.</strong></p><p> Please contact customer service at 800-634-6853 or email us at <a href=\"mailto:sales@gouldvalve.com\">sales@gouldvalve.com</a>.</p>";
            }else if(this._manager._medium == "liquid" && this._manager._calc.P1 > 1200){
                $('resultslist').innerHTML += "<p><strong>No Recommended Valves over 1200 psi for liquids.</strong></p><p> Please contact customer service at 800-634-6853 or email us at <a href=\"mailto:sales@gouldvalve.com\">sales@gouldvalve.com</a>.</p>";
            }else{
                $('resultslist').innerHTML += "<p><strong>No matches found.</strong></p><p> Please contact customer service at 800-634-6853 or email us at <a href=\"mailto:sales@gouldvalve.com\">sales@gouldvalve.com</a>.</p>";
            }
       } // End of valves.length > 0
       
    },// End of displayValves
    
    displayResult:function(temp){
        if (isNaN(temp)){
            this._manager.setErrorMessage("Unable to solve with given values.");
        }else if(temp == "Infinity"){
            this._manager.setErrorMessage("Unable to solve with given values.");
        }else{
            $('txtResult').value = temp.toFixed(2);
            // Set textbox variables
            if (this._manager._variable == "Flow Rate"){
                $('txtF').value = temp.toFixed(2);
            } else if(this._manager._variable == "Cv Factor"){
                $('txtCv').value = temp.toFixed(2);
            } else if(this._manager._variable == "Pressure Drop"){
                $('txtP').value = temp.toFixed(2);         
            }
            // Display the valves
            this.displayValves();
            // Display error message if calculated pressure drop is less than 5
            if (this._manager._calc.P <= 5){
                this._manager.setErrorMessage("Valves may require a minimum 5 psi Pressure Drop to operate properly.");
            } 

        }
    },// End of displayResult
    
    setErrorMessage:function(message){
        var messageElement = $('message');
        messageElement.show();
        messageElement.innerHTML = "";
        messageElement.innerHTML = message;
        messageElement.focus();
    },
    
    isPressureDropLess:function(p, p1){
        if(p <= p1){
            return true;
        }else{
            return false;
        }
    }
  
}