

var aIds;		//Array de Ids
var sIds;		//cadena original de Ids
var numPages = 0;
var nPage = 0;		//Pagina actual
var numReg = 0;		//Numero de registros por Página
var bIframe = false;
var lastUrl = "";
var registros = "20";	<!--Por defecto 20-->
var ids = "";	<!--ids separados por comas-->
var TotalRegistros;
	
var frameName = "";
var pageName = "";
var paramName = "";

function InitPaginador(){
	if ( sIds != "" )
	{
		numReg = registros;	
		if(aIds.length>=numReg)
			calculaNumPages();
		else
			numPages = 1;
		if((frameName!="") && (pageName!="") && (paramName!="")){
			bIframe = true;
			refreshUrl("");
		}
	}
}

function setIds(value){		//Ojo se dispara antes que Init si se incluye la property ids
	numReg = registros;	
	sIds = value;
	aIds = value.split(",");
	nPage = 1;
	if(aIds.length>=numReg)
		calculaNumPages();	
	else
		numPages = 1;
	TotalRegistros = aIds.length;
}

function getIds(){
	return(sIds);
}


function getPageIds(value){
	// si no hay parametro se devuelve los ids de la pagina actual
	if(typeof(value) == "undefined"){ 
		value = nPage;
	}	
	if(value > 0 && value <= numPages){	
		var cadIds = "";
		var ini = 0;
		var fin = 0;
		var i; 

		value --;
		ini = value * numReg;
		fin = parseInt(ini) + parseInt(numReg);
		if(fin > aIds.length) fin = aIds.length;
		
		for(i=ini;i<fin;i++){
			cadIds += aIds[i] + ',';
		}
	
		if(cadIds.length > 0) cadIds = cadIds.substring(0,cadIds.length-1);
		return(cadIds);
	}else{
		alert("Error(paginador): getPageIds function, number of page out of bounds.")
		return("Error");
	}
}

function getPageNumber(){
	return(nPage);
}

function getNumberOfPages(){
	calculaNumPages();
	return(numPages);
}


function goPage(value, recarga, extraParams){
	if (typeof(recarga) == "undefined") recarga = true;
	if (typeof(extraParams) == "undefined") extraParams = "";
	if(value > 0 && value <= numPages){	
		nPage = value;
		if(recarga) refreshUrl(extraParams);
	}else alert("Error(paginador): goPage function, number of page out of bounds.")
}

function goFirstPage(recarga, extraParams){
	if (typeof(recarga) == "undefined") recarga = true;
	if (typeof(extraParams) == "undefined") extraParams = "";
	nPage = 1;
	if(recarga) refreshUrl(extraParams);
}

function goLastPage(recarga, extraParams){
	if (typeof(recarga) == "undefined") recarga = true;
	if (typeof(extraParams) == "undefined") extraParams = "";
	nPage = numPages;
	if(recarga) refreshUrl(extraParams);
}

function goNextPage(recarga, extraParams){
	if (typeof(recarga) == "undefined") recarga = true;
	if (typeof(extraParams) == "undefined") extraParams = "";
	nPage++;
	if(nPage > numPages) nPage = numPages;
	if(recarga) refreshUrl(extraParams);
}

function goPreviousPage(recarga, extraParams){
	if (typeof(recarga) == "undefined") recarga = true;
	if (typeof(extraParams) == "undefined") extraParams = "";
	nPage--;
	if(nPage < 1) nPage = 1;
	if(recarga) refreshUrl(extraParams);
}


function refreshUrl(extraParams){
	if(bIframe){
		var url = "";
		url = pageName + "?" + paramName + "=" + getPageIds();
		if(extraParams != "") url += "&" + extraParams;
		lastUrl = url;
	}	
}

function getUrl(){
	return(lastUrl);
}

function calculaNumPages(){
	if (Math.round(aIds.length/numReg) < parseFloat(aIds.length/numReg))
		numPages = parseInt(aIds.length/numReg) + 1;
	else
		numPages = Math.round(aIds.length/numReg);
}

