| Current Path : /home/juvelize/www/modules/mod_jimmo_repayment_calculator/js/ |
| Current File : /home/juvelize/www/modules/mod_jimmo_repayment_calculator/js/calculate.js |
/*
* @copyright Copyright (C) Markus Gees, Teutoburger Weg 65, 33758 Schloß Holte - Stukenbrock
*
* @module JIMMO Repayment Calculator J3
* @package Joomla 3.x
*
* @author JIMMO TOOLs Team
* @JIMMO TOOLs ist ein Projekt von NetJet UG (haftungsbeschränkt)
*
* @http://www.jimmo-tool.de
* @info@jimmo-tool.de
*
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see license.txt
*/
var mod_jimmo_js_min = 0.001;
function jr_round(x) {
var erg = Math.round(x * 100) / 100;
var stri = erg.toString();
var index = stri.indexOf('.');
if (index == -1)
stri += '.00';
else if ((index + 1) == (stri.length - 1))
stri += '0';
return (stri);
}
function jr_createField(node) {
var span = document.createElement('div');
var tx = document.createTextNode(node);
span.appendChild(tx);
return span;
}
function jr_createMultiField(arr) {
var span = document.createElement('div');
for(i = 0; i < arr.length; i++){
var div = document.createElement('div');
var tx = document.createTextNode(arr[i]);
div.appendChild(tx);
span.appendChild(div);
}
return span;
}
function jr_delete_children(node) {
while ( node.hasChildNodes() ) {
node.removeChild(node.lastChild);
}
}
function jr_showTilgungsplan(id) {
var zins = 0;
var tilg = 0;
var summe_zins = 0;
var zaehler = 0;
var aufjahrschalten = false;
var jahrr = 0;
var jahrtilg = 0;
var jahrzins = 0;
var row;
var newDiv;
var trow;
var arr;
var nominaljahreszins = window.document.getElementById('nominaljahreszins' + id).value;
var monatlichezahlung = window.document.getElementById('monatlichezahlung' + id).value;
var darlehensbetrag = window.document.getElementById('darlehensbetrag' + id).value;
if(jr_isNumeric(nominaljahreszins)){
nominaljahreszins = parseFloat(nominaljahreszins);
} else {
return;
}
if(jr_isNumeric(monatlichezahlung)){
monatlichezahlung = parseFloat(monatlichezahlung);
} else {
return;
}
if(jr_isNumeric(darlehensbetrag)){
darlehensbetrag = parseFloat(darlehensbetrag);
} else {
return;
}
var jahre = document.getElementById('jahre' + id);
for (i = 0; i < jahre.length; ++i) {
if (jahre.options[i].selected == true) {
var jahr = parseInt(jahre.options[i].value);
}
}
var monate = document.getElementById('monate' + id);
for (i = 0; i < monate.length; ++i) {
if (monate.options[i].selected == true) {
var monat = parseInt(monate.options[i].value);
}
}
var p = nominaljahreszins / 100;
var r = monatlichezahlung;
var target = window.document.getElementById('tilgplantarget' + id);
target.innerHTML = '';
var parentwidth = target.parentNode.offsetWidth;
if(parentwidth < 600){
var klasse = 'small';
} else {
var klasse = 'medium';
}
if (r <= (darlehensbetrag * p / 12)) {
target.innerHTML = mod_jimmo_js_target;
return;
}
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'jr_clear jr_header');
trow = target.appendChild(newDiv);
if(klasse != 'small') {
row = jr_createField(mod_jimmo_js_monat_jahr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(mod_jimmo_js_schuld,mod_jimmo_js_summe_restschuld);
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(mod_jimmo_js_schuld);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(mod_jimmo_js_summe_restschuld);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(mod_jimmo_js_zahlung,mod_jimmo_js_tilgung,mod_jimmo_js_zins);
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(mod_jimmo_js_zahlung);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(mod_jimmo_js_tilgung);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(mod_jimmo_js_zins);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
row = jr_createField(mod_jimmo_js_summe_zinsen);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
while (darlehensbetrag > 0) {
zins = darlehensbetrag * p / 12;
summe_zins += zins;
if (darlehensbetrag <= tilg) {
tilg = darlehensbetrag;
r = tilg + zins;
}
tilg = r - zins;
if (tilg < 0) break;
b1 = darlehensbetrag - tilg;
if(monat == 13){
monat = 1;
zaehler++;
jahr++;
}
if(zaehler > 1) {
aufjahrschalten = true;
}
if(aufjahrschalten == true){
jahrr = jahrr + jr_cleannumber(r);
jahrtilg = jahrtilg + jr_cleannumber(tilg);
jahrzins = jahrzins + jr_cleannumber(zins);
if(monat == 12 || b1 == 0){
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'jr_clear');
trow = target.appendChild(newDiv);
row = jr_createField(jahr);
row.setAttribute('class', 'jr jr_jahr jr_' + klasse);
trow.appendChild(row);
if(klasse == 'small') {
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'jr_clear');
trow = target.appendChild(newDiv);
}
if(klasse == 'small') {
arr = new Array(jr_round(darlehensbetrag), jr_round(b1));
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(jr_round(darlehensbetrag));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(b1));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(jr_round(jahrr), jr_round(jahrtilg), jr_round(jahrzins));
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(jr_round(jahrr));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(jahrtilg));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(jahrzins));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
jahrr = 0;
jahrtilg = 0;
jahrzins = 0;
row = jr_createField(jr_round(summe_zins));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
monat++;
} else {
row = jr_createField(mod_jimmo_js_monate[monat-1] + " " + jahr);
row.setAttribute('class', 'jr jr_jahr jr_' + klasse);
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'jr_clear');
trow = target.appendChild(newDiv);
trow.appendChild(row);
if(klasse == 'small') {
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'jr_clear');
trow = target.appendChild(newDiv);
}
if(klasse == 'small') {
arr = new Array(jr_round(darlehensbetrag), jr_round(b1));
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(jr_round(darlehensbetrag));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(b1));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(jr_round(r), jr_round(tilg), jr_round(zins));
row = jr_createMultiField(arr);
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
} else {
row = jr_createField(jr_round(r));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(tilg));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
row = jr_createField(jr_round(zins));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
}
row = jr_createField(jr_round(summe_zins));
row.setAttribute('class', 'jr jr_' + klasse);
trow.appendChild(row);
monat++;
}
darlehensbetrag = b1;
}
}
function jr_clrTilgungsplan(id){
window.document.getElementById('tilgplantarget' + id).innerHTML = '';
}
function jr_checkRoterrahmen(id) {
var classes = window.document.getElementsByClassName('jr_roterrahmen');
if(classes.length > 0){
window.document.getElementById('warnung' + id).innerHTML = mod_jimmo_js_target;
return true;
} else {
window.document.getElementById('warnung' + id).innerHTML = '';
return false;
}
}
function jr_format_num(element,id){
var elem = window.document.getElementById(element);
var str = elem.value.replace(",", ".");
elem.value = str;
if(!jr_isNumeric(elem.value)){
elem.setAttribute('class', 'jr_roterrahmen');
} else {
elem.removeAttribute('class');
}
jr_checkRoterrahmen(id);
}
function jr_calculateFromTilgungssatz(id){
var calc = true;
var nominaljahreszins = window.document.getElementById('nominaljahreszins' + id).value;
var darlehensbetrag = window.document.getElementById('darlehensbetrag' + id).value;
var tilgungssatz = window.document.getElementById('tilgungssatz' + id).value;
if(!jr_isNumeric(nominaljahreszins) || nominaljahreszins <= 0){
jr_setRed('nominaljahreszins' + id);
calc = false;
} else {
jr_freeRed('nominaljahreszins' + id);
}
if(!jr_isNumeric(darlehensbetrag) || darlehensbetrag <= 0){
jr_setRed('darlehensbetrag' + id);
calc = false;
} else {
jr_freeRed('darlehensbetrag' + id);
}
if(!jr_isNumeric(tilgungssatz) || tilgungssatz <= 0){
jr_setRed('tilgungssatz' + id);
calc = false;
} else {
jr_freeRed('tilgungssatz' + id);
}
if(calc) {
tilgungssatz = parseFloat(tilgungssatz);
nominaljahreszins = parseFloat(nominaljahreszins);
darlehensbetrag = parseFloat(darlehensbetrag);
window.document.getElementById('tilgungssatz' + id).removeAttribute('class');
window.document.getElementById('laufzeit' + id).removeAttribute('class');
window.document.getElementById('monatlichezahlung' + id).removeAttribute('class');
var monatlichezahlung = darlehensbetrag * (nominaljahreszins + tilgungssatz) / 100 / 12;
if(jr_isNumeric(monatlichezahlung) && monatlichezahlung > 0){
window.document.getElementById('monatlichezahlung' + id).value = jr_round(monatlichezahlung);
} else {
window.document.getElementById('monatlichezahlung' + id).value = '';
}
var jahresrate = monatlichezahlung * 12;
if(jr_isNumeric(jahresrate) && jahresrate > 0){
window.document.getElementById('jahresrate' + id).value = jr_round(jahresrate);
} else {
window.document.getElementById('jahresrate' + id).value = '';
}
var zinsfaktor = 1 + ((nominaljahreszins/12)/100);
if (Math.abs(nominaljahreszins) > mod_jimmo_js_min) {
var laufzeit = (-1) * (Math.log(1-(darlehensbetrag / monatlichezahlung) * (zinsfaktor - 1)) / Math.log(zinsfaktor)) ;
} else {
var laufzeit = darlehensbetrag / jahresrate;
}
if(jr_isNumeric(laufzeit) && laufzeit > 0){
window.document.getElementById('laufzeit' + id).value = jr_round(laufzeit/12);
window.document.getElementById('gesamtlaufzeitmonate' + id).value = jr_round(laufzeit);
} else {
window.document.getElementById('laufzeit' + id).value = '';
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
}
var gesamtzahlung = monatlichezahlung * laufzeit;
if(jr_isNumeric(gesamtzahlung) && gesamtzahlung > 0){
window.document.getElementById('gesamtzahlung' + id).value = jr_round(gesamtzahlung);
} else {
window.document.getElementById('gesamtzahlung' + id).value = '';
}
var gesamtzinsen = gesamtzahlung - darlehensbetrag;
if(jr_isNumeric(gesamtzinsen) && gesamtzinsen > 0){
window.document.getElementById('gesamtzinsen' + id).value = jr_round(gesamtzinsen);
} else {
window.document.getElementById('gesamtzinsen' + id).value = '';
}
} else {
window.document.getElementById('laufzeit' + id).value = '';
window.document.getElementById('monatlichezahlung' + id).value = '';
window.document.getElementById('gesamtzahlung' + id).value = '';
window.document.getElementById('gesamtzinsen' + id).value = '';
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
window.document.getElementById('jahresrate' + id).value = '';
}
}
function jr_calculateFromMonatlichezahlung(id){
var calc = true;
var nominaljahreszins = window.document.getElementById('nominaljahreszins' + id).value;
var darlehensbetrag = window.document.getElementById('darlehensbetrag' + id).value;
var monatlichezahlung = window.document.getElementById('monatlichezahlung' + id).value;
if(!jr_isNumeric(nominaljahreszins) || nominaljahreszins <= 0){
jr_setRed('nominaljahreszins' + id);
calc = false;
} else {
jr_freeRed('nominaljahreszins' + id);
}
if(!jr_isNumeric(darlehensbetrag) || darlehensbetrag <= 0){
jr_setRed('darlehensbetrag' + id);
calc = false;
} else {
jr_freeRed('darlehensbetrag' + id);
}
if(!jr_isNumeric(monatlichezahlung) || monatlichezahlung <= 0){
jr_setRed('monatlichezahlung' + id);
calc = false;
} else {
jr_freeRed('monatlichezahlung' + id);
}
if(calc) {
monatlichezahlung = parseFloat(monatlichezahlung);
nominaljahreszins = parseFloat(nominaljahreszins);
darlehensbetrag = parseFloat(darlehensbetrag);
window.document.getElementById('tilgungssatz' + id).removeAttribute('class');
window.document.getElementById('laufzeit' + id).removeAttribute('class');
window.document.getElementById('monatlichezahlung' + id).removeAttribute('class');
var jahresrate = monatlichezahlung * 12;
if(jr_isNumeric(jahresrate) && jahresrate > 0){
window.document.getElementById('jahresrate' + id).value = jr_round(jahresrate);
} else {
window.document.getElementById('jahresrate' + id).value = '';
}
var zinsfaktor = 1 + ((nominaljahreszins/12)/100);
if (Math.abs(nominaljahreszins) > mod_jimmo_js_min) {
var laufzeit = (-1) * (Math.log(1-(darlehensbetrag / monatlichezahlung) * (zinsfaktor - 1)) / Math.log(zinsfaktor));
}
if(jr_isNumeric(laufzeit) && laufzeit > 0){
window.document.getElementById('laufzeit' + id).value = jr_round(laufzeit/12);
window.document.getElementById('gesamtlaufzeitmonate' + id).value = jr_round(laufzeit);
} else {
window.document.getElementById('laufzeit' + id).value = '';
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
}
var gesamtzahlung = monatlichezahlung * laufzeit;
if(jr_isNumeric(gesamtzahlung) && gesamtzahlung > 0){
window.document.getElementById('gesamtzahlung' + id).value = jr_round(gesamtzahlung);
} else {
window.document.getElementById('gesamtzahlung' + id).value = '';
}
var gesamtzinsen = gesamtzahlung - darlehensbetrag;
if(jr_isNumeric(gesamtzinsen) && gesamtzinsen > 0){
window.document.getElementById('gesamtzinsen' + id).value = jr_round(gesamtzinsen);
} else {
window.document.getElementById('gesamtzinsen' + id).value = '';
}
var tilgungssatz = (monatlichezahlung * 100 * 12) / darlehensbetrag - nominaljahreszins;
if(jr_isNumeric(tilgungssatz) && tilgungssatz > 0){
window.document.getElementById('tilgungssatz' + id).value = jr_round(tilgungssatz);
} else {
window.document.getElementById('tilgungssatz' + id).value = '';
}
} else {
window.document.getElementById('laufzeit' + id).value = '';
window.document.getElementById('tilgungssatz' + id).value = '';
window.document.getElementById('gesamtzahlung' + id).value = '';
window.document.getElementById('gesamtzinsen' + id).value = '';
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
window.document.getElementById('jahresrate' + id).value = '';
}
}
function jr_calculateFromZeit(id){
var calc = true;
var darlehensbetrag = window.document.getElementById('darlehensbetrag' + id).value;
var nominaljahreszins = window.document.getElementById('nominaljahreszins' + id).value;
var laufzeit = window.document.getElementById('laufzeit' + id).value;
if(!jr_isNumeric(nominaljahreszins) || nominaljahreszins <= 0){
jr_setRed('nominaljahreszins' + id);
calc = false;
} else {
jr_freeRed('nominaljahreszins' + id);
}
if(!jr_isNumeric(darlehensbetrag) || darlehensbetrag <= 0){
jr_setRed('darlehensbetrag' + id);
calc = false;
} else {
jr_freeRed('darlehensbetrag' + id);
}
if(!jr_isNumeric(laufzeit) || laufzeit <= 0){
jr_setRed('laufzeit' + id);
calc = false;
} else {
jr_freeRed('laufzeit' + id);
}
if(calc){
laufzeit = parseFloat(laufzeit);
nominaljahreszins = parseFloat(nominaljahreszins);
darlehensbetrag = parseFloat(darlehensbetrag);
window.document.getElementById('tilgungssatz' + id).removeAttribute('class');
window.document.getElementById('laufzeit' + id).removeAttribute('class');
window.document.getElementById('monatlichezahlung' + id).removeAttribute('class');
var q = 1 + (nominaljahreszins / 12) / 100;
var monatlichezahlung = darlehensbetrag * Math.pow(q, (laufzeit * 12)) * ((q - 1)/(Math.pow(q, (laufzeit * 12)) -1));
if(jr_isNumeric(monatlichezahlung) && monatlichezahlung > 0){
window.document.getElementById('monatlichezahlung' + id).value = jr_round(monatlichezahlung);
} else {
window.document.getElementById('monatlichezahlung' + id).value = '';
}
var tilgungssatz = (monatlichezahlung * 100 * 12) / darlehensbetrag - nominaljahreszins;
if(jr_isNumeric(tilgungssatz) && tilgungssatz > 0){
window.document.getElementById('tilgungssatz' + id).value = jr_round(tilgungssatz);
} else {
window.document.getElementById('tilgungssatz' + id).value = '';
}
var jahresrate = monatlichezahlung * 12;
if(jr_isNumeric(jahresrate) && jahresrate > 0){
window.document.getElementById('jahresrate' + id).value = jr_round(jahresrate);
} else {
window.document.getElementById('jahresrate' + id).value = '';
}
var gesamtzahlung = monatlichezahlung * laufzeit * 12;
if(jr_isNumeric(gesamtzahlung) && gesamtzahlung > 0){
window.document.getElementById('gesamtzahlung' + id).value = jr_round(gesamtzahlung);
} else {
window.document.getElementById('gesamtzahlung' + id).value = '';
}
var gesamtzinsen = gesamtzahlung - darlehensbetrag;
if(jr_isNumeric(gesamtzinsen) && gesamtzinsen > 0){
window.document.getElementById('gesamtzinsen' + id).value = jr_round(gesamtzinsen);
} else {
window.document.getElementById('gesamtzinsen' + id).value = '';
}
var gesamtlaufzeitmonate = laufzeit * 12;
if(jr_isNumeric(gesamtlaufzeitmonate) && gesamtlaufzeitmonate > 0){
window.document.getElementById('gesamtlaufzeitmonate' + id).value = jr_round(gesamtlaufzeitmonate);
} else {
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
}
} else {
window.document.getElementById('tilgungssatz' + id).value = '';
window.document.getElementById('monatlichezahlung' + id).value = '';
window.document.getElementById('gesamtzahlung' + id).value = '';
window.document.getElementById('gesamtzinsen' + id).value = '';
window.document.getElementById('gesamtlaufzeitmonate' + id).value = '';
window.document.getElementById('jahresrate' + id).value = '';
}
}
function jr_cleanempty(id){
arr = new Array('jahresrate' + id,'gesamtzahlung' + id,'gesamtzinsen' + id,'gesamtlaufzeitmonate' + id);
var elements = window.document.getElementById('jimmorepaymentcalculator' + id).getElementsByTagName('input');
for (i=0; i < elements.length; i++){
elem = elements[i].value.trim();
if(elem.length == 0 && !jr_in_array(elements[i].id,arr)){
elements[i].removeAttribute('class');
}
}
}
function jr_definitelyNaN(val) {
var notanumber = isNaN(val && val !== true ? Number(val) : jr_cleannumber(val));
return notanumber;
}
function jr_in_array(item,arr) {
for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
return false;
}
function jr_calculate(id){
var calc = true;
var nominaljahreszins = window.document.getElementById('nominaljahreszins' + id).value;
var darlehensbetrag = window.document.getElementById('darlehensbetrag' + id).value;
if(!jr_isNumeric(darlehensbetrag)){
return;
}
if(!jr_isNumeric(nominaljahreszins)){
return;
}
if(calc) {
var tilgungssatz = window.document.getElementById('tilgungssatz' + id).value;
if(jr_isNumeric(nominaljahreszins)) {
jr_calculateFromTilgungssatz(id);
return;
}
var monatlichezahlung = window.document.getElementById('monatlichezahlung' + id).value;
if(jr_isNumeric(monatlichezahlung)) {
jr_calculateFromMonatlichezahlung(id);
return;
}
var laufzeit = window.document.getElementById('laufzeit' + id).value;
if(jr_isNumeric(laufzeit)) {
jr_calculateFromZeit(id);
return;
}
}
}
function jr_isNumeric(obj) {
if(!obj){
return false;
}
return obj - parseFloat(obj) >= 0;
}
function jr_cleannumber(wert) {
return parseFloat(wert);
}
function jr_setRed(id) {
window.document.getElementById(id).setAttribute('class', 'jr_roterrahmen');
}
function jr_freeRed(id) {
window.document.getElementById(id).removeAttribute('class');
}