var aktuellerTag = "04"; var aktuellerMonat = "02"; var aktuellesJahr = "2012"; var MausGedrueckt = false; var letzteCursorPos = false; var zuletztAktiv = false; var zuletztGedrueckt = false; var jetztBerechnen = false; var AjaxBeendet = true; var AjaxWarten = ""; Berechnen = new Image(); Berechnen.src = "/../bilder/icons/berechnung.gif"; /* erste Standard-Grafik */ Warten = new Image(); Warten.src = "/../bilder/icons/Warten.gif"; /* erste Highlight-Grafik */ function Bildwechsel (Bildnr, Bildobjekt) { window.document.images[Bildnr].src = Bildobjekt.src; } function Fokus(e) { if (!e) var e = window.event; // IE if (e.srcElement) var Elm = e.srcElement; else if (e.target) var Elm = e.target; //alert("Focus: "+Elm.name) HoleCursorPosition(Elm); if (!MausGedrueckt) { // Fokus bspw. durch Tabulatortaste erhalten if (zuletztAktiv && zuletztAktiv != Elm) { if ((zuletztAktiv.name == "betrag" && Elm.name == "von") || (zuletztAktiv.name == "von" && Elm.name == "bis")) { setSelectionRange(Elm, 0, 2); } else if ((zuletztAktiv.name == "satz" && Elm.name == "bis") || (zuletztAktiv.name == "bis" && Elm.name == "von")) setSelectionRange(Elm, 6, 10); } } else MausGedrueckt = false; zuletztAktiv = Elm; } function Mousedown(e) { MausGedrueckt = true; } function Mouseup(e) { if (!e) var e = window.event; // IE if (e.srcElement) { // IE var Elm = e.srcElement; } else if (e.target) { // nicht IE var Elm = e.target; } if (Elm.name == "von" || Elm.name == "bis") { HoleCursorPosition(Elm); if (letzteCursorPos <= 2) setSelectionRange(Elm, 0, 2); else if (letzteCursorPos <= 5) setSelectionRange(Elm, 3, 5); else if (letzteCursorPos > 5) setSelectionRange(Elm, 6, 10); } zuletztAktiv = Elm; } function TastenRueckgabeSperre(e) { // Opera if (!e) var e = window.event; // IE if (e.target && e.which && window.opera) { if (e.target && window.opera && (e.which == 8 || e.which == 46)) { var Elm = e.target; document.getElementById("Dummy").focus(); if (typeof e.preventDefault != "undefined") { e.preventDefault(); } } else return true; } } function TasteGedrueckt(e) { if (!e) var e = window.event; // IE if (e.srcElement) { // IE und Opera var Elm = e.srcElement; var TastenCode = e.keyCode; } else if (e.target) { // Opera und andere Browser var Elm = e.target; var TastenCode = e.which; } var TastenEingabe; var PressTastenEingabe = false; if (e.type == "keydown") { if (TastenCode == 37) TastenEingabe = "links"; else if (TastenCode == 39) TastenEingabe = "rechts"; else if (TastenCode == 38) TastenEingabe = "hoch"; else if (TastenCode == 40) TastenEingabe = "runter"; else if ((TastenCode >= 48 && TastenCode <= 57) || (TastenCode >= 96 && TastenCode <= 105)) TastenEingabe = "Zahl"; else if (TastenCode == 188 || TastenCode == 110) TastenEingabe = "Komma"; else if (TastenCode >= 112 && TastenCode <= 123) TastenEingabe = "Funktion"; else if ((TastenCode >= 17 && TastenCode <= 18) || (TastenCode == 91 || TastenCode == 93)) TastenEingabe = "Hilfstaste"; else if (TastenCode >= 33 && TastenCode <= 36) TastenEingabe = "Bildlauf"; else if (TastenCode == 8) TastenEingabe = "Backspace"; else if (TastenCode == 46) TastenEingabe = "Del"; else if (TastenCode == 32) TastenEingabe = "Space"; else if (TastenCode == 9) TastenEingabe = "Tab"; else if (TastenCode == 13) TastenEingabe = "Return"; else if (TastenCode == 16) TastenEingabe = "Shift"; } else if (window.opera) { if (TastenCode == 8) PressTastenEingabe = "Backspace"; else if (TastenCode == 46) PressTastenEingabe = "Del"; } if ((e.type == "keydown") || PressTastenEingabe) { if (e.target || e.srcElement) { var StoppeStandardReaktion = false; if (TastenEingabe != "Funktion" && !e.altKey && !e.ctrlKey) { if (Elm.name == "von" || Elm.name == "bis") { if (TastenEingabe != "Bildlauf" && TastenEingabe != "hoch" && TastenEingabe != "runter") { if (e.type == "keydown") StoppeStandardReaktion = true; else if (PressTastenEingabe) document.getElementById("Dummy").focus(); } } else if (Elm.name == "betrag" || Elm.name == "satz") { if ((TastenEingabe != "Zahl" && TastenEingabe != "Komma" && TastenEingabe != "Backspace" && TastenEingabe != "Del" && TastenEingabe != "links" && TastenEingabe != "rechts" && TastenEingabe != "Bildlauf") || (TastenEingabe == "Komma" && Elm.value.indexOf(",") != -1)) { StoppeStandardReaktion = true; } else if (TastenEingabe == "Zahl" || TastenEingabe == "Komma" || TastenEingabe == "Backspace" || TastenEingabe == "Del") { jetztBerechnen = true; } } else StoppeStandardReaktion = true; } } if (StoppeStandardReaktion) { if (typeof e.preventDefault != "undefined") e.preventDefault(); else if (e.keyCode && !e.which) e.returnValue = false; } } if (e.type == "keydown") { // Eingabe von Zahlen in Datumsfeldern if ((Elm.name == "von" || Elm.name == "bis") && TastenEingabe == "Zahl") { var Selektiert = istSelektiert(Elm); var EinfZeichen = String.fromCharCode(TastenCode); if (letzteCursorPos <= 2) { ZahlenEingabe(Elm, 0, 2, EinfZeichen, Selektiert); EingSprung(Elm, 0, 2, "Tag", "r", TastenEingabe); } else if (letzteCursorPos <= 5 && letzteCursorPos >= 3) { ZahlenEingabe(Elm, 3, 5, EinfZeichen, Selektiert); EingSprung(Elm, 3, 5, "Monat", "r", TastenEingabe); } else if (letzteCursorPos >= 6) { ZahlenEingabe(Elm, 6, 10, EinfZeichen, Selektiert); EingSprung(Elm, 6, 10, "Jahr", "r", TastenEingabe); } } else { var Richtung; if (TastenEingabe == "Backspace") { Richtung = "l"; } else if (TastenEingabe == "Tab") { if (!e.shiftKey) Richtung = "r"; else Richtung = "l"; } else if (((TastenEingabe == "rechts" || TastenEingabe == "Space") && Elm.name != "betrag" && Elm.name != "satz") || TastenEingabe == "Return") Richtung = "r"; else if (TastenEingabe == "links" && Elm.name != "betrag" && Elm.name != "satz") Richtung = "l"; if (Elm.name == "von" || Elm.name == "bis") { if (letzteCursorPos <= 2) EingSprung(Elm, 0, 2, "Tag", Richtung, TastenEingabe); else if (letzteCursorPos <= 5) EingSprung(Elm, 3, 5, "Monat", Richtung, TastenEingabe); else if (letzteCursorPos <= 10) EingSprung(Elm, 6, 10, "Jahr", Richtung, TastenEingabe); } else if (Richtung && (TastenEingabe != "Space" || Elm.type != "radio") && (TastenEingabe != "Backspace" || Elm.type != "text")) { naechsterInput(Elm, Richtung); } } zuletztGedrueckt = TastenEingabe; } } function TasteHoch(e) { if (!e) var e = window.event; // IE if (e.srcElement) { // IE var Elm = e.srcElement; var TastenCode = e.keyCode; } else if (e.target) { // nicht IE var Elm = e.target; var TastenCode = e.which; } HoleCursorPosition(Elm); GroesseAnpassen(Elm); if (jetztBerechnen) { ZinsenBerechnen(); jetztBerechnen = false; } } gedruecktZaehler = 0; function EingSprung(Elm, StartPos, EndPos, DatenTyp, Richtung, Taste) { // alert(Elm.name + "\n" + StartPos + "\n" + EndPos + "\n" + DatenTyp + "\n" + Richtung + "\n" + Taste); //gedruecktZaehler++; //window.status = gedruecktZaehler; if (Taste == "links" || Taste == "rechts" || Taste == "Tab" || Taste == "Return" || Taste == "Space" || Taste == "Backspace" || (Taste == "Zahl" && Elm.value.lastIndexOf(" ") == -1)) { if ((Taste != "Zahl" && zuletztGedrueckt == "Zahl") || (Taste == "Zahl" && zuletztGedrueckt == "Zahl")) { EingKorrektur(Elm, StartPos, EndPos, DatenTyp, Array()); } // Validitaetspruefung bei Cursor-Bewegungen nur nach vorheriger TastenEingabe, bei TastenEingabe erst nach dem zweiten (für Jahreseingaben überprüfen!!!) //window.status = StartPos; if ((Elm.name == "von" || Elm.name == "bis") && ((Richtung == "r" && StartPos >= 6) || (Richtung == "l" && StartPos <= 2))) { naechsterInput(Elm, Richtung); } else { if (Richtung == "r") { if (StartPos != Elm.value.length - 4) { if (DatenTyp == "Monat") { StartPos = StartPos + 3; EndPos = EndPos + 5; } else { StartPos = StartPos + 3; EndPos = EndPos + 3; } } } else if (Richtung == "l") { if (StartPos != 0) { if (DatenTyp == "Jahr") { StartPos = StartPos - 3; EndPos = EndPos - 5; } else { StartPos = StartPos - 3; EndPos = EndPos - 3; } } } Elm.focus(); SetzeCursorPosition(Elm, EndPos); setSelectionRange(Elm, StartPos, EndPos); } } } function EingKorrektur(Elm, StartPos, EndPos, DatenTyp, korrigiert) { var EditWert = Elm.value.substring(StartPos, EndPos); var String1 = Elm.value.substring(0, StartPos); var String2 = Elm.value.substring(EndPos, Elm.value.length); EditWert = EditWert.replace(/ /g, "0"); var MinWert; var MaxWert; // Max- und MinWert-Definitionen fuer verschiedene DatenTypen if (DatenTyp == "Tag" || DatenTyp == "Monat") MinWert = "01"; if (DatenTyp == "Tag") MaxWert = "31"; else if (DatenTyp == "Monat") MaxWert = "12"; else if (DatenTyp == "Jahr") { MinWert = "1902"; EditWertInt = Number(EditWert); if (EditWertInt < 100) { if (EditWertInt > 9) { // 2-stellige Eingabe if (Number("20" + EditWertInt) <= aktuellesJahr) EditWert = "20" + EditWertInt; else EditWert = "19" + EditWertInt; } else { // 1-stellige Eingabe if (Number("200" + EditWertInt) <= aktuellesJahr) EditWert = "200" + EditWertInt; else EditWert = "190" + EditWertInt; } } if (Number(aktuellerMonat) > 6) var MonatTmp = "12"; else if (Number(aktuellerMonat) > 12) var MonatTmp = "06"; MaxWert = 2035; } else if (DatenTyp == "kurzerMonat") MaxWert = "30"; else if (DatenTyp == "langerMonat") MaxWert = "31"; else if (DatenTyp == "Februar") { var Jahr = Number(Elm.value.substring(6, 10)); if (Jahr/100 == Math.ceil(Jahr/100)) { if (Jahr/400 == Math.ceil(Jahr/400)) MaxWert = "29"; else MaxWert = "28"; } else if (Jahr/4 == Math.ceil(Jahr/4)) MaxWert = "29"; else MaxWert = "28"; } // eigentliche Korrektur if (Number(EditWert) > Number(MaxWert)) { EditWert = MaxWert; korrigiert.push(DatenTyp); } else if (Number(EditWert) < Number(MinWert)) { EditWert = MinWert; korrigiert.push(DatenTyp); } // EINGABEKORREKTUR: Elm.value = String1 + EditWert + String2; // Ausloesen weiterer Korrekturen if (DatenTyp == "Monat") { var MonatWert = Number(EditWert); if (MonatWert == 2) EingKorrektur(Elm, 0, 2, "Februar", korrigiert); else if (MonatWert == 4 || MonatWert == 6 || MonatWert == 9 || MonatWert == 11) EingKorrektur(Elm, 0, 2, "kurzerMonat", korrigiert); else EingKorrektur(Elm, 0, 2, "langerMonat", korrigiert); return false; } else if (DatenTyp == "Jahr") { // Bei Eingabe Tag > 28 und Monat = 2 wird auf Schaltjahr ueberprueft var TagWert = Number(Elm.value.substring(0, 2)); var MonatWert = Number(Elm.value.substring(3, 5)); if (MonatWert == 2 && TagWert > 28) { EingKorrektur(Elm, 0, 2, "Februar", korrigiert); } } if (korrigiert) { // window.status = korrigiert.join(", "); // Hinweis ausgeben! } ZinsenBerechnen() } function ZahlenEingabe(Elm, StartPos, EndPos, EinfZeichen, Selektiert) { var EditWert = Elm.value.substring(StartPos, EndPos); var String1 = Elm.value.substring(0, StartPos) var String2 = Elm.value.substring(EndPos, Elm.value.length); if (Selektiert) { var LeerstellenAnz = EndPos - StartPos - 1; var Leerstellen = ""; for (var a = 0; a < LeerstellenAnz; a++) Leerstellen = Leerstellen + " "; Elm.value = String1 + Leerstellen + EinfZeichen + String2; SetzeCursorPosition(Elm, EndPos); } else { Elm.value = String1 + Elm.value.substring(StartPos+1, EndPos) + EinfZeichen + String2; SetzeCursorPosition(Elm, EndPos); } } // Hilfsfunktionen function istSelektiert(Elm) { var Selektiert; if (document.selection && document.selection.type=="Text") { // IE var rng = document.selection.createRange().text; if (rng.length > 0) Selektiert = true; else Selektiert = false; } else if (Elm.selectionStart || Elm.selectionStart == 0) { // nicht IE if (Elm.selectionStart != Elm.selectionEnd) Selektiert = true; else Selektiert = false; } return Selektiert; } function HoleCursorPosition(Elm) { var CursorPos; if (Elm.type == "text") { if (document.selection) { // IE Elm.focus (); var Sel = document.selection.createRange (); Sel.moveStart ('character', -Elm.value.length); CursorPos = Sel.text.length; } // nicht IE else if (Elm.selectionStart || Elm.selectionStart == '0') CursorPos = Elm.selectionStart; letzteCursorPos = CursorPos; } else letzteCursorPos = false; return (CursorPos); } function SetzeCursorPosition(Elm, pos) { if (Elm.setSelectionRange) { Elm.setSelectionRange(pos,pos); } else if (Elm.createTextRange) { var range = Elm.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } function getSelectionRange() { var rng=null; if(window.getSelection) { // nicht IE rng=window.getSelection(); if(rng && rng.rangeCount && rng.getRangeAt) { rng=rng.getRangeAt(0); } } else if(document.selection && document.selection.type=="Text") { // IE rng=document.selection.createRange().text; } return rng; } function setSelectionRange(input, selectionStart, selectionEnd) { if (input.setSelectionRange) { // nicht IE // input.focus(); input.setSelectionRange(selectionStart, selectionEnd); } else if (input.createTextRange) { // IE var range = input.createTextRange(); range.collapse(true); range.moveEnd('character', selectionEnd); range.moveStart('character', selectionStart); range.select(); } } function naechsterInput(Elm, Richtung) { var Form = document.forms["ZinsBerechnen"].elements; if (Form["satz"].disabled && Form["besonderer"].disabled) var tmp = 3; else var tmp = 1; for (var a = 0; a < Form.length; a++) { if (Form[a] == Elm) { if (Richtung == "r") { if (a < Form.length - tmp) Form[a+1].focus(); else Form[0].focus(); } else if (Richtung == "l") { if (a >= 1) Form[a-1].focus(); else Form[Form.length-tmp].focus(); } break; } } } var SatzVorher = ""; var BesondererVorher = 0; function ZinsenBerechnen() { if (!AjaxBeendet) { AjaxBeendet = true; xmlHttp.onreadystatechange = function () {} void xmlHttp.abort(); } var s_url = "ZinsenBerechnen.php"; var betrag = document.getElementById("ZinssatzRechnerBetrag").value; var von = document.getElementById("ZinssatzRechnerVon").value; var bis = document.getElementById("ZinssatzRechnerBis").value; document.getElementById("ZinssatzRechnerZinsertrag").innerHTML = ""; document.getElementById("ZinssatzRechnerEndbetrag").innerHTML = ""; document.getElementById("ZinssatzRechnerRechenwegInhalt").innerHTML = ""; document.getElementById("ZinssatzRechnerRechnenWarten").innerHTML = "\"Berechnung"; var satz = document.getElementById("ZinssatzRechnerSatz").value; var besonderer = document.getElementById("ZinssatzRechnerBesonderer").selectedIndex; var params = "betrag=" + betrag + "&von=" + von + "&bis=" + bis + "&satz=" + satz + "&besonderer=" + besonderer; AjaxBeendet = false; xmlHttp_init(s_url, params, 'POST', ErgebnisAusgabe); } function ErgebnisAusgabe() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { antworttext = xmlHttp.responseText; if (antworttext != "") { ergebnisse = antworttext.split("_|_"); document.getElementById("ZinssatzRechnerZinsertrag").innerHTML = ergebnisse[0]; document.getElementById("ZinssatzRechnerEndbetrag").innerHTML = ergebnisse[1]; document.getElementById("ZinssatzRechnerRechenwegInhalt").innerHTML = RechenwegAusgabe(ergebnisse); document.getElementById("ZinssatzRechnerRechnenWarten").innerHTML = "\"Berechnung"; } } } function RechenwegAusgabe(ergebnisse) { var Zinsertrag = ergebnisse[0]; var Endbetrag = ergebnisse[1]; var Rechenweg = ergebnisse[2]; var Hinweis = ergebnisse[3]; var Fokus = ergebnisse[4]; var Alert = ergebnisse[5]; var HTML = ergebnisse[6]; var RechenwegAusgabe = ergebnisse[7]; if (RechenwegAusgabe == 1) { var RechenwegArr = Rechenweg.split("-|-"); var SatzWert = document.getElementById("ZinssatzRechnerSatz").value; if (SatzWert == "") SatzWert = 0; var Methode = SatzWert + " " + document.getElementById("ZinssatzRechnerBesonderer").value; var RechenwegHtml = ""; if (HTML == 1 && Hinweis != "") RechenwegHtml += HinweisHTML(Hinweis) + "\n"; RechenwegHtml += "

Berechnungsgrundlage:

\n

\n\t\n\t\n\t\n
zu verzinsender Betrag:" + document.getElementById("ZinssatzRechnerBetrag").value + " €
Verzinsungszeitraum:" + document.getElementById("ZinssatzRechnerVon").value + " bis " + document.getElementById("ZinssatzRechnerBis").value + "
Verzinsungsmethode:" + Methode + "

\n

Berechnung:

\n\n\t\n"; var zaehler = 0; for (var a = 0; a < RechenwegArr.length; a++) { if (RechenwegArr[a] != "") { zaehler++; RechenwegArrArr = RechenwegArr[a].split("+|+"); RechenwegHtml += "\t"; for (var b = 0; b < RechenwegArrArr.length; b++) { if (b == 3) RechenwegArrArr[b] += " %"; RechenwegHtml += ""; } RechenwegHtml += "\n"; } } RechenwegHtml += "\t\n\t\n
vonbisTageZinssatzZinsertrag
Zeitraum
Zinsertrag
bisher
" + RechenwegArrArr[b] + "
Zinsertrag gesamt:" + Zinsertrag + " €
Endbetrag:" + Endbetrag + " €

\n
"; } else { if (Fokus != "") document.forms["ZinsBerechnen"][Fokus].focus(); if (HTML == 1 && Hinweis != "") var RechenwegHtml = HinweisHTML(Hinweis); } if (Hinweis != "") { Hinweis = Hinweis.replace(/
/g, "\n"); if (Alert == 1) alert(Hinweis); } return RechenwegHtml; } function HinweisHTML(Hinweis) { var HinweisHtml = "\n

Hinweise:

\n

" + Hinweis + "

"; return HinweisHtml; } function GroesseAnpassen(Elm) { if (Elm.name == "betrag") var tmp = 10; else if (Elm.name == "satz") var tmp = 3; var Groesse = Elm.value.length; if (Groesse != Elm.size && Groesse >= tmp) { Elm.size = Groesse; } else if (Groesse < tmp) { Elm.size = tmp; } } function init() { document.getElementById("ZinssatzRechnerBetrag").value = "1000,00"; document.getElementById("ZinssatzRechnerVon").value = "01.01.2011"; document.getElementById("ZinssatzRechnerBis").value = "04.02.2012"; document.getElementById("ZinssatzRechnerSatz").value = 5; document.getElementById("ZinssatzRechnerBesonderer").selectedIndex = 1; ZinsenBerechnen(); }