/* var R = 287;	// Gaskonstante Luft
var g = 9.81;	// Erdbeschleunigung
var omega = 7.292E-5;	// Winkelgeschwindigkeit der Erde
 */

function runde(x, n) {
	n = Math.pow(10, n);
	x = Math.round(x*n);
	return x/n;
}

function degToRad(x) {
	return (x/180)*Math.PI;
}


// Sättingungsdampfdruck in Abhängigkeit von der Temperatur
function SDD(T) {
	var a, b;

	if(T >= 0) {	// Sättigungsdampfdruck über Wasser
		a = 7.5;
		b = 237.3;
	}
	else {
		a = 7.6;
		b = 240.7;
	}
	var sdd = 6.1078 * Math.exp(((a*T)/(b+T))/Math.LOG10E);

	return sdd;
}

// Dampfdruck in Abhängigkeit von der Temperatur und der relativen Feuchte
function DD(T, r) {
	var sdd = SDD(T);
	var dd = r/100 * sdd;

	return dd;
}


// Relative Humidity to Dew Point
function RHtoDP(T, r) {
	var dd = DD(T, r);
	var a, b;

	if (T >= 0) {
		a = 7.5;
		b = 237.3;
	}
	else {
		a = 7.6;
		b = 240.7;
	}

	var c = Math.log(dd/6.1078) * Math.LOG10E;
	var Taupunkt = (b * c) / (a - c);

	return Taupunkt;
} // end function RHtoDP()


// Dew Point to Relative Humidity
function DPtoRH(T, TD) {
	var dd  = SDD(TD);
	var sdd = SDD(T);

	return 100 * (dd / sdd);
}


// Taupunktberechnung
/* Benutzte Funktionen:
 * DPtoRH(), RHtoDP(), CelsiusToKelvin(), DD(), runde()
 * indirekt: SDD()
 */
function berechneTT() {
	if(document.TT.Temperatur.value == "") {
		alert("Bitte geben Sie eine Temperatur ein!");
		return;
	}
	var Temperatur = parseFloat(document.TT.Temperatur.value);

	if(document.TT.gesucht[0].checked == true && document.TT.Taupunkt.value == "") {
		var text = "Bitte geben Sie die Taupunkttemperatur ein,\n"
		text += "damit die relative Luftfeuchtigkeit berechnet werden kann.";
		alert(text);
		return;
	}
	else if(document.TT.gesucht[1].checked == true && document.TT.RelativeFeuchte.value == "") {
		var text = "Bitte geben Sie die relative Luftfeuchtigkeit ein,\n"
		text += "damit die Taupunkttemperatur berechnet werden kann.";
		alert(text);
		return;
	}

	if(document.TT.gesucht[0].checked == true) {	// berechne relative Feuchte
		var Taupunkt = DPtoRH(Temperatur, parseFloat(document.TT.Taupunkt.value));
		document.TT.RelativeFeuchte.value = runde(Taupunkt, 1);
	}
	else if(document.TT.gesucht[1].checked == true) {	// berechne Taupunkt
		var Taupunkt = RHtoDP(Temperatur, parseFloat(document.TT.RelativeFeuchte.value));
		document.TT.Taupunkt.value = runde(Taupunkt, 1) + 3;	// "+3" -> ~ krit. Schimmeltemperatur
	}

	var mw = 18.016;
	var RStern = 8314.3;
	var dd = 100 * DD(Temperatur, document.TT.RelativeFeuchte.value);
	var absFeuchte = 1000 * mw/RStern * dd/CelsiusToKelvin(Temperatur);
	document.TT.AbsFeuchte.value = runde(absFeuchte, 1);
} // end function berechneTT()


function CelsiusToKelvin(T) {
	return T + 273.15;
}

