Your IP : 216.73.216.240


Current Path : /home/j/u/v/juvelize/www/modules/mod_jimmo_loan_budget_calculator/js/
Upload File :
Current File : /home/j/u/v/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;
}