/**
 * Rits Framework
 *
 * LICENSE
 * 
 * This source file is subject to the Rits Commercial license.
 * 
 * @copyright  2008 Rits Comunicação & Tecnologia. (http://www.rits.com.br)
 * @license    Rits Commercial License 1.0
 * @version    $Id:$
 */

/**
 * Slideshow 
 *
 * @category   Rits
 * @package    Rits
 * @copyright  2008 Rits Comunicação & Tecnologia. (http://www.rits.com.br)
 * @license    Rits Commercial License 1.0
 */
Rits.Slideshow = {

	prefixImage: 'slideshow-image',
	prefixImageDiv: 'slideshow-image-div',
	prefixLink: 'slideshow-link',
	prefixContent: 'slideshow-content',
	prefixBarra: 'slideshow-barra',
	
	total: 0,	
	clicked: 0,
	actual: 0,
	
	isMoving: 1,
	isBusy: 0,
	
	init: function() {
				
		var i=0;
		var e;
		
		while(1) {
			e = $(this.prefixLink+'-'+(i));
			if(e && e.innerHTML.length > 0) {				
				e = $(this.prefixImage+'-'+(i+1));
				var img = new Image();
				img.src = e.src;
				i++;
			} else {
				break;
			}
		}
		
		this.total = i;
		
		if(this.total > 0) {
			var imgActual = $(this.prefixImage);
			var linkActual = $(this.prefixLink);
			var contentActual = $(this.prefixContent);
			
			var imgNext = $(this.prefixImage+'-'+this.actual);
			var linkNext = $(this.prefixLink+'-'+this.actual);		
			var contentNext = $(this.prefixContent+'-'+this.actual);		
			
			imgActual.src = imgNext.src;
			linkActual.href = linkNext.href;
			contentActual.innerHTML = contentNext.innerHTML;	
				
			$D.setStyle(this.prefixImageDiv, 'background', '');
			$D.setStyle(imgActual, 'display', '');
			$D.setStyle(contentActual, 'display', '');
			
			barra = $(this.prefixBarra);
			for(i=0; i<this.total; i++) {
				if(i == 0) {
					barra.innerHTML += '<a id="'+this.prefixBarra+'-'+i+'" href="#" onclick="Rits.Slideshow.click('+i+');return false;" class="slideshow-on">'+(i+1)+'</a>';
				} else {
					barra.innerHTML += '<a id="'+this.prefixBarra+'-'+i+'" href="#" onclick="Rits.Slideshow.click('+i+');return false;" class="slideshow-off">'+(i+1)+'</a>';
				}
			}
			
			
			setTimeout('Rits.Slideshow.rotate()', 6000);
		}
	},
	
	
	rotate: function() {
		if(this.isMoving) {
			var next;
			if(this.actual < (this.total-1)) {
				next = this.actual + 1;
			} else {
				next = 0;
			}
			var image = $(this.prefixImage+'-'+next);
			if(image.complete) {
				this.next();
				setTimeout('Rits.Slideshow.rotate()', 6000);
			} else {
				setTimeout('Rits.Slideshow.rotate()', 2000);
			}			
		}
	},
	
	click: function(type) {
		this.isMoving = 0;		
		if(this.isBusy == 0) {			
			if(type != this.actual) {
				this.actual = type - 1;
				this.next();
			}
		}
	},
	
	next: function() {	
		if(this.isBusy == 0) {
			this.isBusy = 1;
			if(this.actual < (this.total-1)) {
				this.actual++;
			} else {
				this.actual = 0;
			}
			this.change();
		}
	},
	
	previous: function() {		
		if(this.isBusy == 0) {
			this.isBusy = 1;
			if(this.actual > 0 ) {
				this.actual--;
			} else {
				this.actual = this.total - 1;
			}
			this.change();
		}
	},
	
	change: function() {
		
		var imgActual = $(this.prefixImage);
		
		var anim = new YAHOO.util.Anim(imgActual, { opacity: { from : 1, to: 0} }, 0.5, YAHOO.util.Easing.easeIn);
		anim.onComplete.subscribe(function() {			
			
			var imgActual = $(Rits.Slideshow.prefixImage);
			var linkActual = $(Rits.Slideshow.prefixLink);
			var contentActual = $(Rits.Slideshow.prefixContent);
			
			var imgNext = $(Rits.Slideshow.prefixImage+'-'+Rits.Slideshow.actual);
			var linkNext = $(Rits.Slideshow.prefixLink+'-'+Rits.Slideshow.actual);		
			var contentNext = $(Rits.Slideshow.prefixContent+'-'+Rits.Slideshow.actual);		
			
			imgActual.src = imgNext.src;
			linkActual.href = linkNext.href;
			contentActual.innerHTML = contentNext.innerHTML;
						
			for(var i=0; i<Rits.Slideshow.total; i++) {
				if(i == Rits.Slideshow.actual) {
					$D.replaceClass(Rits.Slideshow.prefixBarra+'-'+i, 'slideshow-off', 'slideshow-on');
				} else {
					$D.replaceClass(Rits.Slideshow.prefixBarra+'-'+i, 'slideshow-on', 'slideshow-off');
				}
			}			
						
			var anim2 = new YAHOO.util.Anim(imgActual, { opacity: { from : 0, to: 1} }, 0.5, YAHOO.util.Easing.easeOut);
			anim2.onComplete.subscribe(function() {				
				Rits.Slideshow.isBusy = 0;
			});
			anim2.animate();
		});
		
		anim.animate();
		
	}
};

