var slideshows = [];
function Slideshow(name,delay,autoplay,current_id,next_id,pagination_id,title_id,description_id,callback){
	this.name = name;
	this.delay = delay;
	this.autoplay = autoplay||false;
	this.callback = callback||false;
	this.speed = 0.07;
	this.timeout = false;
	this.elements = {current:$(current_id),next:$(next_id),pagination:$(pagination_id),title:$(title_id),description:$(description_id)};
	this.slides = [];
	this.n = slideshows.length;
	slideshows[this.n] = this;
	this.verify = function(n){
		var self = slideshows[n];
		if(!self||!self.elements) return false;
		for(var e in self.elements){
			if(!self.elements[e]) return false;
		}
		return true;
	};
	this.begin = function(n){
		var self = slideshows[n];
		if(!self||!self.slides) return false;
		self.elements["pagination"].update();
		self.elements["title"].update();
		self.elements["description"].update();
		for(var i=0;i<self.slides.length;i++){
			var li = new Element('li');
			var a = new Element('a',{href:"javascript:"+self.name+".loadSlide("+n+","+i+");",id:"slideshow-page-"+(i+1)});
			a.update(i+1);
			li.insert(a);
			self.elements["pagination"].insert(li);
		}
		self.loadSlide(n,0);
	};
	this.updatePagination = function(n,s){
		var self = slideshows[n];
		if(!self) return false;
		for(var i=0;i<self.slides.length;i++){
			var a = $("slideshow-page-"+(i+1));
			if(a) a.removeClassName("active");
		}
		var a = $("slideshow-page-"+(s+1));
		if(a) a = a.addClassName("active");
	};
	this.appendSlide = function(n,image,width,height,title,description){
		var self = slideshows[n];
		if(!self) return false;
		var img = new Image(width,height); 
		img.src = image; 
		self.slides[self.slides.length] = {image:image,title:title,description:description,width:width,height:height};
	};
	this.loadSlide = function(n,s){
		var self = slideshows[n];
		if(!self||!self.slides||!self.slides[s]) return false;
		if(self.timeout){
			clearTimeout(self.timeout);
			self.timeout = false;
		}
		self.elements["title"].update(self.slides[s]["title"]);
		self.elements["description"].update(self.slides[s]["description"]);
		self.elements["current"].src = self.slides[s]["image"];
		self.elements["current"].style.width = self.slides[s]["width"]+"px";
		self.elements["current"].style.height = self.slides[s]["height"]+"px";
		self.elements["next"].src = self.slides[(s+1)%self.slides.length]["image"];
		self.elements["next"].style.width = self.slides[(s+1)%self.slides.length]["width"]+"px";
		self.elements["next"].style.height = self.slides[(s+1)%self.slides.length]["height"]+"px";
		self.elements["current"].setOpacity(1);
		self.elements["next"].setOpacity(0);
		self.elements["next"].style.zIndex = 1;
		self.updatePagination(n,s);
		if(self.callback) self.callback(s);
		if(self.autoplay) self.timeout = setTimeout(self.name+".fade("+n+","+(s+1)%self.slides.length+")",self.delay*1000);
	};
	this.fade = function(n,s){
		var self = slideshows[n];
		if(!self) return false;
		if(self.elements["next"].getOpacity()<0.99){
			self.elements["next"].style.zIndex = 3;
			self.elements["next"].setOpacity(self.elements["next"].getOpacity()+self.speed);
			self.timeout = setTimeout(self.name+".fade("+n+","+s+")",30);
		}else{
			self.loadSlide(n,s);
		}
	};
}
