/**
 * Social Turn Over Class
 * @author 58062 Florian Collot
 * 
 * 
 */

var SocialTurnOver = new Class ({
	Implements: [Events, Options],
	options : {
		'display' : 2,
		'time' : 2000
	},
	
	initialize:function(params, options){
		this.setOptions(options);
		var onlyone = false;
		for (var i=0;i<params.length;i++) {
			if ($chk($(params[i].name)))
				onlyone = true;
		}
			
		if (!onlyone)
			return;
		
		this.memory = {};
		for (var i=0;i<params.length;i++) {
			// initialize  wrapper
			if ($chk($(params[i].name))) {
				this.memory[params[i].name] = {'elements':[],'next':this.options.display,'time':($chk(params[i].time)) ? params[i].time : this.options.time};
				var lis = $(params[i].name).getElements('ul')[0].getElements('li');
				var toDestroy = [];
				lis.each(function(element, index){
					this.memory[params[i].name].elements.push(element.get('html'));
					if (index >= this.options.display)
						toDestroy.push(element);
				}.bind(this));
				
				toDestroy.each(function(element, index){
					element.destroy();
				}.bind(this))
				
				this.turnInformations.delay(params[i].time, this, [params[i].name]);
			}
		}
		
	},
	
	turnInformations : function(wrapper){
		// Still have informations
		if ((parseInt(this.memory[wrapper].next)+parseInt(this.options.display)) > (this.memory[wrapper].elements.length+1)) 
			this.memory[wrapper].next = 0;
		
		var start = this.memory[wrapper].next;
		this.memory[wrapper].next += this.options.display;
		
		var elements = $(wrapper).getElements('ul')[0].getElements('li');
		
		for (var j=0;j<this.options.display;j++){
			var index = start+j;
			//elements[j].set('html', this.memory[wrapper].elements[index]);
			var morph = new Fx.Morph(elements[j], {
				onComplete : function(element, values, ind){
					element.set('html', values.elements[ind]);
					var morphIn = new Fx.Morph(element, {
						onComplete: function(values){
							
						}.bind(this, [values])
					}).start({'opacity':1});
				}.bind(this, [elements[j], this.memory[wrapper], index])
			}).start({'opacity':0.01});
			
		}
		this.turnInformations.delay(this.memory[wrapper].time, this, [wrapper]);
	},
	
	getInstance : function(){
		return this;
	}	
});
window.addEvent('domready', function(){
	new SocialTurnOver([{'name' : 'facebook_wrapper', 'time' : 9000}, {'name' : 'twitter_wrapper','time':4000}]);
});

