//	SlideShow v1.0
//	by Insam Andreas - http://www.gardena.net/
//  Licensed for GardenaNet
//
//	For more information on this script, write to:
//	info@gardena.net
//

// SlideShow Klasse
var SlideShow = {
	_slideshows: new Array(),
	settings: {
		tag: 'img',		// es kann angegeben welcher Tag für die Bilder verwendet werden soll (img, div, ...)
		interval: 5000,	// Millisekunden zwischen einem Fade und dem anderen (je höher desto seltener wird gefaded)
		fadeinterval: 7,// Millisekunden mit dem gafaded wird (je weniger desto schneller wird gefaded)
		step: 2,		// Schritt mit dem der Opacity-Wert erhöht wird (je höher desto schneller wird gefaded)
		// Style-Eigenschaften der beiden Container
		position: 'absolute',
		left: '0px',
		top: '0px',
		backgroundPosition: 'left top',
		backgroundRepeat: 'no-repeat'
				},
	init: function(objid, settings)
	{
		if (this._slideshows.length == 0)
		{
			var windowonload = function(){};
			if (typeof(window.onload) == 'function')
			{
				windowonload = window.onload;
			}
			if (typeof(Event) != 'undefined' && Event.observe)
			{
				Event.observe(window, 'load', windowonload, false);
				Event.observe(window, 'load', function(){SlideShow._load();}, false);
			}
			else
			{
				window.onload = function(){windowonload();SlideShow._load();};
			}
		}
		if (objid)
		{
			var slideshow = this._slideshows.length;
			var thissettings = {};
			for (var i in this.settings)
			{
				thissettings[i] = this.settings[i];
			}
			if (typeof(settings) == 'object')
			{
				for (var i in settings)
				{
					if (typeof(thissettings[i]) != 'undefined')
					{
						thissettings[i] = settings[i];
					}
				}
			}
			this._slideshows[slideshow] = {
				nr: this._slideshows.length,
				obj: objid,
				images: new Array(),
				settings: thissettings,
				imagenr: 1,
				objnr: 2,
				opacity: 0,
				interval: null};
			return slideshow;
		}
		return false;
	},
	_load: function()
	{
		for (var i = 0; i < this._slideshows.length; i += 1)
		{
			var obj = this._slideshows[i].obj = o.id(this._slideshows[i].obj);
			if (!obj || this._slideshows[i].images.length <= 1) continue;
			var settings = this._slideshows[i].settings;
			obj.style.position = 'relative';
			
			var obj1 = document.createElement(settings.tag);
			obj1.setAttribute('id', obj.id+'1');
			if (settings.tag != 'img')
			{
				obj1.style.width = obj.offsetWidth+'px';
				obj1.style.height = obj.offsetHeight+'px';
			}
			obj1.style.zIndex = 1;
			obj1.style.position = settings.position;
			obj1.style.left = settings.left;
			obj1.style.top = settings.top;
			obj1.style.backgroundPosition = settings.backgroundPosition;
			obj1.style.backgroundRepeat = settings.backgroundRepeat;
			if (settings.tag == 'img')
			{
				obj1.src = this._slideshows[i].images[0];
			} else {
				obj1.style.backgroundImage = "url('"+this._slideshows[i].images[0]+"')";
			}
			
			var obj2 = document.createElement(settings.tag);
			obj2.setAttribute('id', obj.id+'2');
			if (settings.tag != 'img')
			{
				obj2.style.width = obj.offsetWidth+'px';
				obj2.style.height = obj.offsetHeight+'px';
			}
			obj2.style.zIndex = 1;
			obj2.style.position = settings.position;
			obj2.style.left = settings.left;
			obj2.style.top = settings.top;
			obj2.style.backgroundPosition = settings.backgroundPosition;
			obj2.style.backgroundRepeat = settings.backgroundRepeat;
			obj2.style.zIndex = 2;
			obj2.style.opacity = 0;
			obj2.style.MozOpacity = 0;
			obj2.style.KhtmlOpacity = 0;
			obj2.style.filter = "alpha(opacity=0)";

			var objs = obj.getElementsByTagName('*');
			var objslength = objs.length;
			obj.appendChild(obj1);
			obj.appendChild(obj2);
			for (var a = 0; a < objslength; a += 1)
			{
				objs[a].style.display = 'none';	
			}
			
			this._slideshows[i].obj1 = obj1;
			this._slideshows[i].obj2 = obj2;
			for (var img = 0; img < this._slideshows[i].images.length; img += 1)
			{
				var src = this._slideshows[i].images[img];
				this._slideshows[i].images[img] = new Image();
				this._slideshows[i].images[img].src = src;
			}
			window.setTimeout('SlideShow.slide('+i+')', settings.interval);
		}
	},
	addImage: function(image, slideshow)
	{
		if (!slideshow || isNaN(slideshow)) slideshow = this._slideshows.length-1;
		if (slideshow < 0 || slideshow >= this._slideshows.length) return false;
		if (!image) return false;
		var count = this._slideshows[slideshow].images.length;
		this._slideshows[slideshow].images[count] = image;
		return true;
	},
	replaceImage: function(oldimage, newimage, slideshow)
	{
		if (!slideshow || isNaN(slideshow)) slideshow = this._slideshows.length-1;
		if (slideshow < 0 || slideshow >= this._slideshows.length) return false;
		if (!oldimage || !newimage) return false;
		for (var i = 0; i < this._slideshows[slideshow].images.length; i += 1)
		{
			if (this._slideshows[slideshow].images[i] == oldimage)
			{
				this._slideshows[slideshow].images[i] = newimage;
				return true;
			}
		}
	},
	removeImage: function(image, slideshow)
	{
		if (!slideshow || isNaN(slideshow)) slideshow = this._slideshows.length-1;
		if (slideshow < 0 || slideshow >= this._slideshows.length) return false;
		if (!image) return false;
		var images = new Array();
		var count = 0;
		var found = false;
		for (var i = 0; i < this._slideshows[slideshow].images.length; i += 1)
		{
			if (this._slideshows[slideshow].images[i] != image)
			{
				images[count] = this._slideshows[slideshow].images[i];
				count += 1;
			} else {
				found = true;
			}
		}
		this._slideshows[slideshow].images = images;
		return found;
	},
	slide: function(slideshow)
	{
		if (isNaN(slideshow) || !this._slideshows[slideshow]) return;
		slideshow = this._slideshows[slideshow];
		if (slideshow.objnr == 1)
		{
			var obj = slideshow.obj1;
			slideshow.objnr = 2;
		} else {
			var obj = slideshow.obj2;
			slideshow.objnr = 1;
		}
		var imagenr = slideshow.imagenr;
		if (slideshow.settings.tag == 'img')
		{
			obj.src = slideshow.images[imagenr].src;
		} else {
			obj.style.backgroundImage = "url('"+slideshow.images[imagenr].src+"')";
		}
		slideshow.interval = window.setInterval('SlideShow.fade('+slideshow.nr+')', slideshow.settings.fadeinterval);
		slideshow.imagenr = slideshow.imagenr += 1;
		if (slideshow.imagenr >= slideshow.images.length) slideshow.imagenr = 0;
	},
	fade: function(slideshow)
	{
		if (isNaN(slideshow) || !this._slideshows[slideshow]) return;
		var slideshownr = slideshow;
		slideshow = this._slideshows[slideshow];
		if (slideshow.objnr == 1)
		{
			var obj1 = slideshow.obj1;
			var obj2 = slideshow.obj2;
		} else {
			var obj1 = slideshow.obj2;
			var obj2 = slideshow.obj1;
		}
		if (slideshow.opacity < 100)
		{
			if (slideshow.opacity + slideshow.settings.step > 100)
			{
				slideshow.opacity = 100;
			}
			obj2.style.opacity = (slideshow.opacity / 100);
			obj2.style.MozOpacity = (slideshow.opacity / 100);
			obj2.style.KhtmlOpacity = (slideshow.opacity / 100);
			obj2.style.filter = "alpha(opacity=" + slideshow.opacity + ")";
			slideshow.opacity += slideshow.settings.step;
		} else {
			obj1.style.opacity = 0;
			obj1.style.MozOpacity = 0;
			obj1.style.KhtmlOpacity = 0;
			obj1.style.filter = "alpha(opacity=0)";
			slideshow.opacity = 0;
			obj2.style.zIndex = 1;
			obj1.style.zIndex = 2;
			clearInterval(slideshow.interval);
			slideshow.interval = null;
			window.setTimeout('SlideShow.slide('+slideshownr+')', slideshow.settings.interval);
		}
	}
}

var o = {
	id: function(id){return document.getElementById(id);},
	name: function(name, number){if (!number)number=0;return document.getElementsByTagName(name)[number];}
}
