/*
Copyright (c) 2007, Jorge Luis Dorta Palmero. All rights reserved.
Portions Copyright (c) 2007, Yahoo!, Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
*/
/**
 * The innerfade module provides an dinamic slideshow to your site.
 * @author jldorta@gmail.com
 * @module slideshow
 * @namespace YAHOO.util
 * @requires yahoo, dom, animation
 */
YAHOO.namespace("Innerfade");

(function() {
	var $D = YAHOO.util.Dom;
	
	/**
     * Web Innerfade Constructor.
     * @method init
     * @param {String | HTMLElement} el Reference to the element that will be container of the Slideshow.
     * @param {Number} fadewidth Width of the SlideShow content.
     * @param {Number} fadeheight Height of the SlideShow content.
     * @param {Number} delay Time in seconds.
     */ 
	YAHOO.Slideshow.Innerfade = function(el, delay, random) {
		if (el) {
	        this.init(el, delay); 
			_timer = null;
	    };
	};
	
	YAHOO.Slideshow.Innerfade.prototype = {
		/**
	     * Constructor for Innerfade instance.
	     * @method init
	     * @param {String | HTMLElement} el Reference to the element that will be container of the Slideshow.
	     * @param {Number} delay Time in seconds.
	     */ 
		init: function(el, delay, random) {			
			var _container = $D.get(el);

			$D.setStyle(_container, 'position', 'relative');
			
			var elements = _container.getElementsByTagName('li');
			
			for (var i = 0; i < (elements.length-1) ; i++) {
				$D.setStyle(elements[i], 'position', 'absolute');
				var hide = new YAHOO.util.Anim(elements[i], { opacity: { to: 0 } }, 0.1);
				hide.animate();
			}
			if (elements.length)
				$D.setStyle(elements[elements.length-1], 'position', 'absolute');
			
			this.container = el;
			this.delay = delay;
			this.elements = elements;
			this.current = elements.length-1;
			
			this.changeContent();
		},
		
		/**
	     * Change the current content;
	     * @method changeContent
	     * @param none
	     */ 
		changeContent: function() {
			var innerfade = this;
			el = innerfade.container;
			current = innerfade.current;
			next = this.current = (innerfade.current+1)%(innerfade.elements.length);
			this._timer = setTimeout(function() {innerfade.changeContent();}, innerfade.delay*1000);
			
			var hide = new YAHOO.util.Anim(innerfade.elements[current], { opacity: { to: 0 } }, 1);
			hide.animate();
			
			var show = new YAHOO.util.Anim(innerfade.elements[next], { opacity: { to: 1 } }, 1);
			show.animate();
			
			$D.setStyle(innerfade.elements[current], 'z-index', '1');
			$D.setStyle(innerfade.elements[next], 'z-index', '5');
		}
	};
})();

YAHOO.register("innerfade", YAHOO.Slideshow.Innerfade, {version: "2.2.2", build: "50"});


