| Current Path : /home/juvelize/www/modules/mod_jimmo_loan_budget_calculator/js/ |
| Current File : /home/juvelize/www/modules/mod_jimmo_loan_budget_calculator/js/calculate.js |
/*
* @copyright Copyright (C) Markus Gees, Teutoburger Weg 65, 33758 Schloß Holte - Stukenbrock
*
* @module JIMMO Loan Budget 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
*/
function lb_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 lb_createField(node) {
var span = document.createElement('div');
var tx = document.createTextNode(node);
span.appendChild(tx);
return span;
}
function lb_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 lb_delete_children(node) {
while ( node.hasChildNodes() ) {
node.removeChild(node.lastChild);
}
}
function lb_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 investitionssummeohnenk = window.document.getElementById('investitionssummeohnenk' + id).value;
var eigenkapital = window.document.getElementById('eigenkapital' + id).value;
if(lb_isNumeric(nominaljahreszins)){
nominaljahreszins = parseFloat(nominaljahreszins);
} else {
return;
}
if(lb_isNumeric(monatlichezahlung)){
monatlichezahlung = parseFloat(monatlichezahlung);
} else {
return;
}
if(lb_isNumeric(investitionssummeohnenk)){
investitionssummeohnenk = parseFloat(investitionssummeohnenk);
} else {
return;
}
if(lb_isNumeric(eigenkapital)){
eigenkapital = parseFloat(eigenkapital);
} else {
return;
}
darlehensbetrag = investitionssummeohnenk - eigenkapital;
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_lb_target;
return;
}
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'lb_clear lb_header');
trow = target.appendChild(newDiv);
if(klasse != 'small') {
row = lb_createField(mod_jimmo_lb_monat_jahr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(mod_jimmo_lb_schuld,mod_jimmo_lb_summe_restschuld);
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(mod_jimmo_lb_schuld);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(mod_jimmo_lb_summe_restschuld);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(mod_jimmo_lb_zahlung,mod_jimmo_lb_tilgung,mod_jimmo_lb_zins);
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(mod_jimmo_lb_zahlung);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(mod_jimmo_lb_tilgung);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(mod_jimmo_lb_zins);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
row = lb_createField(mod_jimmo_lb_summe_zinsen);
row.setAttribute('class', 'lb lb_' + 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 + r;
jahrtilg = jahrtilg + tilg;
jahrzins = jahrzins + zins;
if(monat == 12 || b1 == 0){
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'lb_clear');
trow = target.appendChild(newDiv);
row = lb_createField(jahr);
row.setAttribute('class', 'lb lb_jahr lb_' + klasse);
trow.appendChild(row);
if(klasse == 'small') {
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'lb_clear');
trow = target.appendChild(newDiv);
}
if(klasse == 'small') {
arr = new Array(lb_round(darlehensbetrag), lb_round(b1));
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(lb_round(darlehensbetrag));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(b1));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(lb_round(jahrr), lb_round(jahrtilg), lb_round(jahrzins));
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(lb_round(jahrr));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(jahrtilg));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(jahrzins));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
jahrr = 0;
jahrtilg = 0;
jahrzins = 0;
row = lb_createField(lb_round(summe_zins));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
monat++;
} else {
row = lb_createField(mod_jimmo_lb_monate[monat-1] + " " + jahr);
row.setAttribute('class', 'lb lb_jahr lb_' + klasse);
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'lb_clear');
trow = target.appendChild(newDiv);
trow.appendChild(row);
if(klasse == 'small') {
newDiv = document.createElement('div');
newDiv.setAttribute('class', 'lb_clear');
trow = target.appendChild(newDiv);
}
if(klasse == 'small') {
arr = new Array(lb_round(darlehensbetrag), lb_round(b1));
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(lb_round(darlehensbetrag));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(b1));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
if(klasse == 'small') {
arr = new Array(lb_round(r), lb_round(tilg), lb_round(zins));
row = lb_createMultiField(arr);
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
} else {
row = lb_createField(lb_round(r));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(tilg));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
row = lb_createField(lb_round(zins));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
}
row = lb_createField(lb_round(summe_zins));
row.setAttribute('class', 'lb lb_' + klasse);
trow.appendChild(row);
monat++;
}
darlehensbetrag = b1;
}
}
function lb_clrTilgungsplan(id){
window.document.getElementById('tilgplantarget' + id).innerHTML = '';
}
function lb_checkRoterrahmen(id) {
var classes = window.document.getElementsByClassName('lb_roterrahmen');
if(classes.length > 0){
window.document.getElementById('warnung' + id).innerHTML = mod_jimmo_lb_target;
return true;
} else {
window.document.getElementById('warnung' + id).innerHTML = '';
return false;
}
}
function lb_format_num(element,id){
var elem = window.document.getElementById(element);
var str = elem.value.replace(",", ".");
elem.value = str;
if(!lb_isNumeric(str)){
elem.setAttribute('class', 'lb_roterrahmen');
} else {
elem.removeAttribute('class');
}
lb_checkRoterrahmen(id);
}
function lb_cleanempty(id){
arr = new Array('monatlichezahlung' + id,'darlehensbetrag' + id,'investitionssummeohnenk' + id);
var elements = window.document.getElementById('jimmoloanbudgetcalculator' + id).getElementsByTagName('input');
for (i=0; i < elements.length; i++){
elem = elements[i].value.trim();
if(elem.length == 0 && !lb_in_array(elements[i].id,arr)){
elements[i].removeAttribute('class');
}
}
}
function lb_in_array(item,arr) {
for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
return false;
}
function lb_calculate(id){
lb_calculateBetrag(id);
lb_calculateInvestitionssummeohnenk(id);
lb_calculateImmopreis(id);
}
function lb_calculateBetrag(id){
var calc = true;
var monatlicherbetragbrutto = 0;
monatlicherbetrag = window.document.getElementById('monatlicherbetragbrutto' + id).value;
if(!lb_isNumeric(monatlicherbetrag) || monatlicherbetrag <= 0){
calc = false;
} else {
monatlicherbetragbrutto += parseFloat(monatlicherbetrag);
}
var bewirtschaftungskosten = 0;
bewirtschaftung = window.document.getElementById('bewirtschaftungskosten' + id).value;
if(!lb_isNumeric(bewirtschaftung) || bewirtschaftung <= 0){
calc = false;
} else {
bewirtschaftungskosten += parseFloat(bewirtschaftung);
}
if(calc) {
window.document.getElementById('monatlichezahlung' + id).value = lb_round(monatlicherbetragbrutto - bewirtschaftungskosten);
} else {
window.document.getElementById('monatlichezahlung' + id).value = '';
}
}
function lb_calculateInvestitionssummeohnenk(id){
var calc = true;
var nominaljahreszins = 0;
z = window.document.getElementById('nominaljahreszins' + id).value;
if(!lb_isNumeric(z) || z < 0){
calc = false;
} else {
nominaljahreszins += parseFloat(z);
}
var tilgungssatz = 0;
t = window.document.getElementById('tilgungssatz' + id).value;
if(!lb_isNumeric(t) || t < 0){
calc = false;
} else {
tilgungssatz += parseFloat(t);
}
var eigenkapital = 0;
e = window.document.getElementById('eigenkapital' + id).value;
if(!lb_isNumeric(e) || e < 0){
if(e != "") {
calc = false;
}
} else {
eigenkapital += parseFloat(e);
}
var monatlicherbetragnetto = 0;
mn = window.document.getElementById('monatlichezahlung' + id).value;
if(!lb_isNumeric(mn) || mn <= 0){
calc = false;
} else {
monatlicherbetragnetto += parseFloat(mn);
}
if(calc){
var zt = nominaljahreszins / 100 + tilgungssatz / 100;
if(zt > 0){
var summe = lb_round((monatlicherbetragnetto * 12) / (nominaljahreszins / 100 + tilgungssatz / 100) + parseFloat(eigenkapital));
window.document.getElementById('investitionssummeohnenk' + id).value = summe;
} else {
window.document.getElementById('investitionssummeohnenk' + id).value = '';
window.document.getElementById('darlehensbetrag' + id).value = '';
}
} else {
window.document.getElementById('investitionssummeohnenk' + id).value = '';
window.document.getElementById('darlehensbetrag' + id).value = '';
}
}
function lb_calculateImmopreis(id){
var calc = true;
var investitionssummeohnenk = 0;
iok = window.document.getElementById('investitionssummeohnenk' + id).value;
if(!lb_isNumeric(iok) || iok <= 0){
calc = false;
} else {
investitionssummeohnenk += parseFloat(iok);
}
var maklerkosten = 0;
m = window.document.getElementById('maklerkosten' + id).value;
if(!lb_isNumeric(m) || m <= 0){
if(m != "") {
calc = false;
}
} else {
maklerkosten += parseFloat(m);
}
var notarkosten = 0;
n = window.document.getElementById('notarkosten' + id).value;
if(!lb_isNumeric(n) || n <= 0){
if(n != "") {
calc = false;
}
} else {
notarkosten += parseFloat(n);
}
var grunderwerbssteuer = 0;
g = window.document.getElementById('grunderwerbssteuer' + id).value;
if(!lb_isNumeric(g) || g <= 0){
if(g != "") {
calc = false;
}
} else {
grunderwerbssteuer += parseFloat(g);
}
if(calc) {
var kostensatz = (100 + maklerkosten + notarkosten + grunderwerbssteuer) / 100;
window.document.getElementById('darlehensbetrag' + id).value = lb_round(investitionssummeohnenk / kostensatz );
} else {
window.document.getElementById('darlehensbetrag' + id).value = '';
}
}
function lb_isNumeric(obj) {
if(!obj){
return false;
}
return obj - parseFloat(obj) >= 0;
}