(function() { 
	var Event = YAHOO.util.Event,
		Dom   = YAHOO.util.Dom,
		Anim  = YAHOO.util.Anim,
		timeSlideIsShown = 3000,  // in Millisekunden
		fadingTime = 1; // in Sekunden
	
	var init = function() {
		var slideshows = Dom.getElementsByClassName("slideshow", "DIV", "keyvisual");
		if(slideshows.length > 0) {
			for(var i=0;i<slideshows.length;i++) {
				var slideshowID = slideshows[i].id;
				var slideID = slideshowID.replace(/slide_/, "");
				var slides = Dom.getChildren(slideshows[i]);
				for (var j=0;j<slides.length;j++) {
					slides[j].id = slideID + "_" + j;
					if(i==0 && j==0) {
						Dom.addClass(slideshows[i], "active");
						Dom.setStyle(slides[j], "opacity", "1"); 
						Dom.addClass(slides[j], "active");
					}
				}
			}
			slidetimer = setInterval("pushSlide()", timeSlideIsShown);
		}
		if(Dom.inDocument("slidenavi")) {
			var slideNavigation = Dom.get("slidenavi");
			var slideNavpoints = Dom.getElementsBy(function(el) {
				return el.nodeName == "LI";
			}, "LI", slideNavigation[0]);
			
			Event.addListener(slideNavpoints, "mouseover", changeSlideshow);
			Event.addListener(slideNavpoints, "mouseout", switch2default);
		}
	}
	
	var defaultSlideshow = function(e) {
		var caller = Event.getTarget(e);
		if(caller.nodeName == "SPAN") {
			back2default = setTimeout("switch2default()", 1000);
		}
	}
	
	switch2default = function() {
		clearInterval(slidetimer);
		var slideShowID = "slide_start";
		hideActiveSlideshow(slideShowID);
		showNextSlideshow(slideShowID);
		slidetimer = setInterval("pushSlide()", timeSlideIsShown);
	}
	
	var changeSlideshow = function(e) {
		/* if(window.back2default !== undefined)	{
			clearTimeout(back2default);
			alert("STOPPED DEFAULT");
		}*/
		var caller = Event.getTarget(e);
		if(caller.nodeName != "LI") {
			caller = Dom.getAncestorByTagName(caller, "LI");
		}
		var callerID = caller.id;
		var slideShowID = "slide_" + callerID.replace(/slidenav_/, "");
		if(Dom.inDocument(slideShowID) && !Dom.hasClass(slideShowID, "active")) {
			clearInterval(slidetimer);
			hideActiveSlideshow(slideShowID);
			showNextSlideshow(slideShowID);
			slidetimer = setInterval("pushSlide()", timeSlideIsShown);
		}
	}
	
	var hideActiveSlideshow = function(slideShowID) {
		var slideshows = Dom.getElementsByClassName("slideshow", "DIV", "keyvisual");
		Dom.removeClass(slideshows, "active");
		var slides = Dom.getChildren(Dom.get(slideShowID));
		Dom.removeClass(slides, "active");
		Dom.setStyle(slides, "opacity", "0");
		var icons = Dom.getElementsByClassName("slideicon", "IMG", "keyvisual");
		Dom.setStyle(icons, "display", "none");
	}
	
	var showNextSlideshow = function(slideShowID) {
		Dom.addClass(slideShowID, "active");
		var slides = Dom.getChildren(Dom.get(slideShowID));
		Dom.setStyle(slides[0], "opacity", "1");
		Dom.addClass(slides[0], "active");
		var iconID = slideShowID.replace(/slide_/, "icon_");
		if(iconID == "icon_computer" || iconID == "icon_tvaudio" || iconID == "icon_sat") {
			iconID = "icon_multimedia";
		}
		Dom.setStyle(iconID, "display", "block");
	}
	
	var hideActiveSlide = function(activeSlide) {
		Dom.removeClass(activeSlide, "active");
		var attributes = { 
	        opacity: { to: 0 } 
	  }; 
	  var anim = new Anim(activeSlide, attributes, fadingTime); 
		anim.animate();
	}
	
	var showNextSlide = function(nextSlide) {
		Dom.addClass(nextSlide, "active");
		var attributes = { 
	        opacity: { to: 1 } 
	  }; 
	  var anim = new Anim(nextSlide, attributes, fadingTime); 
		anim.animate();
	}
	
	pushSlide = function() {
		var slideshows = Dom.getElementsByClassName("slideshow active", "DIV", "keyvisual");
		var activeSlideshow = slideshows[0];
		var slides = Dom.getChildren(activeSlideshow);
		var slideNum = slides.length;
		for(var i=0;i<slideNum;i++) {
			if(Dom.hasClass(slides[i], "active")) {
				var activeSlide = slides[i];
				var nextSlide = Dom.getNextSibling(activeSlide);
				if(nextSlide === null) {
					var nextSlide = slides[0]; 
				}
			}
		}
		hideActiveSlide(activeSlide);
		showNextSlide(nextSlide);
	}
	
	Event.onDOMReady(init);
	
})();
