/*************************************************/ /* Privatkredit Rechner */ /* Web Production - BGTW1 RP */ /* Last Changes: 17.01.2003 */ /*************************************************/ //HINWEISE: gross E bedeutet Eingabe durch Kunden //z.B. kreditbetragE /* veränderbare Variablen */ var intMonate = 1; //Ratenschritte var minDuration = 6; //Kürzest mögl. Laufzeit var maxDuration = 60; //Längste mögl. Laufzeit var minAmount = 500; //Kleinst mögl. Kreditbetrag var maxAmount = 120000; //Grösst mögl. Kreditbetrag var startLink = "prk_formular.jsp"; //Link auf Formularseite ohne Anhang jahresZins = 11.9; //Zins1, bei Zins-Änderung hier anpassen /* Fixe Variablen */ var kosten = null; var rate = null; var sprache = ""; /* Daten einlesen, Daten ausgeben, Hauptfunktion */ function checkInput(formular) { document.formular.kreditbetragE.value = getLayoutTwoPos(document.formular.kreditbetragE.value); document.formular.monatsratenE.value = getLayout(document.formular.monatsratenE.value); } function calculate(formular) { var kreditbetrag = document.formular.kreditbetragE.value; var monatsraten = document.formular.monatsratenE.value; if (!checkAmount(kreditbetrag)) { showAlert3(); document.formular.kreditbetragE.focus(); } if (!checkDuration(monatsraten)) { showAlert4(); document.formular.monatsratenE.focus(); } if ((checkAmount(kreditbetrag))&&(checkDuration(monatsraten))) { document.formular.kreditbetrag.value = getLayoutTwoPos(kreditbetrag); document.formular.monatsraten.value = monatsraten; rate = getRate(kreditbetrag,monatsraten); kosten = getKosten(kreditbetrag,monatsraten,rate); document.formular.kosten.value = getLayoutTwoPos(getRoundTwoPos(kosten)); document.formular.total.value = getLayoutTwoPos(getRoundTwoPos(rate*monatsraten)); document.formular.ratenhoehe.value = getLayoutTwoPos(getRoundTwoPos(rate)); } } /* Bestimmt Link und zu übergebende Elemente */ function getLink(kreditVariante) { var link1 = (document.formular.kreditbetrag.value == "") ? "kreditbetrag=null" : "betrag="+document.formular.kreditbetrag.value; var link2 = (document.formular.kreditbetrag.value == "") ? "monatsraten=null" : "rate="+document.formular.monatsraten.value; var link3 = (document.formular.kreditbetrag.value == "") ? "ratenhoehe=null" : "anzrate="+document.formular.ratenhoehe.value; if (kreditVariante == jahresZins) { return startLink+"?"+link1+"&"+link2+"&"+link3; } } /* Bestimmt Sprache */ function setLanguage(spracheS) { sprache = spracheS; } /* Bestimmt Layout für KREDITBETRAGe */ function getLayoutTwoPos(result) { if (result != null) { if (!checkResult(result)) { showAlert1(); return "0.00"; } if (result.toString().indexOf(".") >= 0) { var laenge = result.toString().substring(result.toString().indexOf(".")+1,result.toString().length); if (laenge.length < 1) { return getNullBefore(result.toString())+"00"; } if (laenge.length < 2) { return getNullBefore(result.toString()+"0"); } else { return getNullBefore(result.toString()); } } else { return getNullBefore(result.toString()+".00"); } } else { return ""; } } /* Setzte 0 vor Punkt (0.) - wenn nur Punkt vorhanden */ function getNullBefore(result) { var laenge2 = result.substring(0,result.indexOf(".")); if (laenge2.length < 1) { return "0"+result; } else { return result; } } /* Bestimmt Layout für MONATSRATENe */ function getLayout(result) { if (result != null) { if (!checkResult(result)) { showAlert1(); return ""; } if (result.toString().indexOf(".") >= 0) { showAlert1(); document.formular.monatsratenE.focus(); return ""; } else { return result.toString(); } } else { return ""; } } /* Check auf erlaubte Zeichen */ function checkResult(result) { var zeichen_ok = true; var akt_zeichen_pos = 0; var akt_zeichen = ""; var erlaubte_zeichen = ".0123456789"; while (zeichen_ok && (akt_zeichen_pos < result.length)) { akt_zeichen = result.charAt(akt_zeichen_pos); zeichen_ok = (erlaubte_zeichen.indexOf(akt_zeichen) != -1); akt_zeichen_pos++; } if(! zeichen_ok) { return false;} return true; } function checkAmount(result) { if ((result > maxAmount)||(result < minAmount)) { return false; } return true; } function checkDuration(result) { if ((result > maxDuration)||(result < minDuration)) { return false; } return true; } /* Diverse Alerts werden hier ausgegeben */ function showAlert1() { if (sprache == "/de/") { alert("Fehlerhafte Eingabe:\nBuchstaben oder andere nicht erlaubte Zeichen vorhanden.") } if (sprache == "/fr/") { alert("Entrée erronée:\nl'entrée comporte des lettres ou d'autres signes non admis.") } if (sprache == "/it/") { alert("Introduzione errata:\nrisultano lettere o segni non consentiti.") } if (sprache == "/en/") { alert("Incorrect entry:\nincludes letters or other illegal characters.") } } function showAlert3() { if (sprache == "/de/") { alert("Fehlerhafte Eingabe:\nDer Kreditbetrag muss mindestens "+minAmount+".- CHF\nund höchsten "+maxAmount+".- CHF betragen.") } if (sprache == "/fr/") { alert("Entrée erronée:\nle montant du crédit doit s'élever à "+minAmount+" CHF\nau min. et à "+maxAmount+" CHF au max.") } if (sprache == "/it/") { alert("Introduzione errata:\nl'ammontare del credito deve corrispondere come minimo a CHF "+minAmount+".-- CHF\ne al massimo a CHF "+maxAmount+".--.") } if (sprache == "/en/") { alert("Incorrect entry:\nthe loan sum must be a minimum of CHF "+minAmount+"\nand a maximum of CHF "+maxAmount+".") } } function showAlert4() { if (sprache == "/de/") { alert("Fehlerhafte Eingabe:\nDie Anzahl Monatsraten müssen mindestens "+minDuration+"\nund höchsten "+maxDuration+" Monate betragen.") } if (sprache == "/fr/") { alert("Entrée erronée:\nle nombre des mensualités doit être de "+minDuration+"\nau min. et de "+maxDuration+" au max.") } if (sprache == "/it/") { alert("Introduzione errata:\nil numero delle rate mensili deve essere come minimo "+minDuration+"\ne al massimo "+maxDuration+".") } if (sprache == "/en/") { alert("Incorrect entry:\nthe number of monthly instalments must be at least "+minDuration+"\nand at most "+maxDuration+".") } } /* Rundet auf zwei oder vier Stellen genau nach dem Komma */ function getRoundFourPos(roundValue) { return parseInt(roundValue*1000)/1000; } function getRoundTwoPos(roundValue) { var valueCompare1 = roundValue*1000 - parseInt(roundValue)*1000; var valueCompare2 = parseInt(valueCompare1) - parseInt(valueCompare1/10)*10; var valueCompare3 = ((parseInt(valueCompare1) - parseInt(valueCompare1/100)*100) - valueCompare2)/10; if (valueCompare2 >= 5) { if (valueCompare3 >= 7) { return getroundValue1(roundValue); } if (valueCompare3 >= 5) { return getroundValue2(roundValue); } if (valueCompare3 >= 2) { return getroundValue3(roundValue); } return getroundValue3(roundValue); } else { if (valueCompare3 >= 7) { return getroundValue2(roundValue); } if (valueCompare3 >= 5) { return getroundValue2(roundValue); } if (valueCompare3 >= 2) { return getroundValue3(roundValue); } return getroundValue3(roundValue); } return getroundValue3(roundValue); } function getroundValue1(roundValue) { return (parseInt(roundValue*10)+1)/10; } function getroundValue2(roundValue) { return (parseInt(roundValue*10)+0.5)/10; } function getroundValue3(roundValue) { return (parseInt(roundValue*10))/10; } /* Rechenfunktionen für RATE */ function getRate(kreditbetrag, monatsraten, jahresZins) { return getRoundTwoPos((kreditbetrag * getFaktor1(monatsraten) * getFaktor2(null))/getFaktor3(monatsraten)); } function getFaktor1(monatsraten) { return Math.pow(getAbzinsfaktor(null),monatsraten); } function getFaktor2(monatsraten) { return getAbzinsfaktor(null)-1; } function getFaktor3(monatsraten) { return (Math.pow(getAbzinsfaktor(null),monatsraten)-1); } function getAbzinsfaktor() { return 1+(getKokzins()/1200); } function getKokzins() { return getRoundFourPos((Math.pow(1+(jahresZins/100),1/12*intMonate)-1)*100*(12/intMonate)); } /* Rechenfunktionen für KREDITBETRAG */ function getKosten(kreditbetrag, monatsraten,rate) { return getRoundTwoPos((monatsraten * rate) - kreditbetrag); }