/*

*/

var TomPaginator = new Class({

	Implements: [Options, Events],
	
	selector: null,
	nbElements: 0,
	indexDebut: 1,
	nbPages: 0,
	pageActuelle: 1,
	
	options: {
		commsParPages: 5
	},
	
	initialize: function(selector , options){
	
		this.setOptions(options);
		
		this.selector = selector;
		this.nbElements = parseInt( selector.length );
		this.nbPages = this.getNbPage();
		this.pageActuelle = this.nbPages;
		this.indexDebut = (this.nbPages-1) * (this.options.commsParPages) + 1;
		
		
		// Masquage des éléments
		var i  = 0;
		
		if (this.selector.length > 1)
		{
			selector.each( function (el) { 
				i++; 
				if (i < this.indexDebut) el.setStyle('display','none'); 
			}.bind(this));
			
			// Création des deux paginators
			$$('div.paginator').each( function (pagi) {
			
				//pagi.getChildren.each( function)
				for (i = 1 ; i<=this.nbPages ; i++)
				{
					var elementPage  = new Element('a', {'href':'#', 'class': 'elementPaginator', 'rel': i});
					elementPage.appendText(i);
					elementPage.inject(pagi);
				}

				pagi.getLast('a.elementPaginator').setStyles( {'background-color':'#96C7DE','color':'#FFF'} );
				
				if (pagi.getChildren('a.elementPaginator').length < 2) pagi.getChildren('a.elementPaginator').getLast().setStyle( 'display','none' );
			
			}.bind(this));
			
			// Activation du paginator
			this.activerPaginator();
		}
		
	},
	
	// Calcul du nombre de pages
	getNbPage: function(){	
	
		return Math.ceil(this.nbElements / this.options.commsParPages);	
		
	},
	
	// Activation du paginator
	activerPaginator: function(){	
	
		// Activation des liens de paginator
		$$('a.elementPaginator').each( function (el) {
		
			el.addEvent('click' , function (e) {
			
				e.stop();
				
				$$('a.elementPaginator').each( function (el3) {
					if (el3.rel == el.rel) el3.setStyles( {'background-color':'#96C7DE','color':'#FFF'} ); 
					else el3.setStyles( {'background-color':'#ededed','color':'#000'} ); 
				}.bind(this));
				
				
				this.afficherElement( el.rel );
				
			}.bind(this));
		}.bind(this));
		
	},
	
	// Affichage des éléments
	afficherElement: function( pageCourante ){	

		// Masquage des éléments
		if ( parseInt(this.pageActuelle) != parseInt(pageCourante))
		{ 
			
			this.pageActuelle = pageCourante;
								
			var i  = 0;
			this.selector.each( function (el2) { 
			
				i++;
				if ( i > (this.options.commsParPages*(parseInt(pageCourante)-1)) && i <= (this.options.commsParPages*(parseInt(pageCourante))) ) el2.reveal({'transition':'linear'});
				else  el2.dissolve({'transition':'linear'});
				
			}.bind(this));
			
			new Fx.Scroll(window).toElement('listeCommentaires');
		}
		
	},
	
	// Allez à la derniere page
	goLastPage: function(  ){	
	
		$$('a.elementPaginator').each( function (el3) {
			if (el3.rel == this.nbPages) el3.setStyles( {'background-color':'#96C7DE','color':'#FFF'} ); 
			else el3.setStyles( {'background-color':'#ededed','color':'#000'} ); 
		}.bind(this));
		
	}
	
});
