$(document).ready(function()
	{
		var bCargarAvisos = true;

//		if (!isNaN(parseInt($('#cargarAvisos').val())))
//			bCargarAvisos = eval('"' + $('#cargarAvisos').val() + '" == "1"');

//		if (bCargarAvisos)
//			getAvisos($('#categPadreID').val(), getPagina(), getMostrar());

		$('#cajaMostrar div').click(function(){
			var oNoCambiar = $(this).parent().find('.NoCambiarPagina');

			oNoCambiar.addClass('cambiarPagina');
			oNoCambiar.removeClass('NoCambiarPagina');
			$(this).addClass('NoCambiarPagina');
			$(this).removeClass('cambiarPagina');
			$('#iMostrar').val(this.getAttribute('mostrar'));
			setPagina(1);

			getAvisos($('#categPadreID').val(), getPagina(), getMostrar());
			});

		$('#tAvisos tbody tr').hover(
			function(){
				this.setAttribute('oldClass', $(this).attr('class'));
				if ($(this).hasClass('odd'))  $(this).removeClass('odd');
				if ($(this).hasClass('even')) $(this).removeClass('even');
				$(this).addClass('hover');
			},
			function(){
				$(this).removeClass('hover');
				$(this).addClass(this.getAttribute('oldClass'));
			});

		$('#tAvisos tbody tr').click(function(){
				location = '#TOP';
				tb_show('', "detalleAviso.php?avisoID=" + this.getAttribute('avisoID') + "&habilitado=1&TB_iframe=true&height=450&width=720");
			}
		);

		$('#cajaPaginas div').click(function(){
			var oNoCambiar = $(this).parent().find('.NoCambiarPagina');

			oNoCambiar.addClass('cambiarPagina');
			oNoCambiar.removeClass('NoCambiarPagina');
			$(this).addClass('NoCambiarPagina');
			$(this).removeClass('cambiarPagina');
			setPagina(this.getAttribute('pagina'));

			getAvisos($('#categPadreID').val(), getPagina(), getMostrar());
		});

		$('#iMostrar').change(function(){
			setPagina(1);
			getAvisos($('#categPadreID').val(), getPagina(), getMostrar());
		});

		$('#btnAnterior').click(function(){
			CambiarPagina(-1);
		});

		$('#btnSiguiente').click(function(){
			CambiarPagina(1);
		});

		$('#btnSiguiente, #btnAnterior, #btnSiguienteCompras, #btnAnteriorCompras, #btnSiguienteAlumnos, #btnAnteriorAlumnos').hover(
			function(){
				 $(this).addClass("cambiarPaginaHover");
			},
			function(){
				 $(this).removeClass("cambiarPaginaHover");
			}
		);

		$('#iMostrarCompras').change(function(){
			setPagina(1, 'Compras');
			CambiarPagina(0, 'Compras');
		});

		$('#btnAnteriorCompras').click(function(){
			CambiarPagina(-1, 'Compras');
		});

		$('#btnSiguienteCompras').click(function(){
			CambiarPagina(1, 'Compras');
		});

		$('#iMostrarAlumnos').change(function(){
			setPagina(1, 'Alumnos');
			CambiarPagina(0, 'Alumnos');
		});

		$('#btnAnteriorAlumnos').click(function(){
			CambiarPagina(-1, 'Alumnos');
		});

		$('#btnSiguienteCompras').click(function(){
			CambiarPagina(1, 'Alumnos');
		});

	});

function removeRows(tblBody) {
	tblBody.empty();
}

// Página
function getPagina(){
	return parseInt($('#iPagina').val());
}

function setPagina(iValor){
	$('#iPagina').val(iValor);
}

function cantPaginas(){
	return parseInt($('#iCantPaginas').val());
}

function setPaginas(iValor){
	$('#iCantPaginas').val(iValor);
}

// Mostrar
function getMostrar(){
	return parseInt($('#iMostrar').val());
}

function getTodo(iCategoriaPadre) {
	getCategorias(iCategoriaPadre);
	getAvisos(iCategoriaPadre, 1, getMostrar());
}

function getAvisos(categoriaID, iPagina, iMostrar)
{
	try
	{
		var url = 'avisos.php';
		var pars = 'categoriaID=' + categoriaID + '&act=list';
		var tblBody = $('#tAvisos tbody');

		if ( isNaN(parseInt(categoriaID)) )
		{
			alert(categoriaID);
			return;
		}

		$('#categoriaAnterior').val(categoriaID);

		if (iPagina){
			pars += "&pagina=" + iPagina;
		}
		if (iMostrar){
			pars += "&mostrar=" + iMostrar;
		}

		mostrarMensajeEnCelda(tblBody, '<img src="images/loadingSmall.gif" /> Espera un momento...', true);

		 $.ajax(
		 {
				type: "GET",
				url: url,
				data: pars,
				dataType: "html",
				success: showAvisos,
				error: showAvisosError
		});
	}
	catch (oError)
	{
		alert('Error obteniendo los avisos. \n' + oError.message);
	}
}

/*===================================================================
 function: mostrarMensajeEnCelda
 	Muestra un mensaje
 Devuelve:
	No retorna ningún valor.
 Parametros:
 	tblBody	-> EL TR en donde se muestra el mensaje
 	sText	-> El mensaje.
 	bHTML	-> Si el mensaje es HTML
=====================================================================*/

function mostrarMensajeEnCelda(tblBody, sText, bHTML)
{

	removeRows(tblBody);

	if (bHTML)
	{
		tblBody.html('<tr><td colspan="4" align="center" id="CategsError">' + sText + '</td></tr>');
	}
	else
	{
		var row = document.createElement("tr");
		var cell = document.createElement("td");
		var cellText = document.createTextNode(sText);
		cell.appendChild(cellText);
		cell.colSpan = "4";
		cell.align = "center";
		cell.id = "CategsError";
		row.appendChild(cell);
		tblBody[0].appendChild(row);
	}
}

function showAvisosError(originalRequest)
{
	// Mensaje de Error
	if (originalRequest.status != 0 && originalRequest.status != 200)
	{
		mostrarMensajeEnCelda($('#tAvisos tbody'), originalRequest.responseText);
	}
	else
	{
		mostrarMensajeEnCelda($('#tAvisos tbody'), 'Acción cancelada por el usuario. <input type="button" value="Recargar" onclick="javascript: location.reload(); return false;"/>', true);
	}

	// Paginación
	setPaginas(0);
	habilitarBotones();
}

function showAvisos(originalRequest)
{
	// Esta variable la defino para permitirme a futuro alterar el orden
	// en que se muestran las columnas sin tener que tocar el codigo.
	var vVars = ["Titulo", "Login", "Precio", "fechaAlta"];
	var numCols = vVars.length; // Cantidad de columnas de una fila

	// Los estilos siguientes tienen directa relacion con vVars
	var vStyles = ["thickbox tituloAviso", "nick", "precio", "fecha"]; // Estilos para la columna

	// Tener en cuenta que esta variable indica en que columna
	// se va a agregar el ANCHOR
	var sVinculo = "Titulo"

	// Se indica en donde se agregan los avisos
	var tblBody = $('#tAvisos tbody');
	try
	{
		var aAvisos = eval('(' + originalRequest + ')');
	}
	catch(oError)
	{
		enviarErrorASoporte('Error al cargar los avisos', 'showAvisos (buscar)', originalRequest)
		mostrarMensajeEnCelda(tblBody, 'Lamentablemente ha ocurrido un error interno. Aguarda un momento y reintenta, si el problema continúa por favor envia un email a soporte@striggy.com.');
		bConsultando = false;
		return;
	}

	// Paginación
	setPaginas(aAvisos.Cantidad);
	habilitarBotones();

	if (aAvisos.Datos.length == 0) {
		mostrarMensajeEnCelda(tblBody, "No se encontraron avisos para la categoria seleccionada.");
		return;
	}

	if ($('#cajaCategoriasError') != null)
		removeRows(tblBody);

	$.each(aAvisos.Datos, function(i, aviso){
			if (aviso == null) return;

			var row = document.createElement("tr");
			for (var j = 0; j < numCols; j++)
			{
				var cell = document.createElement("td");

				sTexto = eval("aviso\."+vVars[j]);
				if (typeof(sTexto) == 'object')
					sTexto = '';


				// Link
				if (vVars[j] == sVinculo)
				{
					var anchorCell	= document.createElement("a");
					anchorCell.href = "detalleAviso.php?avisoID=" + aviso.ID + "&visitar=1&habilitado=1&TB_iframe=true&height=450&width=720";

					$(row).hover(
						function(){
							this.setAttribute('oldClass', $(this).attr('class'));
							if ($(this).hasClass('odd'))  $(this).removeClass('odd');
							if ($(this).hasClass('even')) $(this).removeClass('even');
							$(this).addClass('hover');
						},
						function(){
							$(this).removeClass('hover');
							$(this).addClass(this.getAttribute('oldClass'));
						});

					// corrige algunos problemas de visualización en IE6 e IE7
					$(row).click(
						function()
						{
							location = '#TOP';
							tb_show('', "detalleAviso.php?avisoID=" + aviso.ID + "&visitar=1&habilitado=1&TB_iframe=true&height=450&width=720");
						}
					);

				}

				// Estilos predefinidos
				if (vStyles[j] != "") {
					cell.setAttribute("class", vStyles[j]);
					cell.setAttribute("className", vStyles[j]);
				}

				// Crear el texto
				var cellText = document.createTextNode(sTexto);

				// Agregar el texto al nodo
				cell.appendChild(cellText);

				// Agregar el aviso a la tabla
				row.appendChild(cell);
			}
			if (i % 2 == 0) {
				row.setAttribute("class", "odd");
				row.setAttribute("className", "odd");
			} else {
				row.setAttribute("class", "even");
				row.setAttribute("className", "even");
			}
			tblBody[0].appendChild(row);
	});

	// Para que muestre el resultado
	tb_init('a.thickbox, area.thickbox, input.thickbox');
}


function getCategorias(categoriaPadreID)
{
	var url = 'categorias.php';
	var pars = 'categoriaPadreID=' + categoriaPadreID + '&act=list';
	$('#categPadreID').val(categoriaPadreID);
	$('#categPadreNombre').val('');

	deleteCategorias();
	$('#cajaCategorias h2').text('Cargando categorías...');
	$('#cajaCategorias h2').show();
	$('#categoria').text('Todas');

	 $.ajax(
	 {
			type: "GET",
			url: url,
			data: pars,
			dataType: "html",
			success: showCategorias,
			error: showCategoriasError
	});

}

function showCategoriasError(originalRequest)
{
	var tblBody = $('#tAvisos tbody');

	if (originalRequest.status != 0 && originalRequest.status != 200)
	{
		$('#cajaCategorias h2').text('El servicio no está disponble, reintenta en un minuto.');
		$('#cajaCategorias h2').show();
	}
	else
	{
		$('#cajaCategorias h2').html('Acci&oacute;n cancelada por el usuario. <a href="#" onclick="javascript: location.reload(); return false;">Recargar</a>');
		$('#cajaCategorias h2').show();
	}
	return;
}

function showCategorias(originalRequest)
{
	var aCategorias = eval('(' + originalRequest + ')');

	// Borra los child que puede haber y retorna el elemento raiz.
	var categsList = deleteCategorias();

	$.each(aCategorias,
		function (i, categoria)
		{
			if (categoria == null) return;

			sHTML = '<li>' +
					'<a href="buscar.php?CategoriaID=' + categoria.ID + '&CategoriaPadreID=' + categoria.Padre + '" onclick="';

			if (parseInt(categoria.TieneHijos) == 0 ){
				sHTML += "javascript: setCategoria('" + categoria.Nombre + "'); getAvisos(" + categoria.ID + ", 1, getMostrar()); return false;";
			}else {
				sHTML += "javascript: setCategoria('" + categoria.Nombre + "'); setPadreNombre('" + categoria.Nombre + "'); getSubCategorias(" + categoria.ID + "); getAvisos(" + categoria.ID + ", 1, getMostrar()); return false;";
			}

			sHTML += '">' + categoria.Nombre + '</a>';
			sHTML += '</li>';

			categsList.append(sHTML);
		}
	);

	$('#cajaCategorias h2').hide();

}

function setCategoria(sValor)
{
	if($('#categPadreNombre').val() == '') {
		$('#categoria').text(sValor);
	} else {
		$('#categoria').text($('#categPadreNombre').val() + ' - ' + sValor);
	}

	// Si cambia de categoria vuelve a la primera página
	$('#iPagina').val('1');
}

function setPadreNombre(sValor)
{
	$('#categPadreNombre').val(sValor);
}

function getSubCategorias(categoriaPadreID)
{
	var url = 'categorias.php';
	var pars = 'categoriaPadreID=' + categoriaPadreID + '&act=list';
	$('#categPadreID').val(categoriaPadreID);
	$('#categoria').text($('#categPadreNombre').val());

	var tblBody = $('#tAvisos tbody');
	$('#cajaCategorias h2').text('Cargando subcategorías...');
	$('#cajaCategorias h2').show();
	deleteCategorias();

	 $.ajax(
	 {
			type: "GET",
			url: url,
			data: pars,
			dataType: "html",
			success: showSubCategorias,
			error: showCategoriasError
	});
}

// Debe borrar todas las categorias y cargar las subcategorias.
// Debe indicar en que Categoria se está posicionando
function showSubCategorias(originalRequest)
{
	var aCategorias = eval('(' + originalRequest + ')');
	var iCategoria = 0;
	if (aCategorias.length)
		iCategoria = aCategorias[0].Padre;

	showCategorias(originalRequest);
	$('#cajaCategorias h2').html('<a href="buscar.php" onclick="javascript: getCategorias(0);  getAvisos(0, 1, getMostrar()); return false;" class="links">Todas</a>&nbsp;&gt;&nbsp;<a href="buscar.php?CategoriaID=' + iCategoria + '&amp;CategoriaPadreID=0" onclick="javascript: getSubCategorias(' + iCategoria + ');  getAvisos(' + iCategoria + ', 1, getMostrar()); return false;" class="links">' + $('#categPadreNombre').val() + '</a>');
	$('#cajaCategorias h2').show();
}

function deleteCategorias()
{
	// Borra los child que puede haber
	var categsList = $('#cajaCategorias ul');
	categsList.empty();
	return categsList;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Paginado de avisos
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function CambiarPagina(iIncremento)
{

	if ((getPagina() + iIncremento) < 0) iIncremento = (getPagina() - 1);

	// El número de página no es numérico
	if (isNaN(getPagina()) ){
		setPagina(1);
	} else {
		if (isNaN(parseInt(iIncremento))) iIncremento = 0;
		setPagina(getPagina() + iIncremento);
	}

	habilitarBotones();
	getAvisos($('#categoriaAnterior').val(), getPagina(), getMostrar());
}

// Botón anterior
function deshabilitarBoton(boton)
{
	boton.hide();
}

function habilitarBoton(boton)
{
	boton.show()
}

function habilitarBotones()
{
	var bMostrar = false;

	// Es la primer página
	if (getPagina() == 1){
		deshabilitarBoton( $('#btnAnterior') );
	} else {
		habilitarBoton( $('#btnAnterior') );
	}

	if ( (getPagina() * getMostrar()) >= cantPaginas() ) {
		deshabilitarBoton( $('#btnSiguiente') );
	} else {
		habilitarBoton( $('#btnSiguiente') );
	}

	// Agregado para hacer la paginación
	// getPagina() --> Indica la Pag actual
	// cantPaginas() --> Indica la cantidad de Pags

	var iPagina = 1;
	var sText   = '';
	var iTotalReg = cantPaginas();
	var iMostrar = getMostrar();
	var iPagActual = getPagina();
	var bTresPuntos = false;
	var iTotalPaginas = parseInt(iTotalReg / iMostrar);
	var iPaginaDesde = iPagActual - 2;
	var iPaginaHasta = iPagActual + 2;

	if ((iTotalReg % iMostrar) > 0) iTotalPaginas++;

	// Desde la primer página
	for(iPagina = 1; iPagina <= iTotalPaginas; iPagina++)
	{
		if ( iPagina == 1 ||
			 iPagina == iTotalPaginas ||
			 (iPagina >= iPaginaDesde && iPagina <= iPaginaHasta) )
		{
			if ( iPagActual != iPagina)
				sText += '<div class="cambiarPagina" onclick="javascript: CambiarPagina(' + (iPagina - iPagActual) + ');">&nbsp;' + iPagina + '&nbsp;</div>';
			else
				sText += '<div class="NoCambiarPagina">&nbsp;' + iPagina + '&nbsp;</div>';

		}
		else if (iPagina != 1 &&
			 	 iTotalPaginas != iPagina &&
			 	 (iPagina == (iPaginaDesde - 1) ||
			 	  iPagina == (iPaginaHasta + 1)    ))
		{
			sText += '...';
		}
	}
	$('#cajaPaginas').html(sText);
}
