// JavaScript für Berechnungsformular Vers. 24-07-2002 mm

// Zusatzfenster definieren
var winSfl;
var winDichte;

// Speicherung der gewaehlten Masseinheiten
var mass_temper = "grad";		// oder 'fahr'
var mass_menge = "kgh";		// oder 'm3h' oder 'nm3h'
var mass_druck = "bar";		// oder 'psi'

function init() {
	// initialisiert Parameter und Oberflaechenelemente
	// Auswahlbox Mengeneinheiten (menge_einheit)
	neuOption = new Option( "kg/h", "kgh" );
	document.rpform.menge_einheit.options[0] = neuOption;
	neuOption = new Option( "m3/h", "m3h" );
	document.rpform.menge_einheit.options[1] = neuOption;
}

function changeZustand(inPut) {
	// Funktion zur Anzeigenaenderung auf Oberflaeche Berechnungsprogramm
	// inPut: fl:fluessig, sd:Sattdampf, ud:ueberhitzterDampf, ga:Gas
	resetErgebnis();
	// Auswahlbox Mengeneinheiten leeren
	for (var i = document.rpform.menge_einheit.length - 1; i >= 0; i--) {
		document.rpform.menge_einheit.options[i] = null;
	}
	if (inPut == 'fl') {
		// fluessig
		document.all.lay_indiDicht2.style.display = "none";
		document.all.lay_indiDicht3.style.display = "none";
		document.all.lay_indiDicht4.style.display = "none";
		document.all.lay_indiDicht1.style.display = "inline";

		document.all.lay_dichte2.style.display = "none";
		document.all.lay_dichte3.style.display = "none";
		document.all.lay_dichte4.style.display = "none";
		document.all.lay_dichte1.style.display = "inline";
		document.all.lay_butDichte.style.display = "none";
		neuOption = new Option( "kg/h", "kgh" );
		document.rpform.menge_einheit.options[0] = neuOption;
		neuOption = new Option( "m3/h", "m3h" );
		document.rpform.menge_einheit.options[1] = neuOption;
	}
	else if (inPut == 'sd') {
		// Sattdampf
		document.all.lay_indiDicht1.style.display = "none";
		document.all.lay_indiDicht3.style.display = "none";
		document.all.lay_indiDicht4.style.display = "none";
		document.all.lay_indiDicht2.style.display = "inline";

		document.all.lay_dichte1.style.display = "none";
		document.all.lay_dichte3.style.display = "none";
		document.all.lay_dichte4.style.display = "none";
		document.all.lay_dichte2.style.display = "inline";
		document.all.lay_butDichte.style.display = "inline";
		neuOption = new Option( "kg/h", "kgh" );
		document.rpform.menge_einheit.options[0] = neuOption;
	}
	else if (inPut == 'ud') {
		// Heissdampf
		document.all.lay_indiDicht1.style.display = "none";
		document.all.lay_indiDicht2.style.display = "none";
		document.all.lay_indiDicht4.style.display = "none";
		document.all.lay_indiDicht3.style.display = "inline";

		document.all.lay_dichte1.style.display = "none";
		document.all.lay_dichte2.style.display = "none";
		document.all.lay_dichte4.style.display = "none";
		document.all.lay_dichte3.style.display = "inline";
		document.all.lay_butDichte.style.display = "inline";
		neuOption = new Option( "kg/h", "kgh" );
		document.rpform.menge_einheit.options[0] = neuOption;
	}
	else {
		// Gas
		document.all.lay_indiDicht1.style.display = "none";
		document.all.lay_indiDicht2.style.display = "none";
		document.all.lay_indiDicht3.style.display = "none";
		document.all.lay_indiDicht4.style.display = "inline";

		document.all.lay_dichte1.style.display = "none";
		document.all.lay_dichte2.style.display = "none";
		document.all.lay_dichte3.style.display = "none";
		document.all.lay_dichte4.style.display = "inline";
		document.all.lay_butDichte.style.display = "none";
		neuOption = new Option( "kg/h", "kgh" );
		document.rpform.menge_einheit.options[0] = neuOption;
		neuOption = new Option( "Nm3/h", "nm3h" );
		document.rpform.menge_einheit.options[1] = neuOption;
	}
}

function changeMass(inTyp) {
	// Funktion zum Setzen der Masseinheit
	// 1. Ergebnisfelder zuruecksetzen
	resetErgebnis();
	if (inTyp == 'menge') {
	// 2. Interne Masseinheit umstellen
		mass_menge = document.rpform.menge_einheit.value;
	}
	else if (inTyp == 'temper') {
		mass_temper = document.rpform.temper_einheit.value;
	}
	else if (inTyp == 'druck') {
		mass_druck = document.rpform.druck_einheit.value;
		if (mass_druck == "bar") {
			document.all.lay_psi.style.display = "none";
			document.all.lay_bar.style.display = "inline";
		}
		else {
			document.all.lay_bar.style.display = "none";
			document.all.lay_psi.style.display = "inline";
		}
	}
}

function resetErgebnis() {
	// Funktion zum Nullen Kvs und w bei Aenderungen in Feldern
	document.rpform.rechne_kvs.value = "0,00";
	document.rpform.rechne_w.value = "0,00";
	document.rpform.rechne_sk.value = "0,00";
	document.rpform.rechne_skmax.value = "0,00";
}

function getMenge() {
	// liefert Menge - evtl. umgerechnet - in Einheit kg/h
	var result = 0;
	if (mass_menge == "kgh")
		result = inZahl(document.rpform.menge.value);
	else
		result = inZahl(document.rpform.menge.value) * inZahl(document.rpform.dichte.value);
	return result;
}

function getDichte() {
	// liefert Dichte
	var result = 0;
	result = inZahl(document.rpform.dichte.value);
	if (result == 0)
		alert ("Please enter density");
	return result;
}

function getTemper() {
	// liefert Temperatur - evtl. umgerechnet - in Grad Celsius
	var result = 0.00;
	if (document.rpform.temper.value == "")
		alert ("Please enter temperature");
	else {
		result = inZahl(document.rpform.temper.value);
		if (mass_temper == "fahr")
			result = (5 / 9) * (result - 32);
	}
	return result;
}

function getDruck(inPut) {
	// liefert Druck - evtl. umgerechnet - in bar
	var result = 0.00;
	if ( (eval("document.rpform.druck" + inPut + ".value")) == "" )
		alert ("Please enter pressure p" + inPut);
	else {
		result = inZahl(eval("document.rpform.druck" + inPut + ".value"));
		if (mass_druck == 'psi')
			result = result / 14.14;
	}
	return result;
}

function rechneKVS() {
	// Hauptfunktion: berechnet den KVS-Wert und setzt ihn
	var result = 0.00;	// kv
	var result2 = 0.00;	// w
	var result3= 0.00;	// Stellkraft Betrieb
	var result4= 0.00;	// Stellkraft maximal
	var wurzel = 0.00;
	var dichte = 0.00;
	var mstrich = getMenge();
	var druck1 = 0.00;
	var druck2 = 0.00;
	var auslegung = 0.00;
	var sitz = Number(document.rpform.sitz.value);
	if (mstrich == 0) {
		alert ("Please enter quantity");
		result = 0;
		result2 = 0;
		result3 = 0;
	}
	else {
		dichte = getDichte();
		if (dichte == 0) {
			result = 0;
			result2 = 0;
			result3 = 0;
		}
		else {
			auslegung = Number(document.rpform.auslegung.value);
			druck1 = getDruck(1);
			if (! druck1 == 0) {
				druck2 = getDruck(2);
				if (! druck2 == 0) {
					if (druck1 <= druck2) {
						alert ("Pressure p1 has to be higher than p2");
						result = 0;
					}
					else {
						if (document.rpform.zustand[0].checked) {
							// fluessig
							wurzel = Math.sqrt( dichte / (druck1 - druck2) );
							result = (mstrich / dichte) * 0.032 * wurzel;
						}
						else {
							if (druck2 <= (druck1/2))
								druck2 = druck1/2;
							if (document.rpform.zustand[1].checked) {
								// Sattdampf
								wurzel = Math.sqrt( 1 / ((druck1 - druck2) * druck2) );
								result = (mstrich / 22.4) * wurzel;
							}
							else if (document.rpform.zustand[2].checked) {
								// Heissdampf
								wurzel = Math.sqrt( dichte / (druck1 - druck2) );
								result = (mstrich / 31.7) * wurzel;
							}
							else {
								// Gas
								temper = getTemper();
								if (temper == 0)
									result = 0;
								else {
									wurzel = Math.sqrt( (dichte * (temper + 273)) / ((druck1 - druck2) * druck2) );
									result = (mstrich / (dichte * 514)) * wurzel;
								}
							}
						}
					// Berechnung Stellkraft
					var sitzFl = (Math.PI / 4) * Math.pow( (sitz/10), 2 );
					result3 = ( sitzFl * (druck1 - druck2) ) / 100;
					result4 = ( sitzFl * (druck1 - 1) ) / 100;
					}
				}
			}
			// Berechnung w: w = (353 * Menge / dichte) / (DN^2)
			if (document.rpform.zustand[0].checked) {
				// Fluessig
				result2 = (353 * mstrich / dichte) / Math.pow(auslegung, 2);
			}
			else if (document.rpform.zustand[1].checked) {
				// Sattdampf
				result2 = (353 * mstrich / dichte) / Math.pow(auslegung, 2);
			}
			else if (document.rpform.zustand[2].checked) {
				// ueberhitzter Dampf
				result2 = (353 * mstrich * dichte * druck2 / druck1) / Math.pow(auslegung, 2);
			}
			else {
				// Gas
				result2 = ( 353 * (mstrich / dichte * (273 + getTemper()) / (273 * druck1)) ) / Math.pow(auslegung, 2);
			}
		}
	}
	document.rpform.rechne_kvs.value = runde(result);
	document.rpform.rechne_w.value = runde(result2);
	document.rpform.rechne_sk.value = runde(result3);
	document.rpform.rechne_skmax.value = runde(result4);
}

function inZahl(inPut) {
	// wandelt Textstring, d.h. Dezimalzahl nach Muster 3,33 in Fliesskommawert um
	var result;
	var text = inPut.replace(",", ".");
	result = Number(text);
	return result;
}

function runde(inWert) {
	// rundet angegebenen Wert auf 2 Dezimalstellen
	var result = "" + inWert;
	var zeichenkette = "";
	var wert = inWert;
	wert = ( Math.round (wert * 100) ) /100;
	zeichenkette = "" + wert;
	result = zeichenkette.replace(".", ",");
	return result;
}

function bestFlaeche() {
	if (typeof winSfl == "undefined")
		winSfl = window.open('sitz.htm','','toolbar=0,location=0,directories=0,scrollbars=0,resizeable=0,width=635,height=340,left=0,top=110');
	else if (winSfl.closed)
		winSfl = window.open('sitz.htm','','toolbar=0,location=0,directories=0,scrollbars=0,resizeable=0,width=635,height=340,left=0,top=110');
	else
		winSfl.focus();
}

function bestDichte() {
	if (typeof winDichte == "undefined")
		winDichte = window.open('wasserdichte.htm','','toolbar=0,location=0,directories=0,scrollbars=0,resizeable=0,width=400,height=320,left=380,top=100');
	else if (winDichte.closed)
		winDichte = window.open('wasserdichte.htm','','toolbar=0,location=0,directories=0,scrollbars=0,resizeable=0,width=400,height=320,left=380,top=100');
	else
		winDichte.focus();
}
