/**
 * paginacion.js
 * Funciones para realizar la paginación de los elementos de una página Oracle Portal
 * @copyright. Darwin Ramos Cuervo. 2007.
 * Informática Siglo 21
 */

/** Pagina que se esta paginando actualmente */
var currentPage;
/** Div que representa los elementos de una pagina*/
var div_page;
/** Div de la pagina */
var pageDiv;
/** Modo en que se encuentra la pagina*/
var mode;
/** Representa la tabla que se usa cuando la pagina posee varias columnas*/
var table;
/** Elemento que se va a renderizar dentro de la pagina*/
var p_item = "";
/** Cantidad de items tipo archivo o multiarchivo que estan seguidos */
var seguidos = 0;

/**
 * Funcion buildItem
 * Se encarga de contruir el elemento completo, que se pasa por partes desde PLSQL debido al no soporte de CLOBs en Oracle Portal
 * @param v_item. Parte del elemento que se va a concatenar
 */
function buildItem (v_item) {
	p_item += v_item;
}

/**
 * Funcion addItem. 
 * Agrega un elemento a un div, dependiendo de la pagina a la que corresponda y cuando se realice paginación en una sola columna
 * @param p_region. Region donde se encuentran los elementos a paginar
 * @param status. Posicion del elemento de la pagina
 */
function addItem(p_region, status) {
	//Si el item es un archivo o multiarchivo	
	if(p_item.substr(0,3) == "-F-") {		    										
		if (currentPage > 1) {			
			seguidos ++;
			var div_anterior = document.getElementById(p_region+"_"+(currentPage-seguidos));		
			div_anterior.innerHTML = div_anterior.innerHTML + p_item.substr(3);
			p_item = "";		
		}
	} else {		
		seguidos = 0;
		pageDiv = "";	
		if (status.indexOf("S")!=-1) { 	
			div_page = document.createElement("div");		
			div_page.setAttribute("id",p_region+"_"+currentPage);
			//Mode 16: edit mode
			if ( (mode == "16") || (mode != "16" && currentPage != 1) ) {
				div_page.style.display="none";
			}
		} 		
		div_page.innerHTML = div_page.innerHTML + p_item + "<br />";
		
		if (status.indexOf("E")!=-1) {
			pageDiv = document.getElementById("page_div_"+p_region);
			pageDiv.appendChild(div_page);	
		}
		p_item = "";
	}	
}

/**
 * Funcion addItemCols
 * Agrega un elemento a un div, dependiendo de la pagina a la que corresponda y cuando se realice paginación en más de una columna
 * @param p_region. Region donde se encuentran los elementos a paginar
 * @param p_item. Elemento que se va a renderizar dentro de la pagina
 * @param status. Posicion del elemento de la pagina
 * @param cols. Numero de columnas que contiene la pagina
 * @param currentItem. Elemento actual dentro de la pagina
 * @param itemsPerPage. Cantidad de elementos por pagina.
 */
function addItemCols(p_region, p_item, status, cols, currentItem, itemsPerPage){	   		
	pageDiv = "";	
	if (status.indexOf("S")!=-1) { 	
		div_page = document.createElement("div");		
		div_page.setAttribute("id",p_region+"_"+currentPage);
		table = "<table width='100%'>";
		//Mode 16: edit mode
		if ( (mode == "16") || (mode != "16" && currentPage != 1) ) {
			div_page.style.display="none";
		}
	} 
	if (currentItem%cols != 0) { //Primer elemento de fila
		table += "<tr>";
	}
	
	table += "<td>"+p_item+"</td>"; //Elemento

	if (currentItem%cols == 0) { //Ultimo elemento de fila
		table += "</tr>";
	}
	
	if ( (currentItem == itemsPerPage) && (currentItem%cols!=0) ) {
		table += "<td>&nbsp;</td>";
	}
	
	if ( currentItem == itemsPerPage ) { //Ultimo elemento de página
		table += "</table>";
	}
		
	if (status.indexOf("E")!=-1) {
		div_page.innerHTML = div_page.innerHTML + table;
		pageDiv = document.getElementById("page_div_"+p_region);
		pageDiv.appendChild(div_page);	
	}	
}

/**
 * Funcion showPage. 
 * Muestra el control de la paginacion, además de la página que se está paginando actualmente
 * @param region. Region donde se encuentran los elementos a paginar
 * @param divNumber. Página que se debe mostrar actualmente
 * @param totalDivs. Cantidad total de páginas resultantes
 */
function showPage(region, divNumber, totalDivs) {				
	if(mode != "16") {					
		var j = 1;
		for (var i = 1; i <= totalDivs ; i++ ) {				
			if(document.getElementById(region+"_"+i) != null) {
				if(divNumber == i) {
					document.getElementById(region+"_"+i).style.display="block";				
					document.getElementById("pag_"+i).className="paginacion_on";				
				} else {					
					document.getElementById(region+"_"+i).style.display="none";
					document.getElementById("pag_"+i).className="paginacion_off";
				}
				//Cuando hay archivos o multiarchivos o tipos de elementos "raros"
				document.getElementById("pag_"+i).innerHTML=j;					
				j++;
			} else {
					document.getElementById("pag_"+i).style.display = "none";
			}
		}		
	}
}

/**
 * Funcion mostrarPagina.
 * Se usa para controlar la paginacion de las noticias del home de Intranet
 * @param pagDiv. Div que se debe mostrar.
 * @param pags. Total de paginas que contiene la seccion
 */
function mostrarPagina(pagDiv, pags) {
	for (var i=0; i<=pags-1;i++) {
		if (i==pagDiv){
			document.getElementById(i).style.display="block";
			document.getElementById("pag_"+i).className="paginacion_on";
		} else {
			document.getElementById(i).style.display="none";
			document.getElementById("pag_"+i).className="paginacion_off";
		}
	}
}