function PaginadorJS( params ) {
	this.frase_anterior = (params.frase_anterior != undefined) ? params.frase_anterior : "anterior";
	this.frase_siguiente = (params.frase_siguiente != undefined) ? params.frase_siguiente : "siguiente";
	this.pagina_actual = (params.pagina_actual != undefined) ? params.pagina_actual : 1;
	this.paginas_mostradas = (params.paginas_mostradas != undefined) ? params.paginas_mostradas : 5;
	this.nombre_funcion_pagina = (params.nombre_funcion_pagina != undefined) ? params.nombre_funcion_pagina : "irPagina";
	this.numero_elementos = params.numero_elementos;
	this.elementos_por_pagina = params.elementos_por_pagina;
	
	this.instances = new Array();
	
	this.write = function(id_bloque) {
		var bloque = document.getElementById(id_bloque);
		bloque.innerHTML = "";
		if ( this.pagina_actual > 1 )
		{
			var anterior = document.createElement("a");
			anterior.setAttribute("href", "javascript: "+this.nombre_funcion_pagina+"("+(this.pagina_actual-1)+");");
			anterior.innerHTML = this.frase_anterior;
			bloque.appendChild(anterior);
		}
		var numero_paginas = roundUp(this.numero_elementos / this.elementos_por_pagina);
		var inicio = ( this.pagina_actual-this.paginas_mostradas/2-this.paginas_mostradas%2/2 > 0 ) ? this.pagina_actual-this.paginas_mostradas/2-this.paginas_mostradas%2/2 : 1;
		var ifinal = ( inicio+this.paginas_mostradas-1 <= numero_paginas ) ? inicio+this.paginas_mostradas-1 : numero_paginas;
		if ( numero_paginas > 1 ) {
			for ( var i=inicio; i<=ifinal; i++ )
			{
				var pagina;
				if ( i != this.pagina_actual ) {
					pagina = document.createElement("a");
					pagina.setAttribute("href", "javascript: "+this.nombre_funcion_pagina+"("+i+");");
				} else {
					pagina = document.createElement("span");
				}
				pagina.innerHTML = i;
				bloque.appendChild(pagina);
			}
		} else {
			var espacio = document.createElement("span");
			espacio.innerHTML = "&nbsp;";
			bloque.appendChild(espacio);
		}
		if ( this.pagina_actual < numero_paginas )
		{
			var siguiente = document.createElement("a");
			siguiente.setAttribute("href", "javascript: "+this.nombre_funcion_pagina+"("+(this.pagina_actual+1)+");");
			siguiente.innerHTML = this.frase_siguiente;
			bloque.appendChild(siguiente);
		}
	};
	
	this.anadirInstancia = function( instance_id ) {
		if ( in_array(instance_id, this.instances) == false ) {
			this.instances.push(instance_id);
		}
	};
	
	this.quitarInstancia = function( instance_id ) {
		for ( var i=0; i<this.instances.length; i++ ) {
			if ( this.instances[i] == instance_id ) {
				this.instances.splice(i,1);
				i--;
			}
		}
	};
	
	this.actualizar = function() {
		for ( var i=0; i<this.instances.length; i++ ) {
			this.write(this.instances[i]);
		}
	};
	
	this.irPagina = function( numero_pagina ) {
		this.pagina_actual = numero_pagina;
		this.actualizar();
	};
	
	this.limpiar = function() {
		for ( var i=0; i<this.instances.length; i++ ) {
			document.getElementById(this.instances[i]).innerHTML = "<span>&nbsp;</span>";
		}
	};
	
	this.getPrimerElementoDePagina = function( pagina ) {
		return ( this.elementos_por_pagina * (pagina-1) );
	};
	this.getUltimoElementoDePagina = function( pagina ) {
		return (this.elementos_por_pagina * (pagina) > this.numero_elementos) ? this.numero_elementos : (this.elementos_por_pagina * (pagina));
	};
}