function Acentos(palabra){
	if (typeof (palabra) != 'undefined')
		return palabra.replace(/á|é|í|ó|ú|ä|ë|ï|ö|ü/ig, function(str, offset, s) {
			var str = str == "á" ? "a" : str == "é" ? "e" : str == "í" ? "i" : str == "ó" ? "o" : str == "ú" ? "u" : str == "ñ" ? "n" : str;
			str = str == "Á" ? "A" : str == "É" ? "E" : str == "Í" ? "I" : str == "Ó" ? "O" : str == "Ú" ? "U" : str == "Ñ" ? "N" : str;
			str = str == "Á" ? "A" : str == "É" ? "E" : str == "Í" ? "I" : str == "Ó" ? "O" : str == "Ú" ? "U" : str;
			str = str == "ä" ? "a" : str == "ë" ? "e" : str == "ï" ? "i" : str == "ö" ? "o" : str == "ü" ? "u" : str;
			str = str == "Ä" ? "A" : str == "Ë" ? "E" : str == "Ï" ? "I" : str == "Ö" ? "O" : str == "Ü" ? "U" : str;
			return (str);
		});
	else
		return '';
}
 
function Buscar(inputId, canal) {
	
	var texto = Acentos($(inputId).getValue());
	if (!texto) {
		alert("introduce algún criterio de búsqueda");
		return false;
	}

	if ((canal != "empresas")&&(canal !="autonomos")){canal = "particulares";}
	
	switch(canal){

	case "particulares":
            var location = "http://telcopru.swfpre.enpruebas.com/movil/buscador/index.html";
			break;
	case "autonomos":
            var location = "http://telcopru.swfpre.enpruebas.com/empresaseco/autonomos/buscador/index.html";
            break;
	case "empresas":
            var location = "http://telcopru.swfpre.enpruebas.com/empresaseco/empresas/buscador/index.html";
            break;
	}

	if (!document.getElementById("Palabras")){
		location = location + "?termino="+texto;
		document.location.href = location;
	}else{
		if (inputId == "buscar"){
			$('Palabras').value = $(inputId).value ;
		}
	}


	try{
		$("buscadoreco-NotaResultado").hide();
		$("buscadoreco-textoBuscado").update($("Palabras").getValue());
		//$("numresults").update("(Cargando...)");
	} catch(e) {}

	var url = "http://telcopru.swfpre.enpruebas.com/busqueda-" + canal + "/";
	var parametros = "?q=title%3A" + texto + "^2 text%3A" + texto + "&version=1.0&start=0&rows=2000&indent=on&wt=json";

	var ajax = new Ajax.Request(
		url,
		{
			method: "get",
			parameters: parametros,
			onComplete: function(datos) {
				GenerarResultados(datos.responseText.evalJSON());
			}
		}
	);

	return false;
}

function CrearItem(id, datos, mostrar, separador) 
{
	var textoBusqueda = $("Palabras").getValue();
	
	var titulo = (datos.title);
	var texto = (datos.texto);
	titulo = RemarcarTags(titulo, textoBusqueda);
	texto = RemarcarTags(texto, textoBusqueda);
	
	var itemHtml = "<div id=\"" + id + "\" class=\"itemresult\" " + (mostrar ? "" : "style=\"display:none;\"") + ">" +
					"	<div class=\"itemgroup\">" +
					"		<div class=\"itemtitulo\">" + titulo + "</div>" +
					"		<div class=\"itemtxt\">" + texto + "</div>" +
					"		<div class=\"itemurl\"><a href=\"" + datos.url + "\" target=\"_blank\">" + (((datos.url).length > LimiteCaracteres) ? (datos.url).substring(0, LimiteCaracteres) + "..." : (datos.url)) + "</a></div>" +
					"	</div>" +
					"</div>";

	return itemHtml;
}

function CrearItemEnFiltro(filtro, id, datos) {
	var mostrar = (FiltrosContadores[filtro] < FiltrosElementos);

	$(filtro).insert(CrearItem(filtro + "_" + id, datos, mostrar, true));
	FiltrosContadores[filtro]++;

	if (FiltrosContadores[filtro] == FiltrosElementos)
		$(filtro).insert("<div class=\"SubitemsMas\"><a href=\"javascript:FiltroMostrarMas('" + filtro + "');\">más resultados</a></div>");
}

function FiltroMostrarMas(filtro) {
	$("Elementos").update("");

	TotalElementos = 0;
	ElementosIds = new Array();

	var filtroIndice = parseInt(filtro.replace("Subitems", ""));
	var filtroPalabra = null;
	if (!isNaN(filtroIndice))
		filtroPalabra = Filtros[filtroIndice];

	for (var i = 0; i < TotalFilas; i++) {
		if (filtroPalabra == null) {
			var filtrada = false;
			for (var j = 0; j < Filtros.length; j++)
				if (Filas[i].url.indexOf(Filtros[j]) != -1)
					filtrada = true;
			if (filtrada)
				continue;
		}
		else {
			if (Filas[i].url.indexOf(filtroPalabra) == -1)
				continue;
		}

		ElementosIds[TotalElementos++] = Filas[i].id;
		$("Elementos").insert(CrearItem(Filas[i].id, Filas[i], false, (i != TotalFilas - 1)));
	}

	if (isNaN(filtroIndice))
		$("FiltrosResultados").update("&nbsp;-&nbsp;" + FiltroOtrosTitulo + " (" + TotalElementos + ")");
	else
		$("FiltrosResultados").update("&nbsp;-&nbsp;" + FiltrosTitulos[filtroIndice] + " (" + TotalElementos + ")");

	$("Filtros").hide();
	$("Elementos").show();
	$("FiltrosOpciones").show();
	
	Paginar(1);
}

function FiltrosVolver() {
	$("FiltrosResultados").update("");
	$("FiltrosOpciones").hide();
	$("paglist").hide();
	$("Elementos").hide();
	$("Filtros").show();
}

function GenerarResultados(data) {
		$("contenido").show();

	var mensajeError = "Error en la b&#250;squeda. Int&#233;ntelo m&#225;s tarde.";
	
	if (!data) {
		$("status").update(mensajeError + "<!--1-->");
		$("items").hide();
		return;
	}

	if (!data.response) {
		$("status").update(mensajeError + "<!--2-->");
		$("items").hide();
		return;
	}

	if (!data.response.docs) {
		$("status").update(mensajeError + "<!--3-->");
		$("items").hide();
		return;
	}

	TotalFilas = parseInt(data.response.docs.length);
	if (isNaN(TotalFilas)) {
		$("status").update(mensajeError + "<!--4-->");
		$("items").hide();
		return;
	}

	if (TotalFilas < 1) 
	{
		$("status").update("<i>No se ha encontrado ning&uacute;n resultado</i>");
		$("items").hide();
		return;
	}
	
	$("numresults").update(TotalFilas);
	$("buscadoreco-NotaResultado").show();
	$("contenido").show();
	$("status").update("");
	
	Filas = data.response.docs;

	$("Filtros").update("");
	$("Elementos").update("");
	$("paglist").update("");
	
	$("Filtros").hide();
	$("Elementos").hide();
	$("paglist").hide();
	$("items").show();
	ElementosIds = new Array();

	if (Filtros.length > 0)
		GenerarResultadosFiltrados();
	else
		GenerarResultadosSinFiltro();
}

function GenerarResultadosFiltrados() {
	for (var i = 0; i < Filtros.length; i++)
		FiltrosContadores["Subitems" + i] = 0;
	FiltrosContadores["SubitemsHuerfanos"] = 0;

	for (var i = 0; i < Filtros.length; i++) {
		$("Filtros").insert("<div id=\"Subitems" + i + "\" class=\"Subitems\"><div class=\"SubitemsTitulo\">" + FiltrosTitulos[i] + "</div>");
		$("Subitems" + i).hide();
	}
	$("Filtros").insert("<div id=\"SubitemsHuerfanos\" class=\"Subitems\"><div class=\"SubitemsTitulo\">" + FiltroOtrosTitulo + "</div>");
	$("SubitemsHuerfanos").hide();

	for (var i = 0; i < TotalFilas; i++) {
		var filtrado = false;
		for (var j = 0; j < Filtros.length; j++) {
			if (Filas[i].url.indexOf(Filtros[j]) == -1)
				continue;
			filtrado = true;

			CrearItemEnFiltro("Subitems" + j, Filas[i].id, Filas[i]);
		}
		
		if (!filtrado && FiltrosHuerfanos)
			CrearItemEnFiltro("SubitemsHuerfanos", Filas[i].id, Filas[i]);
	}

	for (var i = 0; i < Filtros.length; i++)
		if ($$("#Subitems" + i + " .itemresult").length > 0)
			$("Subitems" + i).show();

	if ($$("#SubitemsHuerfanos .itemresult").length > 0)
		$("SubitemsHuerfanos").show();

	$("Filtros").show();
}

function GenerarResultadosSinFiltro() {
	for (var i = 0; i < TotalFilas; i++) {
		ElementosIds[i] = Filas[i].id;
		$("Elementos").insert(CrearItem(Filas[i].id, Filas[i], false, (i != TotalFilas - 1)));
	}

	TotalElementos = TotalFilas;
	$("Elementos").show();
	Paginar(1);
}

function Paginar(pagina, filtro) {
	$("Filtros").hide();

	var paginas = Math.floor(TotalElementos / PaginaElementos) + (TotalElementos % PaginaElementos > 0 ? 1 : 0);
	var paginaInicial = Math.max(pagina - (PaginacionPaginas - 1) / 2, 1);
	var paginaFinal = Math.min(paginaInicial + PaginacionPaginas - 1, paginas);
	if (paginaFinal - paginaInicial < PaginacionPaginas - 1 && paginas > PaginacionPaginas)
		paginaInicial = Math.max(paginaFinal - (PaginacionPaginas - 1), 1);

	$("paglist").update("");
	$("paglist").show();

	if (pagina == 1) {
		$("paglist").insert("<li class=\"pre\"><img src=\"/telco/static/images/ico_1aG.gif\" alt=\"primera\" title=\"primera\" /></li>");
		$("paglist").insert("<li class=\"pre\"><img src=\"/telco/static/images/ico_rwG.gif\" alt=\"anterior\" title=\"anterior\" /></li>");
	} else {
		$("paglist").insert("<li class=\"pre\"><a href=\"javascript:;\" onclick=\"Paginar(1)\"><img src=\"/telco/static/images/ico_1a.gif\" alt=\"primera\" title=\"primera\" /></a></li>");
		$("paglist").insert("<li class=\"pre\"><a href=\"javascript:;\" onclick=\"Paginar(" + (pagina - 1) + ")\"><img src=\"/telco/static/images/ico_rw.gif\" alt=\"anterior\" title=\"anterior\" /></a></li>");
	}

	for (var i = paginaInicial; i <= paginaFinal; i++) {
		if (i != paginaInicial)
			$("paglist").insert("<li class=\"sep\">|</li>");

		if (pagina == i)
			$("paglist").insert("<li class=\"pages\"><span class=\"sel\">" + i + "</span><li>");
		else{}
			//$("paglist").insert("<li class=\"pages\"><a href=\"javascript:;\" onclick=\"Paginar(" + i + ");\" alt=\"ir a página " + i + "\" title=\"ir a página " + i + "\">" + i + "</a></li>");
	}

	$("paglist").insert("<li class=\"pages\">de " + paginas + "</li>");

	if (pagina == paginas) {
		$("paglist").insert("<li class=\"post\"> <img src=\"/telco/static/images/ico_fwG.gif\" alt=\"siguiente\" title=\"siguiente\" /></li>");
		$("paglist").insert("<li class=\"post\"> <img src=\"/telco/static/images/ico_ultiG.gif\" alt=\"&uacute;ltimo\" title=\"&uacute;ltimo\" /></li>");
	} else {
		$("paglist").insert("<li class=\"post\"><a href=\"javascript:;\" onclick=\"Paginar(" + (pagina + 1) + ")\"><img src=\"/telco/static/images/ico_fw.gif\" alt=\"siguiente\" title=\"siguiente\" /></a></li>");
		$("paglist").insert("<li class=\"post\"><a href=\"javascript:;\" onclick=\"Paginar(" + paginas + ")\"><img src=\"/telco/static/images/ico_ulti.gif\" alt=\"&uacute;ltimo\" title=\"&uacute;ltimo\" /></a></li>");
	}

	for (var i = 0; i < TotalElementos; i++) {
		$(ElementosIds[i]).hide();
	}

	var elementoInicial = (pagina - 1) * PaginaElementos;
	var elementoFinal = Math.min(TotalElementos - 1, elementoInicial + PaginaElementos - 1);

	for (var i = elementoInicial; i <= elementoFinal; i++) {
		$(ElementosIds[i]).show();
	}
}

function RemarcarTags(texto, textoBusqueda)
{
	var initialTag = "<font class='buscadoreco-Highlight'>";
	var endTag = "</font>";
	
	var palabras = textoBusqueda.split(" ");
	
	
	for (var i=0; i < palabras.length; i++)
	{
		var reemplazo = initialTag + palabras[i] + endTag;
		var myRegExp = new RegExp(palabras[i], "gi");
		texto = texto.replace(myRegExp, reemplazo);
	}
	
	return texto;
}

var Filtros = ["movil", "fijo"];
var FiltrosTitulos = ["Móvil", "Fijo"];
var FiltroOtrosTitulo = "Otros resultados no filtrados";
//var Filtros = []; // descomentar para desactivar los filtros de agrupamiento


var Filas;
var ElementosIds = new Array();
var FiltrosContadores = new Array();
var FiltrosElementos = 4;
var FiltrosHuerfanos = true;
var LimiteCaracteres = 100;
var PaginaElementos = 6;
var PaginacionPaginas = 5;
var TotalElementos = 0;
var TotalFilas = 0;

document.observe("dom:loaded", function() 
{
	try{
		$("buscadoreco-NotaResultado").hide();
		$("contenido").hide();
	} catch (e) {}

	var termbusq = gup('termino');
	if (termbusq != ""){
		$('Palabras').value = termbusq.replace(/%20/g, " ");
		Buscar('Palabras',canal);
	}

});
	






