/****
 *
 * Dimensionierer für perma-trade Planderbereich.
 * (c) 2007
 *
 ****/

/* Konstanten für die Verlinkung auf Dokumente in anderen Teile
   der Homepage, vor allem Ausschreibungen und Detailseiten. */
var urlDetails1 = "<a href=\"http://www.perma-trade.de/www_p/td.php/gr/25/ugr/";
var urlDetails2 = "\" target=\"_blank\">- Technische Daten</a>";
var urlAusschreibung1 = "<a href=\"http://www.perma-trade.de/bild/Image/";
var urlAusschreibung2 = "\" target=\"_blank\">- Ausschreibungstext</a>";
var bildTeil1 = "<img src=\"http://www.perma-trade.de/bild/Image/";
var bildTeil2 = ".gif\" alt=\"Einbauschema für ";
var bildTeil3 = "\">";

/* Konstanten für den Zugriff auf die Geräte-Arrays */
var indexWohneinheiten = 0;
var indexDurchfluss = 1;
var indexDateiname = 2;
var indexLangname = 3;
var indexPaketname = 4;
var indexTeilA = 5;
var indexTeilB = 6;
var indexDetailUrlA = 7;
var indexDetailUrlB = 8;
var indexAusschreibungUrlA = 9;
var indexAusschreibungUrlB = 10;
var indexWohneinheitenNurWarmwasser = 11;

/* Geräte für den Kalkschutz (nach Seite 15 im Heft) */
var kalkGeraeteArray = new Array(12);
/* Anzahl maximaler Wohneinheiten */
kalkGeraeteArray[0] = new Array(2, 10, 40, 90);
/* Anzahl maximalen Spitzendurchflusses in m^3/h */
kalkGeraeteArray[1] = new Array(2, 4, 8, 12);
/* Gerätenamen kurz (für Dateinamen) */
kalkGeraeteArray[2] = new Array("25", "40", "40-2", "40-3");
/* Gerätenamen lang (für Texte zur Anzeige) */
kalkGeraeteArray[3] = new Array("PT-P 25", "PT-P 40", "PT-P 40/2", "PT-P 40/3");
/* Detail-URL Teil A */
kalkGeraeteArray[7] = new Array("49/su/167.html", "49/su/168.html", "49/su/169.html", "49/su/170.html");
/* Ausschreibung-URL Teil A */
kalkGeraeteArray[9] = new Array("as_p_25.pdf", "as_p_40.pdf", "as_p_40_2.pdf", "as_p_40_3.pdf");
/* Anzahl maximaler Wohneinheiten, wenn nur Warmwasseranschluß benötigt wird */
kalkGeraeteArray[11] = new Array(7, 21, 90, 120);

/* Geräte für den Rostschutz (nach Seite 12 im Heft) */
var rostGeraeteArray = new Array(11);
/* Anzahl maximaler Wohneinheiten */
rostGeraeteArray[0] = new Array(2, 6, 20, 40, 70, 180, 250);
/* Anzahl maximalen Spitzendurchflusses in m^3/h */
rostGeraeteArray[1] = new Array(2.3, 3.6, 6, 7.8, 17, 17, 24);
/* Gerätenamen kurz (für Dateinamen) */
rostGeraeteArray[2] = new Array("20-15_40-40", "20-15_40-40", "20-15_40-40", "20-15_40-40", "40EF-40", "40EF-40EFW_50EF-40EFW", "40EF-40EFW_50EF-40EFW");
/* Gerätenamen lang (für Texte zur Anzeige) */
rostGeraeteArray[3] = new Array("PT-S 20 E", "PT-S 25 E", "PT-S 32 E", "PT-S 40 E", "PT-S 40 EF", "PT-S 40 EF", "PT-S 50 EF");
/* Paketname */
rostGeraeteArray[4] = new Array("20/20", "25/25", "32/25", "40/40", "40EF/40", "40EF/40EF", "50EF/40EF");
/* Produkt Teil A */
rostGeraeteArray[5] = new Array("PT-S 20 E", "PT-S 25 E", "PT-S 32 E", "PT-S 40 E", "PT-S 40 EF", "PT-S 40 EF", "PT-S 50 EF");
/* Produkt Teil B */
rostGeraeteArray[6] = new Array("PT-S 20 W", "PT-S 25 W", "PT-S 25 W", "PT-S 40 W", "PT-S 40 W", "PT-S 40 EFW", "PT-S 40 EFW");
/* Detail-URL Teil A */
rostGeraeteArray[7] = new Array("38/su/68.html", "38/su/68.html", "38/su/68.html", "38/su/68.html", "38/su/69.html", "38/su/69.html", "38/su/69.html");
/* Detail-URL Teil B */
rostGeraeteArray[8] = new Array("38/su/71.html", "38/su/71.html", "38/su/71.html", "38/su/71.html", "38/su/71.html", "38/su/161.html", "38/su/161.html");
/* Ausschreibung-URL Teil A */
rostGeraeteArray[9] = new Array("as_rostschutz.pdf", "as_rostschutz.pdf", "as_rostschutz.pdf", "as_rostschutz.pdf", "as_rostschutz.pdf", "as_rostschutz.pdf", "as_rostschutz.pdf");
/* Ausschreibung-URL Teil B */
rostGeraeteArray[10] = new Array("as_s_15_40w.pdf", "as_s_15_40w.pdf", "as_s_15_40w.pdf", "as_s_15_40w.pdf", "as_s_15_40w.pdf", "as_s_40efw.pdf", "as_s_40efw.pdf");

/* Geräte für den Kalk- und Rostschutz (nach Seite 16 im Heft)  */
var kalkrostGeraeteArray = new Array(11);
/* Anzahl maximaler Wohneinheiten */
kalkrostGeraeteArray[0] = new Array(1, 5, 20, 50, 100, 220);
/* Anzahl maximalen Spitzendurchflusses in m^3/h */
kalkrostGeraeteArray[1] = new Array(2, 4, 8, 12);
/* Gerätenamen kurz (für Dateinamen) */
kalkrostGeraeteArray[2] = new Array("20", "20", "32", "40", "40EF", "40EF");
/* Paketname */
kalkrostGeraeteArray[4] = new Array("20", "25", "32", "40", "40EF", "50EF");
/* Produkt Teil A */
kalkrostGeraeteArray[5] = new Array("PT-S 20 E", "PT-S 25 E", "PT-S 32 E", "PT-S 40 E", "PT-S 40 EF", "PT-S 50 EF");
/* Produkt Teil B */
kalkrostGeraeteArray[6] = new Array("PT-P 25", "PT-P 25", "PT-P 40", "PT-P 40/2", "PT-P 40/2", "PT-P 40/3");
/* Detail-URL Teil A */
kalkrostGeraeteArray[7] = new Array("38/su/68.html", "38/su/68.html", "38/su/68.html", "38/su/68.html", "38/su/69.html", "38/su/69.html", "38/su/69.html");
/* Detail-URL Teil B */
kalkrostGeraeteArray[8] = new Array("49/su/167.html", "49/su/167.html", "49/su/168.html", "49/su/169.html", "49/su/169.html", "49/su/170.html");
/* Ausschreibung-URL Teil A */
kalkrostGeraeteArray[9] = new Array("as_a_20.pdf", "as_a_25.pdf", "as_a_32.pdf", "as_a_40.pdf", "as_a_40ef.pdf", "as_a_50ef.pdf");
/* Ausschreibung-URL Teil B */
kalkrostGeraeteArray[10] = new Array("as_p_25.pdf", "as_p_25.pdf", "as_p_40.pdf", "as_p_40_2.pdf", "as_p_40_2.pdf", "as_p_40_3.pdf");


/* * *
 *Steuert den ganzen Vorgang der Dimensionierung des Kalkschutzes
 * * */
function dimensioniere_Kalk() {
        document.getElementById("ausgabe").style.display = "none";
        document.getElementById("ausgabe2").style.display = "none";
        document.getElementById("meldung").style.display = "none";
        document.getElementById("einbauschema").style.display = "none";
        document.getElementById("fehlermeldung").style.display = "none";

        var eingabe = document.Formular.durchflussBzwWohneineheiten.value.replace(/,/,".");
        var istDurchfluss = (document.Formular.selectDurchflussBzwWohneineheiten.value == "durchfluss");

        // Eingaben prüfen
        var eingabeGroesse = ueberpruefeEingaben_Kalk(eingabe, istDurchfluss);
        if (eingabeGroesse == -1) {
                return -1;
        }

        if (eingabeGroesse != -2) {
                document.getElementById("ausgabe").style.display = "block";
                document.getElementById("einbauschema").style.display = "block";

                // Gerät ermitteln für Kalt- und Warmwasser
                var geraet = ermittleGeraet_Kalk(eingabe, istDurchfluss, false);

                document.getElementById("produktname").innerHTML = "" + kalkGeraeteArray[indexLangname][geraet];
                document.getElementById("details").innerHTML = urlDetails1 + kalkGeraeteArray[indexDetailUrlA][geraet] + urlDetails2;
                document.getElementById("ausschreibung").innerHTML = urlAusschreibung1 + kalkGeraeteArray[indexAusschreibungUrlA][geraet] + urlAusschreibung2;

                document.getElementById("einbauschema").innerHTML = bildTeil1 + "kalk_" +  kalkGeraeteArray[indexDateiname][geraet] + bildTeil2 + kalkGeraeteArray[indexLangname][geraet] + bildTeil3;
        }
        else {
                document.getElementById("meldung").style.display = "block";
        }

        // Gerät ermitten nur für Warmwasser (Faktor 0.66)
        var geraet2 = ermittleGeraet_Kalk(eingabe, istDurchfluss, true);
        document.getElementById("ausgabe2").style.display = "block";
        document.getElementById("produktnameWarm").innerHTML = "" + kalkGeraeteArray[indexLangname][geraet2];
        document.getElementById("detailsWarm").innerHTML = urlDetails1 + kalkGeraeteArray[indexDetailUrlA][geraet2] + urlDetails2;
        document.getElementById("ausschreibungWarm").innerHTML = urlAusschreibung1 + kalkGeraeteArray[indexAusschreibungUrlA][geraet2] + urlAusschreibung2;
        document.getElementById("einbauschemaWarm").innerHTML = bildTeil1 + "kalk_" +  kalkGeraeteArray[indexDateiname][geraet2] + "_warm" + bildTeil2 + kalkGeraeteArray[indexLangname][geraet2] + bildTeil3;

        return 0;
}

/* * *
 * Steuert den ganzen Vorgang der Dimensionierung des Rostschutzes
 * * */
function dimensioniere_Rost() {
        document.getElementById("ausgabe").style.display = "none";
        document.getElementById("fehlermeldung").style.display = "none";

        var eingabe = document.Formular.durchflussBzwWohneineheiten.value.replace(/,/,".");
        var istDurchfluss = (document.Formular.selectDurchflussBzwWohneineheiten.value == "durchfluss");

        // Eingaben prüfen
        if (ueberpruefeEingaben_Rost(eingabe, istDurchfluss) == -1) {
                return -1;
        }

        // Gerät ermitteln für Rostwasser
        var geraet = ermittleGeraet_Rost(eingabe, istDurchfluss);

        document.getElementById("ausgabe").style.display = "block";
        document.getElementById("produktname").innerHTML = "" + rostGeraeteArray[indexPaketname][geraet];
        document.getElementById("produktnameA").innerHTML = "" + rostGeraeteArray[indexTeilA][geraet];
        document.getElementById("produktnameB").innerHTML = "" + rostGeraeteArray[indexTeilB][geraet];
        document.getElementById("detailsA").innerHTML = urlDetails1 + rostGeraeteArray[indexDetailUrlA][geraet] + urlDetails2;
        document.getElementById("detailsB").innerHTML = urlDetails1 + rostGeraeteArray[indexDetailUrlB][geraet] + urlDetails2;
        document.getElementById("ausschreibungA").innerHTML = urlAusschreibung1 + rostGeraeteArray[indexAusschreibungUrlA][geraet] + urlAusschreibung2;
        document.getElementById("einbauschema").innerHTML = bildTeil1 + "rostpaket_" +  rostGeraeteArray[indexDateiname][geraet] + bildTeil2 + rostGeraeteArray[indexPaketname][geraet] + bildTeil3;

        return 0;
}

/* * *
 * Steuert den ganzen Vorgang der Dimensionierung des Kalk- und Rostschutzes
 * * */
function dimensioniere_Kalk_Rost() {
        document.getElementById("ausgabe").style.display = "none";

        var eingabe = document.Formular.durchflussBzwWohneineheiten.value.replace(/,/,".");
        var istDurchfluss = (document.Formular.selectDurchflussBzwWohneineheiten.value == "durchfluss");

        // Eingaben prüfen
        if (ueberpruefeEingaben_Rost(eingabe, istDurchfluss) == -1) {
                return -1;
        }

        // Gerät ermitteln für Kaltwasser-Rostschutz
        var geraet = ermittleGeraet_Rost(eingabe, istDurchfluss);
        if (!istDurchfluss) {
                geraet = ermittleGeraet_Kalk_Rost(eingabe, istDurchfluss);
        }

        // den doppeltenn PT-S 40 EF ausgleichen
        if (istDurchfluss && geraet > 4) {
                geraet--;
        }

        document.getElementById("ausgabe").style.display = "block";
        document.getElementById("produktname").innerHTML = "" + kalkrostGeraeteArray[indexPaketname][geraet];
        document.getElementById("produktnameA").innerHTML = "" + kalkrostGeraeteArray[indexTeilA][geraet];
        document.getElementById("detailsA").innerHTML = urlDetails1 + kalkrostGeraeteArray[indexDetailUrlA][geraet] + urlDetails2;
        document.getElementById("ausschreibungA").innerHTML = urlAusschreibung1 + kalkrostGeraeteArray[indexAusschreibungUrlA][geraet] + urlAusschreibung2;
        document.getElementById("einbauschema").innerHTML = bildTeil1 + "aktiv_plus_" +  kalkrostGeraeteArray[indexDateiname][geraet] + bildTeil2 + kalkrostGeraeteArray[indexPaketname][geraet] + bildTeil3;

        // Gerät ermitteln nur für Warmwasser-Kalkschutz (nach Tabelle Seite 16 im Heft)
        var geraet2 = geraet;

        document.getElementById("produktnameB").innerHTML = "" + kalkrostGeraeteArray[indexTeilB][geraet2];
        document.getElementById("detailsB").innerHTML = urlDetails1 + kalkrostGeraeteArray[indexDetailUrlB][geraet2] + urlDetails2;

        return 0;
}

/* * *
 * Ermittelt das Gerät für den Kalkschutz.
 * * */
function ermittleGeraet_Kalk(eingabe, istDurchfluss, nurWarmwasser) {
        var geraet = -1;
        var index = istDurchfluss ? indexDurchfluss : (nurWarmwasser ? indexWohneinheitenNurWarmwasser : indexWohneinheiten);
        if (nurWarmwasser && istDurchfluss) {
          eingabe = eingabe * 0.66;
        }
        for (i = kalkGeraeteArray[0].length; i >= 0; --i) {
                if (kalkGeraeteArray[index][i] >= eingabe) {
                        geraet = i;
                }
        }
        return geraet;
}

/* * *
 * Ermittelt das Gerät für den Rostschutz.
 * * */
function ermittleGeraet_Rost(eingabe, istDurchfluss) {
        var geraet = -1;
        var index = istDurchfluss ? indexDurchfluss : indexWohneinheiten;
        for (i = rostGeraeteArray[0].length; i >= 0; --i) {
                if (rostGeraeteArray[index][i] >= eingabe) {
                        geraet = i;
                }
        }
        return geraet;
}

/* * *
 * Ermittelt das Gerät für den Kalk- und Rostschutz.
 * * */
function ermittleGeraet_Kalk_Rost(eingabe, istDurchfluss) {
        var geraet = -1;
        var index = istDurchfluss ? indexDurchfluss : indexWohneinheiten;
        for (i = kalkrostGeraeteArray[0].length; i >= 0; --i) {
                if (kalkrostGeraeteArray[index][i] >= eingabe) {
                        geraet = i;
                }
        }
        return geraet;
}

/* * *
 * Überprüfung der Eingaben für Kalk
 * * */
function ueberpruefeEingaben_Kalk(eingabe, istDurchfluss) {
        if (istDurchfluss) {
                var durchfluss = Number(eingabe);
                // Eingabe numerisch?
                if (isNaN(durchfluss)) {
                        document.getElementById("fehlermeldung").innerHTML = "Bitte nur positive Zahlen eingeben.";
                        document.getElementById("fehlermeldung").style.display = "block";
                        return -1;
                }
                // Grenzen prüfen
                if ((durchfluss <= 0) || (durchfluss > Math.floor(12/0.66))) {
                        document.getElementById("fehlermeldung").innerHTML = "Parallelschaltung n&ouml;tig! Bitte mit uns Kontakt aufnehmen. Tel: 07152 / 939190";
                        document.getElementById("fehlermeldung").style.display = "block";
                        return -1;
                }

                if (durchfluss > 12) {
                        return -2;
                }

                return durchfluss;
        }

        var wohneinheiten = Number(eingabe);
        // Eingabe numerisch und natürliche Zahl?
        if (isNaN(wohneinheiten) || !istNumerisch(eingabe)) {
                document.getElementById("fehlermeldung").innerHTML = "Bitte nur positive ganze Zahlen eingeben.";
                return -1;
        }
        if ((wohneinheiten < 1) || (wohneinheiten > Math.floor(90/0.66))) {
                document.getElementById("fehlermeldung").innerHTML = "Parallelschaltung n&ouml;tig! Bitte mit uns Kontakt aufnehmen. Tel: 07152 / 939190";
                document.getElementById("fehlermeldung").style.display = "block";
                return -1;
        }

        if (wohneinheiten > 90) {
                return -2;
        }

        return wohneinheiten;
}

/* * *
 * Überprüfung der Eingaben für Rost
 * * */
function ueberpruefeEingaben_Rost(eingabe, istDurchfluss) {
        if (istDurchfluss) {
                var durchfluss = Number(eingabe);
                // Eingabe numerisch?
                if (isNaN(durchfluss)) {
                        document.getElementById("fehlermeldung").innerHTML = "Bitte nur positive Zahlen eingeben.";
                        document.getElementById("fehlermeldung").style.display = "block";
                        return -1;
                }
                // Grenzen prüfen
                if ((durchfluss <= 0) || (durchfluss > 24)) {
                        document.getElementById("fehlermeldung").innerHTML = "Anpassung n&ouml;tig! Bitte mit uns Kontakt aufnehmen.  Tel: 07152 / 939190";
                        document.getElementById("fehlermeldung").style.display = "block";
                        return -1;
                }
                return durchfluss;
        }

        var wohneinheiten = Number(eingabe);
        // Eingabe numerisch und natürliche Zahl?
        if (isNaN(wohneinheiten) || !istNumerisch(eingabe)) {
                document.getElementById("fehlermeldung").innerHTML = "Bitte nur positive ganze Zahlen eingeben.";
                document.getElementById("fehlermeldung").style.display = "block";
                return -1;
        }
        if ((wohneinheiten < 1) || (wohneinheiten > 250)) {
                document.getElementById("fehlermeldung").innerHTML = "Anpassung n&ouml;tig! Bitte mit uns Kontakt aufnehmen.  Tel: 07152 / 939190";
                document.getElementById("fehlermeldung").style.display = "block";
                return -1;
        }
        return wohneinheiten;
}

/* * *
 *Prüft, ob die übergebene 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;
}

/* * *
 * Einheit an Auswahlfeld Spitzendurchfluss/Wohneinheiten anpassen
 * * */
function einheitAnpassen() {
        if (document.Formular.selectDurchflussBzwWohneineheiten.options[
                document.Formular.selectDurchflussBzwWohneineheiten.selectedIndex].value
                == "durchfluss") {
                document.getElementById("einheit").innerHTML = "[m<sup>3</sup>/h]";
        }
        else {
                document.getElementById("einheit").innerHTML = "[Anzahl]";
        }
}