var SimpleSlideShowDemo = new Class({
	options: {
		slides: [],
		startIndex: 0,
		wrap: true,
		onShow: Class.empty, //Mootools 1.2: $empty
		onRotate: Class.empty,
		onStop: Class.empty,
		onAutoPlay: Class.empty,
		onShowSlide: Class.empty,
		slideInterval: 8000,
		transitionDuration: 999,
	},
	initialize: function(container,options){
	
		if (container[0].getParent().getTag()=='a') {
			this.containerNest = container[0].getParent().getParent();
		} else {
			this.containerNest = container[0].getParent();
		}
		this.container = container;
		this.setOptions(options);
		this.slides = [];
		this.title = [];
		this.descr = [];
		this.effects = [];
		this.browserArr = [];
		this.playStatus = true;
	
		this.createStructure();
	
		this.addSlides(this.container);
		if(this.slides.length) this.showSlide(this.options.startIndex);
		this.autoplay();
	},
	createFx: function() {
		this.slideFx = new Fx.Elements(this.slides, {duration: this.options.transitionDuration});
		this.slides.each(function(slide){
			slide.setStyle('opacity',0);
		});
	},
	createStructure: function() {

		var oldClass = this.containerNest.getProperty("class");
		this.containerNest.setProperty('class', '');
		this.containerNest.addClass('rgslideshow');
		
		this.test = new Element('div').addClass(oldClass).injectBefore(this.containerNest);
		this.containerNest.injectInside(this.test);
	  
		this.nestAll = new Element('div').setProperty('class', 'rgsnest').injectTop(this.containerNest);    
		this.title = new Element('div').setProperty('class', 'rgstitle').injectInside(this.nestAll);
		this.description = new Element('div').setProperty('class', 'rgsdescription').injectInside(this.nestAll);  

		//this.createFx();
	},
	addSlides: function(slides){
		var i =1;
		slides.each(function(slide){
			this.slides.include($(slide));
			this.effects[this.slides.indexOf(slide)] = new Fx.Style(slide, 'opacity');
			slide.addClass('rgssimg');
			var title="&nbsp;";
			var descr="";
			if (slide.getProperty("title")) {
				split = slide.getProperty("title").split("|");
				if (split[0]) {
					title = split[0];
					slide.setProperty("title",title);
				}
				if (split[1]) descr = split[1];
			}
			this.descr[this.slides.indexOf(slide)] = '<a href="'+$(slide).getParent()+'">'+descr+'</a>';      
			this.title[this.slides.indexOf(slide)] = title;
				
			if (i!=1) {
				slide.setStyle('display','none');
			} 
			i++;
		}, this);
	},
	addSlide: function(slide){
		this.addSlides([slide]);
	},
	cycleForward: function(){
		if($chk(this.now) && this.now < this.slides.length-1) this.showSlide(this.now+1);
		else if ((this.now) && this.options.wrap) this.showSlide(0);
		else if(!$defined(this.now)) this.showSlide(this.options.startIndex);
	},
	cycleBack: function(){
		if(this.now > 0) this.showSlide(this.now-1);
		else if(this.options.wrap) this.showSlide(this.slides.length-1);
	},
	cycleTo: function(i){
		if(this.playStatus) {
			this.togglePlay();
		}	
		this.showSlide(i);
	},
	autoplay: function(){
		this.slideshowInt = this.rotate.periodical(this.options.slideInterval, this);
		this.fireEvent('onAutoPlay');
	}, 	
	rotate: function(){
		this.cycleForward();
		this.fireEvent('onRotate');
	},	
	showSlide: function(iToShow){

		var now = this.now;		
		var currentSlide = this.slides[now];
		var slide = this.slides[iToShow];
		
		function fadeIn(s){
			s.setStyles({
				display:'block',
				visibility: 'visible',
				opacity: 0
			});
			this.effects[this.slides.indexOf(s)].start(1);
			this.fireEvent('onShow', [slide, iToShow]);
		};
    
		this.description.innerHTML = this.title.innerHTML = "&nbsp;";;
		if(slide) {    
			if($chk(now) && now != iToShow){
				fadeIn.apply(this, [slide]);
				this.description.innerHTML  = this.descr[iToShow];
				this.title.innerHTML  = this.title[iToShow];
				Cufon.replace('#banner .rgstitle');
				this.effects[now].start(0).chain(function(){
					this.slides[now].setStyle('display', 'none');
				}.bind(this));
			} else {
				fadeIn.apply(this, [slide]);
				this.description.innerHTML  = this.descr[iToShow];
				this.title.innerHTML  = this.title[iToShow];
				Cufon.replace('#banner .rgstitle');
			}
			this.now = iToShow;
		}
	}
});
SimpleSlideShowDemo.implement(new Options, new Events);
