/* 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]";
        }
}

/* Passt die Namen der Geraete bei der Ausgabe an. */
function anpassenPhStabilisator()
{
        zuruecksetzen(false);
        if (document.Formular.ohnePh.checked)
        {
                document.getElementById("modell5k").innerHTML = "permasoft 5000 NF";
                document.getElementById("modell18k").innerHTML = "permasoft 18000 NF";
        }
        else
        {
                document.getElementById("modell5k").innerHTML = "permasoft 5000";
                document.getElementById("modell18k").innerHTML = "permasoft 18000";
        }
}

/* 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("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 ohnePh = document.Formular.ohnePh.checked;
        // Ausganshaerte
        ausgangshaerte = document.Formular.haerteBzwLeitfaehigkeit.value.replace(/,/,".");
        if (document.Formular.selectHaerteBzwLeitfaehigkeit.options[
                        document.Formular.selectHaerteBzwLeitfaehigkeit.selectedIndex].value != "haerte")
        {
                ausgangshaerte = ausgangshaerte / 30.0;
        }
        // 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, anzahl18k, durchfluss5k, durchfluss18k;
        // Sicherheitsfaktor um Fehlbedienung zu verhindern
        var sicherheit = 0.9;
        // Kapazitaetsgrenze fuer Entmineralisierungseinheit (in Liter / °d)
        var haerte_18k = 18000 * sicherheit;
        var haerte_5k  =  5000 * sicherheit;
        // Kapazitaetsgrenze fuer pH-Stabilisator (in Liter)
        var ph_18k = 1800 * sicherheit;
        var ph_5k = 500 * sicherheit;

//         // Zielhaerte >= Ausgangshaerte, also keine Enthaertung notwendig
//         if (zielhaerte >= ausgangshaerte)
//         {
//                 alert("Keine weitere Enthaertung notwendig, jedoch nach VDI 2035 / 2 die \npH-Wert-Anhebung beachten.");
//                 anzahl5k = 0;
//                 anzahl18k = 0;
//                 durchfluss = 0;
//                 ergaenzungswasser = 0;
//         }
//         // Zielhaerte 0,1, also ohne Ergaenzungswasser
//         else if (zielhaerte == 0.1)
//         {


        // In allen Faellen Zielhaerte = 0,1

        // permasoft NF, ohne pH-Stabilisator :
        // maximale Kapazitaet in Liter ergibt sich also aus dem Quotient von
        // 5.000 bzw. 18.000 und der vorliegenden Wasserhaerte in °d (Grad deutsch. Haerte)
        if (ohnePh)
        {
                anzahl18k = Math.ceil(document.Formular.anlagenvolumen.value * ausgangshaerte / haerte_18k) - 1;
                anzahl5k = 0;
                // Entscheide ob Rest mit 18k, zwei, einem oder keinem 5k verarbeitet wird
                if (document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k > 2 * haerte_5k)
                {
                        // ein 18k ist billiger als drei 5k
                        anzahl18k++;
                        // Ausgabe zusammenbauen
                        durchfluss5k = "-";
                        if (anzahl18k > 1)
                        {
                                if (document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k == 0)
                                {
                                        durchfluss18k = "(" + anzahl18k + " mal) " + Math.floor(haerte_18k/ausgangshaerte);
                                }
                                else
                                {
                                        durchfluss18k = "(" + (anzahl18k - 1) + " mal) "
                                          + Math.floor(haerte_18k/ausgangshaerte) + "<br />(1 mal) "
                                          + (document.Formular.anlagenvolumen.value - Math.floor(haerte_18k/ausgangshaerte)*(anzahl18k - 1));
                                }
                        }
                        else
                        {
                                durchfluss18k = Math.floor(document.Formular.anlagenvolumen.value);
                        }
                }
                else
                {
                        // Rest mit 5k verarbeiten
                        anzahl5k = Math.ceil((document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k) / haerte_5k);
                        // Ausgabe zusammenbauen
                        // Durchfluss 18k
                        if (anzahl18k == 0)
                        {
                                durchfluss18k = "-";
                        }
                        else
                        {
                                durchfluss18k = Math.floor(haerte_18k/ausgangshaerte);
                        }
                        // Durchfluss 5k
                        // Zuerst Durchfluss der 18k abziehen
                        durchfluss5k = Math.floor(Math.floor(document.Formular.anlagenvolumen.value - Math.floor(haerte_18k/ausgangshaerte)*anzahl18k) / anzahl5k);
                }
        }
        // permasoft und permasoft Alu:
        // Kapazitaet wie bei permasoft NF
        // Wegen Kapazitaetsgrenze des pH-Stabilisators gilt ausserdem: Beim permasoft 5000 / 5000 Alu ist
        // die maximale Kapazitaet in Liter 500. Beim permasoft 18000 / 18000 Alu betraegt diese 1800 Liter.
        else
        {
                anzahl18k = Math.max(Math.ceil(document.Formular.anlagenvolumen.value * ausgangshaerte / haerte_18k),
                                     Math.ceil(document.Formular.anlagenvolumen.value / ph_18k)) - 1;
                anzahl5k = 0;

                // Entscheide ob Rest mit 18k, zwei, einem oder keinem 5k verarbeitet wird
                if ((document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k > 2 * haerte_5k)
                    || (document.Formular.anlagenvolumen.value - ph_18k*anzahl18k) > 2 * ph_5k)
                {
                        // ein 18k ist billiger als drei 5k
                        anzahl18k++;
                        // Ausgabe zusammenbauen
                        durchfluss5k = "-";
                        if (anzahl18k > 1)
                        {
                                if (document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k == 0)
                                {
                                        durchfluss18k = Math.min(Math.floor(haerte_18k/ausgangshaerte), ph_18k);
                                }
                                else
                                {
                                        durchfluss18k = "(" + (anzahl18k - 1) + " mal) "
                                          + Math.min(Math.floor(haerte_18k/ausgangshaerte), ph_18k) + "<br />(1 mal) "
                                          + (document.Formular.anlagenvolumen.value - Math.min(Math.floor(haerte_18k/ausgangshaerte), ph_18k)*(anzahl18k - 1));
                                }
                        }
                        else
                        {
                                durchfluss18k = Math.floor(document.Formular.anlagenvolumen.value);
                        }
                }
                else
                {
                        // Rest mit 5k verarbeiten
                        anzahl5k = Math.max(Math.ceil((document.Formular.anlagenvolumen.value * ausgangshaerte - haerte_18k*anzahl18k) / haerte_5k),
                                            Math.ceil((document.Formular.anlagenvolumen.value - ph_18k*anzahl18k) / ph_5k));
                        // Ausgabe zusammenbauen
                        // Durchfluss 18k
                        if (anzahl18k == 0)
                        {
                                durchfluss18k = "-";
                        }
                        else
                        {
                                durchfluss18k = Math.min(Math.floor(haerte_18k/ausgangshaerte), ph_18k);
                        }
                        // Durchfluss 5k
                        // Zuerst Durchfluss der 18k abziehen
                        durchfluss5k = Math.floor(Math.floor(document.Formular.anlagenvolumen.value - Math.min(Math.floor(haerte_18k/ausgangshaerte), ph_18k)*anzahl18k) / anzahl5k);
                }
        }


//         }
//         // Immer mehr Geraete, bis die Menge erreicht ist, auch mit Ergaenzungswasser
//         else
//         {
//                 anzahl5k = 0;
//                 anzahl18k = 0;
//                 var potentiellesVolumen, zwischenHaerte;
//                 while (anzahl5k + anzahl18k < 30)
//                 {
//                         // Anzahl der Geraete erhoehen
//                         if (anzahl5k < 2)
//                         {
//                                 anzahl5k++;
//                         }
//                         else
//                         {
//                                 // drei 5k-Geraete sind teurer als ein 18k-Geraet
//                                 anzahl5k = 0;
//                                 anzahl18k++;
//                         }
//
//                         // Volumen das behandelt werden kann berechnen
//                         potentiellesVolumen = Math.floor((anzahl5k*haerte_5k + anzahl18k*haerte_18k) / ausgangshaerte);
//                         zwischenHaerte = (potentiellesVolumen * 0.2 +
//                                 (document.Formular.anlagenvolumen.value - potentiellesVolumen) * ausgangshaerte)
//                                 / document.Formular.anlagenvolumen.value;
//                         // Als Sicherheitsreserve zwischenHaerte um 2 verschaerfen
//                         zwischenHaerte += 2.0;
//
//                         durchfluss5k = Math.min(Math.floor(haerte_5k / ausgangshaerte),                                  // Haerte begrenzt Durchflussmenge
//                                 Math.floor(document.Formular.anlagenvolumen.value / (anzahl5k*5 + anzahl18k*18) * 5));   // Menge begrenzt Durchflussmenge
//                         durchfluss18k = Math.min(Math.floor(haerte_18k / ausgangshaerte),                                  // Haerte begrenzt Durchflussmenge
//                                 Math.floor(document.Formular.anlagenvolumen.value / (anzahl5k*5 + anzahl18k*18) * 18));   // Menge begrenzt Durchflussmenge
//
//                         // Wurde das Anlagevolumen bereits erreicht?
//                         if (potentiellesVolumen > document.Formular.anlagenvolumen.value)
//                         {
//                                 ergaenzungswasser = document.Formular.anlagenvolumen.value - (durchfluss5k*anzahl5k + durchfluss18k*anzahl18k);
//                                 break;
//                         }
//                         // Wenn das restliche Volumen mit Rohwasser aufgefuellt wird,
//                         // erfuellt die dann erreichte Haerte die Anforderungen?
//                         else if (zwischenHaerte < zielhaerte)
//                         {
//                                 ergaenzungswasser = document.Formular.anlagenvolumen.value - (anzahl5k*durchfluss5k + anzahl18k*durchfluss18k);
//                                 // Ergaenzungswasser darf durchgeleitetes Wasser nicht uebersteigen
//                                 if (ergaenzungswasser <= (anzahl5k*durchfluss5k + anzahl18k*durchfluss18k))
//                                 {
//                                         break;
//                                 }
//                         }
//                 }
//         }

        // letzte Korrekturen zur Praesentation der Werte
        if (ohnePh)
        {
                zielhaerte = "&nbsp;";
        }

        // Ergebnis anzeigen
        document.getElementById("zielhaerte").innerHTML = zielhaerte;
        document.getElementById("anzahl5k").innerHTML = anzahl5k;
        document.getElementById("anzahl18k").innerHTML = anzahl18k;
        document.getElementById("durchfluss5k").innerHTML = durchfluss5k;
        document.getElementById("durchfluss18k").innerHTML = durchfluss18k;

        return false;
}