var MooLin = new Class({
	Implements: [Options],
	
	options: {
		'hauteur':100,
		'vitesse':10000
    },
	
    initialize: function( element , options ){
		this.setOptions(options);
		this.liste = $(element);
		this.defilement = [];
		this.delais = [];
		this.dernier = null;
		this.suivant = 0;
		this.rapport = 200;
		if( this.liste ){
		
			this.lignes = this.liste.getElements('li');

			this.lignes.store( 'this' , this );
			
			this.lignes.addEvents({
				'mouseover':function( evenement ){
					this.defilement.each(function(defilement){defilement.pause();});
					clearTimeout(this.delais);
				}.bind(this),
				
				'mouseout':function(){
					this.delais = this.defile.delay( this.options.vitesse*(this.dernier.getStyle('top').toInt()/200+0.01) , this , this.suivant );
					this.defilement.each(function(defilement){defilement.resume();});
				}.bind(this)
			});
			
			this.liste.setStyles({
				'position':'relative',
				'overflow':'hidden',
				'height':this.options.hauteur
			});
			
			
			
			this.lignes.setStyles({
				'position':'absolute',
				'top':this.options.hauteur
			});
			
			if( this.lignes.length > 0 ){
				
				if( this.lignes.length == 1 ){
					this.rapport = 100;
				}
				
				this.defile( this.suivant );
				
			}
			
		}
	
	},
	
	defile:function( numero ){
		
		if( numero >= this.lignes.length ){
			numero = 0;
		}
		
		this.suivant = numero + 1;
		
		this.defilement.push(
			new Fx.Tween( this.lignes[numero] ,{
				'duration':this.options.vitesse,
				'onStart':function( ligne ){
					this.dernier = ligne;
					this.delais = this.defile.delay( this.options.vitesse*(this.options.hauteur/this.rapport+0.01) , this , this.suivant );
				}.bind( this ),
				'onComplete':function( ligne ){
					ligne.setStyle('top',ligne.retrieve('this').options.hauteur);
					ligne.retrieve('this').defilement.erase( this );
				}
			}).start( 'top' , -this.lignes[numero].getSize().y )
		);

	}
	
});
  
 
