/***********************************************
*	2003-2006 Ricardo Santos
************************************************/
var Paginator = Class.create();

Paginator.prototype = {
	initialize: function(per_page, prefix, element) {
		this.page = 0;	
		this.per_page = per_page; // elements per page
		this.element = element; // element type
		this.prefix = prefix; // element prefix
	},
	
	start: function() {
		temp = document.getElementsByTagName(this.element);
		linhas = new Array();
		
		// esconde todos os elementos
		k = 0;
		for (i=0; i<temp.length; i++) {
			// constroi um array com elementos apresentaveis
			if (temp[i].title != 'deleted' && (temp[i].id).indexOf(this.prefix) == 0) {
				linhas[k] = temp[i];			
				linhas[k].style.display = 'none';
				k++;
			}
		}
		
		// cabe tudo numa pagina
		if (linhas.length <= 0) return;
		
		// a página em que estava deixou de existir?
		if (this.page >= this.num_paginas()) { this.page--; }
		
		// escondo as que nao interessa
		from = this.page*this.per_page;
		to = Math.min(this.page*this.per_page+this.per_page, linhas.length);
		
		// mostra os elementos na pagina actual
		for (i=from; i<to; i++) {
			linhas[i].style.display = 'block';
		}
		
		// imprime o número das páginas na div id=prefix+paginas
		$('paginas_'+this.prefix).innerHTML = this.print_paginas(linhas);
	},
	
	num_paginas: function() {
		return Math.ceil(linhas.length/this.per_page);
	},
	
	print_paginas: function(linhas) {
		var html = 'Página:';
		var paginas = this.num_paginas();
		if (paginas < 2) {
			html = '';
			return html;
		}
		for (i=0; i<paginas; i++) {
			if (this.page != i)
				html += '<a href="javascript:'+this.prefix+'paginator.change_page('+i+')">'+(i+1)+'</a>';
			else
				html += '<span id="pagina_activa">'+(i+1)+'</span>';
		}
		return html;
	},
	
	change_page: function(page) {
		this.page = page;
		this.start();
	}
}