document.write('<script src="/banking/servlet/com.pagentix.banking.servlet.fkk.FkkSavingsCalcProductsServlet" type="text/javascript"></script>');

function $(id){
	return document.getElementById(id);
}
LastVer = new function()
{
	this.event = new Array();
	this.tracktrick = new Image();
}
LastVer.initAll = function(){
	var inputs = document.getElementsByTagName("input");
	var namen = new Array();
	var buttons = new Array();
	for(var input in inputs){
		var type = inputs[input].type;
		if(type == "text" || type == "radio" || type == "checkbox" || type == "select"){
			namen.push(inputs[input].name);
		}
		else if(type == "submit" || type == "button"){
			buttons.push(inputs[input].name);
		}
	}
	for(var button in buttons){
		this.init(namen,buttons[button]);
	}
}
LastVer.init = function(inputs,submitname)
{
	var form = document.getElementsByTagName("form");
	if(form.length ==  0 ){
		document.getElementsByName(submitname)[0].parentNode.parentNode.style.display = "block";
		document.getElementsByName(submitname)[0].parentNode.parentNode.style.visibility = "visible";
	}
	this.lastv = "-1";
	this.event[submitname]  = '';
	for(var i=0;i<inputs.length;i++)
	{
		this.event[submitname] += 'variablen['+i+'] = new Object(); variablen['+i+'].name="'+inputs[i]+'";';
		this.event[submitname] += 'for(var x = 0; x < document.getElementsByName("'+inputs[i]+'").length;x++ ){if(document.getElementsByName("'+inputs[i]+'")[x].checked == true || document.getElementsByName("'+inputs[i]+'")[x].checked == "checked"){variablen['+i+'].wert=document.getElementsByName("'+inputs[i]+'")[x].value;}}';
		this.event[submitname] += 'if(typeof variablen['+i+'].wert == "undefined" && (document.getElementsByName("'+inputs[i]+'")[0].type != "radio" && document.getElementsByName("'+inputs[i]+'")[0].type != "checkbox")){variablen['+i+'].wert=document.getElementsByName("'+inputs[i]+'")[0].value;}';
	}
}
LastVer.LASTV = function()
{
}
LastVer.LASTV.create = function() // erzeugt eine eindeutige ID
{
	var microtime = new Date();
	if(LastVer.lastv == "-1")
	{
		if(LastVer.LASTV.exist)
		{
			//LastVer.LASTV = this.microtime+this.ip+this.random;
			LastVer.lastv = String(microtime.getTime())+"-"+String(Math.ceil(Math.random()*1000000000000000));
			return true;
		}
	}
	else // lastv existiert schon
	{
		return false;
	}
}
LastVer.LASTV.exist = function()
{
	//mache Request
	
	//wenn lastv schon existiert:
	//return true;
	//else
	//return false;
}
/**
* Eine Funktion die einen Cookie erstellt
* @param {cookiename} enthält den variablennamen
* @param {cookiewert}  enthält den wert der variable die gespeichert werden soll
* @param {lebensdauer} gibt an wie lange der cookie existieren soll
**/
LastVer.cookie = function(cookiename,cookiewert,lebensdauer)
{
	cookiename = String(cookiename); // Hier wird jeweils sichergestellt dass die beiden variablen auch Strings sind
	cookiewert = String(cookiewert);
	try{
	var verfallsdatum = new Date();
		if(typeof lebensdauer != "undefined" && isNaN(lebensdauer) != true){
			verfallsdatum = new Date(a.getTime() +lebensdauer);
		}else{verfallsdatum = new Date(verfallsdatum.getTime() +1000*60*60*24*365);}
	document.cookie = cookiename+'='+cookiewert+'; expires='+verfallsdatum.toGMTString()+'; path=/banking;';
	return true;
	}catch(e){return false;}
}
/**
* Funktion die Testet ob Cookies aktiviert und vorhanden sind
**/
LastVer.cookie.exist = function(){
	//if(document.cookie){
		return true;
	//}
	//else{
	//	return false;
	//}
}
/**
* Funktion die einen Wert aus einem Cookie ausliest. Falls dies nicht klappt oder Variable nicht im cookie existiert wird false wiedergegeben, wenns klappt der gewünschte wert
* @param {name} Name der Variable, welche im Cookie ausgelesen werrden soll 
**/
LastVer.cookie.read = function(name)
{
	if(LastVer.cookie.exist)
	{
		var keks = document.cookie;
		while(cookiename != name)
		{	
			
			var cookiename = keks.substr(0,keks.search('='));
			var cookiewert = keks.substr(keks.search('=')+1,keks.search(';')-keks.search('=')-1);
		/*	if(cookiewert == '')
				{
					cookiewert = keks.substr(keks.search('=')+1,keks.length);
				}*/
			if(cookiename == name && typeof cookiewert != "undefined")
			{
				
				return cookiewert;
			}
			if(keks.search(';') == -1)
			{
				return false;
			}
			else
			{
			keks = keks.substring(keks.search(';')+1,keks.length);
			}
		}
		
	}
	else 
	return false;
}
/**
* Funktion die einen Cookie löscht
* @param {wert} optional: eigentlich nicht benötigt, oops
* @param {name} optional: eigentlich nicht benötigt, oops
**/
LastVer.cookie.Delete = function(wert, name)
{
	if(typeof wert != "undefined" && typeof name != "undefined")
	{
		var cookieinhalt = name+'='+wert+';';
	}
	else
	{
		var cookieinhalt = "";
	}
	try{
		document.cookie = cookieinhalt+'expires=Thu, 01-Jan-70 00:00:01 GMT;'; // Das Haltbarkeitsdatum des Cookies wird in die Vergangenheit geserzt-> Cookie wird gelöscht
		return true;
	}catch(e){return false;}
}
LastVer.sendToDatabase = function(werte)
{	
	if(this.lastv)
	{
			//TODO
	}
}
LastVer.sendToDatabase.createLastVerURLvariable = function(variablenname, variablenwert){
	var url  = "http://banking.degussa-bank.de/banking/servlet/com.pagentix.banking.servlet.lastver.CheckboxServlet";
	try{
	var	sessionID=top.action.menu.mystate.sessionID;
		if (sessionID != "0") {
		url=url+';jsessionid='+sessionID;
		}
	}catch(e){;}
	url += "?lastv="+LastVer.lastv;
	url += "&"+variablenname+"="+variablenwert;
	LastVer.sendToDatabase.imageLastVer(url);
	/** ZUM TESTEN! IN FINALVERSION BITTE ENTFERNEN  **/
	//$('Tracking').innerHTML = "<p><strong>Tracking-Verhalten:</strong><br><br>  " + url + "</p>";
	//var fenster = window.open(url, "Tracking");
	//fenster.focus();
	
	/** ZUM TESTEN! IN FINALVERSION BITTE ENTFERNEN  **/
	return url;

}
LastVer.sendToDatabase.createLastVerURL = function(variablen){
	var url  = "http://banking.degussa-bank.de/banking/servlet/com.pagentix.banking.servlet.lastver.CheckboxServlet";
	try{
		var sessionID=top.action.menu.mystate.sessionID;
		if (sessionID != "0") {
		url=url+';jsessionid='+sessionID;
		}
	}catch(e){;}
	url += "?lastv="+LastVer.lastv;
	for(var i=0;i<variablen.length;i++){
		if(variablen[i].wert != "" && typeof variablen[i].wert != "undefined"&& variablen[i].wert != 0){
			url += "&"+variablen[i].name+"="+variablen[i].wert;
		}
	}
	LastVer.sendToDatabase.imageLastVer(url);
	/** ZUM TESTEN! IN FINALVERSION BITTE ENTFERNEN  **/
	//$('Tracking').innerHTML = "<p><strong>Tracking-Verhalten:</strong><br><br>  " + url + "</p>";
	//window.open(url, "Tracking");
	/** ZUM TESTEN! IN FINALVERSION BITTE ENTFERNEN  **/
	return url;
	
}
LastVer.sendToDatabase.imageLastVer = function(LastVerurl){
	try{
		LastVer.tracktrick = new Image();
		LastVer.tracktrick.src = LastVerurl; 
	}catch(e){return false;}
	if(	LastVer.tracktrick.src == LastVerurl){
		return true;
	}
	else{
		return false;
	}
}
LastVer.eventHandler = function(event,variablenname,variablenwert)
{
	var variablen = new Array();
	var name = event.name;
	if(this.event[name]){	
		try{
			eval(this.event[name]);
		}catch(e){return false;}
	}
	else{
	this.initAll();
	try{
			eval(this.event[name]);
		}catch(e){return false;}
	}
	//	LastVer.flashcookie("42314314124","23144213");
	/*if(LastVer.flashcookie.exist() == true) // Flashcookie wird verwendet: Erste Wahl
	{
		LastVer.LASTV.create();
		alert("keks");
		LastVer.flashcookie.read ();
	}	
	else*/ if(LastVer.cookie.exist() == true) // HTTPCookie wird verwendet: 2te Wahl
	{
		
		if(LastVer.cookie.read("lastv") == false) // Der User hat noch keine lastv im cookie gespeichert
		{
			
			if(LastVer.lastv == "-1" || LastVer.lastv == -1 || typeof LastVer.lastv == "undefined") // Das aktuelle geöffnete Programm hat noch keine lastv erzeugt
			{
				LastVer.LASTV.create(); // erstellt lastv
			}
			try{
			LastVer.cookie("lastv",this.lastv); // lastv wird in cookie geschrieben
			}catch(e){alert("Fataler Fehler: Cookie konnte nicht erstellt werden;");} 
		}
		else
		{
			this.lastv = LastVer.cookie.read("lastv"); // lastv wird aus cookie ausgelesen und gespeichert
		}
		if(typeof variablenname == "undefined" || variablenname == "" || typeof variablenwert == "undefined" || variablenwert == "")
		{
			try{
			LastVer.sendToDatabase.createLastVerURL(variablen);
			}catch(e){return false;}
		}
		else
		{
			LastVer.sendToDatabase.createLastVerURLvariable(variablenname, variablenwert);
		}
	}
	else
	{
	return false;
	}
}


// 
//prod.mestmatch (dauer, betrag) returns kondition


// SparenMatrix = array(SPAR_ID, NAME, URL, VORTEILTEXT);
/*
SparenMatrix = new Array();
SparenMatrix[0] = new Sparen("0","Renditensparen **","#link","<ul class='vorteile'><li>Erhöhung des Sparguthabens jederzeit während der Laufzeit möglich</li><li>Flexible Verfügung bis zu EUR 2.000,- pro Monat zur Wahrung des Sonderzinssatzes ist jedoch die Mindestanlagesumme von EUR 2.500,- Voraussetzung. Bei Unterschreitung gilt der jeweilige Zinssatz für Spareinlagen mit 3-monatiger Kündigungsfrist.</li></ul>");
SparenMatrix[1] = new Sparen("1","Sparplan **","#link","<ul class='vorteile'><li>jährlich steigende Bonuszahlungen auf die Sparleistung des abgelaufenen Vertragsjahres</li><li>- je länger die Vertragsdauer, desto hoeher der Bonus -</li></ul>");
SparenMatrix[2] = new Sparen("2","VL-Sparen **","#link","<ul class='vorteile'><li>Überschaubare Anlagedauer von 7 Jahren (6 Jahre Einzahlungsdauer + 1 Jahr Sperrfrist)</li><li>14 % Degussa Bank Bonus auf Ihre Sparleistungen einmalig am Ende der Laufzeit(In der Zinsertragrechnung enthalten)</li></ul>");
SparenMatrix[3] = new Sparen("3","Sparbrief Typ-V","#link","<ul class='vorteile'><li>Attraktive Verzinsung mit garantierten Zinsen für die gewählte Laufzeit.</li></ul>");
SparenMatrix[4] = new Sparen("4","Sparbrief Typ-A","#link","<ul class='vorteile'><li>Attraktive Verzinsung mit garantierten Zinsen für die gewählte Laufzeit.</li></ul>");
SparenMatrix[5] = new Sparen("5","Dynamiksparen","#link","<ul class='vorteile'><li>garantiert jährlich steigende Zinsen</li><li>Flexible Verfügung bis zu EUR 2.000,- pro Monat nach dem ersten Anlagejahr. Der Mindestanlagebetrag von EUR 2.500,- darf dabei jedoch nicht unterschritten werden.</li></ul>");
SparenMatrix[6] = new Sparen("6","Telegeld V1: Zinsvorteil Pur","#link","<ul class='vorteile'><li>Die Zinsen sind im Jahr des Zuflusses steuerpflichtig. Sofern keine entsprechender Freistellungsauftrag vorliegt, erfolgt ein Steuerabzug auf die Zinsen.</li></ul>");
SparenMatrix[7] = new Sparen("7","Telegeld V2: Zinsvorteil mit System","#link","<ul class='vorteile'><li>Die Zinsen sind im Jahr des Zuflusses steuerpflichtig. Sofern keine entsprechender Freistellungsauftrag vorliegt, erfolgt ein Steuerabzug auf die Zinsen.</li></ul>");
SparenMatrix[8] = new Sparen("8","Topzins **","#link","<ul class='vorteile'><li>Täglich verfügbar</li><li>keine Kündigungsfristen</li><li>kein Mindestanlagebetrag</li><li>Verzinsung ab dem ersten Euro</li><li>Jährliche Zinsgutschrift</li><li>Als Verrechnungskonto dient Ihr Degussa Bank Girokonto</li></ul>");
SparenMatrix[9] = new Sparen("9","FestInvest **","#link","<ul class='vorteile'><li>attraktive 5% Zinsen garantiert für 1 Jahr auf dem FestZins-Konto, täglich verfügbar, plus</li><li>Anlage in Deutschlands besten Rentenfonds mit einer Wertsteigerung von 7,3% in den letzten 3 Jahren im Durchschnitt</li></ul>");
SparenMatrix[10] = new Sparen("10","Festgeld","#link","<ul class='vorteile'><li>feste und damit kalkulierbare Zinserträge</li><li>mit Option der automatischen Prolongation des Festgelds</li></ul>");
SparenMatrix[11] = new Sparen("11","Rentenplan","#link","<ul class='vorteile'><li>variabler Sonderzinssatz oder festgeschriebener Zins über die gesamte Laufzeit</li><li>flexible monatliche Auszahlung: wahlweise mit oder ohne Kapitalverzehr</li></ul>");
SparenMatrix[12] = new Sparen("12","Investmentsparen*","#link","<ul class='vorteile'><li>langfristig überdurchschnittliche Performance durch Cost Averaging (konstante Einzahlung bei schwankenden Anteilswerten) Guthaben ist jederzeit verfügbar anfallende Erträge werden automatisch wiederangelegt, kostenlose Depotverwahrung, auf Wunsch ist eine Kombination von Anspar- und Auszahlplan möglich</li></ul>");
//  SparvarianteMatrix = array(SPAR_ID,MINDESTANLAGEBEITRAG,VARIANTEN_ID,ANLAGE);
SparvarianteMatrix = new Array();
SparvarianteMatrix[0] = new Sparvariante("0","2500","0","einmalig");
SparvarianteMatrix[1] = new Sparvariante("0","5000","1","einmalig");
SparvarianteMatrix[2] = new Sparvariante("1","25","2","monat");
SparvarianteMatrix[3] = new Sparvariante("1","250","3","jahr");
SparvarianteMatrix[4] = new Sparvariante("2","0","4","monat+jahr");
SparvarianteMatrix[5] = new Sparvariante("3","0","5","einmalig");
SparvarianteMatrix[6] = new Sparvariante("4","0","6","einmalig");
SparvarianteMatrix[7] = new Sparvariante("5","2500","7","einmalig"); // Dynamiksparen
SparvarianteMatrix[8] = new Sparvariante("6","5000","8","RAUS"); // Telegeld V1
SparvarianteMatrix[9] = new Sparvariante("7","0","9","RAUS"); // Telefel V2
SparvarianteMatrix[10] = new Sparvariante("8","0","10","monat+jahr+einmalig"); // TopZins
SparvarianteMatrix[11] = new Sparvariante("9","2500","11","einmalig"); // FestInvest
SparvarianteMatrix[12] = new Sparvariante("10","5000","12","einmalig"); // Festgeld 
SparvarianteMatrix[13] = new Sparvariante("10","25000","13","einmalig");
SparvarianteMatrix[14] = new Sparvariante("10","50000","14","einmalig");
//SparvarianteMatrix[14] = new Sparvariante("12","5000","15","einmalig");
//SparvarianteMatrix[14] = new Sparvariante("13","25","16","einmalig");
// DauerMatrix = array("Anlagemindestdauer, Anlagemaximaldauer, Dauerid");
DauerMatrix = new Array();
DauerMatrix[0] = new Dauer("6","3000","0");
DauerMatrix[1] = new Dauer("12","3000","1");
DauerMatrix[2] = new Dauer("24","3000","2");
DauerMatrix[3] = new Dauer("36","72","3");
DauerMatrix[4] = new Dauer("96","300","4");
DauerMatrix[5] = new Dauer("72","72","5");
DauerMatrix[6] = new Dauer("12","12","6");
DauerMatrix[7] = new Dauer("24","24","7");
DauerMatrix[8] = new Dauer("36","36","8");
DauerMatrix[9] = new Dauer("48","48","9");
DauerMatrix[10] = new Dauer("60","60","10");
DauerMatrix[11] = new Dauer("84","84","11");
DauerMatrix[12] = new Dauer("96","96","12");
DauerMatrix[13] = new Dauer("120","120","13");
DauerMatrix[14] = new Dauer("60","60","14");
DauerMatrix[15] = new Dauer("0","3000","15");
DauerMatrix[16] = new Dauer("1","3000","16");
DauerMatrix[17] = new Dauer("2","3000","17");
DauerMatrix[18] = new Dauer("3","3000","18");
DauerMatrix[19] = new Dauer("6","3000","19");
DauerMatrix[20] = new Dauer("300","300","20");
// ZinsenMatrix = array(variantenid,dauerid,zinssatz,bonusid);
ZinsenMatrix = new Array();
ZinsenMatrix [0] = new Zinsen("0","0","3.00","");
ZinsenMatrix [1] = new Zinsen("0","1","3.20","");
ZinsenMatrix [2] = new Zinsen("0","2","3.40","");
ZinsenMatrix [3] = new Zinsen("1","0","3.10","");
ZinsenMatrix [4] = new Zinsen("1","1","3.30","");
ZinsenMatrix [5] = new Zinsen("1","2","3.50","");
ZinsenMatrix [6] = new Zinsen("2","3","1.80","var bonusbreak = true; var bonuszinsen = new Array(0,2,4,8,12,16); if(k == 1){ sparleistung -= zinsen; jahreszinsen -= zinsen; temp_sparbetrag = sparbetrag; zinsen = Jahreszinsen(zinssatz, temp_sparbetrag)/12; zinsen = parseFloat(Modellrechner.runde(zinsen)); sparleistung += zinsen; jahreszinsen += zinsen; jahreszinsen = parseFloat(Modellrechner.runde(jahreszinsen));} temp_sparbetrag += sparbetrag; if((k%12) == 0){ temp_sparbetrag += ((sparbetrag*12)*bonuszinsen[((k/12)-1)])/100; sparleistung += ((sparbetrag*12)*bonuszinsen[((k/12)-1)])/100; temp_sparbetrag += jahreszinsen; jahreszinsen = 0;}");
ZinsenMatrix [7] = new Zinsen("2","4","3.20","var bonusbreak = true; var bonuszinsen = new Array(0,0,0,0,0,0,0,8,10,12,15,20,25,30,35,40,45,50,55,60,65,70,75,80,100); if(k == 1){ sparleistung -= zinsen; jahreszinsen -= zinsen; temp_sparbetrag = sparbetrag; zinsen = Jahreszinsen(zinssatz, temp_sparbetrag)/12; zinsen = parseFloat(Modellrechner.runde(zinsen)); sparleistung += zinsen; jahreszinsen += zinsen; jahreszinsen = parseFloat(Modellrechner.runde(jahreszinsen));} temp_sparbetrag += sparbetrag; if((k%12) == 0){ temp_sparbetrag += ((sparbetrag*12)*bonuszinsen[((k/12)-1)])/100; sparleistung += ((sparbetrag*12)*bonuszinsen[((k/12)-1)])/100; temp_sparbetrag += jahreszinsen; jahreszinsen = 0;}");
ZinsenMatrix [44] = new Zinsen("3","3","1.80","var bonuszinsen = new Array(0,2,4,8,12,16); if((k%12) == 0){ temp_sparbetrag += (sparbetrag*bonuszinsen[((k/12)-1)])/100; sparleistung += ((sparbetrag)*bonuszinsen[((k/12)-1)])/100;}");
ZinsenMatrix [45] = new Zinsen("3","4","3.20","var bonuszinsen = new Array(0,0,0,0,0,0,0,8,10,12,15,20,25,30,35,40,45,50,55,60,65,70,75,80,100); if((k%12) == 0){ temp_sparbetrag += (sparbetrag*bonuszinsen[((k/12)-1)])/100; sparleistung += ((sparbetrag)*bonuszinsen[((k/12)-1)])/100;}");
ZinsenMatrix [8] = new Zinsen("4","5","0.75","if(k == zeitspanne){sparleistung += Jahreszinsen(14,temp_sparbetrag)/12*schrittweise;};"); //14.00 nach 7 Jahren
ZinsenMatrix [9] = new Zinsen("5","6","4.25","jahreszinsen = 0;");
ZinsenMatrix [10] = new Zinsen("5","7","4.30","jahreszinsen = 0;");
ZinsenMatrix [11] = new Zinsen("5","8","4.30","jahreszinsen = 0;");
ZinsenMatrix [12] = new Zinsen("5","9","4.30","jahreszinsen = 0;");
ZinsenMatrix [13] = new Zinsen("5","10","4.30","jahreszinsen = 0;");
ZinsenMatrix [14] = new Zinsen("5","11","4.35","jahreszinsen = 0;");
ZinsenMatrix [15] = new Zinsen("5","12","4.40","jahreszinsen = 0;");
ZinsenMatrix [16] = new Zinsen("5","13","4.50","jahreszinsen = 0;");
ZinsenMatrix [17] = new Zinsen("6","6","4.25","");
ZinsenMatrix [18] = new Zinsen("6","7","4.30","");
ZinsenMatrix [19] = new Zinsen("6","8","4.30","");
ZinsenMatrix [20] = new Zinsen("6","9","4.30","");
ZinsenMatrix [21] = new Zinsen("6","10","4.30","");
ZinsenMatrix [22] = new Zinsen("6","11","4.35","");
ZinsenMatrix [23] = new Zinsen("6","12","4.40","");
ZinsenMatrix [24] = new Zinsen("6","13","4.50","");
ZinsenMatrix [25] = new Zinsen("7","14","3.50","var a = new Array(0, 0.25, 0.50, 0.75, 1.25); zinsen = Jahreszinsen(a[(k/12)-1],temp_sparbetrag)/12*schrittweise; sparleistung += zinsen; jahreszinsen += zinsen;"); // 3.50+3.75+4.00+4.25+4.75
ZinsenMatrix [26] = new Zinsen("8","15","3.07","");
ZinsenMatrix [27] = new Zinsen("9","15","3.07","");
ZinsenMatrix [28] = new Zinsen("10","15","3.25","");
ZinsenMatrix [29] = new Zinsen("11","20","5.00","");//+X
ZinsenMatrix [30] = new Zinsen("12","19","3.90","");
ZinsenMatrix [31] = new Zinsen("12","16","2.50","");
ZinsenMatrix [32] = new Zinsen("12","17","2.50","");
ZinsenMatrix [33] = new Zinsen("12","18","3.60","");
ZinsenMatrix [34] = new Zinsen("13","5","2.65","");
ZinsenMatrix [35] = new Zinsen("13","16","2.65","");
ZinsenMatrix [36] = new Zinsen("13","17","3.60","");
ZinsenMatrix [37] = new Zinsen("13","18","3.90","");
ZinsenMatrix [38] = new Zinsen("14","0","2.80","");
ZinsenMatrix [39] = new Zinsen("14","0","2.80","");
ZinsenMatrix [40] = new Zinsen("14","0","3.60","");
ZinsenMatrix [41] = new Zinsen("14","0","3.90","");
ZinsenMatrix [42] = new Zinsen("2","4","3.20","");
ZinsenMatrix [43] = new Zinsen("3","3","1.80","");
*/

Modellrechner = function(){
	
}
/**
* Funktion die beim Initialisieren aufgerufen wird.
* @params {rechner_inputs} ein array von allen inputfeldern die eingelesen werden sollen
**/
Modellrechner.init = function(rechner_inputs){
	
	this.inputs = rechner_inputs;
	/*for(var i in rechner_inputs)
	{
		try{
			for(var x in document.getElementsByName(rechner_inputs[i])){			
				document.getElementsByName(rechner_inputs[i])[x].checked = false;
			}
		}catch(e){;}
	}*/
	document.getElementsByName("anlage")[0].checked = true;
	document.getElementsByName("frist")[0].checked = true;
	document.getElementsByName("geld_anlage")[0].value = "5000";
	document.getElementsByName("anlage_zeiteinheit")[0].checked = true;
	$("anlagesub").style.display = "none";
	this.Eingabewerte = new Object();
	this.GuteVariante = new Array();
	this.SchlechtereVariante = new Array();
	this.GuteDauer = new Array();
	this.SchlechtereDauer = new Array();
	this.GuteZinsen = new Array();
	
}
/**
* Wir aufgerufen wenn auf den Buttom gedrückt wurde.
**/
Modellrechner.submit = function(){
	this.Ausgabe("");
	Modellrechner.read();
}
/**
* Durchsucht das array Dauer
**/
Modellrechner.SearchDauer = function(){
	var min = 0;
	var max = 0;
	this.GuteDauer = new Array();
	for(var i = 0; i < DauerMatrix.length;i++)
	{
		min = parseInt(DauerMatrix[i].anlagemindestdauer);
		max = parseInt(DauerMatrix[i].anlagemaximaldauer);
		if(min <= this.Dauer && this.Dauer <= max)
		{
			this.GuteDauer.push(DauerMatrix[i].dauerid);
		}
		else if((min <= Math.ceil(this.Dauer*0.5) && Math.ceil(this.Dauer*0.5) <= max) || (min <= this.Dauer*2 && this.Dauer*2 <= max))
		{
			this.SchlechtereDauer.push(DauerMatrix[i].dauerid);
		}
	}
	
}
Modellrechner.SearchArray = function(id,array){
	var response = false;
	for(var j = 0; j < array.length;j++)
	{	
		if(array[j] == id)
		{
		 response = id;
		 break;
		}
	}
	return response;
}

Modellrechner.SearchZinsen = function(){
	var variantenid="";
	var dauerid="";
	this.GuteZinsen = new Array();
		for(var i = 0; i < ZinsenMatrix.length;i++)
		{
			dauerid=ZinsenMatrix[i].dauerid; 
			variantenid=ZinsenMatrix[i].variantenid;
			dauer_search = Modellrechner.SearchArray(dauerid,this.GuteDauer);
			varianten_search = Modellrechner.SearchArray(variantenid,this.GuteVariante);
			if( dauer_search != false && varianten_search != false)
			{
				this.GuteZinsen.push(i);
			}
		}

}
Modellrechner.SearchSparvariante = function(){
	var search_anlage;
	Modellrechner.GuteVariante = new Array();
	for(var i = 0; i < SparvarianteMatrix.length;i++)
	{
		//parseInt(SparvarianteMatrix[i].mindestanlagebeitrag);
		search_anlage = SparvarianteMatrix[i].anlage.search(this.Anlage);
		if(this.Anlage == SparvarianteMatrix[i].anlage || search_anlage != -1)
		{
			if(this.MindestAnlageBeitrag >= parseInt(SparvarianteMatrix[i].mindestanlagebeitrag))
			{
				Modellrechner.GuteVariante.push(SparvarianteMatrix[i].variantenid);
			}			
			else
			{
				Modellrechner.SchlechtereVariante.push(SparvarianteMatrix[i].variantenid);
			}
		
		}
	}	
	
}
Modellrechner.Ausgabe = function(ausgabe){
	$("ausgabe").style.display = "block";
	$("ausgabe").innerHTML = ausgabe;
}
/**
* Rundet einen Zahl kaufmännisch auf 2 Stellen hinterm Komma
* Kriegt eine komma-Zahl übergeben, und gibt einen String mit der gerundeten Zahl wieder
**/
Modellrechner.runde = function(x) {
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  return k.substring(0, k.indexOf('.') + 3);
}
/*
Modellrechner.datum = function(monate){
	var datum = new Date();
	monate 
	var milli =  datum.getMilliseconds()
	return datum.toGMTString();
}*/
Modellrechner.Sparbetrag = function(){
	var Jahreszinsen = function(zinsatz,kapital){ // Funktion die die Jahreszinsen ausrechnet und diese wiedergib, Parameter: Der Zinssatz und das zu verzinsende Kapital
		var response = (kapital*zinsatz)/100;
		return response;
	}
	var table_header = function(){ // Funktion die in die Ausgabe eine Tabelle Anfängt und 3 Spaltenüberschriften in diese schreibt;
		if(Modellrechner.ausgabeprodukte.length == 0){
			ausgabe += '<div>Leider keine passenden Produkte für ihre eingabe gefunden.</div>';
		}
		else
		{
			ausgabe += '<table border="0" cellpadding="0" cellspacing="0" class="valueOutput">';
			ausgabe += '<tr class="descr"><th><div class="left">Produkt Empfehlung</div></th><th><div class="right">Mindestanlage in €</div></th><th><div class="right">';
			ausgabe += "Erwarteter Zinsertrag*</div></th><th colspan='2'><div class='right'>Vorteile/Details</div></th></tr>";
		}
	}
	var table_foot = function(foot){
		ausgabe += "<p>";
		ausgabe += foot;
		ausgabe += "</p>";
		ausgabe += "<p>";
		ausgabe += "** Der Zinssatz ist während der Laufzeit variabel und abhängig vom Marktzinssatz. Es wurde bei der Berechnung des Zinsertrages für die gesamte Laufzeit der aktuelle Zinssatz verwendet.";
		ausgabe += "</p>";
	}
	this.sparleistung_regel = function(schrittweise,sparbetrag,zeitspanne){
		var zinssatz = 0;
		var variantenid = 0;
		var Sparid = 0;
		var bonusid = "";
		this.ausgabeprodukte = new Array();
		for(var i = 0;i < Modellrechner.GuteZinsen.length; i++)
		{	
			var bonusbreak = false;
			var jahreszinsen = 0;
			var sparleistung = 0;
			var zinsen = 0;
			var temp_sparbetrag = sparbetrag*12/schrittweise;
			zinssatz = parseFloat(ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].zinssatz);
			variantenid = parseInt(ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].variantenid);
			bonusid = ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].bonusid;
			Sparid = parseInt(SparvarianteMatrix[variantenid].Sparid);
			this.ausgabeprodukte[i] = new Object();
			this.ausgabeprodukte[i]['name'] =  SparenMatrix[Sparid].name;
			this.ausgabeprodukte[i]['vorteile'] = SparenMatrix[Sparid].vorteile;
			this.ausgabeprodukte[i]['link'] = SparenMatrix[Sparid].link;
			this.ausgabeprodukte[i]['mindestanlage'] = SparvarianteMatrix[variantenid].mindestanlagebeitrag;
				for(var k = schrittweise; k <= zeitspanne; k+=schrittweise)
				{
					
					zinsen = Jahreszinsen(zinssatz,temp_sparbetrag)/12*schrittweise;
					zinsen = parseFloat(Modellrechner.runde(zinsen));
					sparleistung += zinsen;
					jahreszinsen += zinsen;
					jahreszinsen = parseFloat(Modellrechner.runde(jahreszinsen));
					if(bonusid != "" && typeof bonusid != "undefined")
					{
						eval(bonusid);
					}
					
					if((((k%12) == 0) || ((schrittweise == 1) && (k == schrittweise))) && (bonusbreak != true)) // Hier wird das Problem abgefangen dass  es nicht Zinseszinsen auf Zinsen gibt die nur ein Teilzinsen der Zinsen eines Jahres sind. 
					{
						temp_sparbetrag += jahreszinsen;
						temp_sparbetrag += sparbetrag*12/schrittweise;
						jahreszinsen = 0;
					}
					
				}
				if(this.ausgabeprodukte[i]['sparleistung'] == "" || this.ausgabeprodukte[i]['sparleistung'] == 0 || typeof this.ausgabeprodukte[i]['sparleistung'] == "undefined"){ // Fall dass dieses Produkt schonmal mit Sparleistung drinnen steht
					this.ausgabeprodukte[i]['sparleistung'] = sparleistung;
				}
				else{
					if(this.ausgabeprodukte[i]['sparleistung'] < sparleistung)
					{
						this.ausgabeprodukte[i]['sparleistung'] = sparleistung;
					}
				}			
		}
	}
	this.sparleistung_einmalig = function(schrittweise,sparbetrag,zeitspanne){
		var zinssatz = 0;
		var variantenid = 0;
		var Sparid = 0;
		var bonusid ="";
		this.ausgabeprodukte = new Array();
		for(var i = 0;i < Modellrechner.GuteZinsen.length; i++)
		{	
			var jahreszinsen = 0;
			var sparleistung = 0;
			var zinsen = 0;
			var zinssatz = 0;
			var temp_sparbetrag = sparbetrag;
			zinssatz = parseFloat(ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].zinssatz);
			variantenid = parseInt(ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].variantenid);
			bonusid = ZinsenMatrix[parseInt(Modellrechner.GuteZinsen[i])].bonusid;
			Sparid = parseInt(SparvarianteMatrix[variantenid].Sparid);
			this.ausgabeprodukte[i] = new Object();
			this.ausgabeprodukte[i]['name'] =  SparenMatrix[Sparid].name;
			this.ausgabeprodukte[i]['vorteile'] = SparenMatrix[Sparid].vorteile;
			this.ausgabeprodukte[i]['link'] = SparenMatrix[Sparid].link;
			this.ausgabeprodukte[i]['mindestanlage'] = SparvarianteMatrix[variantenid].mindestanlagebeitrag;
				for(var k = schrittweise; k <= zeitspanne*schrittweise; k+=schrittweise)
				{
					
					zinsen = Jahreszinsen(zinssatz,temp_sparbetrag)/12*schrittweise;
					zinsen = parseFloat(Modellrechner.runde(zinsen));
					sparleistung += zinsen;
					jahreszinsen += zinsen;
					jahreszinsen = parseFloat(Modellrechner.runde(jahreszinsen));
					if(bonusid != "" && typeof bonusid != "undefined")
					{
						eval(bonusid);
					}
					if((schrittweise == 12) || ((k%12) == 0) || ((schrittweise == 1) && (k == zeitspanne*schrittweise))) // Hier wird das Problem abgefangen dass  es nicht Zinseszinsen auf Zinsen gibt die nur ein Teilzinsen der Zinsen eines Jahres sind. 
					{
						temp_sparbetrag += jahreszinsen;
						jahreszinsen = 0;
					}
					
				}
			this.ausgabeprodukte[i]['sparleistung'] = sparleistung;
		}
	}
	this.sort = function(produkte){
		var min = 0;
		var temp = new Object();
		for(var u = 0; u < produkte.length; u++)
		{
			min = u;
			for(var o = u; o < produkte.length; o++){
				if ((parseFloat(produkte[o]['sparleistung'])*100) > (parseFloat(produkte[min]['sparleistung'])*100)){min=o;}
			}
			tmp = produkte[min];
			produkte[min] = produkte[u];
			produkte[u] = tmp;
		}
		return produkte;
	}
	this.produktdontexist = function(array,produktname){
		var response = true;
		for(var l = 0; l < array.length; l++){
			if(array[l] == produktname){
				response = false; break;
			}
		}
		return response;
	}
	this.ausgabeprodukte = new Array();
	var zeitspanne =  parseInt(this.Dauer); // Wie lange man sparen möchte
	var sparbetrag = parseInt(this.MindestAnlageBeitrag); // Soviel soll p. a. oder pro monat oder einmalig gespart werden
	var ausgabe = ""; // Die endausgabe in TabellenForm
	if(this.Anlage == "jahr") // Der das jedes Jahr Geld auf das Sparkonto eingezahlt wird
	{
		var jahre = 0;
		if(zeitspanne%12 == 0){ // falls genau ein jahr
			jahre = zeitspanne/12;
			schrittweise = 12;
		}
		else{ // zb. 17 monate, hier wird auf die nächstniedrigere jahreszahl runtergekürzt
			zeitspanne -= zeitspanne%12;
			jahre = zeitspanne/12;
			schrittweise = 1;
		}
		this.sparleistung_regel(schrittweise,sparbetrag,zeitspanne);
		table_header();
		var foot = "* Empfohlene Produkte mit Zinsertrag bei jährlicher Einzahlung von "+sparbetrag+"€ für einen Zeitraum von "+jahre+" Jahren";
		
	}
	else if(this.Anlage == "monat") // Der Falll das jeden Monat Geld zum sparen zurück gelegt wird
	{	
		schrittweise = 1;
		this.sparleistung_regel(schrittweise,sparbetrag,zeitspanne);
		table_header();
		var foot ="* Empfohlene Produkte mit Zinsertrag bei monatlicher Einzahlung von "+sparbetrag+"€ für einen Zeitraum von "+zeitspanne+" Monaten";
	}
	else  // Der Fall einer einmaligen festanlage von einen batzen geld
	{
		var jahrmonat = "Monaten";
		var schrittweise = 1;
		if((zeitspanne>11) && ((zeitspanne%12) == 0)){ // Wenn die Zeitspanne genau ein oder mehrere Jahre enspricht
			zeitspanne = zeitspanne/12;
			jahrmonat = "Jahren";
			schrittweise = 12;
		}
		this.sparleistung_einmalig(schrittweise,sparbetrag,zeitspanne);
		table_header();
		var foot = "* mit Zinsertrag bei einmaliger Einzahlung von "+sparbetrag+"€ und einer Laufzeit von "+zeitspanne+" "+jahrmonat;
	}
	
	this.ausgabeprodukte = this.sort(this.ausgabeprodukte);
	var doppelte_produkte = new Array();
	for(var x = 0; x < this.ausgabeprodukte.length; x++)
	{
		if(this.produktdontexist(doppelte_produkte,this.ausgabeprodukte[x]['name']) == true){
			doppelte_produkte.push(this.ausgabeprodukte[x]['name']);
			if(x == 0){
				ausgabe += "<tr class='topProd'>";
				if(parseFloat(this.ausgabeprodukte[x]['sparleistung']) == 0){ this.Ausgabe("<p style='color:red;'>Bitte überprüfen Sie nochmals ihre Eingabe.</p>"); return;}
			}
			else if(x == (this.ausgabeprodukte.length-1)){
				ausgabe += "<tr class='normal last'>";
				
			}
			else{
				ausgabe += "<tr class='normal'>";
			}
			ausgabe += "<td class='first'>"+this.ausgabeprodukte[x]['name']+"</td><td class='middle'>"+this.ausgabeprodukte[x]['mindestanlage']+"€</td><td class='middle'>"+this.runde(this.ausgabeprodukte[x]['sparleistung'])+"€</td><td class='dotted'><p class='vorteile'>"+this.ausgabeprodukte[x]['vorteile']+"</p></td><td><h4 class='link'><a href='javascript:Opx(\""+this.ausgabeprodukte[x]['link']+"\",\"\");'>zum Produkt</a><h4></td></tr>";
		}
	}
		ausgabe +="</table>";
	table_foot(foot);
	this.Ausgabe(ausgabe);
}
Modellrechner.rechne = function(){
	this.MindestAnlageBeitrag = Modellrechner.Eingabewerte["geld_anlage"];
	//this.Dauer = parseInt(Modellrechner.Eingabewerte["zeitspanne"]);
	var anlage = Modellrechner.Eingabewerte["anlage"];
	var frist = Modellrechner.Eingabewerte["frist"];
	var frist_zeiteinheit = Modellrechner.Eingabewerte["frist_zeiteinheit"];
	if(anlage == "regel")
	{
		var anlage_zeiteinheit = Modellrechner.Eingabewerte["anlage_zeiteinheit"];
		this.Anlage = anlage_zeiteinheit;
	}
	else
	{
		this.Anlage = anlage;
	}
	if(frist_zeiteinheit == "Monate")
	{
		this.Dauer = parseInt(frist);
		
	}
	else
	{
		this.Dauer = parseInt(frist)*12;
	}
	Modellrechner.SearchSparvariante();
	Modellrechner.SearchDauer();
	Modellrechner.SearchZinsen();
	Modellrechner.Sparbetrag();
}
Modellrechner.read = function(){
	var radio = function(input){
		radiobuttons= document.getElementsByName(input);
	var value = "";
		for(var j=0;j<radiobuttons.length;j++)
		{
			if(radiobuttons[j].checked == true)
			{
				value = radiobuttons[j].value;
				Modellrechner.Eingabewerte[input] = value;
			}
			else
			{
			
			}
		}
	}
	var text = function(input){
	var value = "";
		value = document.getElementsByName(input)[0].value;
		Modellrechner.Eingabewerte[input] = value;
	}
	var span = function(input){
	var value = ""
		value = $(input).innerHTML;
		Modellrechner.Eingabewerte[input] = value;
	}
	Modellrechner.Eingabewerte = new Object();
	
	
	var type = "";
	for(var i=0; i < this.inputs.length;i++)
	{
		
			type = document.getElementsByName(this.inputs[i])[0].type;
			if(typeof type == "undefined" || type == ""){
				type = "span";
			}
			try{
			eval(type+"('"+this.inputs[i]+"');");
			}catch(e) { alert("Das Auslesen des Formulars ist leider Fehlgeschlagen. Bitte laden Sie die Seite neu und versuchen Sie es erneut. "+e);}
	}
	Modellrechner.rechne();
}
Modellrechner.checkInput = function(input){
	var value  = input.value;
	if(input.name == "geld_anlage"){
		var error_id = "geld_error";
	}
	else if(input.name == "langfristig1"){
		var error_id = "langfristig_error1";
	}
	else if(input.name == "kurzfristig1"){
		var error_id = "kurzfristig_error2";
	}
	if(!Number(value)){
		$(error_id).style.display = "inline";
	}
	else if(parseFloat(value) < 0)
	{
		$(error_id).style.display = "inline";
	}
	else{
		$(error_id).style.display = "none";
	}
}

CheckInput = function(value,error_id){
	if(!Number(value) && value != "0" && value != 0){
		$(error_id).style.visibility = "visible";
	}
	else if(parseFloat(value) < 0)
	{
		$(error_id).style.visibility = "visible";
	}
	else{
		$(error_id).style.visibility = "hidden";
	}
}

Input = function(input){
			if(input.value == 0 || input.value == "0")
			{
				input.value = "";
			}

}
Input.down = function(input){
	this.interval = window.setInterval("Input.plus()", 100);
}
Input.up = function(){
	this.interval = window.setInterval("Input.minus()", 100);
}
Input.Break = function(){
	window.clearInterval(this.interval);
}
Input.minus = function(){
	document.getElementById('textfeld').value--;
}
Input.plus = function(){
	document.getElementById('textfeld').value++;
}
Opacity = function(id){
if(typeof this.id != "undefined"){
//try{
	$(this.id).style.filter = "alpha(opacity=100)";
	$(this.id).style.MozOpacity = "1.00";
	$(this.id).style.opacity = "1.00";
//}catch(e){;}
}
window.clearInterval(this.interval);
this.id = id;
this.i = 0;
$(this.id).style.filter = "alpha(opacity=0)";
$(id).style.MozOpacity = "0.00";
$(this.id).style.opacity = "0.00";
this.interval = window.setInterval("Opacity.run(this)", 100);

}
Opacity.run = function(Opacity){
	Opacity.i += 10;
	$(Opacity.id).style.filter = "alpha(opacity="+String(Opacity.i)+")";
	$(Opacity.id).style.MozOpacity = "0."+String(Opacity.i);
	$(Opacity.id).style.opacity ="0."+String(Opacity.i);
	if(Opacity.i > 80){
		window.clearInterval(Opacity.interval);
	}
}
/**
* Fahr
* Parameter:  Id: gibt die id des div elemnts and, welches "Fahren" soll, height: gibt an bis zu welcher hoehe das div fahren soll.
**/
Fahr = function(id,height){
	try{
		$(this.id).style.height = ""; // zur sicherheit wird die Standardhoehe des vorigen Fahrers entfernt
	}catch(e){;}
	window.clearInterval(this.interval); // zur sicherheit werden alle noch fahrenden Fahrer beendet
	this.id = id;
	this.i = 1;
	this.height = height;
	$(this.id).style.display = "block";
	$(this.id).style.height = String(this.i)+"px";
	this.interval = window.setInterval("Fahr.auf(this)",10);
}
Fahr.auf = function(Fahr){
	Fahr.i += 25;
	$(Fahr.id).style.height = String(Fahr.i)+"px";
	if(Fahr.i > parseInt(Fahr.height)){
		$(Fahr.id).style.height = "";
		window.clearInterval(Fahr.interval);
	}
}
/**
* Fahr
* Parameter:  Id: gibt die id des div elemnts and, welches "Fahren" soll, height: gibt an bis zu welcher hoehe das div fahren soll. Doafter: eine Funktion hoeherer ordnung die ausgeführt wenn das driven fertig ist
**/
Drive = function(id,height,doafter){
	try{
		$(this.id).style.height = ""; // zur sicherheit wird die Standardhoehe des vorigen Fahrers entfernt
	}catch(e){;}
	window.clearInterval(this.interval); // zur sicherheit werden alle noch fahrenden Fahrer beendet
	this.id = id;
	this.i = height;
	this.height = height;
	this.doafter = doafter;
	$(this.id).style.height = String(this.i)+"px";
	this.interval = window.setInterval("Drive.zu(this)",10);
}
Drive.zu = function(Drive){
	Drive.i -= 25;
	$(Drive.id).style.height = String(Drive.i)+"px";
	if(Drive.i < 5){
		$(Drive.id).style.height = "";
		$(Drive.id).style.display = "none";
		window.clearInterval(Drive.interval);
		eval(Drive.doafter);
	}
}
Seitenfahr = function(id,width){
	try{
		$(this.id).style.width = ""; // zur sicherheit wird die Standardhoehe des vorigen Fahrers entfernt
	}catch(e){;}
	window.clearInterval(this.interval); // zur sicherheit werden alle noch fahrenden Fahrer beendet
	this.id = id;
	this.i = 1;
	this.width = width;
	$(this.id).style.display = "block";
	$(this.id).style.width = String(this.i)+"px";
	this.interval = window.setInterval("Seitenfahr.auf(this)",10);
}
Seitenfahr.auf = function(Seitenfahr){
	Seitenfahr.i += 3;
	$(Seitenfahr.id).style.width = String(Seitenfahr.i)+"px";
	if(Seitenfahr.i > parseInt(Seitenfahr.width)){
		$(Seitenfahr.id).style.width = "";
		window.clearInterval(Seitenfahr.interval);
	}
}

function Fahren(fahrid, pixel, schrittweise,richtung,geschwindigkeit,doafterthis,manuell){
	clearIt(fahrid);
	// Hier wird eine neue Instanz des zu Fahrenden Elementes Erzeugt
	eval("this."+fahrid+" = new Fahren_Instanz(fahrid, pixel, schrittweise,richtung,geschwindigkeit,doafterthis,manuell);");
	var richtung = eval("this."+fahrid+".richtung");
	var funktion = "this."+fahrid+"."+richtung;
	try{
	// Hier wird sichergestellt das die Funktion die "fährt" immer wieder aufgerufen wird
	eval(fahrid+'.interval = window.setInterval("try{eval('+funktion+');}catch (e){;}",'+geschwindigkeit+');');
	}catch(e) {;}
}
   
// Funktion die alle laufenden Instanzen des jeweiligen Block Elements anhält
function clearIt(id){
		try{
			eval('window.clearInterval('+id+'.interval)');
		}catch (e){;}
}
/**
* Eine Funktion die den Inhalt eines Blockelemnts langsam auf und Zufahren lässt
* @params : {fahrid} :Die id des Blockelements, welches Auf- bzw zfahren soll
* @params : {pixel} :Die Anzahl der Pixel die das Element fahren soll
* @params : {schrittweise} :Die Schrittweise in Pixel die solch ein Element pro Aufruf fahren soll
* @params  : {richtung} : Kann "horizontal" oder "vertikal" sein
* @params : {geschwindigkeit| : Geschwindikeit in Millisekunden pro schritt
* @params(optional) : {doafter} : code der durch eval nach abschluss der wiederaufrufe ausgeführt wird  
* @params(optional) : {manuell} : Kann "open" oder "close" erhalten.
**/
function Fahren_Instanz(fahrid, pixel, schrittweise, richtung ,geschwindigkeit, doafterthis, manuell){

	// Eine Funktion die den ÜbergebenenString als Javascript-Code ausführt
	this.doafter = function(dothis){
	try{
		eval(dothis);
	}catch(e){;}
	}
	// Funktion die, die passende funktion die für die benötigte Richtung zurückgibt
	this.welche_richtung = function(richtung,pixel){
		if(richtung == "horizontal"){
			this.width = pixel;
			if(this.manuell == "" || (typeof this.manuell == "undefined")){
				try{
					// Liest die aktuelle Weite des Blockelementes aus
					var weite = $(this.id).style.width;
				}catch(e){;}
				try{
					// Entfernt die Maßeinheit
					weite = Number(weite.replace(/px/g, ""));
				}catch(e){;}
				if(weite > 0){
					this.i = pixel;
					return "links()";
				}
				else
				{
					this.i = 0;
					return "rechts()";
				}
			}
			else if(this.manuell == "open")
			{
				this.i = 0;
				return "rechts()";
			}
			else
			{
				this.i = pixel;
				return "links()";
			}
		}
		else if(richtung == "vertikal"){
			this.height = pixel;
			if(this.manuell ==  "" || (typeof this.manuell == "undefined")){
				try{
					// Liest die aktuelle hoehe des BlockElementes aus
					var hoehe = $(this.id).style.height;
				}catch(e){;}
				try{
					// Entfernt die Maßeinheit
					hoehe = Number(hoehe.replace(/px/g, ""));
				}catch(e){;}
				if(hoehe > 0){
					this.i = pixel;
					return "oben()";
				}
				else{
					this.i = 0;
					return "unten()";
				}
			}
			else if(this.manuell == "open")
			{
				var hoehe = $(this.id).style.height;
				hoehe = Number(hoehe.replace(/px/g, ""));
				this.i = hoehe;
				return "unten()";
			}
			else
			{
				this.i = pixel;
				return "oben()";
			}
		}
		else // Bei jeder anderen Eingabe bricht das Programm ab
		{
			return false;
		}
		
		
	}
	// Hier wird verhindert dass die selbe Instanz nochmals läuft
	clearIt(this.id);
	// Die Id des Blockelementes und Gleichzeitig der Name der Instanz
	this.id = fahrid;
	// Die Schrittweise gibt in Pixel an wie weit das Element pro Intervaaufrufe fahren soll, wenn sie kleiner null ist bricht das Programm ab
	if(schrittweise <= 0) return false;
	this.schrittweise = schrittweise;
	this.manuell = manuell;
	// Die Richtung gibt an ob das Element vertikal oder Diagonal fahren soll
	this.doafterthis = doafterthis;
	this.richtung = this.welche_richtung(richtung,pixel);
	//this.interval = window.setInterval(String(this.id)+"."+this.richtung+"()",10);
}

// Funktion die das Element  von unten nach  Oben fahren lässt
Fahren_Instanz.prototype.oben = function(){
        try{
        this.i -= this.schrittweise;
        }catch(e){;}
        try{
        $(this.id).style.height = String(this.i)+"px";
        }catch(e){;}
        try{
        var i = this.i;
        }catch(e){;}
        // Die Abbruchbedingungen
        if(i <= 0){
            try{
                $(this.id).style.height = "1px";
            }catch(e){;}
            try{
                $(this.id).style.display = "none";
            }catch(e){;}
            clearIt(this.id);
            try{
                this.doafter(this.doafterthis);
            }catch(e){;}    
        }
    }
// Funktion die das Element nach untenFahren lässt
Fahren_Instanz.prototype.unten = function(){
		this.i += this.schrittweise;
		$(this.id).style.height = String(this.i)+"px";
		var i = this.i;
		try{
				$(this.id).style.display = "block";
		}catch(e){;}
		var hoehe = this.height;
		// Die Abbruchbedingungen
		if(i >= hoehe){
			try{
				$(this.id).style.height = "";
			}catch(e){;}
			clearIt(this.id);
			try{
				this.doafter(this.doafterthis);
			}catch(e){;}
		}
	}
// Funktion die das Element nach Links Fahren lässt
Fahren_Instanz.prototype.links = function(){
		this.i -= this.schrittweise;
		$(this.id).style.width = String(this.i)+"px";
		var i = this.i;
		// Die Abbruchbedingungen
		if(i <= 0){
			try{
				$(this.id).style.width = "0px";
			}catch(e){;}
			clearIt(this.id);
			try{
				this.doafter(this.doafterthis);
			}catch(e) {;}
		}
	}
// Funktion die das Element nach Rechts Fahren lässt
Fahren_Instanz.prototype.rechts = function(){
		this.i += this.schrittweise;
		$(this.id).style.width = String(this.i)+"px";
		var i = this.i;
		var weite = this.width;
		// Die Abbruchbedingungen
		if(i >= weite){
			clearIt(this.id);
			try{
				this.doafter(this.doafterthis);
			}catch(e) {;}
		}
	}


var divs = new Array();
var openedDivs = new Array();

function animatedDivToggle (level,divName, height, step, speed) {
	
	//Close
	if ((openedDivs[level]) && (openedDivs[level] != "")) {
		Fahren(openedDivs[level],divs[level][openedDivs[level]]['height'],divs[level][openedDivs[level]]['steps'],'vertikal',divs[level][openedDivs[level]]['speed'],'','close');
		/*for (var i = 0; i < level; i++) {
			   $(openedDivs[i]).style.height = divs[i][openedDivs[i]].height-(divs[level][openedDivs[level]].height)+"px";
			   divs[i][openedDivs[i]].height -= (divs[level][openedDivs[level]].height);
		}*/
		openedDivs[level] = "";

	   
	}
	
	// OpenUP
	if (arguments.length > 1) {
	   /*for (var i = 0; i < level; i++) {
			   animatedDivToggle(i,openedDivs[i], divs[i][openedDivs[i]].height+height, step, speed);
	   }*/
	   Fahren(divName,height,step,'vertikal',speed,'','open');
	   if (!divs[level]) {divs[level] = new Object();}
	   divs[level][divName] = {'height' : height, 'steps' : step, 'speed' : speed};
	   openedDivs[level] = divName;
	}
}
	
/* Funktion zum definieren der Pflichtfelder im Response "Termin vereinbaren" */
function displayItem(ID) {
	if (ID.value == "Telefon") {
		document.getElementById("value"+ID.value).className = "block";
		document.getElementById("valueEmail").className = "none";		
	}
	else if (ID.value == "Email") {
		document.getElementById("value"+ID.value).className = "block";
		document.getElementById("valueTelefon").className = "none";		
	}
}
