
//eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k N(a,b,c){3 d=6.7(a).8;3 e=6.7(b).8;3 f=0;3 g=s(e)/(v*o*o*w);3 h=s(d)/(v*o*o*w);f=(s(e)-s(d))/(v*o*o*w);4(c==O){c=""}4(c!=""){6.7(c).8=f.E(0,",",".",",")}l f.P(0)}k s(a){3 b;4(a.m(".")>0){3 b="."}4(a.m("/")>0){3 b="/"}4(a.m("-")>0){3 b="-"}3 c=a.F(b);3 d=p(c[0]);3 e=p(c[1]);3 f=p(c[2]);3 g=x y();g.G(f);g.H(e-1);g.I(d);3 h=g.J();l h}k K(a,b){3 c=x y();c.Q(a);3 d=c.R();3 e=c.S()+1;3 f=c.T();4(d<=9){z="0"+d}q{z=""+d}4(e<=9){A="0"+e}q{A=""+e}L=f+"";l z+b+A+b+L}k U(a){r=6.7(a).8;4(r==""){l n}3 b;4(r.m(".")>0){3 b="."}4(r.m("/")>0){3 b="/"}4(r.m("-")>0){3 b="-"}3 c=r.F(b);3 d=p(c[0]);3 e=p(c[1]);3 f=p(c[2]);4(!B(d)){}q{6.7(a).8="";l n}4(!B(e)){}q{6.7(a).8="";l n}4(!B(f)){}q{6.7(a).8="";l n}3 g=x y();g.G(f);g.H(e-1);g.I(d);6.7(a).8=K(g.J(),b)}k V(a,b,c,d,e){C(b);4(6.7(a).8!=""){6.7(c).8="";6.7(d).8="";6.7(e).8=""}}k W(a,b){3 c=6.7(a).8;4(c==""){l""}c=c.D(",",".");6.7(a).8=c.E(b,",",".",",")}k X(a){3 b=a;3 c=1;Y(c>-1){b=b.D(".","");c=b.m(".")}a=b.D(",",".");l a}k C(a){3 b=6.7(a);3 c=b.Z.t;4(c>=2){u(i=0;i<=c-2;i++){b.C(c-i-1)}}}k 10(a,b){3 c;c=a;4(c<0){c=c*-1}4(c<b){l 11}q{l n}}k 12(){13="";14=0;15=0;16=0;17=0;18=0;19=0;1a=0;1b=0;1c=1;1d=0;1e=n;1f=0;1g=0;1h=0;1i=0;1j=0;1k=0;1l=0;1m=0;1n=0;1o=n;1p=0;1q=1}k 1r(a,b){4(b==0){u(i=0;5;i++){a[i]=0}}M(a.t);M(a[0].t);4(b==2){u(3 i=0;i<a.t;i++){u(3 j=0;j<a[0].t;j++){a[i][j]=0}}}}',62,90,'|||var|if||document|getElementById|value||||||||||||function|return|indexOf|false|60|Number|else|string_datum|datum_in_millisec|length|for|1000|24|new|Date|String_tag|String_monat|isNaN|deleteRow|replace|fixedDigits|split|setFullYear|setMonth|setDate|getTime|millisec_in_datumsstring|String_jahr|alert|datums_differenz_tage|null|toFixed|setTime|getDate|getMonth|getFullYear|PruefeDatum|ergebnis_loeschen|eingabefelder_formatieren|tausenderpunkt_kommastellen_ersetzen|while|rows|zahl_kleiner_groesser|true|globale_variablen_zuruecksetzen|rechnungsart_ein_auszahlung|zinssatz|anzahl|einzahlung|anfangswert|zinsen|eingezahltes_kapital|bruttokapital|auszahlung|zahlungsperiode|anzahl_bewegungen_kapitalisierungen|rechnung_fertig|kum_zinsen|az_zinssatz|az_anzahl|az_auszahlung|az_anfangskapital|az_ausgezahltes_kapital|az_restkapital|az_zinsen|az_anzahl_bewegungen_kapitalisierungen|az_rechnung_fertig|az_ergebnis_berechnungsversuch|az_zahlungsperiode|array_loeschen'.split('|'),0,{}))
//
//-------Drop down menu für Speichern und löschen-----------------------------
sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
		this.className+=" sfhover";
	}
	sfEls[i].onmouseout=function() {
		this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
	}
	}
	}
	if (window.attachEvent) window.attachEvent("onload", sfHover);
//--------Ende Drop down menu------------------------------------------------------
function user_eingeloggt()
{
//var_eingeloggt enthält den Benutzernamen, wenn eingeloggt ist - in Kopfzeile abgefragt - sonst 'aus'
		if (var_eingeloggt=='aus'){alert(unescape("Diese Funktion steht nur unseren Abonnenten zur Verf%FCgung%21 Als Abonnent m%FCssen sie sich einloggen%2C um die Funktion nutzen zu k%F6nnen."));
		return 'nicht_eingeloggt';
	}
}
			
function meldung_nur_registrierte()
{
		alert(unescape("Berechnungen laden/speichern/l%F6schen k%F6nnen nur registrierte Benutzer%21"));
}

function log_in_log_out(auf_einlogseite_wechseln)
{
	if(var_eingeloggt=='aus'){
		//document.getElementById('menu_log_01').innerHTML="<a href='registrierung/index.php?var=register'>REGISTRIEREN</a>";
		document.getElementById('menu_log_01').innerHTML='<div align="left"><a href="registrierung/inc/login.php">LOGIN</a> | <a href="registrierung/index.php?var=register">REGISTRIEREN</a></div>';
		//document.getElementById('log_in_fenster').style.visibility='visible';				
	}else{
		document.getElementById('menu_log_01').innerHTML="<a href='http://www.webfinancialtools.de/registrierung/logout.php'>LOGOUT</a>";
		//document.getElementById('log_in_fenster').style.visibility='hidden';				
	}
}

function feld_deaktivieren(ID,ein_aus){
//übergebenes feld wird deaktiviert und grau
if(ein_aus=="aus"){
		document.getElementById(ID).disabled = true;
		document.getElementById(ID).value = "";
		//für IE
		if (navigator.appName.indexOf("Explorer") != -1){document.getElementById(ID).style.background = '#DCDCDC';}
	}else{
		document.getElementById(ID).disabled = false;
		if (navigator.appName.indexOf("Explorer") != -1){document.getElementById(ID).style.background = 'white';}
	}
}


function id_ein_ausblenden(ID,ein_aus){
	//übergebene id wird aus oder eingeblendet, z. Beispiel werbung
	if(ein_aus=="aus"){
		document.getElementById(ID).style.visibility = 'hidden';
	}else{
		document.getElementById(ID).style.visibility = 'visible';
	}
}

function datums_differenz_tage(ID_von_Datum, ID_bis_datum,ID_ergebnis){
var von_datum = document.getElementById(ID_von_Datum).value;
var bis_datum = document.getElementById(ID_bis_datum).value;

var tage_=0;

//var bis_datum_in_millicec=datum_in_millisec(bis_datum)/(1000*60*60*24);
//var von_datum_in_millicec=datum_in_millisec(von_datum)/(1000*60*60*24);

//alert(bis_datum_in_millicec);
//alert(von_datum_in_millicec);
tage_=(datum_in_millisec(bis_datum)-datum_in_millisec(von_datum))/(1000*60*60*24);

if (ID_ergebnis==null){ID_ergebnis="";}		//direkt sonst funktioniert die null abfrage nicht
if (ID_ergebnis!=""){document.getElementById(ID_ergebnis).value=tage_.fixedDigits(0,",",".",",");}
//if (ID_ergebnis!=""){document.getElementById(ID_ergebnis).value=tage_;}
//return tage_.toFixed(0);
return tage_.toFixed(0);
}

function datum_in_millisec(string_datum)
{
//probiere split mit '.' oder '/'
var Trennzeichen;
if(string_datum.indexOf(".")>0){Trennzeichen=".";}
if(string_datum.indexOf("/")>0){Trennzeichen="/";}
if(string_datum.indexOf("-")>0){Trennzeichen="-";}
var Woerter = string_datum.split(Trennzeichen);
var Tag=Number(Woerter[0]);
var Monat=Number(Woerter[1])-1;
var Jahr=Number(Woerter[2]);
//gmtDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
//sekunden=new Date(Date.UTC(Jahr, Monat, Tag, 0, 0, 0, 0));
var datum = new Date();
//datum.setUTCFullYear(Jahr,Monat-1,Tag);
//datum.setUTCHours(0, 0, 0, 0);

datum.setFullYear(Jahr,Monat,Tag);
datum.setHours(0, 0, 0, 0);
var sekunden=datum.getTime();
return sekunden;
}


function millisec_in_datumsstring(Millisekunden, Trennzeichen)
{
var datum = new Date();
datum.setTime(Millisekunden);
var Tag=datum.getDate();
var Monat=datum.getMonth()+1;
var Jahr=datum.getFullYear();

//Sring zusammenstellen//
if (Tag <= 9){String_tag="0" + Tag;}
else{String_tag=""+Tag;}

if (Monat <= 9){String_monat="0" + Monat;}
else{String_monat=""+Monat;}
String_jahr=Jahr+"";

return String_tag+Trennzeichen+String_monat+Trennzeichen+String_jahr;
}

function PruefeDatum(ID)
{
      string_datum = document.getElementById(ID).value;
      if (string_datum == "")
      {
      //Fehlermeldung00(ID);
      return false;
      }
      
            //probiere split mit '.' oder '/'
		var Trennzeichen;
		if(string_datum.indexOf(".")>0){Trennzeichen=".";}
		if(string_datum.indexOf("/")>0){Trennzeichen="/";}
		if(string_datum.indexOf("-")>0){Trennzeichen="-";}
		var Woerter = string_datum.split(Trennzeichen);
		
		var Tag=Number(Woerter[0]);
		var Monat=Number(Woerter[1]);
		var Jahr=Number(Woerter[2]);
		if(!isNaN(Tag)){}else{document.getElementById(ID).value="";return false;}
		if(!isNaN(Monat)){}else{document.getElementById(ID).value="";return false;}
		if(!isNaN(Jahr)){}else{document.getElementById(ID).value="";return false;}

        Monat=parseInt(Monat)-1;
		var datum = new Date();
        datum.setFullYear(Jahr, Monat, Tag);
        datum.setHours(0, 0, 0, 0);
		document.getElementById(ID).value=millisec_in_datumsstring(datum.getTime(), Trennzeichen);
}



function ergebnis_loeschen(id,tabelle,feld1,feld2,feld3){
deleteRow(tabelle);
if (document.getElementById(id).value!=""){
document.getElementById(feld1).value="";
document.getElementById(feld2).value="";
document.getElementById(feld3).value="";
}
}

function eingabefelder_formatieren(id,kommastellen)
{
var zahl=document.getElementById(id).value;
if (zahl==""){return "";}
//kommastelle durch punkt ersetzen, damit die Funktion unten die Zahl erkennt
//zahl in double umwandeln, wenn möglich
zahl=string_to_double(zahl);

//zahl=zahl.replace(",",".");
document.getElementById(id).value=zahl.fixedDigits(kommastellen,",",".",",");
}

function tausenderpunkt_kommastellen_ersetzen(zahl)
{
//--nur in europa wenn das eingabeformat komma als tausendertrennung und punkt als dezimaltrennung vorsieht, damit weiter gerechnet werden kann
var zahl_=zahl;
var idx=1;
while (idx > -1 ) {
        zahl_=zahl_.replace( ".", "");
        idx = zahl_.indexOf(".");
    }
zahl=zahl_.replace(",",".");
return zahl;
}

function deleteRow(tblName)
{
  var tbl = document.getElementById(tblName);
  if (tbl==null){return;}		//wenn die Tabelle in der Html Seite existiert - so können die Module öfter verwendet werden
  var lastRow = tbl.rows.length; // z&auml;hlt wieviel Zeilen(rows) die Tabelle hat
  if (lastRow >=2){
  for(i=0;i<=lastRow-2;i++){
  tbl.deleteRow(lastRow-i-1);
  }
  }
}
function zahl_kleiner_groesser (zahl, vergleich){
    //--Vergleicht eine zahl_intern, ob sie kleiner als Vergleich ist oder größer als die negative zahl_intern von Vergleich
    //'--gibt true zurück, wenn zutreffend, sonst false
    //'--zahl_intern positiv machen
     var zahl_intern;
     zahl_intern=zahl;
     if (zahl_intern <0){zahl_intern=zahl_intern*-1;}
     if (zahl_intern<vergleich){
         return true;
     }
     else{
     return false;}
 }
 
 //globale variablen zurücksetzen
 function globale_variablen_zuruecksetzen()
 {
rechnungsart_ein_auszahlung="";
zinssatz=0;
anzahl=0;
einzahlung=0;
anfangswert=0;
zinsen=0;
eingezahltes_kapital=0;
bruttokapital=0;
auszahlung=0;
zahlungsperiode=1;           //mit monatlich initialisieren
anzahl_bewegungen_kapitalisierungen=0;
rechnung_fertig=false;
kum_zinsen=0;

az_zinssatz=0;
az_anzahl=0;
az_auszahlung=0;
az_anfangskapital=0;
az_ausgezahltes_kapital=0;
az_restkapital=0;  
az_zinsen=0;
az_anzahl_bewegungen_kapitalisierungen=0;
az_rechnung_fertig=false;
az_ergebnis_berechnungsversuch=0;
az_zahlungsperiode=1;


 }
//Inhalte aus arrays löschen

function array_loeschen(feld,anz_dimensionen)
{
if (anz_dimensionen==0){
	for(i=0;5;i++){
	feld[i]=0;
	}
}
alert(feld.length);
alert(feld[0].length);

if (anz_dimensionen==2){
for (var i=0;i<feld.length;i++){

	for (var j=0; j<feld[0].length;j++){
	feld[i][j]=0;
	}	
}
}

}



//

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function werte_aus_tabellen_in_array_schreiben(tabelle){
	var tbl = document.getElementById(tabelle); // Spricht die Tabelle &uuml;ber die ID an
	var anz_zeilen=tbl.rows.length;
	anz_zeilen=anz_zeilen-3;					//ab hier beginnen die Daten, oben sind überschrift usw.
	var werte_array = new Array();
	var werte_string="";
    var array_elemente_zaehler=0;

	//werte in array schreiben//
	for (i=0;i<anz_zeilen;i++){
			if(tabelle.indexOf('haben')>0){
				if(document.getElementById('zinsaenderungen_zinssatz_haben_'+i)){			//nur, wenn die ID existiert
					if((document.getElementById('zinsaenderungen_zinssatz_haben_'+i).value!="") && (document.getElementById('zinsaenderungen_datum_haben_'+i).value!="")){
						werte_array[array_elemente_zaehler]=document.getElementById('zinsaenderungen_datum_haben_'+i).value+"#"+document.getElementById('zinsaenderungen_zinssatz_haben_'+i).value;
                        array_elemente_zaehler++;
					}
				}else{anz_zeilen++;}		//damit alle Zeilen durchlaufen werden
			}

	}
	//werte in array schreiben zinsänderungen soll//
	for (i=0;i<anz_zeilen;i++){
			if(tabelle.indexOf('soll')>0){
				if(document.getElementById('zinsaenderungen_zinssatz_soll_'+i)){			//nur, wenn die ID existiert
					if(document.getElementById('zinsaenderungen_zinssatz_soll_'+i).value!="" && document.getElementById('zinsaenderungen_datum_soll_'+i).value!=""){
						werte_array[array_elemente_zaehler]=document.getElementById('zinsaenderungen_datum_soll_'+i).value+"#"+document.getElementById('zinsaenderungen_zinssatz_soll_'+i).value;
                        array_elemente_zaehler++;
					}
				}else{anz_zeilen++;}		//damit alle Zeilen durchlaufen werden
			}
	}
	//werte in array schreiben zinsstaffel-bewegungen//
	for (i=0;i<anz_zeilen;i++){
			if(tabelle.indexOf('bewegung')>0){
				if(document.getElementById('bewegung_bewegung_'+i)){			//nur, wenn die ID existiert
					if(document.getElementById('bewegung_datum_'+i).value!="" && document.getElementById('bewegung_betrag_'+i).value!=""){
						werte_array[array_elemente_zaehler]=document.getElementById('bewegung_datum_'+i).value+"#"+document.getElementById('bewegung_betrag_'+i).value+"#"+document.getElementById('bewegung_bewegung_'+i).value;
                        array_elemente_zaehler++;
					}
				}else{anz_zeilen++;}		//damit alle Zeilen durchlaufen werden
			}
	}
    //werte in array schreiben nettocashflow-bewegungen//document.getElementById('tabelle_nettocashflow_'+i+'_2').value
    if(tabelle.indexOf('nettocashflow')>0){
        var zaehler_k=0;
        anz_zeilen=Number(anz_zeilen)+Number(3);        //korrektur von ganz oben, weil kein Kopzeilen in der Tabelle sind;2 Einträge in array pro Tabellenzeile
        //-----------------------------------------------------
        for (i=0;i<anz_zeilen;i++){
            if(document.getElementById('tabelle_nettocashflow_'+i+'_1')){			//nur, wenn die ID existiert
                //--Datum der bewegungen generieren'
                var Jahr_als_zahl=Number(1900)+Number(i);
                string_datum="31."+ "12." + Jahr_als_zahl;
                betrag=document.getElementById('tabelle_nettocashflow_'+i+'_3').value;
                werte_array[zaehler_k]=string_datum+"#"+betrag+"#"+"nettocashflow";
                zaehler_k++;        //zweiter Eintrag pro Tabellenzeile
                betrag=string_to_double(document.getElementById('tabelle_nettocashflow_'+i+'_2').value)*-1;       //Betrag negativ (Kosten)
                werte_array[zaehler_k]=string_datum+"#"+betrag+"#"+"0";
                zaehler_k++;
            }else{anz_zeilen++;}		//damit alle Zeilen durchlaufen werden
        }
	}
	return (werte_array);
}
function array_sortiert_in_tabelle_schreiben (array_zu_sortieren, tabelle,tabelle_neu_schreiben){
    //array_zu_sortieren ist ein zweidimensionales array
    //alert("sortieren "+array_zu_sortieren[1]); 
        for (i= 0; i < array_zu_sortieren[0].length;i++){
            array_zu_sortieren[0][i]=stringdate_to_millisec(array_zu_sortieren[0][i]); //in millisec umwandlen zur sortierung
            array_zu_sortieren[1][i]=string_to_double(array_zu_sortieren[1][i]);       //in double umrechnen zum berechnen später
            if (tabelle.indexOf("bewegung")<0){array_zu_sortieren[2][i]=0;}             //bei Beschreibung bleibt der Wert unverändert
        }
        if(tabelle_neu_schreiben=='nein'){return;}
        //Array sortieren.......................................
        hilf=0;hilf_1=0; hilf_2=0;
        hilf_string ="";     //für die Beschreibung bei der Tabelle Bewegungen
        hilf_string_01 ="";     //für die Beschreibung bei der Tabelle Bewegungen
        for(i=0;i<array_zu_sortieren[0].length;i++) {
            for(j=i+1;j < array_zu_sortieren[0].length;j++) {
            if(array_zu_sortieren[0][i] > array_zu_sortieren[0][j]) {
                hilf=array_zu_sortieren[0][j]; hilf_2=array_zu_sortieren[2][j];hilf_1=array_zu_sortieren[1][j];
                array_zu_sortieren[0][j]=array_zu_sortieren[0][i]; array_zu_sortieren[2][j]=array_zu_sortieren[2][i];array_zu_sortieren[1][j]=array_zu_sortieren[1][i];
                array_zu_sortieren[0][i]=hilf; array_zu_sortieren[2][i]=hilf_2;array_zu_sortieren[1][i]=hilf_1;
            }
            }
        }
        //sortiert in die tabellen zurückschreiben
        array_in_tabelle_schreiben(array_zu_sortieren, tabelle);

/*

        zeile_loeschen(tabelle,'alle');
        for(i=0;i<array_zu_sortieren[0].length;i++){
            if (tabelle.indexOf("soll")>0){
                if(i>0){neuer_zinssatz('zinssatzaenderungen_soll');}
                document.getElementById("zinsaenderungen_datum_soll_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("zinsaenderungen_zinssatz_soll_"+i).value=format_double_to_string(array_zu_sortieren[1][i],3);
                
            }
            if (tabelle.indexOf("haben")>0){
                if(i>0){neuer_zinssatz('zinssatzaenderungen_haben');}
                document.getElementById("zinsaenderungen_datum_haben_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("zinsaenderungen_zinssatz_haben_"+i).value=format_double_to_string(array_zu_sortieren[1][i],3);
            }
            if (tabelle.indexOf("bewegung")>0){
                if(i>0){neuer_zinssatz('tabelle_bewegungen');}
                document.getElementById("bewegung_datum_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("bewegung_betrag_"+i).value=format_double_to_string(array_zu_sortieren[1][i],2);
                document.getElementById("bewegung_bewegung_"+i).value=array_zu_sortieren[2][i];
            }
	}
	*/
}

function array_in_tabelle_schreiben(array_zu_sortieren, tabelle)
{
		
        zeile_loeschen(tabelle,'alle');
        for(i=0;i<array_zu_sortieren[0].length;i++){
            if (tabelle.indexOf("soll")>0){
                if(i>0){neuer_zinssatz('zinssatzaenderungen_soll');}
                document.getElementById("zinsaenderungen_datum_soll_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("zinsaenderungen_zinssatz_soll_"+i).value=format_double_to_string(array_zu_sortieren[1][i],3);
                
            }
            if (tabelle.indexOf("haben")>0){
                if(i>0){neuer_zinssatz('zinssatzaenderungen_haben');}
                document.getElementById("zinsaenderungen_datum_haben_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("zinsaenderungen_zinssatz_haben_"+i).value=format_double_to_string(array_zu_sortieren[1][i],3);
            }
            if (tabelle.indexOf("bewegung")>0){
                if(i>0){neuer_zinssatz('tabelle_bewegungen');}
                document.getElementById("bewegung_datum_"+i).value=millisec_to_datastring(array_zu_sortieren[0][i]);
                document.getElementById("bewegung_betrag_"+i).value=format_double_to_string(array_zu_sortieren[1][i],2);
                document.getElementById("bewegung_bewegung_"+i).value=array_zu_sortieren[2][i];
            }
	}
}
function Tag_Ende_Monat (jahr,monat){
   var naechstes_monatsende=new Date();
   monat++;            //wegen Jänner=0
   switch (monat){
        case 1:
        naechstes_monatsende.setFullYear(jahr,0,31);
        break;
        case 2:
        if (ist_schaltjahr(jahr)==true){
            naechstes_monatsende.setFullYear(jahr,1,29);
        }
        else {
            naechstes_monatsende.setFullYear(jahr,1,28);
        }
        break;
        case 3:
        naechstes_monatsende.setFullYear(jahr,2,31);
        break;
        case 4:
        naechstes_monatsende.setFullYear(jahr,3,30);
        break;
       case 5:
        naechstes_monatsende.setFullYear(jahr,4,31);
        break;
       case 6:
        naechstes_monatsende.setFullYear(jahr,5,30);
        break;
       case 7:
        naechstes_monatsende.setFullYear(jahr,6,31);
        break;
       case 8:
        naechstes_monatsende.setFullYear(jahr,7,31);
        break;
       case  9:
        naechstes_monatsende.setFullYear(jahr,8,30);
        break;
       case 10:
        naechstes_monatsende.setFullYear(jahr,9,31);
        break;
       case 11:
        naechstes_monatsende.setFullYear(jahr,10,30);
        break;
       case 12:
        naechstes_monatsende.setFullYear(jahr,11,31);
        break;
   }
   naechstes_monatsende.setHours(0, 0, 0, 0);
    return naechstes_monatsende.getTime();
}
function naechstes_Quartal(jahr,monat){
   var naechstes_quartal=new Date();
   monat++;            //wegen Jänner=0
   if (monat < 4){
     naechstes_quartal.setFullYear(jahr,2,31);
   }
    else if (monat > 3 && monat < 7){
       naechstes_quartal.setFullYear(jahr,5,30);
    }
    else if (monat >6 && monat < 10){
       naechstes_quartal.setFullYear(jahr,8,30);
    }
    else {
       naechstes_quartal.setFullYear(jahr,11,31);
    }
    naechstes_quartal.setHours(0, 0, 0, 0);
    return naechstes_quartal.getTime();
}

function naechstes_Halbjahr (jahr,monat){
   var naechstes_halbjahr=new Date();
   monat++;            //wegen Jänner=0
    if (monat < 4){
     naechstes_halbjahr.setFullYear(jahr,5,30);
   }
    else {
       naechstes_halbjahr.setFullYear(jahr,11,31);
    }
    naechstes_halbjahr.setHours(0, 0, 0, 0);
    return naechstes_halbjahr.getTime();
}
function naechstes_Jahresende (jahr,monat){
   var naechstes_jahresende=new Date();
   monat++;            //wegen Jänner=0
    naechstes_jahresende.setFullYear(jahr,11,31);
    naechstes_jahresende.setHours(0, 0, 0, 0);
    return naechstes_jahresende.getTime();
}
function ist_schaltjahr(jahr){
    if ((jahr % 4 == 0) &&
          ((jahr % 100 != 0) || (jahr % 400 == 0))) {
      return true;
    } else {
      return false;
    }
}
function zinsen_berechnen(zinssatz, kapital, zinsbeginn_zahl, zinsende_zahl, monatstage, jahrestage){
   // public int Zinsen_Haben(double zinssatz, double kapital, int monatstage, int Jahrestage){
    //Zinsbeginn und zinsende wieder in Datum umwandeln//
    //alert("zinsen berechnen"+zinssatz + " " + kapital+ " " +  zinsbeginn_zahl+ " " +  zinsende_zahl+ " " +  monatstage+ " " +  jahrestage);
    zinsen_haben=0;      //wurde so übernommen, sind natürlich auch sollzinsen
    var zinsbeginn=new Date();
    var zinsende=new Date();
    zinsbeginn.setTime(zinsbeginn_zahl);
    zinsende.setTime(zinsende_zahl);
    jahr_beginn=zinsbeginn.getFullYear();
    jahr_ende=zinsbeginn.getFullYear();
     if (monatstage == 30)
    {                       //--Monat wird mit 30 Tagen gerechnet

        days=Tage_bei_30_Tagen_im_Monat (zinsbeginn,zinsende);
        mvarTage=days;
    }
     else{/*
        tage_jahr_zinsbeginn=zinsbeginn.get(Calendar.DAY_OF_YEAR);
        tage_jahr_zinsende=zinsende.get(Calendar.DAY_OF_YEAR);
        tage_jahresdiffferenz=0;
        for (i=zinsbeginn.get(Calendar.YEAR);i<zinsende.get(Calendar.YEAR);i++){
            if (ist_schaltjahr(i)==true){
                tage_jahresdiffferenz=tage_jahresdiffferenz+366;
            }else{
                tage_jahresdiffferenz=tage_jahresdiffferenz+365;
            }
        }
        days=tage_jahr_zinsende+tage_jahresdiffferenz-tage_jahr_zinsbeginn;
        mvarTage=days;     //rundet alle Kommastellen ab
        neue Berechnung mit javascript*/
        var secprotag=1000*60*60*24;
        tage_zinsende=Math.floor(zinsende_zahl/secprotag);          //--den Rest (Stunden, Minuten Sekunden einfach wegschneiden)'
        tage_zinsbeginn=Math.floor(zinsbeginn_zahl/secprotag);
        mvarTage=tage_zinsende-tage_zinsbeginn;
     }
    if (mvarTage < 0){mvarTage = 0;}
//'--@@Bei einem Schaltjahr Jahrestage auf 366, wenn jahrestage 365
    if (jahrestage != 360){
       endejahr = zinsende.getFullYear();
       if (zinsende.getMonth==0){endejahr=endejahr-1;}                 //korrektur, weil die kapitalisierung mit 1.1. zugeschlagen wird wegen des Periodenbeginns
       if (ist_schaltjahr(endejahr)==true){jahrestage = 366;}    //(((endejahr & 3) == 0) && ( endejahr % 100 != 0 || endejahr % 400 == 0 )){
    }
       else{jahrestage = 360;
    }    
    if (g_variablen_abschlusstag_verzinsen==true && g_variablen_rechnung_fertig==true){
        mvarTage++;
    }          //bei Abschlußtag verzinsen, wird bei der letzten Bewegung gesetzt----------------

    zinsen_haben = zinssatz * kapital * mvarTage / 100 / jahrestage;
    //alert("zinsen"+zinsen_haben+"jahrestage "+jahrestage);
    return zinsen_haben;
}

 function Tage_bei_30_Tagen_im_Monat(zinsbeginn, zinsende){
    tage_ergebnis=0;
    tage1=0;
    tage2=0;
    tagesumme=0;
    tage1 = (zinsbeginn.getMonth()-1+1)*30;           // Month ist 0-Basiert, daher die Korrektur +1'--Tage im ersten Jahr
    tage2 = zinsbeginn.getDate();
    if (tage2 == 31){tage2 = 30;}
    if ((zinsbeginn.getMonth()==1)){                                           //Wenn Monatsende Februar, dann 30 Tage rechnen
        if (zinsbeginn.getDate()==29){tage2=30;}
        if (zinsbeginn.getDate()==28){
        	//wenn 28, dann bei nicht Schlatjahr auf 30, sonst auf 28 belassen
        	if (ist_schaltjahr(zinsbeginn.getFullYear())==false){tage2=30;}
        	}
    }

    tagesumme = tage1 + tage2;
    tage1 = (zinsende.getMonth()-1+1)*30;                                            //'--Tage im ersten Jahr
    tage2 = zinsende.getDate();
    if (tage2 == 31){tage2 = 30;}
    if ((zinsende.getMonth()==1)){                                           //Wenn Monatsende Februar, dann 30 Tage rechnen
        if (zinsende.getDate()==29){tage2=30;}
        //if (zinsende.getDate()==28){tage2=30;}
        if (zinsende.getDate()==28){
        	//wenn 28, dann bei nicht Schlatjahr auf 30, sonst auf 28 belassen
        	if (ist_schaltjahr(zinsende.getFullYear())==false){tage2=30;}
        	}
        
        
    }                                                       //--Tage im letztem Jahr
    tagesumme = tage1 + tage2-tagesumme;
    tage1 = (zinsende.getFullYear() - zinsbeginn.getFullYear()) * 360;
    tage_ergebnis = tage1 + tagesumme;
return tage_ergebnis;
}



function zinssaetze_einlesen(anwendung)
{
var zinssatzaenderungen_deutschland="01.01.1900#01.01.1999#01.05.1999#01.01.2000#01.05.2000#01.09.2000#01.09.2001#01.01.2002#01.07.2002#01.01.2003#01.07.2003#01.01.2004#01.07.2004#01.01.2005#01.07.2005#01.01.2006#01.07.2006#01.01.2007#01.07.2007#01.01.2008#01.07.2008#01.01.2009#01.07.2009#01.07.2011#01.12.2012";
var basiszinssaetze_deutschland="0#2,50#1,95#2,68#3,42#4,26#3,62#2,57#2,47#1,97#1,22#1,14#1,13#1,21#1,17#1,37#1,95#2,70#3,19#3,32#3,19#1,62#0,12#0,37#0,12";
var verzugszinssaetze_verbraucher_deutschland="4#4#4#4#8,42#9,26#8,26#7,57#7,47#6,97#6,22#6,14#6,13#6,21#6,17#6,37#6,95#7,70#8,19#8,32#8,19#6,62#5,12#5,37#5,12";
var verzugszinssaetze_handel_deutschland="5#5#5#5#8,42#9,26#8,62#10,57#10,47#9,97#9,22#9,14#9,13#9,21#9,17#9,37#9,95#10,70#11,19#11,32#11,19#9,62#8,12#8,37#8,12";


//$zinssatzaenderungen_oesterreich="1.1.1990#1.1.1999#4.4.1999#5.11.1999#17.3.2000#9.6.2000#6.10.2000#31.8.2001#9.11.2001#11.12.2002#9.6.2003#27.4.2006#11.10.2006#14.3.2007";
//$basiszinssaetze_oesterreich="0#2,50#2,00#2,50#3,00#3,75#4,25#3,75#2,75#2,20#1,47#1,97#2,67#3,19";
//$verzugszinssaetze_verbraucher_oesterreich="4#6,5#6#6,5#7#7,75#8,25#7,75#6,75#6,2#5,47#5,97#6,67#7,19";
//$verzugszinssaetze_handel_oesterreich="8#10,5#10#10,5#11#11,75#12,25#11,75#10,75#10,2#9,47#9,97#10,67#11,19";

//Quelle:http://www.oenb.at/isaweb/report.do?lang=DE&report=2.1//
//bzw:http://www.dbj.co.at/phps/start.php?noie=&lang=de&content=Verzugszinsentabelle.htm&navi=service

var zinssatzaenderungen_oesterreich_basiszins="1.1.1900#01.01.1999#09.04.1999#05.11.1999#17.03.2000#09.06.2000#06.10.2000#31.08.2001#18.09.2001#09.11.2001#11.12.2002#09.06.2003#27.04.2006#11.10.2006#14.03.2007#09.07.2008#15.10.2008#12.11.2008#10.12.2008#21.01.2009#11.03.2009#13.05.2009#13.07.2011#14.12.2011";
var basiszinssaetze_oesterreich="0#2,5#2#2,5#3#3,75#4,25#3,75#3,25#2,75#2,2#1,47#1,97#2,67#3,19#3,7#3,13#2,63#1,88#1,38#0,88#0,38#0,88#0,38";

//var zinssatzaenderungen_oesterreich_verzungszins="01.01.1900#01.01.1999#01.07.1999#01.01.2000#01.07.2000#01.01.2001#01.01.2002#01.01.2003#01.01.2004#01.07.2006#01.01.2007#01.07.2007#01.01.2008";
//var verzugszinssaetze_basis="0#2,5#2#2,5#3#4,25#2,75#2,2#1,47#1,97#2,67#3,19#3,19";

var zinssatzaenderungen_handel_oestereich="01.01.1990#01.08.2002#01.01.2003#01.07.2003#01.01.2007#01.07.2007#01.01.2009#01.07.2009#13.07.2011#14.12.2011";
var verzugszinssaetze_handel_oesterrech="5,00#10,75#10,2#9,47#10,67#11,19#9,88#8,38#8,88#8,38";

var zinssatzaenderungen_verbraucher_oestereich="01.01.1990"
var verzugszinssaetze_verbraucher_oesterrech="4,00";


//zuschlag +4 bei Privatgeschäften
//var zuschlag=4;
var zins_korr=0;
//var verzugszinssaetze_verbraucher_oesterreich=zinsszuschlag(verzugszinssaetze_basis, zuschlag);
//zuschlag=8;
//var verzugszinssaetze_handel_oesterreich=zinsszuschlag(verzugszinssaetze_basis, zuschlag);
//http://www.rivaluta.it/tabellatus.htm
var zinssatzaenderungen_italien="08.08.2002#01.01.2003#01.07.2003#01.01.2004#01.07.2004#01.01.2005#01.07.2005#01.01.2006#01.07.2006#01.01.2007#01.07.2007#01.01.2008#01.07.2008#01.01.2009#01.07.2009#07.04.2011#14.12.2011";
var basiszinssaetze_italien="3,35#2,85#2,10#2,02#2,01#2,09#2,05#2,25#2,83#3,58#4,07#4,20#4,10#2,5#1,00#1,25#1,00";
var verzugszinssaetze_verbraucher_italien="3,35#2,85#2,10#2,02#2,01#2,09#2,05#2,25#2,83#3,58#4,07#4,20#4,10#2,5#1,00#1,25#1,00";
var verzugszinssaetze_handel_italien="10,350#9,850#9,100#9,020#9,010#9,090#9,050#9,250#9,830#10,580#11,070#11,200#11,100#9,5#8,00#8,25#8,00";

//http://pl.wikipedia.org/wiki/Stopa_redyskontowa#Stopa_redyskonta_weksli_NBP
var zinssatzaenderungen_polen="01.01.1990#01.12.1989#01.01.1990#01.02.1990#01.03.1990#01.04.1990#01.05.1990#01.06.1990#01.07.1990#15.10.1990#21.11.1990#01.02.1991#01.05.1991#05.07.1991#02.08.1991#15.09.1991#01.07.1992#22.02.1993#13.05.1994#21.02.1995#29.05.1995#18.09.1995#08.01.1996#17.07.1996#04.08.1997#21.05.1998#17.07.1998#29.10.1998#10.12.1998#21.01.1999#18.11.1999#24.02.2000#31.08.2000#01.03.2001#29.03.2001#28.06.2001#23.08.2001#26.10.2001#29.11.2001#31.01.2002#26.04.2002#30.05.2002#27.06.2002#29.08.2002#26.09.2002#24.10.2002#28.11.2002#30.01.2003#27.02.2003#27.03.2003#25.04.2003#29.05.2003#26.06.2003#01.07.2004#29.07.2004#26.08.2004#31.03.2005#28.04.2005#30.06.2005#28.07.2005#01.09.2005#01.02.2006#01.03.2006#26.04.2007#27.06.2007#30.08.2007#29.11.2007#30.01.2008#28.02.2008#27.03.2008#26.06.2008#27.11.2008#24.12.2008#28.01.2009#26.03.2009#25.06.2009#20.01.2011#06.04.2011";
var basiszinssaetze_polen="0#26#49,5#24#16#13#9#7#28#36#48#60#51#44#39#36#32#29#28#31#27#25#23#22#24,5#23,5#21,5#20,5#18,25#15,5#19#20#21,5#20,5#19,5#18#17#15,5#14#12#11#10,5#10#9#8,5#7,75#7,5#7,25#6,75#6,5#6,25#6#5,75#6,25#6,5#7#6,5#6#5,5#5,25#4,75#4,5#4,25#4,5#4,75#5#5,25#5,5#5,75#6#6,25#6#5,25#4,5#4#3,75#4#4,25";

var zinssaetze="";
var zinssatzaenderungen="";


if (document.getElementById("land_1").selected==true){
    if(document.getElementById("zinsoption_1").selected==true){zinssaetze=basiszinssaetze_deutschland;}
    if(document.getElementById("zinsoption_2").selected==true){zinssaetze=verzugszinssaetze_verbraucher_deutschland;}
    if(document.getElementById("zinsoption_3").selected==true){zinssaetze=verzugszinssaetze_handel_deutschland;}
    zinssatzaenderungen=zinssatzaenderungen_deutschland;
}
if (document.getElementById("land_2").selected==true){
    if(document.getElementById("zinsoption_1").selected==true){
        zinssaetze=basiszinssaetze_oesterreich;
        zinssatzaenderungen=zinssatzaenderungen_oesterreich_basiszins
    }
    if(document.getElementById("zinsoption_2").selected==true){
        zinssaetze=verzugszinssaetze_verbraucher_oesterrech;
        zinssatzaenderungen=zinssatzaenderungen_verbraucher_oestereich
    }
    if(document.getElementById("zinsoption_3").selected==true){
        zinssaetze=verzugszinssaetze_handel_oesterrech;
        zinssatzaenderungen=zinssatzaenderungen_handel_oestereich;
    }

}

if (document.getElementById("land_3").selected==true){
    if(document.getElementById("zinsoption_1").selected==true){zinssaetze=basiszinssaetze_italien;}
    if(document.getElementById("zinsoption_2").selected==true){zinssaetze=verzugszinssaetze_verbraucher_italien;}
    if(document.getElementById("zinsoption_3").selected==true){zinssaetze=verzugszinssaetze_handel_italien;}
    zinssatzaenderungen=zinssatzaenderungen_italien;
}


//zinszuschlag lt. Benutzereingabe
var zinszuschlag_benutzer=string_to_double(document.getElementById("field_zinssatz_zuschlag").value);
if(isNaN(zinszuschlag_benutzer)==false){
    zinssaetze=zinsszuschlag(zinssaetze, zinszuschlag_benutzer);
}

//zinssätze in die Tabellen einfügen
zeile_loeschen('zinssatzaenderungen_haben','alle');

if(anwendung=='zinsstaffel'){zeile_loeschen('zinssatzaenderungen_soll','alle');}  //für verzinsungen kein sollzinssatz vorhanden
array_zinss=zinssaetze.split("#");
var array_zinsdatum=zinssatzaenderungen.split("#");
for (i=0;i<array_zinss.length;i++){
    if(anwendung=='zinsstaffel'){       //für verzinsungen kein sollzinssatz einlesen
    document.getElementById('zinsaenderungen_zinssatz_soll_'+i).value=array_zinss[i];
    document.getElementById('zinsaenderungen_datum_soll_'+i).value=array_zinsdatum[i];
    neuer_zinssatz('zinssatzaenderungen_soll');
    }
    document.getElementById('zinsaenderungen_zinssatz_haben_'+i).value=array_zinss[i];
    document.getElementById('zinsaenderungen_datum_haben_'+i).value=array_zinsdatum[i];
    neuer_zinssatz('zinssatzaenderungen_haben');
}
}
function zinsszuschlag(zinssaetze, zuschlag)
{
var zins_korr=0;
var zwsp="";
var array_zinss=zinssaetze.split("#");
for (i=0;i<array_zinss.length;i++){
    zins_korr=format_double_to_string(Number(string_to_double(array_zinss[i]))+Number(zuschlag),2);
    zwsp=zwsp + "#" + zins_korr;
}
//erstes # löschen-----------------------------------
zwsp=zwsp.replace("#","");
return zwsp;
}

function tabelle_drucken(tabellenid)
{
		//tabelle als text übergeben, das ist der innerHTML des div tags, in dem sich die Tabelle befindet//
		var content = document.getElementById(tabellenid).innerHTML;
		var teilstring="";
		var pos = content.indexOf("bgcolor");
		while(pos>0){
			pos = content.indexOf("bgcolor");
			teilstring = content.substring(pos, pos+17);	
			content=content.replace(teilstring,"");		//eventuelle doppelte Anführungzeichen ersetzen
			pos = content.indexOf("bgcolor");
		}
		var content = document.getElementById(tabellenid).innerHTML;
		content=content.replace(/\"/g,"@@@");		//doppelte Anführungzeichen ersetzen, stören bei der übertragung, werden im Zielfenster wieder zurückgetauscht
		document.forms['Formdrucken'].elements[0].value=content;
		//document.location.href = 'druckfester_tabellen.html?tabelle='+content;
}
function updateDOMinnerHTML(doc) {
//dom aktualisieren, sonst funktioniert die tabelle_drucken funktion nicht
        try {
    var l_i=doc.getElementsByTagName('input');
        var l_s=doc.getElementsByTagName('select');
        var l_t=doc.getElementsByTagName('textarea');
        var l_field_sets=Array(l_i,l_s,l_t);
        var l_set, l_input, l_count=0, l_sel;
        for(var x=0;x<l_field_sets.length;x++) {
            l_set=l_field_sets[x];
            for(var y=0;y<l_set.length;y++) {
                l_input=l_set[y];
                ++l_count;
                    if (l_input.type=="select-one") {
                        l_sel=l_input.selectedIndex;
                        for (var i=0; i<l_input.options.length; i++) { // remove all selected
                                     l_input.options[i].removeAttribute("selected");
                                l_input.options[i].selected=false;
                        }
                        l_input.options[l_sel].setAttribute("selected","selected");
                        l_input.options[l_sel].selected=true;
                        //alert(l_input.options[l_sel].value+' '+l_input.options[l_sel].text);
                    } else if (l_input.type=="text") l_input.setAttribute("value",l_input.value);
                     else if (l_input.type=="textarea" || l_input.type=="hidden") l_input.setAttribute("value",l_input.value);
                     else if (l_input.type=="checkbox" || l_input.type=="radio") {
                         if (l_input.checked) l_input.setAttribute("checked","checked");
                         else l_input.removeAttribute("checked");
                    } else ;//alert('updateDOMinnerHTML cannot update field type '+l_input.type);
            }
        }
        } catch(e) { alert(e); }
}


