
/*made by Vijay Bhagwandas, Copyrights: Lenntech BV*/
/* ********the formula of relative humidity******** */
function relativeHumidity()
{	
	var T1 = document.forms.calc.T1.value;           //temperature outside
	var T2 = document.forms.calc.T2.value;          //temperature inside
	var RH1 = document.forms.calc.RH1.value;       //relative humidity outside 
	var RH2 = 0;                                   //relative humidity you get when you heat the air to T2
	var RH3 = document.forms.calc.RH3.value;     //wanted relative humidity
	
	var absMoisture1  //absolute moisture in the value that is calculated
	var absMoisture2  //wanted absolute moisture
	var absMoisureTot //difference
	
	if(T1 == "" || RH1 == ""){
		return;
	}

	absMoisture1 = (RH1*0.42*Math.exp(T1*10*0.006235398)/10).toFixed(2);
	document.forms.calc.absM1.value = +absMoisture1+"  g/kg";
	
	if(T2 == ""){
		return;
	}
	
	RH2 = (absMoisture1*10/(0.42*Math.exp(T2*10*0.006235398))).toFixed(1);
	document.forms.calc.RH2.value = +RH2+ " %";
	
/* ********the formula of the density******** */
	var rho, A, RHr, p=101325, R=287.055, vp; //rho=density, vp=vaporized pressure, R=gascanstant of air, 
	                                         //RHr=relative humidity ratio, A=part of formula, p=pressure 
	//var T = parseFloat(document.forms[0].T.value)//T=temperature (deg C)
	//var RH = parseFloat(document.forms[0].RH.value)//RH=relative humidity
	
	vp = (parseFloat(RH1)/100)*((6.107*Math.exp((7.5*parseFloat(T1))/(237.3+parseFloat(T1))*Math.LN10)/10));
	RHr = (0.62198*vp)/((p/1000)-vp*1);
	A = (R*(parseFloat(T1)+273.15)*(1+1.6087*RHr))/p;
	rho = ((1+RHr)/A).toFixed(2);
	
	if(rho == null){
		return;
	}
	
/* ***************end of the density*************** */
	
	if(RH3 == ""){
		return;
	}
	
	absMoisture2 = RH3*0.42*Math.exp(T2*10*0.006235938)/10;
	absMoistureTot = (Math.abs(absMoisture2 - absMoisture1)).toFixed(2);
	document.forms.calc.absMtot.value = +absMoistureTot+"   g/kg";
	
	var V = document.forms.calc.V.value;                                 //volume
	var l = document.forms.calc.l.value;                                 //length
	var w = document.forms.calc.w.value;                                 //width
	var h = document.forms.calc.h.value;                                 //hight
	
	if(V == null){
		return;
	}	
	
	if(l != "" && w != "" && h != "")
	{
		V = l*h*w;
		document.forms.calc.V.value = V;
	}
	else
	{
		document.forms.calc.V.value = V;
	}
	
	var water = (Math.abs(rho*V*(absMoisture1 - absMoisture2))/1000).toFixed(2);
	document.forms.calc.water.value = +water+" liter H2O";
	document.forms.calc.rho.value = rho;
	document.forms.calc.water1.value = " "+water+" liter water";
	var re = document.forms.calc.re.value;
	var re2 = 100-re;
	document.forms.calc.re2.value = +re2+"%";
	var vg = (water*(re2/100)).toFixed(2);
	document.forms.calc.vg.value = +vg+" liter water/h";
}

function clearForm(){
	var form = window.document.forms.calc;
	for(var i = 0; i < form.elements.length; i++){
		if(form.elements[i].type == "text"){
			form.elements[i].value = "";
		}
	}
}

document.onkeypress = keyhandler;

function keyhandler(e) {
	Key = 0;
	if( !e ) {
		if( window.event ) {
			//DOM
			e = window.event;
		} else {
			//TOTAL FAILURE, WE HAVE NO WAY OF REFERENCING THE EVENT
			return;
		}
	}
	if( typeof( e.which ) == 'number' ) {
		//NS 4, NS 6+, Mozilla 0.9+, Opera
		Key = e.which;
	} else if( typeof( e.keyCode ) == 'number' ) {
		//IE, NS 6+, Mozilla 0.9+
		Key = e.keyCode;
	} else if( typeof( e.charCode ) == 'number' ) {
		//also NS 6+, Mozilla 0.9+
		Key = e.charCode;
	} else {
		//TOTAL FAILURE, WE HAVE NO WAY OF OBTAINING THE KEY CODE
		return;
	} 

	if( Key == 13 || Key == 9 || Key == 32 ){ //13 is ascii value for Enter key
		relativeHumidity(); 
	}

	if( Key == 27){ //27 is ascii value for escape key
		clearForm(); 
	}
}


