var Presentation=new Class({
	Implements:[Options],
	options:{
		container:null,
		slides:null,
		slidesContainer:null,
		outside:60,
		fromTop:40,
		button:null,
		fadeDuration:900,
		slideDelay:0,
		image:null,
		otherElements:["quote"],
		injectInSlide:false
	},
	initialize:function(A){
		this.setOptions(A);
		if(!this.options.container){
			return
		}
		this.currentSlide=0;
		this.container=$(this.options.container);
		this.slides=this.container.getElements(this.options.slides);
		this.start()
	},
	start:function(){	 
   
		this.slideRotator = $('nextSlide');
		
		this.slideRotator.injectInside($(this.options.slidesContainer));
		
		this.slides.each(function(A,B){
			A.setStyles({
				display:"block",
				position:"absolute",
				opacity:B==this.currentSlide?1:0
			});
			this.slides[B]["fx"]=new Fx.Morph(A,{
				duration:this.options.fadeDuration,
				wait:false,
				transition:Fx.Transitions.Sine.easeInOut
			});
			var C=A.getElement(".Description");
			this.slides[B]["descContainer"]=C;
			this.slides[B]["descFx"]=new Fx.Morph(C,{
				duration:500,
				wait:false,
				transition:Fx.Transitions.Sine.easeOut
			});
			A.addEvents({
				mouseover:function(){
					this.slides[B]["descFx"].start({bottom:-150})
				}.bind(this),
				mouseout:function(){
					this.slides[B]["descFx"].start({bottom:-0})
				}.bind(this)});
				if(Browser.Engine.trident){
					C.setStyle("opacity",0.83)
				}
		}.bind(this));
		this.slideRotator.addEvent("click",this.nextSlide.bind(this))
	},
	nextSlide:function(){
		var B=this.calculateNext();
		this.slides[this.currentSlide]["fx"].start({
			opacity:0,top:this.options.fromTop+this.options.outside
		}).chain(this.repositionSlide.bind(this));
		var A=function(){
			this.slides[B]["fx"].start({
				opacity:1,top:this.options.fromTop
			});
			if(this.options.injectInSlide){
				this.slideRotator.injectInside(this.slides[B]);
				this.options.otherElements.each(function(C){
					$(C).injectInside(this.slides[B])
				}.bind(this))
			}
		}.bind(this).delay(this.options.slideDelay)
  },
	repositionSlide:function(){
		this.slides[this.currentSlide].setStyle("top",this.options.fromTop);
		this.currentSlide=this.calculateNext()
	},
	calculateNext:function(){
		return this.currentSlide<this.slides.length-1?this.currentSlide+1:0
	}
});
