var fade = {
	////////////////////////////////////////////////////////////////////////////////
	// Einstellungen
	opacity_step: 5,
	rate: 30, // 15 fps
	
	////////////////////////////////////////////////////////////////////////////////
	// Standard Einstellungen
	start: 5000,
	repeat: 5000,
	
	
	
	////////////////////////////////////////////////////////////////////////////////
	// Starten der Bilderleisten
	fade:function(obj) {
		var errors = 0;
		// id1
		if(typeof(obj.id1) == 'undefined') {
			errors++;
			alert('"id1" wurde nicht angegeben.');
		} else if(document.getElementById(obj.id1) == null) {
			errors++;
			alert('DIV mit der ID "'+obj.id1+'" existiert nicht.');
		}
		// id2
		if(typeof(obj.id2) == 'undefined') {
			errors++;
			alert('"id2" wurde nicht angegeben.');
		} else if(document.getElementById(obj.id2) == null) {
			errors++;
			alert('DIV mit der ID "'+obj.id2+'" existiert nicht.');
		}
		// Anzahl Bilder
		if(obj.imgs.length < 2) {
			errors++;
		}
		
		// Standardeinstellungen �bernehmen wenn nicht angegeben
		// start
		if(typeof(obj.start) == 'undefined') {
			obj.start = fade.start;
		}
		// repeat
		if(typeof(obj.repeat) == 'undefined') {
			obj.repeat = fade.repeat;
		}
		
		// Starten der Bilderleiste
		if(errors == 0) {
			// Bilder vorladen
			var img = new Array();
			for(var i in obj.imgs) {
				img[i] = new Image();
				img[i].src = obj.imgs[i];
			}
			
			setTimeout(function() { fade.changeImage(obj); }, obj.start);
		}
	},
	
	////////////////////////////////////////////////////////////////////////////////
	// Fadet das nächste Bild ein
	changeImage:function(obj) {
		var count_images = obj.imgs.length;
		
		var obj1 = document.getElementById(obj.id1);
		var obj2 = document.getElementById(obj.id2);
		
		for(var i in obj.imgs) {
			if(obj1.style.backgroundImage == 'url('+obj.imgs[i]+')' || 
				 obj1.style.backgroundImage == 'url("'+obj.imgs[i]+'")' ||
				 obj1.style.backgroundImage == 'url(http://'+window.location.hostname+obj.imgs[i]+')' ||
				 obj1.style.backgroundImage == 'url("http://'+window.location.hostname+obj.imgs[i]+'")') { 

				i = parseInt(i);
				
				// N�chstes Bild setzen
				if(i+1 == count_images) {
					var next = obj.imgs[0];
				} else {
					var next = obj.imgs[i+1];
				}
				
				// �bern�chstes Bild setzen
				if(i+2 == count_images) {
					var overnext = obj.imgs[0];
				} else if(i+2 > count_images) {
					var overnext = obj.imgs[1];
				} else {
					var overnext = obj.imgs[i+2];
				}
			}
		}
		
		if(next && overnext) {
			// Bild 1 ausblenden
			if(obj1.style.display == '' || obj1.style.display == 'block') {
				obj2.style.backgroundImage = 'url('+next+')';
				fade.fadeOut(obj.id1,'document.getElementById("'+obj.id1+'").style.backgroundImage = "url('+overnext+')";');
			// Bild 1 einblenden
			} else {
				fade.fadeIn(obj.id1);
			}
			
			// Funktion wiederholen
			setTimeout(function() { fade.changeImage(obj); }, obj.repeat);
		}
	},
	
	
	
	////////////////////////////////////////////////////////////////////////////////
	// Blendet ein Objekt aus
	fadeOut:function(id,callback) {
		var obj = document.getElementById(id);
		
		// Opacity Startwert
		if(typeof(obj.opacity) == 'undefined') {
			obj.opacity = 100;
		}
		
		// Opacity verändern
		if(obj.opacity > 0) {
			obj.opacity -= fade.opacity_step;
			if(obj.opacity < 0) {
				obj.opacity = 0;
			}
	
			if(obj.filters) {
				try {
					obj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = obj.opacity;
				} catch(e) {
					// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
					obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + obj.opacity + ")";
				}
			} else {
				obj.style.opacity = obj.opacity / 100;
			}
		}
		
		// Solange wiederholen, bis ganz ausgeblendet
		if(obj.opacity > 0) {
			setTimeout(function() { fade.fadeOut(id,callback); }, fade.rate);
		} else {
			obj.style.display = "none";
			if(callback) {
				eval(callback);
			}
		}
	},
	
	////////////////////////////////////////////////////////////////////////////////
	// Blendet ein Objekt ein
	fadeIn:function(id) {
		var obj = document.getElementById(id);
		obj.style.display = 'block';
		
		// Opacity Startwert
		if(typeof(obj.opacity) == 'undefined') {
			obj.opacity = 0;
		}
		
		// Opacity verändern
		if(obj.opacity < 100) {
			obj.opacity += fade.opacity_step;
			if(obj.opacity > 100) {
				obj.opacity = 100;
			}
	
			if(obj.filters) {
				try {
					obj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = obj.opacity;
				} catch(e) {
					// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
					obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + obj.opacity + ")";
				}
			} else {
				obj.style.opacity = obj.opacity / 100;
			}
		}
		
		// Solange wiederholen, bis ganz ausgeblendet
		if(obj.opacity < 100) {
			setTimeout(function() { fade.fadeIn(id); }, fade.rate);
		}
	}
};

