/**
 * @author philipp.roell, D. Deertz
 */
YAHOO.hmmh.slideshowManager = function() {
		/**
		 * Zeitinterval im ms
		 */
		var delay = 3500;
		var counter = 0;
		var slideshowElements;
		var stopButton;
		var run = false;
		/**
		 * Der Animationsprozess, es darf nur einen geben
		 */
		var thread = null;
		
		return {
			init : function() {
				
				YAHOO.hmmh.slideshowManager.update();
				stopButton = YAHOO.util.Selector.query("img", "slideshowControls", true)[0];
				
				$E.on(stopButton, 'click', YAHOO.hmmh.slideshowManager.startstop);
				
				YAHOO.hmmh.slideshowManager.start();
			},
			
			update : function() {
				slideshowElements = $D.getElementsByClassName("eingeblendet","a","slideshowElements");
				if(1==1);
			},
			
			start : function() {
				if (slideshowElements.length >0){
					run = true;
					clearTimeout(thread); 
					thread = window.setTimeout(YAHOO.hmmh.slideshowManager.iterate,delay);
				}
			},
			
			iterate : function() {
				var el;
				
				el = slideshowElements[counter];
				
				YAHOO.hmmh.slideshowManager.fadeOut(el);
				counter++;
				
				if(run) {
					clearTimeout(thread); 
					thread = window.setTimeout(YAHOO.hmmh.slideshowManager.iterate,delay);
				}
			},
			
			startstop : function() {
				if(!run) {
					YAHOO.hmmh.slideshowManager.start();
					btn = 'stop';
				} else {
					YAHOO.hmmh.slideshowManager.stop();
					btn = 'start';
				}
				
				stopButton.src = 'img/btn/startseite/bt_startseite_' + btn + '.png';
				stopButton.title = btn == 'start' ? "Slideshow starten" : "Slideshow stoppen";
			},
			
			stop : function() {
				run =false;
				clearTimeout(thread); 
			},
			
			fadeOut : function(e) {
				if(YAHOO.env.ua.webkit > 0) { // Safari rendert das Bild selbst
					e = $D.getFirstChild(e);
					
				}

				$D.setStyle(e, 'opacity', 1);
				var aniOut = new YAHOO.util.Anim(e , {opacity: {from: 1, to: 0 }}, 3, YAHOO.util.Easing.easeOut);
				aniOut.animate();
				aniOut.onComplete.subscribe(YAHOO.hmmh.slideshowManager.changeElement);
			},
			
			fadeIn : function(e) {
				if(YAHOO.env.ua.webkit > 0) { // Safari rendert das Bild selbst
					$D.setStyle(e, 'opacity', 1);
					e= $D.getFirstChild(e);
					$D.setStyle(e, 'opacity', 0);
				}
				
				var aniIn = new YAHOO.util.Anim(e , {opacity: {from: 0, to: 1 }}, 2, YAHOO.util.Easing.easeOut);
				aniIn.animate();
			},
			
			changeElement : function() {	
				var el = this.getEl();
				if(YAHOO.env.ua.webkit > 0) { 
					el = el.parentNode;
				}

				var nextElement = $D.getNextSibling(el);
				
				if(nextElement==null) {
					nextElement = $D.getFirstChild(el.parentNode);
				}
				
				$D.addClass(el, "ausgeblendet");
				$D.removeClass(el, "eingeblendet");

				$D.setStyle(nextElement, 'opacity', 0);
				
				$D.removeClass(nextElement, "ausgeblendet");
				$D.addClass(nextElement, "eingeblendet");
				
				YAHOO.hmmh.slideshowManager.fadeIn(nextElement);
				
				if(counter>=slideshowElements.length){
					counter = 0;
					YAHOO.hmmh.slideshowManager.update();
				};				
				
			}
		};
	}();
	
$E.onContentReady('mainCol', YAHOO.hmmh.slideshowManager.init);
