var Modules;
(function (Modules) {
    /**
     * Class which holds all the functions to navigate through the application
     */
    class Navigator {
        currentState;
        constructor() {
            // Shows the loading Gid to the user
            LoadingHelper.ShowLoadingGif();
            $("#forward-button").click((e) => this.forwardNavigation(e));
            $("#back-button").click((e) => this.backwardsNavigation(e));
            this.currentState = NavigationSteps.EntscheidungsWahl;
            $(".auftragswert-input").change((e) => this.auftragswertChanged(e));
            $("#art-der-beschaffung").change((e) => this.artDerBeschaffungChanged(e));
            $("#vertragstyp").change((e) => this.vertragstypChanged(e));
            $("#entscheidungstyp-select").change((e) => this.entscheidungsTypChanged());
            $("#weitere-hinzufuegen-link").click((e) => this.addExterneBeauftragte(e));
            //$("#verfahren-urspruengliche-beschaffung").change((e: Event) => this.urspruenglicheVerfahrensartChanged(e));
            $(document).on("change", "#urspruengliche-vertragssumme", (e) => this.calcVoraussichtlicheAbrechnungssumme(e));
            $(document).on("change", "#bisher-genehmigt-nachtraege-total", (e) => this.calcVoraussichtlicheAbrechnungssumme(e));
            $(document).on("change", "#vorliegender-bereinigter-nachtrag-total", (e) => this.calcVoraussichtlicheAbrechnungssumme(e));
            $("#erstbeschaffung-bagatell-ja").click((e) => {
                $("#erstbeschaffung-bagatelle").attr("data-val", "1");
                $("#erstbeschaffung-bagatelle").html("Ja");
            });
            $("#erstbeschaffung-bagatell-nein").click((e) => {
                $("#erstbeschaffung-bagatelle").attr("data-val", "0");
                $("#erstbeschaffung-bagatelle").html("Nein");
            });
            $("#nachtrag-bagatell-ja").click((e) => {
                $("#nachtrag-bagatelle").attr("data-val", "1");
                $("#nachtrag-bagatelle").html("Ja");
            });
            $("#nachtrag-bagatell-nein").click((e) => {
                $("#nachtrag-bagatelle").attr("data-val", "0");
                $("#nachtrag-bagatelle").html("Nein");
            });
            this.loadPersons();
            // Hides the loading Gif to the user
            LoadingHelper.HideLoadingGif();
        }
        /**
         * Event which handles the click of the user to forward in the process
         * @param e
         */
        forwardNavigation(e) {
            // prevent the form from being sent
            e.preventDefault();
            switch (this.currentState) {
                case NavigationSteps.EntscheidungsWahl: {
                    if (this.validateModule("EntscheidungsWahl") === true) {
                        this.forwardToBasisInfos(e);
                        //window.scroll({ top: 0, left: 0, behavior: 'smooth' });
                        $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    }
                    //$("#verfahrensart").change((e: Event) => this.verfahrensartSelected(e));
                    break;
                }
                case NavigationSteps.BasisInfos: {
                    let elementName = "BasisInfos-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp];
                    if (this.validateModule(elementName) === true) {
                        this.forwardToEntscheidVerfahrensart(e);
                        //window.scroll({ top: 0, left: 0, behavior: 'smooth' });
                        $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    }
                    //$("#verfahrensart").change((e: Event) => this.verfahrensartSelected(e));
                    break;
                }
                case NavigationSteps.EntscheidVerfahrensart: {
                    if (this.validateModule("EntscheidVerfahrensart") === true) {
                        this.forwardToAuswahlGrund(e);
                        //window.scroll({ top: 0, left: 0, behavior: 'smooth' });
                        $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    }
                    break;
                }
                case NavigationSteps.AuswahlGrund: {
                    if (this.validateModule("AuswahlGrund") === true) {
                        this.forwardToBegründung(e);
                        //window.scroll({ top: 0, left: 0, behavior: 'smooth' });
                        $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    }
                    break;
                }
                case NavigationSteps.Begründung: {
                    // check if all fields are filled out
                    if (Classes.Decision.Grund.CheckFields()) {
                        this.forwardToEndStep();
                        //window.scroll({ top: 0, left: 0, behavior: 'smooth' });
                        $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    }
                    else {
                        alert("Bitte alle Felder ausfüllen.");
                    }
                    break;
                }
                case NavigationSteps.EndStep: {
                    Modules.WordWriter.CreateWord();
                    if (Classes.Decision.GeneriereEntscheidung === true) {
                        Modules.WordWriter.CreateWord(true);
                    }
                    break;
                }
                default: {
                    //statements; 
                    break;
                }
            }
            $(function () {
                $('[data-bs-toggle="tooltip"]').tooltip();
            });
        }
        /**
         * Forwards to specific
         * @param {Event} e
         */
        forwardToBasisInfos(e) {
            Classes.Decision.Entscheidungstyp = $("#entscheidungstyp-select").val();
            Classes.Decision.ArtDerBeschaffung = $("#art-der-beschaffung").val();
            Classes.Decision.Vertragstyp = $("#vertragstyp").val();
            Classes.Decision.Gegenstand = $("#gegenstand").val();
            Classes.Decision.EinzelvertragReferenz = $("#einzelvertrag-referenz").val();
            // add weitere externe beauftragte 
            Classes.Decision.ExterneBeauftragteWeitere = new Array();
            $(".ext-beauftragte").each((i, ele) => {
                let name = $(ele).find(".weitere-name").val();
                let email = $(ele).find(".weitere-email").val();
                let funktion = $(ele).find(".weitere-funktion").val();
                Classes.Decision.ExterneBeauftragteWeitere.push(new Classes.Person(name, email, funktion));
            });
            /**
             * Prefill Verteiler/Kopie an with values from Externe Parner/Externe Beauftragte
             */
            if ($("#ext-beauftragte-name").val().length != 0) {
                var allExterne = (($("#ext-beauftragte-name").val()) + ", " + ($("#ext-beauftragte-email").val()) + ", " + ($("#ext-beauftragte-funktion option:selected").text()));
                Classes.Decision.ExterneBeauftragteWeitere.forEach((element) => {
                    var innerTemplate = ("\n" + "name" + ", " + "email" + ", " + "funktion");
                    innerTemplate = innerTemplate.replace("name", (element.PersonName));
                    innerTemplate = innerTemplate.replace("mail", (element.PersonEmail));
                    innerTemplate = innerTemplate.replace("funktion", ExtPartnerFunktionDisplay[element.PersonFunktion]);
                    allExterne += innerTemplate;
                });
                $("#verteiler-kopie-an").val(allExterne);
                $("#verteiler-kopie-an-Nachtrag").val(allExterne);
            }
            if (+Classes.Decision.Entscheidungstyp > 0) {
                // hide the old view and show the next step
                $("#" + NavigationSteps[this.currentState]).hide();
                this.currentState = NavigationSteps.BasisInfos;
                $("#" + NavigationSteps[this.currentState] + "-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp]).show();
                if (+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Lieferung || +Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                    $("#bisherige-bagatellklausel-erstbeschaffung").removeAttr("required");
                    $("#bisherige-bagatellklausel-Nachtrag").removeAttr("required");
                    $(".bagatell-bisher").hide();
                    $(".bisherige-bagatellklausel-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp]).removeAttr("checked");
                    $(".bagatell-checkbox").hide();
                    $(".bagatell-checkbox-element").removeAttr("checked");
                }
                else {
                    $(".bagatell-checkbox").show();
                    $(".bagatell-bisher").show();
                }
                // on Erstbeschaffung add the Event for the art-der-beschaffung change
                if (Classes.Decision.Entscheidungstyp == Entscheidungstyp.Erstbeschaffung) {
                    $("#entscheidungsformular-mitgenerieren-checkbox").change((e) => this.generateBFormularCHeckboxChanged(e));
                    $(".zahlungsbedingungen-radio").change((e) => this.zahlungsbedingungenChanged(e));
                    $(".vorbefassung-radio").change((e) => this.vorbefassungChanged(e));
                }
                if (+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Bauleistung) {
                    $("#auftragswert-gesamtprojekt-label").html('Gesamtsumme aller Bauleistungen (exkl. MWSt) <i class="fa fa-info-circle text-primary" aria-hidden="true" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="&#42;Gesamtwerk&#58; &#34;Gesamtheit aller zueinander in einem wirtschaftlichen oder technischen Zusammenhang stehenden Bauaufträge (nicht aber DL und Lieferungen), deren Ergebnis eine funktionale Einheit bilden.&#34;<br />Das Bauwerk gilt demnach als einzelnes Gesamtwerk, wenn es auch isoliert gebaut werden könnte. Wird aber ein Bauwerk, das auch isoliert gebaut werden könnte, im Rahmen eines Gesamtprojekts realisiert &#40;&#61; einheitliche Projektnummer, einheitliche PGV&#41;, so darf die EKP Realisierung &#40;ohne LE-Kosten und Projektierung&#41; für das Gesamtprojekt als massgebenden Wert für die 100 % herangezogen werden. Die Bagatellklausel darf ab genehmigtem KV für das Projekt angerufen werden.<br /> Bei Abgrenzungsschwierigkeiten bitte Juristen konsultieren."></i>');
                    $("#auftragswert-gesamt-Nachtrag-label").html('Gesamtsumme aller Bauleistungen (exkl. MWSt) <i class="fa fa-info-circle text-primary" aria-hidden="true" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="&#42;Gesamtwerk&#58; &#34;Gesamtheit aller zueinander in einem wirtschaftlichen oder technischen Zusammenhang stehenden Bauaufträge (nicht aber DL und Lieferungen), deren Ergebnis eine funktionale Einheit bilden.&#34;<br />Das Bauwerk gilt demnach als einzelnes Gesamtwerk, wenn es auch isoliert gebaut werden könnte. Wird aber ein Bauwerk, das auch isoliert gebaut werden könnte, im Rahmen eines Gesamtprojekts realisiert &#40;&#61; einheitliche Projektnummer, einheitliche PGV&#41;, so darf die EKP Realisierung &#40;ohne LE-Kosten und Projektierung&#41; für das Gesamtprojekt als massgebenden Wert für die 100 % herangezogen werden. Die Bagatellklausel darf ab genehmigtem KV für das Projekt angerufen werden.<br /> Bei Abgrenzungsschwierigkeiten bitte Juristen konsultieren."></i>');
                }
                else {
                    $("#auftragswert-gesamtprojekt-label").html("Auftragswert Gesamtprojekt (exkl. MWSt)");
                    $("#auftragswert-gesamt-Nachtrag-label").html("Auftragswert Gesamtprojekt (exkl. MWSt)");
                }
                // update progressbar
                this.setProgressBar(NavigationSteps.BasisInfos);
            }
            else {
                alert("Bitte einen Entscheidungstyp wählen.");
            }
        }
        /**
         * Handles forward step to the Entscheid Verfahrensart
         * @param {Event} e
         */
        forwardToEntscheidVerfahrensart(e) {
            // General Fields
            Classes.Decision.ProjektNr = $("#projekt-nr").val();
            Classes.Decision.Projekt = $("#projekt").val();
            Classes.Decision.ProjektLeiterName = $("#projektleiter-select").val();
            Classes.Decision.ProjektLeiterEmail = $("#projektleiter-select option:selected").attr("data-email");
            Classes.Decision.BereichsLeiterName = $("#bereichsleiter-select").val();
            Classes.Decision.BereichsLeiterEmail = $("#bereichsleiter-select option:selected").attr("data-email");
            Classes.Decision.ExtBeauftragteName = $("#ext-beauftragte-name").val();
            Classes.Decision.ExtBeauftragteEmail = $("#ext-beauftragte-email").val();
            Classes.Decision.ExtBeauftragteFunktion = $("#ext-beauftragte-funktion").val();
            // Special fields for Fragebogen
            $("#verfahrensart").change((e) => this.verfahrensartChanged(e));
            $("#schriftliche-begruendung-b-ja-radio").click(function () {
                Classes.Decision.SchriftlicheBegruendungB = true;
            });
            $("#schriftliche-begruendung-b-nein-radio").click(function () {
                Classes.Decision.SchriftlicheBegruendungB = false;
            });
            $("#begruendung-juristisch-b-ja-radio").click(function () {
                Classes.Decision.BegruendungJuristischB = true;
            });
            $("#begruendung-juristisch-b-nein-radio").click(function () {
                Classes.Decision.BegruendungJuristischB = false;
            });
            $("#wirtschaftlichkeitsueberlegungen-b-ja-radio").click(function () {
                Classes.Decision.WirtschaftlichkeitsueberlegungenB = true;
            });
            $("#wirtschaftlichkeitsueberlegungen-b-nein-radio").click(function () {
                Classes.Decision.WirtschaftlichkeitsueberlegungenB = false;
            });
            $("#leistungsumfang-b-ja-radio").click(function () {
                Classes.Decision.LeistungsumfangB = true;
            });
            $("#leistungsumfang-b-nein-radio").click(function () {
                Classes.Decision.LeistungsumfangB = false;
            });
            $("#bedarfsanalyse-b-ja-radio").click(function () {
                Classes.Decision.BedarfsanalyseB = true;
            });
            $("#bedarfsanalyse-b-nein-radio").click(function () {
                Classes.Decision.BedarfsanalyseB = false;
            });
            $("#risikobeurteilung-b-ja-radio").click(function () {
                Classes.Decision.RisikobeurteilungB = true;
            });
            $("#risikobeurteilung-b-nein-radio").click(function () {
                Classes.Decision.RisikobeurteilungB = false;
            });
            // special input fields of the A-Formular
            if (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung) {
                Classes.Decision.AuftragswertGesamt = parseFloat($("#auftragswert-gesamt").val());
                if (isNaN(Classes.Decision.AuftragswertGesamt)) {
                    Classes.Decision.AuftragswertGesamt = 0;
                }
                Classes.Decision.AuftragswertAusbauUnterhalt = parseFloat($("#auftragswert-ausbau-unterhalt").val());
                if (isNaN(Classes.Decision.AuftragswertAusbauUnterhalt)) {
                    Classes.Decision.AuftragswertAusbauUnterhalt = 0;
                }
                Classes.Decision.AuftragswertKapazitaetserweiterung = parseFloat($("#auftragswert-kapazitaetserweiterung").val());
                if (isNaN(Classes.Decision.AuftragswertKapazitaetserweiterung)) {
                    Classes.Decision.AuftragswertKapazitaetserweiterung = 0;
                }
                Classes.Decision.AuftragswertDritte = parseFloat($("#auftragswert-dritte").val());
                if (isNaN(Classes.Decision.AuftragswertDritte)) {
                    Classes.Decision.AuftragswertDritte = 0;
                }
                Classes.Decision.AuftragswertBetrieb = parseFloat($("#auftragswert-betrieb").val());
                if (isNaN(Classes.Decision.AuftragswertBetrieb)) {
                    Classes.Decision.AuftragswertBetrieb = 0;
                }
                Classes.Decision.AuftragswertTotal = Classes.Decision.AuftragswertAusbauUnterhalt + Classes.Decision.AuftragswertKapazitaetserweiterung + Classes.Decision.AuftragswertDritte + Classes.Decision.AuftragswertBetrieb;
                Classes.Decision.ProjektCheckbox = $("#projekt-checkbox:checked").length > 0;
                Classes.Decision.RealCheckbox = $("#real-checkbox:checked").length > 0;
                Classes.Decision.MassnahmeAusschluss = $("#massnahme-auschluss-checkbox:checked").length > 0;
                Classes.Decision.MassnahmeFristverlaengerung = $("#massnahme-fristverlaengerung-checkbox:checked").length > 0;
                Classes.Decision.MassnahmeUnterlagen = $("#massnahme-unterlagen-checkbox:checked").length > 0;
                if ($("input[name='vorbefassung-auswahl']:checked").val() == "1") {
                    Classes.Decision.Vorbefassung = true;
                }
                else {
                    Classes.Decision.Vorbefassung = false;
                }
                Classes.Decision.BisherigeBagatellBeschaffung = parseFloat($("#bisherige-bagatellklausel-erstbeschaffung").val());
                if (isNaN(Classes.Decision.BisherigeBagatellBeschaffung)) {
                    Classes.Decision.BisherigeBagatellBeschaffung = 0;
                }
                Classes.Decision.ICPName = $("#icp-Erstbeschaffung-select").val();
                Classes.Decision.VertragsverantwortlicherName = $("#vertragsverantwortlicher-select").val();
                Classes.Decision.VertragsverantwortlicherEmail = $("#vertragsverantwortlicher-select option:selected").attr("data-email");
                Classes.Decision.VerteilerKopieAn = $("#verteiler-kopie-an").val().replace(/(?:\r\n|\r|\n)/g, "<w:br/>- ");
                Classes.Decision.SelectBagatellIfPossible = $("#erstbeschaffung-bagatelle").attr("data-val") == "1";
                Classes.Decision.Vertragsbeginn = $("#datum-vertragsbeginn").val();
                Classes.Decision.Vertragsende = $("#datum-vertragsende").val();
                Classes.Decision.Beschaffungskategorie = $("#beschaffungskategorie-select").val();
                Classes.Decision.Zahlungsbedingungen = $("input[name='zahlungsbedingungen-auswahl']:checked").val();
                Classes.Decision.AndereZahlungsbedingung = $("#andere-zahlungsbedingung").val();
                Classes.Decision.GenehmigerName = $("#genehmiger-select").val();
                // add event for the einzuladende anbieter
                // B-Formular
                Classes.Decision.GeneriereEntscheidung = $("#entscheidungsformular-mitgenerieren-checkbox:checked").length > 0;
                if (Classes.Decision.GeneriereEntscheidung === true) {
                    Classes.Decision.AnzahlAngebote = parseFloat($("#anzahl-angebote").val());
                    if (isNaN(Classes.Decision.AnzahlAngebote)) {
                        Classes.Decision.AnzahlAngebote = 0;
                    }
                    Classes.Decision.AngeboteVon = parseFloat($("#angebote-von").val());
                    if (isNaN(Classes.Decision.AngeboteVon)) {
                        Classes.Decision.AngeboteVon = 0;
                    }
                    Classes.Decision.AngeboteBis = parseFloat($("#angebote-bis").val());
                    if (isNaN(Classes.Decision.AngeboteBis)) {
                        Classes.Decision.AngeboteBis = 0;
                    }
                    Classes.Decision.AusschlussAnbieter = $("#ausschluss-anbieter-checkbox:checked").length > 0;
                    Classes.Decision.AusschlussAnbieterWer = $("#ausschluss-anbieter-wer").val();
                    Classes.Decision.EvaluationsberichtVorhanden = $("#evaluationsbericht-vorhanden-checkbox:checked").length > 0;
                    Classes.Decision.EvaluationsberichtDatum = $("#datum-evaluationsbericht").val();
                    Classes.Decision.VergabeAntragAngebotVom = $("#angebot-vom").val();
                    Classes.Decision.VergabeAntragBetrag = parseFloat($("#vergabeantrag-betrag").val());
                    if (isNaN(Classes.Decision.VergabeAntragBetrag)) {
                        Classes.Decision.VergabeAntragBetrag = 0;
                    }
                    Classes.Decision.Preisbasis = $("#preisbasis-datum").val();
                    Classes.Decision.KonditionenNebenkosten = $("#konditionen-nebenkosten").val();
                    Classes.Decision.KonditionenRabatt = $("#konditionen-rabatt").val();
                    Classes.Decision.KonditionenSkonto = $("#konditionen-skonto").val();
                    // Rechnungsstellung
                    Classes.Decision.RechnungsstellungBauherr = $("#bauherr-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.RechnungsstellungBHU = $("#bhu-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.RechnungsstellungOertlBauleitung = $("#oertl-bauleitung-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.RechnungsstellungOberbauleitung = $("#oberbauleitung-erstbeschaffung-checkbox:checked").length > 0;
                    // Preisart
                    Classes.Decision.PreisartEinheitspreis = $("#einheitspreis-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.PreisartPauschalpreis = $("#pauschalpreis-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.PreisartKostendach = $("#kostendach-erstbeschaffung-checkbox:checked").length > 0;
                    Classes.Decision.Teilprojekt = $("#teilprojekt-erstbeschaffung").val();
                    Classes.Decision.Finanzierungskonto = $("#finanzierungskonto-erstbeschaffung").val();
                    Classes.Decision.Inventarobjekt = $("#inventarobjekt-erstbeschaffung").val();
                    Classes.Decision.Kostenart = $("#kostenart-erstbeschaffung").val();
                    Classes.Decision.Bemerkungen = $("#bemerkungen-erstbeschaffung").val();
                }
            }
            else if (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Nachtrag) {
                // special input fields of the AB-Formular
                //Classes.Decision.VergabeAn = $("#vergabe-an").val();
                //Classes.Decision.MengenAenderung = $("#mengenaenderung-checkbox:checked").length > 0;
                //Classes.Decision.BestellungsAenderung = $("#bestellungsaenderung-checkbox:checked").length > 0;
                Classes.Decision.Nachtragsgrund = $("#nachtragsgrund-select").val();
                Classes.Decision.DatumUrspruenglicheBeschaffung = $("#datum-urspruengliche-beschaffung").val();
                Classes.Decision.UrspruenglicheBeschaffungsstelle = $("#urspruengliche-beschaffungsstelle").val();
                Classes.Decision.BeschaffungskategorieNachtrag = $("#beschaffungskategorie-nachtrag-select").val();
                Classes.Decision.AuftragswertGesamt = parseFloat($("#auftragswert-gesamt-Nachtrag").val());
                if (isNaN(Classes.Decision.AuftragswertGesamt)) {
                    Classes.Decision.AuftragswertGesamt = 0;
                }
                Classes.Decision.BisherigeBagatellBeschaffung = parseFloat($("#bisherige-bagatellklausel-Nachtrag").val());
                if (isNaN(Classes.Decision.BisherigeBagatellBeschaffung)) {
                    Classes.Decision.BisherigeBagatellBeschaffung = 0;
                }
                Classes.Decision.VoraussichtlicheAbrechnungssumme = $("#voraussichtliche-abrechnungssumme").val();
                Classes.Decision.UrspruenglicheVerfahrensart = $("#verfahren-urspruengliche-beschaffung").val();
                Classes.Decision.SelectBagatellIfPossible = $("#nachtrag-bagatelle").attr("data-val") == "1";
                Classes.Decision.NrGrundvertrag = $("#nummer-grundvertrag").val();
                Classes.Decision.UrspruenglicheVertragssumme = parseFloat($("#urspruengliche-vertragssumme").val());
                if (isNaN(Classes.Decision.UrspruenglicheVertragssumme)) {
                    Classes.Decision.UrspruenglicheVertragssumme = 0;
                }
                Classes.Decision.BisherGenehmigteNachtraegeNummer = $("#bisher-genehmigt-nachtraege-nr").val();
                Classes.Decision.BisherGenehmigteNachtraegeTotal = parseFloat($("#bisher-genehmigt-nachtraege-total").val());
                if (isNaN(Classes.Decision.BisherGenehmigteNachtraegeTotal)) {
                    Classes.Decision.BisherGenehmigteNachtraegeTotal = 0;
                }
                Classes.Decision.VorliegenderBereinigterNachtragNr = $("#vorliegender-bereinigter-nachtrag-nr").val();
                Classes.Decision.VorliegenderBereinigterNachtragTotal = parseFloat($("#vorliegender-bereinigter-nachtrag-total").val());
                if (isNaN(Classes.Decision.VorliegenderBereinigterNachtragTotal)) {
                    Classes.Decision.VorliegenderBereinigterNachtragTotal = 0;
                }
                Classes.Decision.Vertragsbeginn = $("#datum-vertragsbeginn-nachtrag").val();
                Classes.Decision.Vertragsende = $("#datum-vertragsende-nachtrag").val();
                Classes.Decision.BeginnEndeNachtrag = $("#beginn-ende-nachtrag").val();
                Classes.Decision.VerhandlungenNachtrag = $("#verhandlungen-nachtrag").val();
                Classes.Decision.VerhandlungenNachtragDurch = $("#verhandlungen-nachtrag-durch").val();
                Classes.Decision.VerhandlungenVglProtokoll = $("#nachtrag-auswirkungen-vgl-protokoll").val();
                Classes.Decision.VerhaeltnisHonorar = $("#verhaeltnis-honorar").val();
                Classes.Decision.ICPName = $("#icp-Nachtrag-select").val();
                // Rechnungsstellung
                Classes.Decision.RechnungsstellungBauherr = $("#bauherr-checkbox:checked").length > 0;
                Classes.Decision.RechnungsstellungBHU = $("#bhu-checkbox:checked").length > 0;
                Classes.Decision.RechnungsstellungOertlBauleitung = $("#oertl-bauleitung-checkbox:checked").length > 0;
                Classes.Decision.RechnungsstellungOberbauleitung = $("#oberbauleitung-checkbox:checked").length > 0;
                // Preisart
                Classes.Decision.PreisartEinheitspreis = $("#einheitspreis-checkbox:checked").length > 0;
                Classes.Decision.PreisartPauschalpreis = $("#pauschalpreis-checkbox:checked").length > 0;
                Classes.Decision.PreisartKostendach = $("#kostendach-checkbox:checked").length > 0;
                Classes.Decision.Teilprojekt = $("#teilprojekt").val();
                Classes.Decision.Finanzierungskonto = $("#finanzierungskonto").val();
                Classes.Decision.Inventarobjekt = $("#inventarobjekt").val();
                Classes.Decision.Kostenart = $("#kostenart").val();
                Classes.Decision.Bemerkungen = $("#bemerkungen").val();
                Classes.Decision.VergabeAntragAngebotVom = $("#angebot-vom").val();
                Classes.Decision.VergabeAntragBetrag = parseFloat($("#vergabeantrag-betrag").val());
                if (isNaN(Classes.Decision.VergabeAntragBetrag)) {
                    Classes.Decision.VergabeAntragBetrag = 0;
                }
                Classes.Decision.VerteilerKopieAn = $("#verteiler-kopie-an-Nachtrag").val().replace(/(?:\r\n|\r|\n)/g, "<w:br/>- ");
                // used to choose which verfahrensart
                Classes.Decision.AuftragswertTotal = Classes.Decision.VorliegenderBereinigterNachtragTotal;
            }
            if ((+Classes.Decision.Entscheidungstyp == Entscheidungstyp.Erstbeschaffung && !isNaN(Classes.Decision.AuftragswertGesamt) && !isNaN(Classes.Decision.AuftragswertAusbauUnterhalt) && !isNaN(Classes.Decision.AuftragswertDritte) && !isNaN(Classes.Decision.AuftragswertBetrieb))
                || (+Classes.Decision.Entscheidungstyp == Entscheidungstyp.Nachtrag)) {
                var hasVerfahrensart = false;
                var show150kWarning = false;
                var show300kWarning = false;
                if ((+Classes.Decision.ArtDerBeschaffung == ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung == ArtDerBeschaffung.Lieferung) && +Classes.Decision.Entscheidungstyp == Entscheidungstyp.Nachtrag && +Classes.Decision.UrspruenglicheVerfahrensart == Verfahrensart.FreihändigUnterSchwellenwert && Classes.Decision.UrspruenglicheVertragssumme <= 150000 && ((Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme) > 150000)) {
                    show150kWarning = true;
                }
                else if (+Classes.Decision.ArtDerBeschaffung == ArtDerBeschaffung.Bauleistung && +Classes.Decision.Entscheidungstyp == Entscheidungstyp.Nachtrag && +Classes.Decision.UrspruenglicheVerfahrensart == Verfahrensart.FreihändigUnterSchwellenwert && Classes.Decision.UrspruenglicheVertragssumme <= 300000 && ((Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme) > 300000)) {
                    show300kWarning = true;
                }
                if (show150kWarning === false && show300kWarning === false) {
                    // show all the possible verfahrensarten
                    if (+Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                        $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                        $("#verfahrensart option[value='" + Verfahrensart.LeistungsbezugRahmenvertrag + "']").removeAttr("disabled");
                        hasVerfahrensart = true;
                    }
                    else {
                        switch (+Classes.Decision.ArtDerBeschaffung) {
                            case ArtDerBeschaffung.Bauleistung: {
                                switch (+Classes.Decision.Entscheidungstyp) {
                                    case Entscheidungstyp.Erstbeschaffung: {
                                        if (Classes.Decision.AuftragswertGesamt < 8700000) {
                                            if (Classes.Decision.AuftragswertTotal < 300000) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                            }
                                            else if (Classes.Decision.AuftragswertTotal < 2000000) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.EinladungsVerfahren + "']").removeAttr("disabled");
                                            }
                                            else if (Classes.Decision.AuftragswertTotal < 8700000) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                if (+Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.LeistungsbezugRahmenvertrag + "']").removeAttr("disabled");
                                                }
                                                else {
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                }
                                            }
                                        }
                                        else {
                                            let bagatellBetrag = Classes.Decision.AuftragswertTotal + Classes.Decision.BisherigeBagatellBeschaffung;
                                            if (Classes.Decision.AuftragswertTotal < 2000000 && bagatellBetrag < Classes.Decision.AuftragswertGesamt / 5 && Classes.Decision.SelectBagatellIfPossible === true) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                if (Classes.Decision.AuftragswertTotal < 300000) {
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                }
                                                else {
                                                    $("#verfahrensart option[value='" + Verfahrensart.EinladungsVerfahren + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                }
                                                Classes.Decision.HasBagatelle = true;
                                            }
                                            else {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                if (+Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.LeistungsbezugRahmenvertrag + "']").removeAttr("disabled");
                                                }
                                                else {
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                }
                                            }
                                        }
                                        $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                        hasVerfahrensart = true;
                                        break;
                                    }
                                    case Entscheidungstyp.Nachtrag: {
                                        if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.InHouseInState) {
                                            $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                            hasVerfahrensart = true;
                                        }
                                        else {
                                            if (Classes.Decision.AuftragswertGesamt < 8700000) {
                                                if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 300000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                    hasVerfahrensart = true;
                                                }
                                                else if (Classes.Decision.AuftragswertTotal < 300000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    hasVerfahrensart = true;
                                                }
                                                else if (Classes.Decision.AuftragswertTotal < 2900000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    hasVerfahrensart = true;
                                                }
                                            }
                                            else {
                                                let bagatellBetrag = Classes.Decision.AuftragswertTotal + Classes.Decision.BisherigeBagatellBeschaffung;
                                                if (Classes.Decision.AuftragswertTotal < 300000 && bagatellBetrag < Classes.Decision.AuftragswertGesamt / 5 && Classes.Decision.SelectBagatellIfPossible === true) {
                                                    if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 300000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                        $("#verfahrensart option").attr("disabled", "disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                        Classes.Decision.HasBagatelle = true;
                                                        hasVerfahrensart = true;
                                                    }
                                                    else if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                        $("#verfahrensart option").attr("disabled", "disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                        Classes.Decision.HasBagatelle = true;
                                                        hasVerfahrensart = true;
                                                    }
                                                }
                                                else if (Classes.Decision.AuftragswertTotal < 2000000 && bagatellBetrag < Classes.Decision.AuftragswertGesamt / 5 && Classes.Decision.SelectBagatellIfPossible === true) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    Classes.Decision.HasBagatelle = true;
                                                    hasVerfahrensart = true;
                                                }
                                                else {
                                                    if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                        $("#verfahrensart option").attr("disabled", "disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                        // $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                        $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                        //$("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                        //$("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                        hasVerfahrensart = true;
                                                    }
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    case Entscheidungstyp.Zuschlagsentscheid: {
                                        break;
                                    }
                                }
                                break;
                            }
                            case ArtDerBeschaffung.Dienstleistung: {
                                switch (+Classes.Decision.Entscheidungstyp) {
                                    case Entscheidungstyp.Erstbeschaffung: {
                                        if (Classes.Decision.AuftragswertTotal < 150000) {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 230000) {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.EinladungsVerfahren + "']").removeAttr("disabled");
                                        }
                                        else {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            if (+Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.LeistungsbezugRahmenvertrag + "']").removeAttr("disabled");
                                            }
                                            else {
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                            }
                                        }
                                        if (+Classes.Decision.Vertragstyp !== Vertragstyp.Einzelvertrag) {
                                            $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                        }
                                        hasVerfahrensart = true;
                                        break;
                                    }
                                    case Entscheidungstyp.Nachtrag: {
                                        if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.InHouseInState) {
                                            $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                            hasVerfahrensart = true;
                                        }
                                        else {
                                            if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 150000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                hasVerfahrensart = true;
                                            }
                                            else if (Classes.Decision.AuftragswertTotal < 150000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                hasVerfahrensart = true;
                                            }
                                            else {
                                                if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    //$("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                    //$("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                    hasVerfahrensart = true;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    case Entscheidungstyp.Zuschlagsentscheid: {
                                        break;
                                    }
                                }
                                break;
                            }
                            case ArtDerBeschaffung.Lieferung: {
                                switch (+Classes.Decision.Entscheidungstyp) {
                                    case Entscheidungstyp.Erstbeschaffung: {
                                        if (Classes.Decision.AuftragswertTotal < 150000) {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 230000) {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                            $("#verfahrensart option[value='" + Verfahrensart.EinladungsVerfahren + "']").removeAttr("disabled");
                                        }
                                        else {
                                            $("#verfahrensart option").attr("disabled", "disabled");
                                            if (+Classes.Decision.Vertragstyp === Vertragstyp.Einzelvertrag) {
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.LeistungsbezugRahmenvertrag + "']").removeAttr("disabled");
                                            }
                                            else {
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                            }
                                        }
                                        if (+Classes.Decision.Vertragstyp !== Vertragstyp.Einzelvertrag) {
                                            $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                        }
                                        hasVerfahrensart = true;
                                        break;
                                    }
                                    case Entscheidungstyp.Nachtrag: {
                                        if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.InHouseInState) {
                                            $("#verfahrensart option[value='" + Verfahrensart.InHouseInState + "']").removeAttr("disabled");
                                            hasVerfahrensart = true;
                                        }
                                        else {
                                            if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 150000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                hasVerfahrensart = true;
                                            }
                                            else if (Classes.Decision.AuftragswertTotal < 150000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                                $("#verfahrensart option").attr("disabled", "disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                $("#verfahrensart option[value='" + Verfahrensart.FreihändigUnterSchwellenwert + "']").removeAttr("disabled");
                                                hasVerfahrensart = true;
                                            }
                                            else {
                                                if (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                    $("#verfahrensart option").attr("disabled", "disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.Wähle + "']").removeAttr("disabled");
                                                    $("#verfahrensart option[value='" + Verfahrensart.FreihändigMitAusnahmebestand + "']").removeAttr("disabled");
                                                    //$("#verfahrensart option[value='" + Verfahrensart.OffenesVerfahren + "']").removeAttr("disabled");
                                                    //$("#verfahrensart option[value='" + Verfahrensart.SelektivesVerfahren + "']").removeAttr("disabled");
                                                    hasVerfahrensart = true;
                                                }
                                            }
                                        }
                                        break;
                                    }
                                    case Entscheidungstyp.Zuschlagsentscheid: {
                                        break;
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
                if (hasVerfahrensart === true) {
                    // hide the old view and show the next step
                    $("#" + NavigationSteps[this.currentState] + "-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp]).hide();
                    this.currentState = NavigationSteps.EntscheidVerfahrensart;
                    $("#" + NavigationSteps[this.currentState]).show();
                    // update progressbar
                    this.setProgressBar(NavigationSteps.EntscheidVerfahrensart);
                    if ((+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Bauleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Lieferung) && +Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung) {
                        if ($("#entscheidungsformular-mitgenerieren-checkbox").is(':checked')) {
                            $("#einzulandende-anbieter-label").html("Einzuladende Anbieter/Antrag für Zuschlag an");
                            $("#einzulandende-anbieter").show();
                        }
                        else {
                            $("#einzulandende-anbieter-label").html("Einzuladende Anbieter");
                            $("#einzulandende-anbieter").show();
                        }
                    }
                    else if ((+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Bauleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Lieferung) && +Classes.Decision.Entscheidungstyp === Entscheidungstyp.Nachtrag) {
                        $("#einzulandende-anbieter-label").html("Vergabe an");
                        $("#einzulandende-anbieter").show();
                        $("#BegruendungNachtrag").show();
                    }
                    else {
                        $("#einzulandende-anbieter").hide();
                    }
                    $("#weitere-anbieter-hinzufuegen-link").unbind("click");
                    $("#weitere-anbieter-hinzufuegen-link").click((e) => this.addEinzulandeAnbieter(e));
                }
                else if (show150kWarning === true) {
                    alert("Die Gesamtsumme von «Ursprüngliche Vertragssumme (exkl. MWSt)» + «Total (exkl. MWSt)» bisher genehmigter Nachträge» + «Total (exkl. MWSt)» des vorliegenden bereinigten Nachtrags muss CHF 150'000 oder weniger betragen. Mit dem vorliegenden Nachtrag würde der Schwellenwert des Freihandverfahrens nach Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB überschritten werden. Aus diesem Grund muss anstelle des Nachtrags eine Erstbeschaffung durchgeführt werden.");
                }
                else if (show300kWarning === true) {
                    alert("Die Gesamtsumme von «Ursprüngliche Vertragssumme (exkl. MWSt)» + «Total (exkl. MWSt)» bisher genehmigter Nachträge» + «Total (exkl. MWSt)» des vorliegenden bereinigten Nachtrags muss CHF 300'000 oder weniger betragen. Mit dem vorliegenden Nachtrag würde der Schwellenwert des Freihandverfahrens nach Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB überschritten werden. Aus diesem Grund muss anstelle des Nachtrags eine Erstbeschaffung durchgeführt werden.");
                    //} else if (showRahmenvertragWarning === true) {
                    //    alert("Für den «Einzelvertrag aus Rahmenvertrag» gelten folgende Bedingungen:\n" +
                    //    "Bauleistung Gesamtwerk < CHF 8'700'000: Wert der einzelnen Beschaffung zwischen CHF 2 Mio. und CHF 8.7 Mio.\n" +
                    //    "Bauleistung Gesamtwerk > CHF 8'700'000: Wert der einzelnen Beschaffung grösser gleich CHF 2 Mio.\n" +
                    //    "Dienstleistung: Wert der Beschaffung grösser gleich CHF 230'000.");
                }
                else {
                    alert("Bitte gültige Werte eingeben");
                }
            }
            else {
                alert("Bitte alle Felder ausfüllen.");
            }
        }
        /**
         * Forwards to AuswahlGrund view
         * @param {Event} e
         */
        forwardToAuswahlGrund(e) {
            Classes.Decision.Verfahrensart = $("#verfahrensart").val();
            // reset AuswahlGrund, so might be one without
            Classes.Decision.HasToGrund = false;
            if (+Classes.Decision.Verfahrensart > 0) {
                $("#" + NavigationSteps[this.currentState]).hide();
                Classes.Decision.Evaluationsteam = $("#evaluationsteam").val();
                Classes.Decision.EinzuladendeAnbieterInhalt = $("#einzuladende-anbieter-val").val();
                Classes.Decision.EinzuladendeAnbieterMail = $("#einzuladende-anbieter-mail").val();
                // add weitere Einzuladende Anbieter
                Classes.Decision.EinzuladendeAnbieterWeitere = new Array();
                $(".einzuladende-anbieter").each((i, ele) => {
                    let anbieter = $(ele).find(".weitere-anbieter-val").val();
                    let mail = $(ele).find(".weitere-anbieter-mail").val();
                    Classes.Decision.EinzuladendeAnbieterWeitere.push(new Classes.Anbieter(anbieter, mail));
                });
                Classes.Decision.ZusaetzlicheLeistungenNotwendig = $("#zusaetzliche-leistungen-notwendig").val();
                Classes.Decision.WarumFolgebeschaffungNoetig = $("#warum-folgebeschaffung-noetig").val();
                Classes.Decision.WarumZusaetzlicheArbeiten = $("#warum-zusaetzliche-arbeiten").val();
                Classes.Decision.WasWaerenFolgen = $("#was-waeren-folgen").val();
                // special case if InHouse/InState no reason to select
                if (+Classes.Decision.Verfahrensart == Verfahrensart.InHouseInState) {
                    Classes.Decision.GrundAlternateText = "Art. 10 Abs. 3 BöB – nicht im Anwendungsbereich des BöB";
                    this.forwardToEndStep();
                    return;
                    // special case if Leistungsbezug aus Rahmenvertrag no reason to select
                }
                else if (+Classes.Decision.Verfahrensart == Verfahrensart.LeistungsbezugRahmenvertrag) {
                    Classes.Decision.GrundAlternateText = "Rahmenvertrag";
                    this.forwardToEndStep();
                    return;
                }
                else {
                    // if no InHouse/InState selected, forward user to select the Grund
                    this.currentState = NavigationSteps.AuswahlGrund;
                    switch (+Classes.Decision.ArtDerBeschaffung) {
                        case ArtDerBeschaffung.Bauleistung: {
                            switch (+Classes.Decision.Entscheidungstyp) {
                                case Entscheidungstyp.Erstbeschaffung: {
                                    if (Classes.Decision.AuftragswertGesamt < 8700000) {
                                        if (Classes.Decision.AuftragswertTotal < 300000) {
                                            Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                            //$("#grund").append("<option value='" + Begründung.BlDlAuftragUnter150k_36_2_b + "'>" + BegründungDisplay[Begründung.BlDlAuftragUnter150k_36_2_b] + "</option>");
                                            //Classes.Decision.HasToGrund = true;
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 2000000) {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.EinladungsVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 20 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.OffenesVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 18 BöB";
                                            }
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 8700000) {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.OffenesVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 18 BöB";
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.SelektivesVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 19 BöB";
                                            }
                                        }
                                    }
                                    else {
                                        if (Classes.Decision.HasBagatelle === true) {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 4 BöB";
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                            else {
                                                Classes.Decision.GrundAlternateText = "Art. 20 BöB i. V. m. Art. 16 Abs. 4 BöB";
                                            }
                                        }
                                        else {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.OffenesVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 18 BöB";
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.SelektivesVerfahren) {
                                                Classes.Decision.GrundAlternateText = "Art. 19 BöB";
                                            }
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Nachtrag: {
                                    if (Classes.Decision.AuftragswertGesamt < 8700000) {
                                        if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 300000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                            Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                            //$("#grund").append("<option value='" + Begründung.BlDlAuftragUnter150k_36_2_b + "'>" + BegründungDisplay[Begründung.BlDlAuftragUnter150k_36_2_b] + "</option>");
                                            //Classes.Decision.HasToGrund = true;
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 300000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                            }
                                            else {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                        }
                                        else if (Classes.Decision.AuftragswertTotal < 2900000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                    }
                                    else {
                                        if (Classes.Decision.HasBagatelle === true) {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                                Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 4 BöB";
                                            }
                                            else if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                        }
                                        else {
                                            if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                                $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                                $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                                Classes.Decision.HasToGrund = true;
                                            }
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Zuschlagsentscheid: {
                                    break;
                                }
                            }
                            break;
                        }
                        case ArtDerBeschaffung.Dienstleistung: {
                            switch (+Classes.Decision.Entscheidungstyp) {
                                case Entscheidungstyp.Erstbeschaffung: {
                                    if (Classes.Decision.AuftragswertTotal < 150000) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 230000) {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.EinladungsVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 20 BöB i.V.m. Art. 16 Abs. 1 BöB";
                                        }
                                    }
                                    else {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.OffenesVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 18 BöB";
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.SelektivesVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 19 BöB";
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Nachtrag: {
                                    if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 150000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 150000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 230000) {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                    }
                                    else {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Zuschlagsentscheid: {
                                    break;
                                }
                            }
                            break;
                        }
                        case ArtDerBeschaffung.Lieferung: {
                            switch (+Classes.Decision.Entscheidungstyp) {
                                case Entscheidungstyp.Erstbeschaffung: {
                                    if (Classes.Decision.AuftragswertTotal < 150000) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 230000) {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.EinladungsVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 20 BöB i.V.m. Art. 16 Abs. 1 BöB";
                                        }
                                    }
                                    else {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Ereignisse_21_2_d + "'>" + BegründungDisplay[Begründung.Ereignisse_21_2_d] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.OffenesVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 18 BöB";
                                        }
                                        else if (+Classes.Decision.Verfahrensart === Verfahrensart.SelektivesVerfahren) {
                                            Classes.Decision.GrundAlternateText = "Art. 19 BöB";
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Nachtrag: {
                                    if (Classes.Decision.AuftragswertTotal + Classes.Decision.BisherGenehmigteNachtraegeTotal + Classes.Decision.UrspruenglicheVertragssumme < 150000 && +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigUnterSchwellenwert) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 150000 && (+Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.OffenesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.SelektivesVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.EinladungsVerfahren || +Classes.Decision.UrspruenglicheVerfahrensart === Verfahrensart.FreihändigMitAusnahmebestand)) {
                                        Classes.Decision.GrundAlternateText = "Art. 21 Abs. 1 BöB i. V. m. Art. 16 Abs. 1 BöB";
                                    }
                                    else if (Classes.Decision.AuftragswertTotal < 230000) {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                    }
                                    else {
                                        if (+Classes.Decision.Verfahrensart === Verfahrensart.FreihändigMitAusnahmebestand) {
                                            $("#grund").append("<option value='" + Begründung.Besonderheit_21_2_c + "'>" + BegründungDisplay[Begründung.Besonderheit_21_2_c] + "</option>");
                                            $("#grund").append("<option value='" + Begründung.Wirtschaftlich_21_2_e + "'>" + BegründungDisplay[Begründung.Wirtschaftlich_21_2_e] + "</option>");
                                            Classes.Decision.HasToGrund = true;
                                        }
                                    }
                                    break;
                                }
                                case Entscheidungstyp.Zuschlagsentscheid: {
                                    break;
                                }
                            }
                            break;
                        }
                    }
                    if (Classes.Decision.HasToGrund === true) {
                        $("#grund").change((e) => this.grundChanged(e));
                    }
                    else {
                        this.forwardToEndStep();
                        // end procedure here
                        return;
                    }
                }
                $("#" + NavigationSteps[this.currentState]).show();
                // update progressbar
                this.setProgressBar(NavigationSteps.AuswahlGrund);
            }
            else {
                alert("Bitte bei allen Punkten etwas auswählen.");
            }
        }
        /**
         * Shows the Begründung tab, which depends on the Begründung, which the user had to select from a list.
         * @param {Event} e
         */
        forwardToBegründung(e) {
            Classes.Decision.Begründung = $("#grund").val();
            if (+Classes.Decision.Begründung > 0) {
                // hide the old view and show the next step
                $("#" + NavigationSteps[this.currentState]).hide();
                // this.currentState = this.currentState.ChildStates[0];
                this.currentState = NavigationSteps.Begründung;
                if (Classes.Decision.SIMAPPublikation() === true) {
                    $("#Besonderheit_21_2_c_SIMAP_a").show();
                    $("#Besonderheit_21_2_c_SIMAP_b").show();
                }
                else if (Classes.Decision.SIMAPPublikation() === false) {
                    $("#Besonderheit_21_2_c_SIMAP_a").hide();
                    $("#Besonderheit_21_2_c_SIMAP_b").hide();
                }
                switch (+Classes.Decision.Begründung) {
                    case Begründung.BlDlAuftragUnter150k_36_2_b: {
                        this.currentState = NavigationSteps.AuswahlGrund;
                        if (confirm("Formular(e) jetzt generieren?")) {
                            this.forwardToEndStep();
                        }
                        break;
                    }
                    case Begründung.Ereignisse_21_2_d: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._21_2_d();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    case Begründung.Folgebeschaffung_36_2_d: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._36_2_d();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    case Begründung.GleichartBlAuftragGrundAuftrag_13_1_h: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._13_1_h();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    case Begründung.NachfolgeBeschaffung_13_1_f: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._13_1_f();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    case Begründung.Besonderheit_21_2_c: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._21_2_c();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    case Begründung.Wirtschaftlich_21_2_e: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();
                        Classes.Decision.Grund = new Modules._21_2_e();
                        $("#forward-button").html("Generieren");
                        break;
                    }
                    /*case Begründung.BagatellKlausel_35_3_h: {
                        $("#" + Begründung[Classes.Decision.Begründung]).show();

                        Classes.Decision.Grund = new Modules._35_3_h_BagatellKlausel();

                        $("#forward-button").html("Generieren");

                        break;
                    }*/
                    case Begründung.UebrigeEinladungsverfahren: {
                        this.currentState = NavigationSteps.AuswahlGrund;
                        if (confirm("Formular(e) jetzt generieren?")) {
                            this.forwardToEndStep();
                            return;
                        }
                        break;
                    }
                    default: {
                        //statements; 
                        break;
                    }
                }
                // update the progress bar
                this.setProgressBar(NavigationSteps.Begründung);
            }
            else {
                alert("Bitte Begründung auswählen.");
            }
        }
        /**
         * Forwards to the End Page and sets current state, can be called from any state
         */
        forwardToEndStep() {
            // hide the old view and show the next step
            $("#" + NavigationSteps[this.currentState]).hide();
            // if any law was selected, hide the law
            if (Classes.Decision.Grund != undefined && Classes.Decision.Grund != null) {
                $("#" + Begründung[Classes.Decision.Begründung]).hide();
            }
            // create word files
            Modules.WordWriter.CreateWord();
            if (Classes.Decision.GeneriereEntscheidung === true) {
                Modules.WordWriter.CreateWord(true);
            }
            this.currentState = NavigationSteps.EndStep;
            $("#" + NavigationSteps[this.currentState]).show();
            if (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung) {
                $("#download-formular-button").html('Download A-Formular');
            }
            else if (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Nachtrag) {
                $("#download-formular-button").html('Download A+B-Formular');
                /*
                            } else if (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Zuschlagsentscheid) {
                                $("#download-formular-button").html('Download B-Formular');
                */
            }
            else {
                $("#download-formular-button").html('Download Formular');
            }
            $("#back-button").hide();
            $("#forward-button").hide();
            $("#restart-button").show();
            $("#restart-button").click((e) => this.resetPage(e));
            // update progressbar
            this.setProgressBar(NavigationSteps.EndStep);
        }
        /**
         * Shows the grund to the user, which he has selected now
         * @param {Event} e
         */
        grundChanged(e) {
            let grundToShow = $("#grund option:selected").val();
            $(".grund").hide();
            if (grundToShow != undefined && grundToShow != null) {
                $("#" + Begründung[grundToShow] + "-text").show();
            }
        }
        /**
         * reloads the page and so resets to start
         * @param {Event} e
         */
        resetPage(e) {
            //window.location.reload();
            window.location.href = window.location.href;
        }
        /**
         * Shows the new total of the Auftragswert if any of the Auftragswert values changes
         * @param {Event} e
         */
        auftragswertChanged(e) {
            var auftragswertAusbauUnterhalt = parseFloat($("#auftragswert-ausbau-unterhalt").val());
            if (isNaN(auftragswertAusbauUnterhalt)) {
                auftragswertAusbauUnterhalt = 0;
            }
            var auftragswertKapazitaetserweiterung = parseFloat($("#auftragswert-kapazitaetserweiterung").val());
            if (isNaN(auftragswertKapazitaetserweiterung)) {
                auftragswertKapazitaetserweiterung = 0;
            }
            var auftragswertDritte = parseFloat($("#auftragswert-dritte").val());
            if (isNaN(auftragswertDritte)) {
                auftragswertDritte = 0;
            }
            var auftragswertBetrieb = parseFloat($("#auftragswert-betrieb").val());
            if (isNaN(auftragswertBetrieb)) {
                auftragswertBetrieb = 0;
            }
            let total = auftragswertAusbauUnterhalt + auftragswertKapazitaetserweiterung + auftragswertDritte + auftragswertBetrieb;
            var returnVal = total.toFixed();
            var x = returnVal.split(".");
            var x1 = x[0];
            var x2 = x.length > 1 ? "." + x[1] : "";
            var x1 = x1.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1'");
            $("#auftragswert-total").val(x1 + x2);
        }
        /**
         * Shows the new total of the Auftragswert if any of the Auftragswert values changes
         * @param {Event} e
         */
        calcVoraussichtlicheAbrechnungssumme(e) {
            let urspruenglicheVertragssumme = parseFloat($("#urspruengliche-vertragssumme").val());
            if (isNaN(urspruenglicheVertragssumme)) {
                urspruenglicheVertragssumme = 0;
            }
            var bishergenehmigteNachtraege = parseFloat($("#bisher-genehmigt-nachtraege-total").val());
            if (isNaN(bishergenehmigteNachtraege)) {
                bishergenehmigteNachtraege = 0;
            }
            var vorliegenderNachtragTotal = parseFloat($("#vorliegender-bereinigter-nachtrag-total").val());
            if (isNaN(vorliegenderNachtragTotal)) {
                vorliegenderNachtragTotal = 0;
            }
            let total = urspruenglicheVertragssumme + bishergenehmigteNachtraege + vorliegenderNachtragTotal;
            var returnVal = total.toFixed();
            var x = returnVal.split(".");
            var x1 = x[0];
            var x2 = x.length > 1 ? "." + x[1] : "";
            var x1 = x1.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1'");
            $("#voraussichtliche-abrechnungssumme").val(x1 + x2);
            let ratio = (((bishergenehmigteNachtraege + vorliegenderNachtragTotal) / urspruenglicheVertragssumme) + 1) * 100;
            var fixedratio = ratio.toFixed(0);
            $("#verhaeltnis-honorar").val(fixedratio);
        }
        /**
         * Handles the event when the user has selected a art der beschaffung to display only vertragstyp which is possible for this art der beschaffung
         * @param {Event} e
         */
        artDerBeschaffungChanged(e) {
            var artDerBeschaffung = parseInt($(e.currentTarget).val());
            switch (+artDerBeschaffung) {
                case ArtDerBeschaffung.Bauleistung: {
                    $("#vertragstyp option").attr("disabled", "disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Wähle + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.WerkvertragBau + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.WerkvertragBSA + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.WerkvertragKlein + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.AuftragGE + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Auftragsbestaetigung + "']").removeAttr("disabled");
                    //$("#vertragstyp option[value='" + Vertragstyp.Einzelvertrag + "']").removeAttr("disabled");
                    break;
                }
                case ArtDerBeschaffung.Dienstleistung: {
                    $("#vertragstyp option").attr("disabled", "disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Wähle + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.PlanervertragKBOB + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.PlanervertragKlein + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.BHU + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.IK + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.DienstleistungAllg + "']").removeAttr("disabled");
                    //$("#vertragstyp option[value='" + Vertragstyp.Kaufvertrag + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.AuftragGE + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Auftragsbestaetigung + "']").removeAttr("disabled");
                    //$("#vertragstyp option[value='" + Vertragstyp.Einzelvertrag + "']").removeAttr("disabled");
                    break;
                }
                case ArtDerBeschaffung.Lieferung: {
                    $("#vertragstyp option").attr("disabled", "disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Wähle + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Kaufvertrag + "']").removeAttr("disabled");
                    $("#vertragstyp option[value='" + Vertragstyp.Einzelvertrag + "']").removeAttr("disabled");
                    break;
                }
                case ArtDerBeschaffung.KeineBeschaffung: {
                    $("#vertragstyp option").removeAttr("disabled");
                    break;
                }
                default: {
                    break;
                }
            }
        }
        /**
        * Event to disable the entscheidungstyp field
        * @param {Event} e
        */
        vertragstypChanged(e) {
            if ($("#vertragstyp").val() == 12) {
                $("#entscheidungstyp option[value='" + Entscheidungstyp.Erstbeschaffung + "']").removeAttr("disabled");
                $("#entscheidungstyp option[value='" + Entscheidungstyp.Nachtrag + "']").attr("disabled", "disabled");
                $("#Einzelvertrag").show();
                $("#einzelvertrag-referenz").attr("required", "required");
            }
            else {
                $("#entscheidungstyp option[value='" + Entscheidungstyp.Erstbeschaffung + "']").removeAttr("disabled");
                $("#entscheidungstyp option[value='" + Entscheidungstyp.Nachtrag + "']").removeAttr("disabled");
                $("#Einzelvertrag").hide();
                $("#einzelvertrag-referenz").removeAttr("required");
            }
            if ($("#vertragstyp").val() == 7) {
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.Honorare + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.Bauleistungen + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.HardSoftware + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.InformatikDienstleistungen + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.BetriebUnterhalt + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.Honorare + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.Bauleistungen + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.HardSoftware + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.InformatikDienstleistungen + "']").attr("disabled", "disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.BetriebUnterhalt + "']").attr("disabled", "disabled");
            }
            else if ($("#vertragstyp").val() !== 7) {
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.Honorare + "']").removeAttr("disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.Bauleistungen + "']").removeAttr("disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.HardSoftware + "']").removeAttr("disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.InformatikDienstleistungen + "']").removeAttr("disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.BetriebUnterhalt + "']").removeAttr("disabled");
                $("#beschaffungskategorie option[value='" + Beschaffungskategorie.Publikation + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.Honorare + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.Bauleistungen + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.HardSoftware + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.InformatikDienstleistungen + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.BetriebUnterhalt + "']").removeAttr("disabled");
                $("#beschaffungskategorie-nachtrag option[value='" + Beschaffungskategorie.Publikation + "']").removeAttr("disabled");
            }
        }
        /**
         * shows all the input fields needed to generate as well the B-Formular
         * @param {Event} e
         */
        generateBFormularCHeckboxChanged(e) {
            let isChecked = $("#entscheidungsformular-mitgenerieren-checkbox:checked").length > 0;
            if (isChecked === true) {
                $("#erstbeschaffung-entscheidung").show();
                $("#einzuladende-anbieter-mail").show();
            }
            else {
                $("#erstbeschaffung-entscheidung").hide();
                $("#einzuladende-anbieter-mail").hide();
            }
        }
        /**
        * shows all the input fields needed to generate Fragebogen
        * @param {Event} e
        */
        verfahrensartChanged(e) {
            if ($("#verfahrensart").val() == 2 && $("#entscheidungsformular-mitgenerieren-checkbox:checked").length > 0) {
                $("#additional-information-b").show();
                Classes.Decision.hasFragebogen = true;
                //            } else if (($("#verfahrensart").val() == 2 || $("#verfahrensart").val() == 7) && $("#entscheidungstyp-select").val() === 2) {
            }
            else if ($("#verfahrensart").val() == 2 && +Classes.Decision.Entscheidungstyp === Entscheidungstyp.Nachtrag) {
                $("#additional-information-b").show();
                Classes.Decision.hasFragebogen = true;
            }
            else {
                $("#additional-information-b").hide();
                Classes.Decision.hasFragebogen = false;
            }
            if ($("#verfahrensart").val() == 4 || $("#verfahrensart").val() == 5 && ((+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Bauleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Lieferung) && +Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung)) {
                $("#einzulandende-anbieter").hide();
            }
            else if ((+Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Bauleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Dienstleistung || +Classes.Decision.ArtDerBeschaffung === ArtDerBeschaffung.Lieferung) && +Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung) {
                $("#einzulandende-anbieter").show();
            }
            if ($("#verfahrensart").val() == 3 || $("#verfahrensart").val() == 4 && (+Classes.Decision.Entscheidungstyp === Entscheidungstyp.Erstbeschaffung)) {
                $("#evaluationsteam-field").show();
                Classes.Decision.hasEvaluationsteam = true;
            }
            else {
                $("#evaluationsteam-field").hide();
                Classes.Decision.hasEvaluationsteam = false;
            }
        }
        /**
         * Function sets the new active in the ProgressBar works forward and backward
         * @param {NavigationSteps} nextStep
         */
        setProgressBar(nextStep) {
            $(".progressbar-item").removeClass("active");
            switch (+nextStep) {
                case NavigationSteps.EntscheidungsWahl: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    break;
                }
                case NavigationSteps.BasisInfos: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    $("#progressbar-basisinfos").addClass("active");
                    break;
                }
                case NavigationSteps.EntscheidVerfahrensart: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    $("#progressbar-basisinfos").addClass("active");
                    $("#progressbar-entscheid-verfahrensart").addClass("active");
                    break;
                }
                case NavigationSteps.AuswahlGrund: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    $("#progressbar-basisinfos").addClass("active");
                    $("#progressbar-entscheid-verfahrensart").addClass("active");
                    $("#progressbar-auswahl-grund").addClass("active");
                    break;
                }
                case NavigationSteps.Begründung: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    $("#progressbar-basisinfos").addClass("active");
                    $("#progressbar-entscheid-verfahrensart").addClass("active");
                    $("#progressbar-auswahl-grund").addClass("active");
                    $("#progressbar-begruendung").addClass("active");
                    break;
                }
                case NavigationSteps.EndStep: {
                    $("#progressbar-entscheidungswahl").addClass("active");
                    $("#progressbar-basisinfos").addClass("active");
                    $("#progressbar-entscheid-verfahrensart").addClass("active");
                    $("#progressbar-auswahl-grund").addClass("active");
                    $("#progressbar-begruendung").addClass("active");
                    $("#progressbar-download").addClass("active");
                    $("#progressbar-download").addClass("active-last");
                    break;
                }
                default: {
                    //statements; 
                    break;
                }
            }
        }
        /**
        * Event to show and hide the zahlungsbedingungen field
        * @param {Event} e
        */
        zahlungsbedingungenChanged(e) {
            if ($("input[name='zahlungsbedingungen-auswahl']:checked").val() == "2") {
                $("#zahlungsbedingungen-div").show();
            }
            else {
                $("#zahlungsbedingungen-div").hide();
            }
        }
        /**
         * Event to show and hide the massnahmen checkboxes
         * @param {Event} e
         */
        vorbefassungChanged(e) {
            if ($("input[name='vorbefassung-auswahl']:checked").val() == "1") {
                $(".massnahme-field").show();
            }
            else {
                $(".massnahme-field").hide();
            }
        }
        /**
         * Validates all input elements which are required
         * @param {string} elementId id of the container element
         */
        validateModule(elementId) {
            var valid = true;
            for (let element of $("#" + elementId + " input:required").get()) {
                valid = element.checkValidity();
                if (valid === false) {
                    element.reportValidity();
                    return false;
                }
            }
            for (let element of $("#" + elementId + " select:required").get()) {
                valid = element.checkValidity();
                if (valid === false) {
                    element.reportValidity();
                    return false;
                }
            }
            for (let element of $("#" + elementId + " textarea:required").get()) {
                valid = element.checkValidity();
                if (valid === false) {
                    element.reportValidity();
                    return false;
                }
            }
            return valid;
        }
        /**
         * Function loads all persons from the dropbox account
         */
        loadPersons() {
            // this link is with dl.dropboxusercontent.com because with this cors is allowed
            // https://dl.dropboxusercontent.com/s/d2z4oli8lts8ctq/Projektleiter.csv?dl=0
            //xhr.open("GET", "https://dl.dropboxusercontent.com/s/d2z4oli8lts8ctq/Projektleiter.csv?dl=0", false);
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/FaAGTgYPTTi3Kw3/download",
                dataType: "text",
                success: (data) => this.processProjektleiter(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/4jxbrXxgLr2kkpy/download",
                dataType: "text",
                success: (data) => this.processBereichsleiter(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/jBmrKFqQYaRMjx4/download",
                dataType: "text",
                success: (data) => this.processICP(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/39PHsG5pCmqjxBR/download",
                dataType: "text",
                success: (data) => this.processBereichsleiterSupport(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/mG43fmeEFC9H2ZW/download",
                dataType: "text",
                success: (data) => this.processFC(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/NjkBbAtxWiFZdMd/download",
                dataType: "text",
                success: (data) => this.processACI(data)
            });
            $.ajax({
                type: "GET",
                url: "https://astra.sms-technology.ch/index.php/s/QKoFM7beaM2SEL6/download",
                dataType: "text",
                success: (data) => this.processGenehmiger(data)
            });
        }
        /**
         * Processes the Projektleiter csv and adds them to the select
         * @param {string} allText all csv text
         */
        processProjektleiter(allText) {
            var allTextLines = allText.split(/\r\n|\n/);
            //var headers: string = allTextLines[0].split(',');
            var lines = [];
            for (var i = 0; i < allTextLines.length; i++) {
                var data = allTextLines[i].split(',');
                if (data[1] != undefined && data[0] != "") {
                    $("#projektleiter-select").append("<option data-email='" + data[1] + "' value='" + data[0] + "'>" + data[0] + "</option>");
                    $("#vertragsverantwortlicher-select").append("<option data-email='" + data[1] + "' value='" + data[0] + "'>" + data[0] + "</option>");
                }
            }
        }
        /**
         * Processes the Bereichsleiter csv and adds them to the select
         * @param {string} allText all csv text
         */
        processBereichsleiter(allText) {
            var allTextLines = allText.split(/\r\n|\n/);
            //var headers: string = allTextLines[0].split(',');
            var lines = [];
            for (var i = 0; i < allTextLines.length; i++) {
                var data = allTextLines[i].split(',');
                if (data[1] != undefined && data[0] != "") {
                    $("#bereichsleiter-select").append("<option data-email='" + data[1] + "' value='" + data[0] + "'>" + data[0] + "</option>");
                }
            }
        }
        /**
         * Processes the ICP csv and adds them to the selects
         * @param {string} allText all csv text
         */
        processICP(allText) {
            var allTextLines = allText.split(/\r\n|\n/);
            //var headers: string = allTextLines[0].split(',');
            var lines = [];
            for (var i = 0; i < allTextLines.length; i++) {
                var data = allTextLines[i].split(',');
                if (data[0] != undefined && data[0] != "") {
                    $("#icp-Erstbeschaffung-select").append("<option value='" + data[0] + "'>" + data[0] + "</option>");
                    $("#icp-Nachtrag-select").append("<option value='" + data[0] + "'>" + data[0] + "</option>");
                }
            }
        }
        /**
         * Processes the Bereichsleiter csv and takes the current Name
         * @param {string} allText all csv text
         */
        processBereichsleiterSupport(allText) {
            var allTextLines = allText.split(',');
            Classes.Decision.BereichsleiterSupportName = allTextLines[0];
            Classes.Decision.BereichsleiterSupportEmail = allTextLines[1];
        }
        /**
         * Processes the FC csv and takes the current Name
         * @param {string} allText all csv text
         */
        processFC(allText) {
            Classes.Decision.FCName = allText;
        }
        /**
         * Processes the ACI csv and takes the current Name
         * @param {string} allText all csv text
         */
        processACI(allText) {
            Classes.Decision.ACIName = allText;
        }
        /**
        * Processes the Genehmiger csv and adds them to the selects
        * @param {string} allText all csv text
        */
        processGenehmiger(allText) {
            var allTextLines = allText.split(/\r\n|\n/);
            //var headers: string = allTextLines[0].split(',');
            var lines = [];
            for (var i = 0; i < allTextLines.length; i++) {
                var data = allTextLines[i].split(',');
                if (data[0] != undefined && data[0] != "") {
                    $("#genehmiger-select").append("<option value='" + data[0] + "'>" + data[0] + "</option>");
                }
            }
        }
        /**
         * Handles the Event when the entscheidungstyp changed, to display the begruendung for a nachtrag
         */
        entscheidungsTypChanged() {
            let entscheidungstyp = $("#entscheidungstyp-select").val();
            if (+entscheidungstyp === Entscheidungstyp.Nachtrag) {
                $("#gegenstand-label").html("Bezeichnung Nachtrag");
            }
            else {
                $("#gegenstand-label").html("Vertragsbezeichnung");
            }
        }
        /**
         * Adds an externe Beauftragte to the list
         * @param {Event} e
         */
        addExterneBeauftragte(e) {
            e.preventDefault();
            var html = $("#weitere-template").html();
            $("#EntscheidungsWahl").append(html);
            $(".remove-weitere").unbind("click");
            $(".remove-weitere").click((e) => this.removeExterneBeauftragte(e));
        }
        /**
         * Adds an externe Beauftragte to the list
         * @param {Event} e
         */
        addEinzulandeAnbieter(e) {
            e.preventDefault();
            var html = $("#weitere-anbieter-template").html();
            if ($("#entscheidungsformular-mitgenerieren-checkbox").is(':checked')) {
                html = html.replace("display:none;", "");
            }
            $("#einzulandende-anbieter").append(html);
            $(".remove-weitere-anbieter").unbind("click");
            $(".remove-weitere-anbieter").click((e) => this.removeEinzulandeAnbieter(e));
        }
        /**
         * Handles the Event when the user wants to delete an externe beauftragte
         * @param {Event} e
         */
        removeExterneBeauftragte(e) {
            e.preventDefault();
            $(e.currentTarget).closest(".ext-beauftragte").remove();
        }
        /**
         * Handles the Event when the user wants to delete an externe beauftragte
         * @param {Event} e
         */
        removeEinzulandeAnbieter(e) {
            e.preventDefault();
            $(e.currentTarget).closest(".einzuladende-anbieter").remove();
        }
        /**
         * Event which handles the click on the back button, so user will go any step back
         * @param {Event} e
         */
        backwardsNavigation(e) {
            e.preventDefault();
            switch (this.currentState) {
                case NavigationSteps.EntscheidungsWahl: {
                    // do nothing
                    break;
                }
                case NavigationSteps.BasisInfos: {
                    this.returnToEntscheidungsWahl();
                    //document.getElementById('id').scrollIntoView();
                    //$('#id')[0].scrollIntoView();
                    $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    break;
                }
                case NavigationSteps.EntscheidVerfahrensart: {
                    this.returnToBasisInfos();
                    $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    break;
                }
                case NavigationSteps.AuswahlGrund: {
                    this.returnToEntscheidVerfahrensart();
                    $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    break;
                }
                case NavigationSteps.Begründung: {
                    this.returnToAuswahlGrund();
                    $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    $("#forward-button").html("Weiter");
                    break;
                }
                case NavigationSteps.EndStep: {
                    this.returnToBegruendung();
                    $('#logo')[0].scrollIntoView({ behavior: "smooth" });
                    break;
                }
                default: {
                    //statements; 
                    break;
                }
            }
        }
        /**
         * Returns the User to the Begruendung, if no Begruendung to select, returns to the AuswahlGrund
         */
        returnToBegruendung() {
            $("#" + NavigationSteps[this.currentState]).hide();
            // this.currentState = this.currentState.ChildStates[0];
            this.currentState = NavigationSteps.Begründung;
            // hides restart and download buttons, shows forward button again
            $("#restart-button").hide();
            $("#download-formular-button").hide();
            $("#download-b-formular-button").hide();
            $("#forward-button").show();
            switch (+Classes.Decision.Begründung) {
                case Begründung.BlDlAuftragUnter150k_36_2_b: {
                    this.returnToAuswahlGrund();
                    return;
                }
                case Begründung.Ereignisse_21_2_d: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._21_2_d();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.Folgebeschaffung_36_2_d: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._36_2_d();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.GleichartBlAuftragGrundAuftrag_13_1_h: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._13_1_h();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.NachfolgeBeschaffung_13_1_f: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._13_1_f();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.Besonderheit_21_2_c: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._21_2_c();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.Wirtschaftlich_21_2_e: {
                    $("#" + Begründung[Classes.Decision.Begründung]).show();
                    Classes.Decision.Grund = new Modules._21_2_e();
                    $("#forward-button").html("Weiter");
                    break;
                }
                case Begründung.UebrigeEinladungsverfahren: {
                    this.returnToAuswahlGrund();
                    $("#forward-button").html("Weiter");
                    return;
                }
                default: {
                    //statements; 
                    break;
                }
            }
            // update the progress bar
            this.setProgressBar(NavigationSteps.Begründung);
        }
        /**
         * returns the user to the step AuswahlGrund
         */
        returnToAuswahlGrund() {
            Classes.Decision.Grund.ResetGrund();
            $("#" + Begründung[Classes.Decision.Begründung]).hide();
            this.currentState = NavigationSteps.AuswahlGrund;
            this.setProgressBar(NavigationSteps.AuswahlGrund);
            $("#" + NavigationSteps[this.currentState]).show();
        }
        /**
         * returns the user to the step EntscheidVerfahrensart
         */
        returnToEntscheidVerfahrensart() {
            $("#grund option[value!='0']").remove();
            Classes.Decision.Grund = undefined;
            Classes.Decision.Begründung = undefined;
            $("#" + NavigationSteps[this.currentState]).hide();
            this.currentState = NavigationSteps.EntscheidVerfahrensart;
            this.setProgressBar(NavigationSteps.EntscheidVerfahrensart);
            $("#verfahrensart:nth-child(0)").prop("selected", true);
            $("#" + NavigationSteps[this.currentState]).show();
        }
        /**
         * returns the user to the step BasisInfos
         */
        returnToBasisInfos() {
            $("#" + NavigationSteps[this.currentState]).hide();
            this.currentState = NavigationSteps.BasisInfos;
            this.setProgressBar(NavigationSteps.BasisInfos);
            //$("#verfahrensart:nth-child(0)").prop("selected", true);
            $("#verfahrensart").val(0);
            $("#" + NavigationSteps[this.currentState] + "-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp]).show();
            // remove einzuladende anbieter
            $(".einzuladende-anbieter").remove();
            $("#einzuladende-anbieter-val").val("");
            $("#einzuladende-anbieter-mail").val("");
            // remove extra fields for fragebogen
            $("#schriftliche-begruendung-b-nein-radio").prop('checked', false);
            $("#schriftliche-begruendung-b-ja-radio").prop('checked', true);
            $("#begruendung-juristisch-b-nein-radio").prop('checked', false);
            $("#begruendung-juristisch-b-ja-radio").prop('checked', true);
            $("#wirtschaftlichkeitsueberlegungen-b-nein-radio").prop('checked', false);
            $("#wirtschaftlichkeitsueberlegungen-b-ja-radio").prop('checked', true);
            $("#leistungsumfang-b-nein-radio").prop('checked', false);
            $("#leistungsumfang-b-ja-radio").prop('checked', true);
            $("#bedarfsanalyse-b-nein-radio").prop('checked', false);
            $("#bedarfsanalyse-b-ja-radio").prop('checked', true);
            $("#risikobeurteilung-b-nein-radio").prop('checked', false);
            $("#risikobeurteilung-b-ja-radio").prop('checked', true);
            // remove extra fields for begruendung nachtrag
            $("#BegruendungNachtrag").hide();
            $("#zusaetzliche-leistungen-notwendig").val("");
            $("#warum-folgebeschaffung-noetig").val("");
            $("#warum-zusaetzliche-arbeiten").val("");
            $("#was-waeren-folgen").val("");
            $("#referenz-datum-ausschreibung").val("");
            // remove extra fields for evaluationsteam
            $("#evaluationsteam").val("");
        }
        /**
         * returns the user to the Entscheidungswahl step
         */
        returnToEntscheidungsWahl() {
            // Erstbeschaffung field reset
            //$("#gegenstand").val("");
            $("#icp-Erstbeschaffung-select:nth-child(0)").prop("selected", true);
            $("#vertragsverantwortlicher-select:nth-child(0)").prop("selected", true);
            $("#projekt-checkbox").removeAttr("checked");
            $("#real-checkbox").removeAttr("checked");
            $("#auftragswert-ausbau-unterhalt").val("0");
            $("#auftragswert-kapazitaetserweiterung").val("0");
            $("#auftragswert-dritte").val("0");
            $("#auftragswert-betrieb").val("0");
            $("#auftragswert-gesamt").val("");
            $("#bisherige-bagatellklausel-erstbeschaffung").val("");
            $("#datum-vertragsbeginn").val("");
            $("#datum-vertragsende").val("");
            $("#beschaffungskategorie-select").val("0");
            $("#zahlungsbedingungen-30tage-radio").val("0");
            $("#zahlungsbedingungen-45tage-radio").val("1");
            $("#zahlungsbedingungen-anderes-radio").val("2");
            $("#andere-zahlungsbedingung").val("");
            $("#vorbefassung-ja-radio").val("1");
            $("#vorbefassung-nein-radio").val("0");
            $("#massnahme-auschluss-checkbox").removeAttr("checked");
            $("#massnahme-fristverlaengerung-checkbox").removeAttr("checked");
            $("#massnahme-unterlagen-checkbox").removeAttr("checked");
            $("#verteiler-kopie-an").val("");
            $("#entscheidungsformular-mitgenerieren-checkbox").removeAttr("checked");
            $("#anzahl-angebote").val("");
            $("#angebote-von").val("");
            $("#angebote-bis").val("");
            $("#ausschluss-anbieter-checkbox").removeAttr("checked");
            $("#ausschluss-anbieter-wer").val("");
            $("#evaluationsbericht-vorhanden-checkbox").removeAttr("checked");
            $("#datum-evaluationsbericht").val("");
            $("#antrag-zuschlag-1").val("");
            $("#antrag-zuschlag-2").val("");
            $("#antrag-zuschlag-3").val("");
            $("#antrag-zuschlag-4").val("");
            $("#angebot-vom").val("");
            $("#vergabeantrag-betrag").val("");
            $("#preisbasis-datum").val("");
            $("#konditionen-nebenkosten").val("");
            $("#konditionen-rabatt").val("");
            $("#konditionen-skonto").val("");
            $("#bauherr-erstbeschaffung-checkbox").removeAttr("checked");
            $("#bhu-erstbeschaffung-checkbox").removeAttr("checked");
            $("#oertl-bauleitung-erstbeschaffung-checkbox").removeAttr("checked");
            $("#oberbauleitung-erstbeschaffung-checkbox").removeAttr("checked");
            $("#einheitspreis-erstbeschaffung-checkbox").removeAttr("checked");
            $("#pauschalpreis-erstbeschaffung-checkbox").removeAttr("checked");
            $("#kostendach-erstbeschaffung-checkbox").removeAttr("checked");
            $("#teilprojekt-erstbeschaffung").val("");
            $("#finanzierungskonto-erstbeschaffung").val("");
            $("#inventarobjekt-erstbeschaffung").val("");
            $("#kostenart-erstbeschaffung").val("");
            $("#bemerkungen-erstbeschaffung").val("");
            // Nachtrag Field reset
            //$("#mengenaenderung-checkbox").removeAttr("checked");
            //$("#bestellungsaenderung-checkbox").removeAttr("checked");
            $("#verfahren-urspruengliche-beschaffung:nth-child(0)").prop("selected", true);
            $("#nachtragsgrund-select").val("");
            $("#datum-urspruengliche-beschaffung").val("");
            $("#urspruengliche-beschaffungsstelle").val("");
            $("#beschaffungskategorie-nachtrag-select").val("0");
            $("#auftragswert-gesamt-Nachtrag").val("");
            $("#bisherige-bagatellklausel-Nachtrag").val("");
            $("#nummer-grundvertrag").val("");
            $("#urspruengliche-vertragssumme").val("");
            $("#bisher-genehmigt-nachtraege-nr").val("");
            $("#bisher-genehmigt-nachtraege-total").val("");
            $("#vorliegender-bereinigter-nachtrag-nr").val("");
            $("#vorliegender-bereinigter-nachtrag-total").val("");
            $("#voraussichtliche-abrechnungssumme").val("");
            $("#datum-vertragsbeginn-nachtrag").val("");
            $("#datum-vertragsende-nachtrag").val("");
            $("#beginn-ende-nachtrag").val("");
            $("#nachtrag-auswirkungen-fristen-nein").val("0");
            $("#nachtrag-auswirkungen-fristen-ja").val("1");
            $("#verhaeltnis-honorar").val("");
            $("#verhandlungen-nachtrag").val("");
            $("#verhandlungen-nachtrag-durch").val("");
            $("#nachtrag-auswirkungen-vgl-protokoll").val("");
            $("#icp-Nachtrag-select:nth-child(0)").prop("selected", true);
            $("#bauherr-checkbox").removeAttr("checked");
            $("#bhu-checkbox").removeAttr("checked");
            $("#oertl-bauleitung-checkbox").removeAttr("checked");
            $("#oberbauleitung-checkbox").removeAttr("checked");
            $("#einheitspreis-checkbox").removeAttr("checked");
            $("#pauschalpreis-checkbox").removeAttr("checked");
            $("#kostendach-checkbox").removeAttr("checked");
            $("#teilprojekt").val("");
            $("#finanzierungskonto").val("");
            $("#inventarobjekt").val("");
            $("#kostenart").val("");
            $("#bemerkungen").val("");
            $("#verteiler-kopie-an-Nachtrag").val("");
            $("#" + NavigationSteps[this.currentState] + "-" + Entscheidungstyp[Classes.Decision.Entscheidungstyp]).hide();
            this.currentState = NavigationSteps.EntscheidungsWahl;
            $("#" + NavigationSteps[this.currentState]).show();
        }
    }
    Modules.Navigator = Navigator;
})(Modules || (Modules = {}));
//# sourceMappingURL=Navigator.js.map