//  ----------------------------------------------------------------
// Carga la paginación de las visitas y el contenido del 
// primer bloque de ese grupo de paginación
//  ----------------------------------------------------------------
function loadPaginacion(capaPaginacion, urlCalcularBloques, registrosBloque, bloque, capaContenidosBloque, urlCargarRegistros){

	// Cargamos contenido del bloque
	loadBloquePaginacion(capaContenidosBloque, urlCargarRegistros, registrosBloque, bloque);

	// envío
	$.ajax({
		type: "POST",
		url: urlCalcularBloques,		
		data: {limit:registrosBloque},
		dataType: ($.browser.msie) ? "text" : "html",
		error: function(XMLHttpRequest, textStatus, errorThrown){
			capaPaginacion.append("<span style='color:red'>Error en carga de elementos de paginación</span>");
			return false;
		},
		success: function(data){
			// Mostramos la paginación del bloque
			renderPaginacion(
				capaPaginacion,
				data,
				bloque,
				registrosBloque
			);			

			// Control de enlace de bloques
			capaPaginacion.contents().find('a[name^="bloque"]').bind("click",
				function() {
					// Ir a inicio de página
					window.scrollTo(0,0);
					capaPaginacion.contents().find('a[name^="bloque"]').css("text-decoration", "none");
					$(this).css("text-decoration", "underline");
					loadBloquePaginacion(capaContenidosBloque, urlCargarRegistros, registrosBloque, $(this).text());
					return false;
				}
			);

			// INICIO
			capaPaginacion.contents().find('a[name="inicio"]').bind("click", 
				function(){	
					// Ir a inicio de página
					window.scrollTo(0,0);
					
					loadPaginacion(
						capaPaginacion, 
						urlCalcularBloques, 
						registrosBloque, 
						1 , 
						capaContenidosBloque,
						urlCargarRegistros
					);
					return false;
				}
			);
			
			// ANTERIOR
			capaPaginacion.contents().find('a[name="anterior"]').bind("click", 
				function(){	
					// Ir a inicio de página
					window.scrollTo(0,0);
					
					loadPaginacion(
						capaPaginacion, 
						urlCalcularBloques, 
						registrosBloque, 						
						((bloque-5)<=0)? 1 : (((Math.floor((bloque+4)/5)*5)+1)-10), 
						capaContenidosBloque,
						urlCargarRegistros
					);
					return false;
				}
			);
			
			// SIGUIENTE
			capaPaginacion.contents().find('a[name="siguiente"]').bind("click", 
				function(){
					// Ir a inicio de página
					window.scrollTo(0,0);
					
					loadPaginacion(
						capaPaginacion, 
						urlCalcularBloques, 
						registrosBloque, 
						((Math.floor((bloque+4)/5)*5)+1),
						//(((bloque+1)%5==0)? (bloque+1)/5 : Math.ceil((bloque+1)/5)), 
						capaContenidosBloque,
						urlCargarRegistros
					);
					return false;
				}
			);
			
			// FIN
			capaPaginacion.contents().find('a[name="fin"]').bind("click", 
				function(){	
					// Ir a inicio de página
					window.scrollTo(0,0);
					
					loadPaginacion(
						capaPaginacion, 
						urlCalcularBloques, 
						registrosBloque, 
						//(data%5==0)? data/5 : Math.ceil(data/5), 
						(data%5==0)? data-4 : (data-(data%5))+1, 
						capaContenidosBloque,
						urlCargarRegistros
					);
					return false;
				}
			);
		}
	});	
}

//  ----------------------------------------------------------------
//  Visualiza la paginaci�n
//  ----------------------------------------------------------------
function renderPaginacion(destino, data, bloque, limite){
		
	var contenido = "<table class='paginacion' width='100%'><tr>";
	contenido = contenido + "<td valign='top' align='center'>";
	
	// INICIO
	if (bloque<=1) {
		contenido = contenido + "&nbsp;&nbsp;";
	} else {
		contenido = contenido + "<a href='' name='inicio'>&lt;&lt;</a>";
	}
	
	contenido = contenido + "&nbsp;" + "&nbsp;";
	
	// ANTERIOR
	if (bloque<=1) {
		contenido = contenido + "&nbsp;" + "&nbsp;";
	} else {
		contenido = contenido + "<a href='' name='anterior'>&lt;</a>";
	}
	
	contenido = contenido + "&nbsp;&nbsp;" + "&nbsp;";

	// BLOQUES
	for (var i=bloque; i<=data && i<bloque+5; i++) {
		contenido = contenido + "<span>";
		contenido = contenido + "<a href='' name='bloque"+i+"'";
		if (i==bloque) 
			contenido = contenido + " style='text-decoration:underline'>"+i+"</a>";
		else 
			contenido = contenido + " style='text-decoration:none'>"+i+"</a>";
		contenido = contenido + "</span>";
		contenido = contenido + "&nbsp;" + "&nbsp;";
	}	
	
	contenido = contenido + "&nbsp;" + "&nbsp;";
	
	// SIGUIENTE	
	if (bloque<( (data%5==0)? data-4 : (data-(data%5))+1 )) {
		contenido = contenido + "<a href='' name='siguiente'>&gt;</a>";
	} else {
		contenido = contenido + "&nbsp;" + "&nbsp;";
	}
	
	contenido = contenido + "&nbsp;" + "&nbsp;";
	
	// FIN
	if (bloque<( (data%5==0)? data-4 : (data-(data%5))+1 )) {
		contenido = contenido + "<a href='' name='fin'>&gt;&gt;</a>";
	} else {
		contenido = contenido + "&nbsp;&nbsp;" + "&nbsp;";
	}
	contenido = contenido + "</td>";
	contenido = contenido + "</tr>";

	contenido = contenido + "</table>";
	
	destino.empty();
	destino.html(contenido);
}

//  ----------------------------------------------------------------
//  Visualiza el contenido del bloque de paginación
// seleccionado.
//  ----------------------------------------------------------------
function loadBloquePaginacion(capa, url, registros, bloque){
	
	// PRE - envío (imagen de precarga)
	capa.html("<p align='center'>"+imgLoading+"</p>");
	
	// envío
	$.ajax({
		type: "POST",
		url: url,
		data: {limit:registros, bloque:bloque},
		dataType: "json",			
		error: function(XMLHttpRequest, textStatus, errorThrown){
			capa.append("<span style='color:red'>Error en carga de contenido</span>");				
		},
		success: function(xml){	
			renderBloqueContenidos(capa, xml);
		}		
	});
}

//  ----------------------------------------------------------------
//  Visualiza el contenido del bloque de paginaci�n
// seleccionado.
// SOBREESCRIBIR
//  ----------------------------------------------------------------
function renderBloqueContenidos(capa, xmlContenidos){
}

