/******************************************************************* 
* File    : JSFX_FadingSlide.js  © JavaScript-FX.com
* Created : 2001/11/08 
* Author  : Roy Whittle  (Roy@Whittle.com) www.Roy.Whittle.com 
* Purpose : To create a slide show that fades in/out
* Requires: JSFX_FadingRollovers.js
* History 
* Date         Version        Description 
* 2001-08-09	1.0		First version
***********************************************************************/ 

JSFX.FadingSlideShow = function(theImageName, theDelay, theFadeStep)
{
	FadeInStep 	= theFadeStep;
	FadeOutStep = theFadeStep;

	this.id		= JSFX.FadingSlideShow.getId();
	this.state		= "stopped";
	this.timeId		= null;
	this.imgName	= theImageName;
	this.currSlide	= 0;
	this.delay		= theDelay*1000;
	this.slides		= new Array();

	window[this.id] = this;
}
JSFX.FadingSlideShow.slideNo = 0;
JSFX.FadingSlideShow.getId = function()
{
	return "JSFXss" + JSFX.FadingSlideShow.slideNo++;
}

JSFX.FadingSlideShow.prototype.addSlide = function(theImg)
{
	var theId = JSFX.FadingSlideShow.getId();
	JSFX.Rollover(theId, theImg);
	this.slides[this.slides.length]=theId;
}

JSFX.FadingSlideShow.prototype.animate = function()
{
	if(this.state=="running")
	{
		JSFX.fadeOut(this.imgName, this.slides[ this.currSlide ]);
		this.currSlide = (this.currSlide + 1) % this.slides.length;
		JSFX.fadeIn(this.imgName, this.slides[ this.currSlide ]);
		this.timeId = this.setTimeout("animate()", this.delay);
	}
}
JSFX.FadingSlideShow.prototype.start = function()
{
	if(this.state == "stopped")
	{
		this.currSlide = 0;
		JSFX.fadeIn(this.imgName, this.slides[ this.currSlide ]);
		this.state="running";
		this.timeId = this.setTimeout("animate()", this.delay);
	}
}
JSFX.FadingSlideShow.prototype.stop = function()
{
	clearTimeout(this.timeId);
	this.state="stopped";
	JSFX.fadeOut(this.imgName, this.slides[ this.currSlide ]);
}
JSFX.FadingSlideShow.prototype.pause = function()
{
	if(this.state == "running")
	{
		clearTimeout(this.timeId);
		this.state="paused";
		JSFX.fadeIn(this.imgName, this.slides[ this.currSlide ]);
	}
}
JSFX.FadingSlideShow.prototype.resume = function()
{
	if(this.state == "paused" || this.state == "stopped")
	{
		this.state="running";
		this.animate();
	}
}
JSFX.FadingSlideShow.prototype.next = function()
{
	if(this.state=="paused")
	{
		JSFX.fadeOut(this.imgName, this.slides[ this.currSlide ]);
		this.currSlide = (this.currSlide + 1) % this.slides.length;
		JSFX.fadeIn(this.imgName, this.slides[ this.currSlide ]);
	}
}
JSFX.FadingSlideShow.prototype.prev = function()
{
	if(this.state=="paused")
	{
		JSFX.fadeOut(this.imgName, this.slides[ this.currSlide ]);
		this.currSlide--;
		if(this.currSlide < 0)
			this.currSlide = this.slides.length - 1;
		JSFX.fadeIn(this.imgName, this.slides[ this.currSlide ]);
	}
}
JSFX.FadingSlideShow.prototype.getState = function()
{
	return this.state;
}
JSFX.FadingSlideShow.prototype.getSlideCount = function()
{
	return this.slides.length;
}
JSFX.FadingSlideShow.prototype.getCurrentSlide = function()
{
	return this.currSlide;
}
JSFX.FadingSlideShow.prototype.setTimeout = function(f, t) 
{
	setTimeout("window."+this.id+"."+f, t);
}

