
<!-- Its a 1.0  Browser
        var JavaVersion = 10; // Anwender benutzt einen JS1.0 Browser
// -->



<!-- Its a 1.1 Browser
        var JavaVersion = 11; // Anwender benutzt einen JS1.1 Browser
// -->




// get the Tilgungsplanstuff 


// ################## WriteTilgungsplan  #########################
 function WriteTilgungsplan(mTilgungsObj) {
 //alert("zeigt writetilgungsplan");
 var mRechtshinweis = "Alle Angaben sind nicht verbindlich und ohne Gew&auml;hr.";
  
 mWindow = window.open("", "Tilgungsplan", "toolbar=0,location=0,directories=0,scrollbars=1,status=0,menubar=1,resizable=1,width=640,height=600");
 mWindow.document.open();
 mWindow.focus();
  	       
 mWindow.document.write('<html>');
 
 mWindow.document.write('<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">');
 mWindow.document.write('<meta http-equiv="pragma" content="no-cache"><meta http-equiv="content-language" content="de">');
 mWindow.document.write('<meta http-equiv="expires" content="0">');
 mWindow.document.write('<title>TAIMFIVE  Tilgungsplan</title></head>');
 
 mWindow.document.write('<link rel="stylesheet" href="plan.css">');
 
 mWindow.document.write('<body bottommargin=0 topmargin=0 leftmargin=0 rightmargin=0>');
 mWindow.document.write('<center><p></center>');
 mWindow.document.write('<table border="0" cellspacing="1" cellpadding="2" width="600">');

 mWindow.document.write('<tr>'); 
 mWindow.document.write('<td>&nbsp;</td>'); 

 
 mWindow.document.write('</tr>'); 
 mWindow.document.write('<tr>');  
 mWindow.document.write('<td align="middle" colspan="3" class="subdivision"><font class="textws">Eckdaten Ihres Darlehens:</font></td>'); 
 mWindow.document.write('</tr>'); 
 
 // #### gDarlehensbetrag ###
 mWindow.document.write('<tr class="description">');  
 mWindow.document.write('<td align="right" width="350" class="input2">Darlehensbetrag:</td>'); 
 mWindow.document.write('<td align="right" width="80" class="input">' + KonvertFloatToString(mTilgungsObj.enddarlehen)  + '&nbsp;' + gCurrency + '</td>');
 mWindow.document.write('<td width="180" class="input">&nbsp;</td>'); 
 mWindow.document.write('</tr>'); 


// #### mAuszahlungsDateString ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Auszahlungsdatum:</td>');
mWindow.document.write('<td align="right" class="input">' + mTilgungsObj.auszahlungsDateString  +  '</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### Rate pro Periode ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Rate pro Periode:</td>');
mWindow.document.write('<td class="input" align="right">' + mTilgungsObj.rate  +  '&nbsp;' + mTilgungsObj.currency + '</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### mNominalzinssatz ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Nominal-Zinssatz:</td>');
mWindow.document.write('<td class="input" align="right">' + KonvertFloatToString(mTilgungsObj.nominalzinssatz)  +  ' %</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### mHaeufigkeit ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Zahlungen pro Jahr:</td>');
mWindow.document.write('<td class="input" align="right">' + mTilgungsObj.zahlungenprojahr  +  ' </td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### mAnfangstilgungssatz ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Anf&auml;ngliche&nbsp;Tilgung&nbsp;in&nbsp;%&nbsp;p.a.:</td>');
mWindow.document.write('<td align="right" class="input">' + KonvertFloatToString(mTilgungsObj.anfangstilgungssatz)  +  ' %</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### mLastGetilgterBetrag ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Getilgte Summe:</td>');
mWindow.document.write('<td align="right" class="input">' + KonvertFloatToString(mTilgungsObj.lastGetilgterBetrag)  + '&nbsp;' + mTilgungsObj.currency + '</td>');
mWindow.document.write('<td class="input">&nbsp;bis zum ' + mTilgungsObj.lastTilgungsString2 + '</td>');
mWindow.document.write('</tr>');


// #### gLaufzeitJahre ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Laufzeit der Zinsbindung:</td>');
mWindow.document.write('<td align="right" class="input">' + mTilgungsObj.laufzeitJahre + ' Jahre</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');


// #### Restschuld nach Laufzeit ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Restschuld nach Laufzeit der Zinsbindung:</td>');
mWindow.document.write('<td align="right" class="input">' + KonvertFloatToString(mTilgungsObj.lastRestschuld)  + '&nbsp;' + mTilgungsObj.currency + '</td>');
mWindow.document.write('<td class="input">&nbsp;</td>');
mWindow.document.write('</tr>');

// depending on tilgungssatz = 0 we display this or not
if (mTilgungsObj.anfangstilgungssatz != 0) {
// #### Darlehensdauer bei gleichbleibendem Zins ###
mWindow.document.write('<tr class="description">');
mWindow.document.write('<td align="right" class="input2">Darlehensdauer bei gleichbleibendem Zins:</td>');
mWindow.document.write('<td align="right" class="input">' + mTilgungsObj.finalTilgungsDate   + '</td>');
mWindow.document.write('<td class="input">&nbsp;' + mTilgungsObj.finalTilgungsLengthString + '</td>');
mWindow.document.write('</tr>'); 
}

// #### Tilgunsgplan HEADER ###
 mWindow.document.write('</table>');
 mWindow.document.write('<table border="0" cellspacing="1" cellpadding="2" width="600">'); 
 mWindow.document.write('<tr height="25">');
 mWindow.document.write('<td width="115" align="right" class="subdivision"><font class="textws">Monatsende:</font> </td>');
 mWindow.document.write('<td width="115" align="right" class="subdivision"><font class="textws">Ratenzahlung:&nbsp;' + mTilgungsObj.currency + '</font></td>');
 mWindow.document.write('<td width="115" align="right" class="subdivision"><font class="textws">davon&nbsp;Zinsen:&nbsp;' + mTilgungsObj.currency + '</font></td>');
 mWindow.document.write('<td width="115" align="right" class="subdivision"><font class="textws">davon&nbsp;Tilgung:&nbsp;' + mTilgungsObj.currency + '</font></td>');
 mWindow.document.write('<td width="115" align="right" class="subdivision"><font class="textws">Restschuld:&nbsp;' + mTilgungsObj.currency + '</font></td>');
 mWindow.document.write('</tr>');
 mWindow.document.write('</table>');		
 		
 var mLight = false;			
 for(i = 0; i < mDataBase.length; i++){
      var mTilgungsObject = mDataBase[i];
      var mRatenzahlung = KonvertFloatToString(mTilgungsObject.ratenzahlung);
      var mZinsen = KonvertFloatToString(mTilgungsObject.zinsen);
      var mTilgung = KonvertFloatToString(mTilgungsObject.tilgung);
      var mRestSchuld = KonvertFloatToString(mTilgungsObject.restschuld);
      var mDatum = mTilgungsObject.date;
      // ### Toggle row color ###
      if (mLight == true) {
      	var mColor = "class='toggleDark'";
      	var mLight = false;
      } else {
      	var mColor = "class='toggleLight'";
      	var mLight = true;
      }
        mWindow.document.write('<table border="0" cellspacing="1" cellpadding="2" width="600">');
        
        mWindow.document.write('<tr>');
        mWindow.document.write('<td width="115" ' + mColor + ' align="right">' + mDatum + '&nbsp;</td>');
        mWindow.document.write('<td width="115" ' + mColor + ' align="right">' + mRatenzahlung + '&nbsp;</td>');
 		mWindow.document.write('<td width="115" ' + mColor + ' align="right">'  + mZinsen + '&nbsp;</td>');
 		mWindow.document.write('<td width="115" ' + mColor + ' align="right">'  + mTilgung +  '&nbsp;</td>');
 		mWindow.document.write('<td width="115" ' + mColor + ' align="right">'  + mRestSchuld +  '&nbsp;</td>');
 		mWindow.document.write('</tr>');
 		
 		mWindow.document.write('</table>');
 
 }
          
     
    // ################   HTML CODE ENDE ##################### 
    
    mWindow.document.write('<table border="0" cellspacing="1" cellpadding="2" width="600">');
     
    mWindow.document.write('<tr class="subdivision">'); 
    mWindow.document.write('<td align="right" colspan="5">&nbsp;</td>');
  	mWindow.document.write('</tr>');
  
    mWindow.document.write('</table><P>');
    
    mWindow.document.write('<CENTER><font class=textsw>' + mRechtshinweis + '</font></CENTER><BR>');
    mWindow.document.write('<CENTER></CENTER>');

    mWindow.document.write('</body></html>');
    mWindow.document.close();
 	mWindow.focus();

 	return false;
}


 
if(navigator.appVersion.substring(0,1) >= 4)  {var JavaVersion = 12;}

var mWindow;

// ####  Tilgungs Objects #####

var gTilgungsObj = null; // Globales Tilgungsobject von 
var gBankTilgungsObj = null; // Globales Tilgungsobject von der Bank




 // ################## Calculate  #########################
function Calculate(mDarlehensbetrag,mCurrency,mNominalzinssatz,mAnfangstilgungssatz,mLaufzeitJahre,mZahlungenprojahr,mAuszahlungsMonth,mAuszahlungsYear){  
 //alert("zeigt calculate");
  // Object variables ###
  this.darlehensbetrag = mDarlehensbetrag;
  this.enddarlehen = mDarlehensbetrag;
  
  this.currency = mCurrency;
  this.nominalzinssatz = mNominalzinssatz;
  this.anfangstilgungssatz = mAnfangstilgungssatz;
  this.laufzeitJahre = mLaufzeitJahre;
  this.zahlungenprojahr = mZahlungenprojahr;
  this.auszahlungsMonth = mAuszahlungsMonth;
  this.auszahlungsYear = mAuszahlungsYear;
  
  mDataBase = null;  // Init Tilgungszins Object Array
  mDataBase = new Array();
  mDataCount = 0;
  
  var mMonthName = new Array("Dez.", "Jan.","Feb.","M&auml;r.","Apr.","Mai","Jun.","Jul.","Aug.","Sep.","Okt.","Nov","Dez.");
   
  mAuszahlungsDateString = mMonthName[mAuszahlungsMonth] + " " + mAuszahlungsYear;
  this.auszahlungsDateString = mAuszahlungsDateString;
   
  var mAnuitaet = (mAnfangstilgungssatz + mNominalzinssatz) * 1.00; 
  this.anuitaet = mAnuitaet; // #### Store anuitaet in Object
   
  // ############ mZahlungenprojahr   ############## 
  if (mZahlungenprojahr == 1) {gZahlungenprojahrString = "J&auml;hrlich";}
  if (mZahlungenprojahr == 2) {gZahlungenprojahrString = "Halbj&auml;hrlich";}
  if (mZahlungenprojahr == 4) {gZahlungenprojahrString = "Viertelj&auml;hrlich";}
  if (mZahlungenprojahr == 12) {gZahlungenprojahrString = "Monatlich";}
   
  
  
 // ############ mAnzahlZahlungen   ##############
  var mAnzahlZahlungen = mZahlungenprojahr * mLaufzeitJahre;
   
 // ################### BERECHNUNG der Ratenzahlung ######################  
 var mRatenzahlung = Math.round(mDarlehensbetrag  * mAnuitaet / mZahlungenprojahr ) ; // ### FORMEL Ratenzahlung
 var mRatenzahlung = (mRatenzahlung + 0.00)/ 100
 
 this.anzahlZahlungen = mAnzahlZahlungen; // #### Store anzahlZahlungen in Object
 this.rate = mRatenzahlung; // #### Store ratenzahlung in Object
 
  
  // #### Zeitberechnung ###
  TimeNow = new Date();
  
  var mMonth = TimeNow.getMonth() + 1;

  var mYear = TimeNow.getYear();
  if (mYear < 1000 && mYear > 75) { 
  	  mYear = mYear + 1900;
  } else {
      mYear = mYear;
  }
  
  var mTodayMonth = (mYear * 12) + mMonth;
  
 // #################   TILGUNGSPLAN  ####################
 var restbindung = 0;
 var gesamtzahlung = 0;
 var mGetilgterBetrag = 0;
 var mRestSchuld = mDarlehensbetrag;
 var mTilgung = 0;
 var mZinsen = 0;
 var mAbbezahlt = false;  // ## Flag for iterative Loop
 var i = 1;
 
 var mStartMonth = parseInt((mAuszahlungsYear * 12) + mAuszahlungsMonth); // ## Calculate Month 
 
 // ### Handle Past Time Inputs ###
 if (mStartMonth < mTodayMonth) {
    var mDatum = mMonthName[mAuszahlungsMonth] + " " + mAuszahlungsYear;
 	// alert("Achtung:\nIhr Auszahlungsdatum " + mDatum + " ist in der Vergangenheit.  Dies macht nur Sinn, wenn Sie ein bestehendes Darlehen berechnen wollen.");
 }
 var mPureMonthCounter = 0;
 
 var gLastTilgungsString2 = " ";	
 var mLastRestschuld2 = 0;
 var mLastGetilgterBetrag2 = 0;


 // ############# ITERATIVE LOOP  ###############
 while(mAbbezahlt == false){
	  
	  
      var mZinsen = Math.round(mRestSchuld * mNominalzinssatz / mZahlungenprojahr);
      var mZinsen = mZinsen / 100;
       
      var mTilgung = Math.round((mRatenzahlung - mZinsen) * 100);
      var mTilgung = (mTilgung / 100) + 0.00;
      
      // ### Letzter Rest ###
      if (mRestSchuld - mTilgung <= 0) {
        
		var mZinsen = Math.round(mRestSchuld * mNominalzinssatz / mZahlungenprojahr);
		var mZinsen = mZinsen / 100;
      
        var mRatenzahlung = mRestSchuld + mZinsen;
        
      	var mTilgung = Math.round((mRatenzahlung - mZinsen) * 100);
      	var mTilgung = (mTilgung / 100) + 0.00; 
      	var mAbbezahlt = true;
      	
      }
      
      var mRestSchuld = mRestSchuld - mTilgung; // ## Decrement mRestSchuld
      var mGetilgterBetrag = mGetilgterBetrag +  mTilgung; // ## Increment mGetilgterBetrag
      
     
      var mPureMonthCounter = mPureMonthCounter + (12 / mZahlungenprojahr); // ## Increment Month Counter
      
	  // if we're dealing with <= 0% Tilgung we should stop after Maturity-Time
	  if (mPureMonthCounter >= mAnzahlZahlungen && mAnfangstilgungssatz <= 0) {
		 gTilgungZero = true;
	  	 var mAbbezahlt = true;
		 gLastTilgungsString2 = " ";	
			mLastRestschuld2 = 0;
			mLastGetilgterBetrag2 = 0;
	  }

      var mRealYear = parseInt((mStartMonth + mPureMonthCounter - 1) / 12);
      var mRealMonth = parseInt((mStartMonth + mPureMonthCounter) - (mRealYear * 12));    
      
      var mDatum = mMonthName[mRealMonth] + "&nbsp;" + mRealYear;
  

    // ### Sonderfall wenn volle Tilgung vor Laufzeit erreicht wurde ###
	// ### Ausname: Tilgung 0
    if (mAbbezahlt == true && mAnfangstilgungssatz > 0) {
      		var mRestSchuld = 0.00;
      		var mGetilgterBetrag = mDarlehensbetrag;
     }
       gesamtzahlung = gesamtzahlung + mTilgung + mZinsen;
      if (mRestSchuld >= 0) {
	  	 
     	 AddRecord(i,mDatum,mRestSchuld,mTilgung,mZinsen,mRatenzahlung);
     	 // ## mLastGetilgterBetrag Runden ###
     	 var mLastGetilgterBetrag = Math.round(mGetilgterBetrag * 100);
         var mLastGetilgterBetrag =	mLastGetilgterBetrag / 100;
         
          // ## mLastRestschuld Runden ###
     	 var mLastRestschuld = Math.round(mRestSchuld * 100);
     	 var mLastRestschuld = mLastRestschuld / 100;
     	  
     	 var mLastYear = mRealYear;
		 var mLastMonth = mRealMonth;
 
     	 var gLastTilgungsString = mDatum;
		
		 if (i >= mAnzahlZahlungen && restbindung == 0) {
		 	restbindung = 1;
			mLastRestschuld2 = mLastRestschuld;
			mLastGetilgterBetrag2 = mLastGetilgterBetrag ;
			gLastTilgungsString2 = gLastTilgungsString;
		 }
		 		 
      } 
      
      i ++;
 }

	//alert("Gesamtbetrag = "+gesamtzahlung);
    var mPureMonthCounter = mPureMonthCounter; // Decrement um das letzte Monat 
    var FinalTilgungsYear = parseInt( mPureMonthCounter / 12);
    var FinalTilgungsMonth = parseInt(mPureMonthCounter - (FinalTilgungsYear * 12));

	
    
    // ### Default Final TilgungsLength String ###
    if (FinalTilgungsYear == 1) {
    	var mYearStr = "Jahr";
    	var mYearPluralStr = "Jahr";
    } else {
    	var mYearStr = "Jahre";
    	var mYearPluralStr = "Jahren";
    }
    
    if (FinalTilgungsMonth == 1) {
    	var mMonthStr = "Monat";
    	var mMonthPluralStr = "Monat";
    } else {
    	var mMonthStr = "Monate";
    	var mMonthPluralStr = "Monaten";
    }
    
    var FinalTilgungsLengthString = FinalTilgungsYear + " " + mYearStr + " und " + FinalTilgungsMonth + " " + mMonthStr;
    var FinalTilgungsPluralLengthString = FinalTilgungsYear + " " + mYearPluralStr + " und " + FinalTilgungsMonth + " " + mMonthPluralStr;
    
    var mFinalRealYear = parseInt((mStartMonth + mPureMonthCounter) / 12);
    var mFinalRealMonth = parseInt((mStartMonth + mPureMonthCounter) - (mFinalRealYear * 12));
	if (mFinalRealMonth==0) {
		mFinalRealMonth = 12;
		mFinalRealYear--;
	}
	
    var FinalTilgungsDate = mMonthName[mFinalRealMonth] + " " + mFinalRealYear;
         
    //alert("TILGUNGSPLAN " + mLastRestschuld + " # " + mLastGetilgterBetrag + " \n FinalTilgungsDate " + FinalTilgungsDate);
    
    this.dataBase = mDataBase;
    //this.lastRestschuld = mLastRestschuld;
	this.finalTilgungsDate = FinalTilgungsDate;
	this.finalTilgungsLengthString = FinalTilgungsLengthString;
	this.finalTilgungsPluralLengthString = FinalTilgungsPluralLengthString;
	this.finalRealMonth = mFinalRealMonth;
	this.finalRealYear = mFinalRealYear;   
	
	this.gesamtzahlung = (Math.round(gesamtzahlung * 100)/100);
	
	
	this.lastTilgungsString = gLastTilgungsString;	
	if (gLastTilgungsString2 == " "){
		gLastTilgungsString2 = gLastTilgungsString;
	}
	this.lastTilgungsString2 = gLastTilgungsString2;
	
	this.lastYear = mLastYear;
	this.lastMonth = mLastMonth;
	
	this.lastRestschuld = mLastRestschuld2;	
	if (mLastGetilgterBetrag2 == 0){
		mLastGetilgterBetrag2 = mLastGetilgterBetrag;
	}
	this.lastGetilgterBetrag = mLastGetilgterBetrag2;
   
     
    return this;
	
}


function calculateTilgung(amount, nominalrate, monthlyrate, frequency) {
//alert("zeigt calculateTilgung");
	return  ((100 * monthlyrate * frequency / amount) - nominalrate);
}


function calculateRate(amount, nominalrate, amortrate, frequency) {
//alert("zeigt calculateRate");
	return Math.round( (amount  * (nominalrate + amortrate) / frequency) + 0.00) / 100;
}




function AddRecord(number,date,restschuld,tilgung,zinsen,ratenzahlung) {
//alert("zeigt AddRecord");
	mDataBase[mDataCount] = new NewRecord(number,date,restschuld,tilgung,zinsen,ratenzahlung);
	mDataCount ++;
}


function NewRecord(number,date,restschuld,tilgung,zinsen,ratenzahlung) {
//alert("zeigt New Record");
	this.number = number;
	this.date = date;
	this.restschuld = restschuld;
	this.tilgung = tilgung;
	this.zinsen = zinsen;
	this.ratenzahlung = ratenzahlung;
	return this;
}



 
  // ###############  KonvertFloatToString  ###############
 function KonvertFloatToString(mFloat) {
 //alert("zeigt KOnvertFloatTo String");
	var mNumber = Math.round(mFloat * 100);
    var mNumber =	mNumber / 100;
	
	var mString = "" + mNumber;
	
	var mZahlenArray = mString.split(".");
	
	if (mZahlenArray.length > 1) {
			var VorKomma = mZahlenArray[0];
			var NachKomma = mZahlenArray[1];
			
			if (NachKomma.length == 1) {var NachKomma = NachKomma + "0";}
			var mString = VorKomma + "." + NachKomma;
	} else {
		var mString = mString + ".00";
	}
	
	return mString;
}

// ################## KonvertStringToFloat  #########################
 function KonvertStringToFloat(mString) {
 //alert("zeigt KonvertStringTO Float");
  
    // ### Get Value of Input Field ###//  
 	if(isNaN(mString) == false){
	    var mValue = parseFloat(mString); 
	    if(isNaN(mValue)){
	    	 var mValue = 0;
	    }
  		return mValue;
	} else {
	 	// ### Convert , into . of Input Field ###//
	 	 var mZahlenString = "" + mString;
		 var Zahlen = mZahlenString.split(",");
		 if (Zahlen.length > 0) {
		 	var mNewValue = Zahlen[0] + "." + Zahlen[1];
		 	var mNewValue = parseFloat(mNewValue);
		 	
		 		if (isNaN(mNewValue) == true) {
		 			var mValue = 0;
		 		
		 			return mValue;
		 		} 
		 	return mNewValue;
		} 
	}
 }



<!--

if(navigator.appVersion.substring(0,1) >= 4)  {var JavaVersion = 12;}

var mWindow;
var mDataBase = new Array();
var mDataCount = 0;
var gCurrency = "EUR";
var gTilgungZero = false;

var gDarlehensbetrag = 0;
var mAuszahlungsMonth = 0;
var mAuszahlungsYear = 0;
var mAuszahlungsDateString = "";
var mNominalzinssatz = 0;
var mAnfangstilgungssatz = 0;

// contains all pictures that represent calculation result
var calcResultPics = new Array();
var calcResultPicsCount = 0;
var recCntCalcResultPics = 9;
var delayCalcResultPics = 100;



// ###############   ShowObjectProperties         ###############
function ShowObjectProperties(mObject) {
//alert("zeigt ShowObjectProperties");
                    var mtext = "";
                    for (var i in mObject) {
                        mtext = mtext + "Property: " + i + " Value: " + mObject[i] + "\n" ;
                    }
                    // alert(mtext);
                }







// ###############   FillDefault         ###############
function FillDefault(){
 //alert("zeigt FillDefault");
  TimeNow = new Date();
  var mDay = TimeNow.getDate();
  var mMonth = TimeNow.getMonth() +1 ;
  if (mMonth < 10) {mMonth = "0" + mMonth;}
  if (mDay < 10) {mDay = "0" + mDay;}

  var mYear = TimeNow.getYear();
  if (mYear < 1000 && mYear > 75) {
            mYear = mYear + 1900;
  } else {
      mYear = mYear;
  }

  // ### Fill Year Optn Box ###
  document.myform.auszahlungsyear.length = 5;
  var mElementAnzahl=document.myform.auszahlungsyear.length;

    for (var i = 0; i < mElementAnzahl; i++) {
        var mOptionYear = mYear + i;
            document.myform.auszahlungsyear.options[i].value = mOptionYear;
           document.myform.auszahlungsyear.options[i].text = ""+ mOptionYear;
    }

  // ### Fill Default Auszahlungs Date of actual Month and actual year ####
  
  
    if (mMonth >= 12) {
            document.myform.auszahlungsmonth.selectedIndex = 0;
            document.myform.auszahlungsyear.selectedIndex = 1; // ## Select actual Year
    } else {
          document.myform.auszahlungsmonth.selectedIndex = mMonth;
          document.myform.auszahlungsyear.selectedIndex = 0; // ## Select actual Year
    }
        
        document.myform.yearzinsbindung.selectedIndex = 7; // ## Select Laufzeit Year
        document.myform.nominalzinssatz.value = "5.50"; // ## nominalzinssatz
        document.myform.anfangstilgungssatz.value = "1.00"; // ## anfangstilgungssatz
 }


  // ################## prepareCalculation #########################
 function prepareCalculation() {
//alert("zeigt prepareCalculation");
  
  var tilgungssatz = 0;
  var monatsrate = 0;

  var darlehensbetrag = GetInputValue(document.myform.darlehensbetrag);
  var currency = "EUR";
  var auszahlungsMonat = (document.myform.auszahlungsmonth.options[document.myform.auszahlungsmonth.selectedIndex].value) * 1;
  var auszahlungsJahr= (document.myform.auszahlungsyear.options[document.myform.auszahlungsyear.selectedIndex].value) * 1;
  var nominalzinssatz =  GetInputValue(document.myform.nominalzinssatz) * 1.00;
  var zahlungenProJahr = document.myform.zahlungenprojahr.options[document.myform.zahlungenprojahr.selectedIndex].value;
  var laufzeitJahre = document.myform.yearzinsbindung.options[document.myform.yearzinsbindung.selectedIndex].value;
  
  if (isNaN(darlehensbetrag) == true ){
  	alert("Bitte tragen Sie einen Darlehensbetrag ein!");
	document.myform.darlehensbetrag.focus();
	return(false);
  } else{
  // check wether the customer wants to work with tilgungssatz or monthly rate
  // this is for tilgungssatz
  if(document.myform.tilgungssatzCheck[0].checked == true) {
          tilgungssatz = KonvertStringToFloat(GetInputValue(document.myform.anfangstilgungssatz)) * 1.00;
        monatsrate = calculateRate(darlehensbetrag, nominalzinssatz, tilgungssatz, zahlungenProJahr);
        if (tilgungssatz < 0) {
                var minRate = calculateRate(darlehensbetrag, nominalzinssatz, 0, zahlungenProJahr);
                CheckLimits(document.myform.anfangstilgungssatz,'Anfaenglicher Tilgungssatz');
                return;
        }

        document.myform.monatsrate.value = KonvertFloatToString(monatsrate);
  }
  // this is for monthly rate
  else {
          monatsrate = KonvertStringToFloat(GetInputValue(document.myform.monatsrate) * 1.00);
          tilgungssatz = calculateTilgung(darlehensbetrag, nominalzinssatz, monatsrate, zahlungenProJahr);
        if (tilgungssatz < 0) {
                var minRate = calculateRate(darlehensbetrag, nominalzinssatz, 0, zahlungenProJahr);
                CheckLimits(document.myform.monatsrate,minRate,99999,'Monatliche Rate');
                return;
        }

        document.myform.anfangstilgungssatz.value = KonvertFloatToString(tilgungssatz);
  }


  calculateTilgungsplan(laufzeitJahre, darlehensbetrag, currency, nominalzinssatz, tilgungssatz, zahlungenProJahr, auszahlungsMonat, auszahlungsJahr)
} // end if, ob darlehensbetrag vorhanden
 }

 // ################## showTilgungsplan  #########################
 function showTilgungsplan() {
// alert("zeigt showTilgungsplan");
          prepareCalculation();		
		  var wertee = GetInputValue(document.myform.darlehensbetrag);
		  if ( isNaN(wertee) == false ){
		  	WriteTilgungsplan(gTilgungsObj);
		  }
 }

 
  function refreshCalcResultPics( ) {
  // alert("zeigt refresCalcResultPics");

    var picName = "";
    var picSrc = "";

    for (var i=0; i < calcResultPicsCount; i++) {

      picName = calcResultPics[ i ][ 0 ];
      picSrc = calcResultPics[ i ][ 1 ].src;

      document.images[ picName ].src = picSrc;


    }// !for

    if ( recCntCalcResultPics-- > 0 ) {

        delayCalcResultPics = delayCalcResultPics * 2;

        window.setTimeout("refreshCalcResultPics()", delayCalcResultPics );

    }// fi

  }//!storeCalcResultPics()

 
  function storeCalcResultPics( pname, psrc ) {
  //  alert("storeCalcResultPics( ");
  //alert("zeigt storeCalcResultPics");

    calcResultPics[ calcResultPicsCount ] = new Array();
    calcResultPics[ calcResultPicsCount ][ 0 ] = pname;
    calcResultPics[ calcResultPicsCount ][ 1 ] = new Image();
    calcResultPics[ calcResultPicsCount ][ 1 ].src = psrc;

//  alert("calcResultPics[ " + calcResultPicsCount + " ][0] = " + calcResultPics[ calcResultPicsCount ][0]);

    calcResultPicsCount++;

  }//!storeCalcResultPics()

 // ################## calculateTilgungsplan  #########################
function calculateTilgungsplan(_laufzeit, _auszahlungsBetrag, _cur, _nominalZins, _tilgungssatz, _zahlungenProJahr, _monat, _jahr, _annuitaet) {
//alert("zeigt calculateTilgungsplan");
        // #### BANKANGEBOT TilgungsObject ########
    var yearzinsbindung = KonvertStringToFloat(_laufzeit) * 1.0 ;
    var darlehen = KonvertStringToFloat(_auszahlungsBetrag) * 1.0;
    var currency = _cur;
    var nominalzins = KonvertStringToFloat(_nominalZins);
    var tilgungssatz = KonvertStringToFloat(_tilgungssatz) * 1.0;
        var zahlungenProJahr = parseInt(_zahlungenProJahr);
        var monat = parseInt(KonvertStringToFloat(_monat));
        var jahr = parseInt(KonvertStringToFloat(_jahr));
        var annuitaet = KonvertStringToFloat(_annuitaet) * 1.0;
		
		var ardatum = new Array(11);
		ardatum[1] = "Januar"; 
		ardatum[2] = "Februar"; 
		ardatum[3] = "März"; 
		ardatum[4] = "April"; 
		ardatum[5] = "Mai"; 
		ardatum[6] = "Juni"; 
		ardatum[7] = "Juli"; 
		ardatum[8] = "August"; 
		ardatum[9] = "September"; 
		ardatum[10] = "Oktober"; 
		ardatum[11] = "November"; 
		ardatum[12] = "Dezember"; 

        
           gTilgungsObj = new Calculate(darlehen,currency,nominalzins,tilgungssatz,yearzinsbindung,zahlungenProJahr,monat,jahr);

        // Calculate Rate with 2 percent more after maturity
        rateZinsAnstieg = gTilgungsObj.lastRestschuld * ( annuitaet + 2) / (12 * 100);
		
		//alert("Letzter zu tilgender Betrag "+gTilgungsObj.lastGetilgterBetrag +" \n Letzte Restschuld "+ gTilgungsObj.lastRestschuld  +"\n rate:"+ gTilgungsObj.rate);
		
		document.myform.ratenom.value = gTilgungsObj.rate ;
		document.myform.tilgende.value = gTilgungsObj.lastGetilgterBetrag ;
		document.myform.restschuldende.value = gTilgungsObj.lastRestschuld ;	
		
		document.myform.dende.value = ardatum[gTilgungsObj.finalRealMonth] +" "+ gTilgungsObj.finalRealYear;
		document.myform.gessumme.value = gTilgungsObj.gesamtzahlung;
		
		
		//alert("FinalTilgungsLengthString"+gTilgungsObj.finalTilgungsLengthString+"\n"+"FinalRealMonth"+gTilgungsObj.finalRealMonth+"\n"+"FinalRealYear"+gTilgungsObj.finalRealYear+"\n"+"FinalTilgungsdate"+gTilgungsObj.finalTilgungsDate+"\n"+"lastTilgungsstring"+gTilgungsObj.lastTilgungsString+"\n"+"lastRestschuld"+gTilgungsObj.lastRestschuld);
				
		
        //SetNumberDisplay(gTilgungsObj.lastGetilgterBetrag,"g");
        //SetNumberDisplay(gTilgungsObj.lastRestschuld,"r");
        //SetNumberDisplay(gTilgungsObj.rate,"z");
        if(!gTilgungZero){
                //SetDateDisplay(gTilgungsObj.finalRealMonth,gTilgungsObj.finalRealYear,"te");
        }
        else {
              //  hideDateDisplay('te');
                gTilgungZero = false;
        }

 }




function KonvertFloatToString(mFloat) {
//alert("zeigt KOnvertFloatToString");
        var mNumber = Math.round(mFloat * 100);
    var mNumber =        mNumber / 100;
        var mString = "" + mNumber;

        var mZahlenArray = mString.split(".");

        if (mZahlenArray.length > 1) {
                        var VorKomma = mZahlenArray[0];
                        var NachKomma = mZahlenArray[1];

                        if (NachKomma.length == 1) {var NachKomma = NachKomma + "0";}
                        var mString = VorKomma + "." + NachKomma;
        } else {
                var mString = mString + ".00";
        }

        return mString;
}

// ################## GetInputValue  #########################
 function GetInputValue(mObject) {
//alert("zeigt GetInputValue");
    // ### Get Value of Input Field ###//

         if(isNaN(mObject.value) == false){
            var mValue = parseFloat(mObject.value);
                  return mValue;
        } else {
                 // ### Convert , into . of Input Field ###//
                  var mZahlenString = "" + mObject.value;
                 var Zahlen = mZahlenString.split(",");
                 if (Zahlen.length > 0) {
                         var mNewValue = Zahlen[0] + "." + Zahlen[1];
                                 if (isNaN(mNewValue) == false) {
                                         var mValue = parseFloat(mNewValue);
                                         mObject.value = mValue;
                                         return mValue;
                                 }
                }
        }
 }


// ################## CheckLimits  #########################
 function CheckLimits(mObject,mMin, mMax, mFeldname) {
//alert("zeigt CheckLimits");
 var mFeldname =  mFeldname + "";

   var mValue = GetInputValue(mObject); //Parse Input value
   var mHelpText = "Bitte geben Sie einen Wert zwischen " + mMin + " und " + mMax + " ein.";

   if (mValue == null) {
                mObject.focus();
               alert("Eingabefeld: " + mFeldname + "\nIhr Eingabewert " + mObject.value + " ist nicht im erlaubten Wertebereich!\n" + mHelpText);
                return;
   }

   if (mValue < mMin) {
                mObject.focus();
                alert("Eingabefeld: " + mFeldname + "\nIhr Eingabewert " + mObject.value + " ist zu gering!\n" + mHelpText);
                return;
   }


  if (mValue > mMax) {
                mObject.focus();
                alert("Eingabefeld: " + mFeldname + "\nIhr Eingabewert " + mObject.value + " ist zu hoch!\n" + mHelpText);
                return;
   }


 }



   // ################## SetNumberDisplay  #########################

 function SetNumberDisplay(mValue,mChar) {
  //alert("zeigt SetNumberDisplay");
    var mImageChar = mChar; // ## Charcter of Imagename
         var mImageRoot = "";

         var mWert = mValue + 0.00;
    var mWert = "" + mValue;
    var mStellenMax = 8;  // Anzahl der Stellen maximal

    // ### Parse Komma String ###
    var KommaArray = mWert.split(".");
    if (KommaArray != null) {
            if (KommaArray.length > 1) {
                    var mKommaString = KommaArray[1];
                    if (mKommaString.length == 1) {var mKommaString = mKommaString + "0";}
            } else {
                    var mKommaString = "00";
            }
    } else {
            var mKommaString = "00";

    }
    // ### Display 2 Stellen nach dem Komma ###
    var mKomma1Src = mImageRoot + mKommaString.substr(0,1) + ".gif";
    var mKomma2Src = mImageRoot + mKommaString.substr(1,1) + ".gif";

    eval('document.images.' + mImageChar + 'k1.src = mKomma1Src');
    eval('document.images.' + mImageChar + 'k2.src = mKomma2Src');
        storeCalcResultPics( mImageChar + 'k1', mKomma1Src );
        storeCalcResultPics( mImageChar + 'k2', mKomma2Src );

    // ### Parse Wert vor Kommastellen ###
        var mWert = "" + KommaArray[0];
    var mLength = mWert.length; // Anzahl der ben&ouml;tigten Stellen
    var mLeerstellen = mStellenMax - mLength;


    // ### Display 8 Stellen vor dem Komma ###
    var mStellenCounter = 0;
        for (var i= 1; i <= mStellenMax; i++) {
         var mImageName = mImageChar + i;
         var mCharacter = "pixel";

         if (i > mLeerstellen) {
             var mCharacter =  mWert.substr(mStellenCounter,1);
             var mStellenCounter = mStellenCounter + 1;
         }

         var mImageSrc = mImageRoot + mCharacter + ".gif";
         eval('document.images.' + mImageChar + i + '.src = mImageSrc');
                 storeCalcResultPics( (mImageChar + i), mImageSrc );
        }

 }


  // ################## SetDateDisplay  #########################
 function SetDateDisplay(mMonth,mYear,mChar) {
  
  //alert("zeigt SetDateDisplay");
    var mImageChar = mChar; // ## Charcter of Imagename
         var mImageRoot = "";

         var mYearString = "" + mYear;

         // ### Display Month ####
         var mImageSrc = mImageRoot + "month" + mMonth + ".gif";
        eval('document.images.' + mImageChar + "m" + '.src = mImageSrc');
        storeCalcResultPics( (mImageChar + "m"), mImageSrc );

   // ### Display 4 Stellen Jahr ###
        for (var i= 1; i <= 4; i++) {
         var mImageName = mImageChar + "y" + i;
         var mCharacter =  mYearString.substr(i-1,1);
         var mImageSrc = mImageRoot + mCharacter + ".gif";
         eval('document.images.' + mImageName + '.src = mImageSrc');
                 storeCalcResultPics( mImageName, mImageSrc );
        }


 }

    // ################## hideDateDisplay  #########################
 function hideDateDisplay(mChar) {
//alert("zeigt hideDateDisplay( ");
    var mImageChar = mChar; // ## Charcter of Imagename
         var mImageRoot = "";

         // ### Hide Month ####
         var mImageSrc = mImageRoot + "pixel.gif";
        eval('document.images.' + mImageChar + "m" + '.src = mImageSrc');


   // ### Display 4 Stellen Jahr ###
        for (var i= 1; i <= 4; i++) {
         var mImageName = mImageChar + "y" + i;
         var mImageSrc = mImageRoot + "pixel.gif";
         eval('document.images.' + mImageName + '.src = mImageSrc');
        }


 }




function SetCurrency() {
//alert("zeigt Setcurrency");

  var mCurrencyIndex = "EUR";
  var mCurrency = "EUR";
  gCurrency = mCurrency;

  if (mCurrency == "EUR") {
          var mImageSrc = "";
  } else {
          var mImageSrc = "";
  }

  document.images.currency1.src = mImageSrc;
  document.images.currency2.src = mImageSrc;
  document.images.currency3.src = mImageSrc;
  document.images.currency4.src = mImageSrc;
}

function fehler(){
  
}


// -->
