/* Einheit an Auswahlfeld Ausgangshaerte/Leitfaehigkeit anpassen */
function anpassenEinheit()
{
        zuruecksetzen(false);
        if (document.Formular.selectHaerteBzwLeitfaehigkeit.options[
                        document.Formular.selectHaerteBzwLeitfaehigkeit.selectedIndex].value == "haerte")
        {
                document.getElementById("einheit").innerHTML = "&deg;d";
        }
        else if (document.Formular.selectHaerteBzwLeitfaehigkeit.options[
                        document.Formular.selectHaerteBzwLeitfaehigkeit.selectedIndex].value == "leitfaehigkeit")
        {
                document.getElementById("einheit").innerHTML = "&mu;S/cm";
        }
}

/* Setzt alle Felder zurueck. */
function zuruecksetzen(auchEingaben)
{
        if (auchEingaben)
        {
                document.Formular.anlagenvolumen.value = "";
                document.Formular.haerteBzwLeitfaehigkeit.value = "";
                document.Formular.selectHaerteBzwLeitfaehigkeit.value = "haerte";
                document.Formular.heizleistung.value = "";
                anpassenEinheit();
        }
        document.getElementById("ausgabe5k").style.display = "none";
        document.getElementById("ausgabe18k").style.display = "none";
        document.getElementById("zielhaerte").innerHTML = "";
        document.getElementById("anzahl5k").innerHTML = "";
        document.getElementById("anzahl18k").innerHTML = "";
        document.getElementById("durchfluss5k").innerHTML = "";
        document.getElementById("durchfluss18k").innerHTML = "";
        document.getElementById("hinweisVdi").style.display = "none";
}

/* Prueft, ob die uebergebene Eingabe nur aus Ziffern besteht. */
function istNumerisch(eingabe)
{
        for (i = 0; i < eingabe.length; ++i)
        {
                if (eingabe.charAt(i) < "0" || eingabe.charAt(i) > "9")
                {
                        return false;
                }
        }
        return true;
}

/* Die Hauptfunktion zur Berechnung  der Anzahl von permasoft-Geraeten */
function berechne()
{
        // Eingabe: Heizleistung
        if (document.Formular.heizleistung.value == "")
        {
                alert("Bitte die Heizleistung eingeben.");
                document.Formular.heizleistung.focus();
                return false;
        }
        else if (!istNumerisch(document.Formular.heizleistung.value))
        {
                alert("Ihre Eingabe bei der Heizleistung ist keine Zahl.");
                document.Formular.heizleistung.focus();
                return false;
        }
        // Eingabe: Anlagenvolumen
        if (document.Formular.anlagenvolumen.value == "")
        {
                alert("Bitte das Anlagenvolumen eingeben.");
                document.Formular.anlagenvolumen.focus();
                return false;
        }
        else if (!istNumerisch(document.Formular.anlagenvolumen.value))
        {
                alert("Ihre Eingabe beim Anlagenvolumen\n ist keine zulaessige Zahl.");
                document.Formular.anlagenvolumen.focus();
                return false;
        }
        // Eingabe: Haerte / elektr. Leitfaehigkeit
        if (document.Formular.haerteBzwLeitfaehigkeit.value == "")
        {
                alert("Bitte die Wasserhaerte oder die elektrische\n Leitfaehigkeit eingeben.");
                document.Formular.haerteBzwLeitfaehigkeit.focus();
                return false;
        }
        else if (isNaN(Number(document.Formular.haerteBzwLeitfaehigkeit.value.replace(/,/,".")))
                        || (Number(document.Formular.haerteBzwLeitfaehigkeit.value.replace(/,/,".")) <= 0))
        {
                alert("Ihre Eingabe bei der Wasserhaerte oder der elektrischen\n Leitfaehigkeit ist keine zugelassene Zahl.");
                document.Formular.haerteBzwLeitfaehigkeit.focus();
                return false;
        }

        // Ergebnis berechnen
        var ausgangshaerte = 0.0;
        var zielhaerte = 0.0;
        var sicherheit = 1.1;   // 0% Sicherheit fuer Leitfaehigkeit, 10% fuer Haerte
        // Ausganshaerte
        ausgangshaerte = document.Formular.haerteBzwLeitfaehigkeit.value.replace(/,/,".");
        if (document.Formular.selectHaerteBzwLeitfaehigkeit.options[
                        document.Formular.selectHaerteBzwLeitfaehigkeit.selectedIndex].value != "haerte")
        {
                ausgangshaerte = ausgangshaerte / 30.0;
                sicherheit = 1.0;   // 0% Sicherheit fuer Leitfaehigkeit
        }
        // Zielhaerte nach VDI-Richtlinie 2035 (ohne Umlaufheizer)
        zielhaerte = 0.0;
        if (document.Formular.heizleistung.value <= 50)
        {
                if (document.Formular.anlagenvolumen.value / document.Formular.heizleistung.value < 20)
                {
                        zielhaerte = 16.8;
                }
                else if (document.Formular.anlagenvolumen.value / document.Formular.heizleistung.value < 50)
                {
                        zielhaerte = 11.2;
                }
                else
                {
                        zielhaerte = 0.1;
                }
        }
        else if (document.Formular.heizleistung.value <= 200)
        {
                if (document.Formular.anlagenvolumen.value / document.Formular.heizleistung.value < 20)
                {
                        zielhaerte = 11.2;
                }
                else if (document.Formular.anlagenvolumen.value / document.Formular.heizleistung.value < 50)
                {
                        zielhaerte = 8.4;
                }
                else
                {
                        zielhaerte = 0.1;
                }
        }
        else if (document.Formular.heizleistung.value <= 600)
        {
                if (document.Formular.anlagenvolumen.value / document.Formular.heizleistung.value < 20)
                {
                        zielhaerte = 8.4;
                }
                else
                {
                        zielhaerte = 0.1;
                }
        }
        else
        {
                        zielhaerte = 0.1;
        }

        // Hinweis ausgeben, wenn Zielhaerte groesser als Ausgangshaerte
        if (zielhaerte >= ausgangshaerte)
        {
                document.getElementById("hinweisVdi").style.display = "block";
        }
        else
        {
                document.getElementById("hinweisVdi").style.display = "none";
        }

        // Anzahl und Durchfluss der Geraete errechnen,
        // abhaengig von Ziel- und Ausgangshaerte
        var anzahl5k = 0, anzahl18k = 0;
        var durchfluss5k = 0, durchfluss18k = 0;
        var durchfluss5kExtra = 0, durchfluss18kExtra = 0;
        // Kapazitaetsgrenze fuer Entmineralisierungseinheit (in Liter / Â°d)
        var haerte_18k = 18000.0 / sicherheit;
        var haerte_5k  =  5000.0 / sicherheit;

        // Zielhaerte = 0,1
        // Anzahl haengt nur von Haerte ab, nicht vom pH-Wert
        // bis x,5*18k werden 5k verwendet, ansonsten aufgerundet und nur 18k verwendet
        anzahl18k = document.Formular.anlagenvolumen.value * ausgangshaerte / haerte_18k;
        if (anzahl18k <= Math.round(anzahl18k))
        {
                anzahl18k = Math.floor(anzahl18k);
                durchfluss18k = Math.floor(haerte_18k / ausgangshaerte);
                if (document.Formular.anlagenvolumen.value > (durchfluss18k*anzahl18k))
                {
                        durchfluss18kExtra = document.Formular.anlagenvolumen.value - (durchfluss18k*anzahl18k);
                        anzahl18k++;
                }
        }
        else
        {
                anzahl18k = Math.floor(anzahl18k);
                durchfluss18k = Math.floor(haerte_18k / ausgangshaerte);
                anzahl5k = Math.floor(((document.Formular.anlagenvolumen.value - durchfluss18k*anzahl18k) * ausgangshaerte) / haerte_5k);
                durchfluss5k = Math.floor(haerte_5k / ausgangshaerte);
                if ((document.Formular.anlagenvolumen.value - (durchfluss18k*anzahl18k)) > (durchfluss5k*anzahl5k))
                {
                        durchfluss5kExtra = document.Formular.anlagenvolumen.value
                                            - (durchfluss18k*anzahl18k) - (durchfluss5k*anzahl5k);
                        anzahl5k++;
                }
        }

        // Ausgabe des Durchflusses erstellen
        var ausgabeDurchfluss5k = "";
        var ausgabeDurchfluss18k = "";
        if (durchfluss5kExtra > 0)
        {
                if (anzahl5k > 1)
                {
                        ausgabeDurchfluss5k = (anzahl5k - 1) + " x " + durchfluss5k + "; ";
                }
                ausgabeDurchfluss5k = ausgabeDurchfluss5k + "1 x " + durchfluss5kExtra;
        }
        else if (anzahl5k > 0)
        {
                ausgabeDurchfluss5k = anzahl5k + " x " + durchfluss5k;
        }
        if (durchfluss18kExtra > 0)
        {
                if (anzahl18k > 1)
                {
                        ausgabeDurchfluss18k = (anzahl18k - 1) + " x " + durchfluss18k + "; ";
                }
                ausgabeDurchfluss18k = ausgabeDurchfluss18k + "1 x " + durchfluss18kExtra;
        }
        else if (anzahl18k > 0)
        {
                ausgabeDurchfluss18k = anzahl18k + " x " + durchfluss18k;
        }

        // Ergebnis anzeigen
        if (anzahl5k > 0)
        {
                document.getElementById("ausgabe5k").style.display = "";
        }
        if (anzahl18k > 0)
        {
                document.getElementById("ausgabe18k").style.display = "";
        }
        document.getElementById("zielhaerte").innerHTML = zielhaerte;
        document.getElementById("anzahl5k").innerHTML = anzahl5k;
        document.getElementById("anzahl18k").innerHTML = anzahl18k;
        document.getElementById("durchfluss5k").innerHTML = ausgabeDurchfluss5k;
        document.getElementById("durchfluss18k").innerHTML = ausgabeDurchfluss18k;

        return false;
}

