var quotes = new Class({

	initialize: function(list) {
		this.list = $(list);
		if(this.list!=null){
			this.items = this.list.getElementsByTagName("p");
			this.list.setStyle("display","none");
			this.firstRun = true;
			this.interval = 7000;
			this.height = 75;
			this.active = 0;
			if(this.items.length>0){
				this.build();
			}
		}
	},

	build: function(){
		this.container = new Element("div")
		.injectAfter(this.list)
		.setStyles({
			'opacity':0,
			'padding':10,
			'height':this.height,
			'overflow':'hidden'
		});	
		this.container.set('morph');
		this.shedule();
	},
	
	shedule: function(){
		var firstItem = this.items[0];
		if(this.firstRun==true){
			this.fadeIn(firstItem);
		}
		this.elSched = this.run.periodical(
			this.interval,
			this,
			this.items
		);
		
		listEvents = this.list.$events;
		if(!listEvents)
			this.setMouseEvents();
		else if((!listEvents.mouseenter) && (!listEvents.mouseleave))
			this.setMouseEvents();
	},
	
	setMouseEvents: function(){  
		this.container.addEvents({
			'mouseenter': this.pause.bind(this),
			'mouseleave': this.resume.bind(this)
		});
	},
	
	pause: function(){
		//this.elSched = $clear(this.elSched);
		var size = this.container.getScrollSize().y;
		if(size > this.height){			
			this.container.morph({'height': size});
		}
	},
	
	resume: function(){		
		//this.shedule();
		this.container.morph({'height': this.height});
	},	
	
	run: function(){
		if(this.items[1]){
			this.active = this.active + 1;
			if(this.active == this.items.length){
				this.active = 0;
			}
			var activeItem = this.items[this.active];
			this.container.set('tween', {
				duration: 'long',
				onComplete: function(e) {
					var text = activeItem.innerHTML;
					e.set('html',text);
					e.set('tween', { 
						duration: 'long',
						onComplete: Class.empty
					});
					e.tween('opacity',1);
				}
			},this);
			this.container.tween('opacity',0);
		}
	},
	
	fadeIn: function(item){				
		var text = item.innerHTML;
		this.container.set('html',text);
		new Fx.Tween(this.container, {duration: 'long'}).start('opacity',1);
		this.firstRun = false;
	}
});

quotes.implement(new Events);