var TIMEOUT_CAMBIO = 12000;
var ALTO_BARRA_PAGINAS = 30;

function Paginador_AddListener(element, type, expression, bubbling) {
	bubbling = bubbling || false;
	if(window.addEventListener) { // Standard
		element.addEventListener(type, expression, bubbling);
		return true;
	} else if(window.attachEvent) { // IE
		element.attachEvent('on' + type, expression);
		return true;
	} else return false;
}

function Paginador(varName, contenedorId, ancho, alto, paginasIds, timeout, altoBarraPaginas) {
	var contenedor = document.getElementById(contenedorId);
	contenedor.style.width = ancho+"px";
	contenedor.style.height = alto+"px";
	contenedor.className = "paginador_cnt";
	
	this._arrayBotones = new Array();
	this._arrayPaginas = new Array();
	this._numeroPaginas = paginasIds.length;
	this._paginaSeleccionada = null;
	this._timer = 0;
	this._varName = varName;
	this._timeout = typeof(timeout) != 'undefined' ? timeout : TIMEOUT_CAMBIO;
	this._altoBarraPaginas = typeof(altoBarraPaginas) != 'undefined' ? altoBarraPaginas : ALTO_BARRA_PAGINAS;

	for(i=0; i<this._numeroPaginas; i++) {
		var pagina = document.getElementById(paginasIds[i]);		
		pagina.style.width = ancho+"px";
		pagina.style.height = alto+"px";
		pagina.className += " paginador_page";		
		pagina.style.display = "none";
		pagina.style.visibility = "visible";

		this._arrayPaginas[i] = pagina;
	}
	
	
	var btnBar = document.createElement("div");
	btnBar.id = contenedorId+"_bar";
	btnBar.className = "paginador_btnbar";	
	btnBar.style.top = (alto - 2 - parseInt(this._altoBarraPaginas/2))+"px";
	btnBar.style.visibility = "hidden";
	contenedor.appendChild(btnBar);
	
	contenedor.style.height = (alto+parseInt(this._altoBarraPaginas/2))+"px";
	
	for(i=this._numeroPaginas; i>=1; i--) {
		var btn = document.createElement("a");
		btn.id = contenedorId+"_btn_"+i;
		btn.page = i;
		btn.innerHTML = i;
		btn.className = "paginador_boton";	
		btnBar.appendChild(btn);
		var pelm = this;
		Paginador_AddListener(btn,"click",function(x){pelm._ShowPageFromEvent(x);});
		
		this._arrayBotones[i-1] = btn;
	}

	btnBar.style.visibility = "visible";

	this._ShowPageFromEvent = function(e) {
		if(window.event) {
			e = window.event; 
		}
		srcEl = e.srcElement ? e.srcElement : e.target;

		var pageNumber = srcEl.page;
		this.ShowPage(pageNumber);
	}
	
	this.ShowPage = function(pageNumber) {
		clearTimeout(this._timer);
		pageNumber = Math.max(Math.min(pageNumber,this._numeroPaginas),1)
		for(i=1; i<=this._numeroPaginas; i++) {
			this._arrayBotones[i-1].className = this._arrayBotones[i-1].className.replace(" sel","");
		}
		this._arrayBotones[pageNumber-1].className += " sel";		
		
		if (this._paginaSeleccionada != null) {
			this._paginaSeleccionada.style.display = "none";
		}		
		this._paginaSeleccionada = this._arrayPaginas[pageNumber-1];
		this._paginaSeleccionada.style.display = "block";		
		this._paginaSeleccionada.style.visibility = "visible";
		
		var nextPage = pageNumber+1;
		if (nextPage > this._numeroPaginas) {
			nextPage = 1;	
		}
		this._timer = setTimeout(this._varName+".ShowPage("+nextPage+")", this._timeout);
	};
	
	this.ShowPage(1);
}
