/* ===================================================================== wd-widerruf.js — Elektronische Widerrufsfunktion (§ 356a BGB) Der Ablauf ist vom Gesetz vorgegeben, nicht frei gestaltbar: Schritt 1 Angaben (Name, Vertrag, Kontakt für die Bestätigung) Schritt 2 ZWEITE Schaltfläche "Widerruf bestätigen" Schritt 3 unverzügliche Eingangsbestätigung mit Zeitpunkt, auf dauerhaftem Datenträger Zwei bewusste Abweichungen von dem, was sonst überall im Projekt gilt: * KEIN Entwurf im lokalen Speicher. Beim Anfrageformular ist das Zwischenspeichern ein Segen — hier wäre es eine Falle: Auf einem geteilten Rechner läge dann der halb ausgefüllte Widerruf des einen im Browser des nächsten. * KEINE Absendesperre. Wer in der letzten Stunde seiner Frist wegen eines hakenden Netzes dreimal klickt, darf nicht abgewiesen werden. Das wäre ein Rechtsverlust durch eine Komfortfunktion. ===================================================================== */ (function () { "use strict"; var s = window.WD.sicher; var meldung = document.getElementById("wr-meldung"); var form = document.getElementById("wr-form"); var schritt2 = document.getElementById("wr-schritt2"); var schritt3 = document.getElementById("wr-schritt3"); var daten = null; function feldFehler(id, text) { var feld = document.getElementById(id); if (!feld) return; feld.classList.add("wd-feld--fehler"); var p = feld.querySelector(".wd-feld-fehler"); if (p) p.textContent = text; } function fehlerLeeren() { document.querySelectorAll(".wd-feld--fehler").forEach(function (f) { f.classList.remove("wd-feld--fehler"); var p = f.querySelector(".wd-feld-fehler"); if (p) p.textContent = ""; }); } function wert(id) { return (document.getElementById(id).value || "").trim(); } /* ---- Schritt 1 -> 2 ---- */ form.addEventListener("submit", function (e) { e.preventDefault(); fehlerLeeren(); window.WD.meldungAus(meldung); var name = wert("wr-name"); var vertrag = wert("wr-vertrag"); var kontakt = wert("wr-kontakt"); var ok = true; if (!name) { feldFehler("wr-feld-name", window.WD.t("wr_fehlt_name")); ok = false; } if (!vertrag) { feldFehler("wr-feld-vertrag", window.WD.t("wr_fehlt_vertrag")); ok = false; } /* Sehr einfache Prüfung mit Absicht. Eine strenge Adressprüfung weist im Zweifel eine gültige Adresse ab — und dann kommt der Widerruf gar nicht erst an. Lieber eine Bestätigung, die ins Leere läuft, als ein Widerruf, der nicht abgeschickt werden kann. */ if (!kontakt || kontakt.indexOf("@") < 1 || kontakt.indexOf(".") < 0) { feldFehler("wr-feld-kontakt", window.WD.t("wr_fehlt_kontakt")); ok = false; } if (!ok) { document.querySelector(".wd-feld--fehler input").focus(); return; } daten = { name: name, vertrag: vertrag, kontakt: kontakt, betrifft: wert("wr-betrifft"), begruendung: wert("wr-grund"), sprache: window.WD.getSprache(), }; var zeilen = [ [window.WD.t("wr_name"), daten.name], [window.WD.t("wr_vertrag"), daten.vertrag], [window.WD.t("wr_kontakt"), daten.kontakt], ]; if (daten.betrifft) zeilen.push([window.WD.t("wr_betrifft"), daten.betrifft]); if (daten.begruendung) zeilen.push([window.WD.t("wr_grund"), daten.begruendung]); document.getElementById("wr-pruef").innerHTML = zeilen.map(function (z) { return "