var activo = -1;
var total = -1;
var auxTeclaPulsada = -1;
var sobreEnlaceResultado = false;

$(document).ready(function() {
	//if($('.inputBusqueda input.cajaTextoBusqueda').parents("form").length == 0)
	//	alert("Para que funcione el inputBusqueda es necesario tenerlo definido dentro de un <form>");

	$('.inputBusqueda span.ajaxLoading').hide();

	$('.inputBusqueda input.cajaTextoBusqueda').parents("form").submit(function() {
		var resul = (activo==-1);

		activo = -1;
		return resul;		
	});
	
	$('.inputBusqueda input.cajaTextoBusqueda').blur(function() {
		var id = this.title;

		if(!sobreEnlaceResultado)
			ocultaResultados(id);
	});
	
	$('.inputBusqueda input.cajaTextoBusqueda').keydown(function(e) {
		var id = this.title;

		switch(e.keyCode) {
			case 38: // up
				moverCursor(-1,id);
				break;
			case 40: // down
				moverCursor(1,id);
				break;
			case 27: //Esc
				ocultaResultados(id);
				break;
			case 9:  // tab
			case 13: // return
				if($('.inputBusqueda_'+id+' .oculto').length<=0 && activo!=-1)
					enterElemento(id);
				break;
			default:
				seleccionar(null,id);
				break;
		}
		auxTeclaPulsada = e.keyCode;
	});
});

function moverCursor(pos,id){
	var enco = $('.inputBusqueda_'+id+' fieldset a')
	var auxi = activo;

	total = enco.length;
	auxi += pos;
	
	if(auxi < 0){
		auxi = 0;
	}else if(auxi >= total){
		auxi = total -1;
	}
	
	seleccionar(enco[auxi],id);		
}

function seleccionar(elem,id){
	var elems = $('.inputBusqueda_'+id+' fieldset a');
	var indi;
	
	if(elem == null){
		if(elems.length > 0){
			elem = elems[0];
		}else{
			activo = -1;
			return;
		}
	}

	if(activo != -1)
		$(elems[activo]).removeClass('seleccionado');
	$(elem).addClass('seleccionado');
	
	indi = buscar(elem,id);
	if(indi != -1)
		activo = indi;
}

function buscar(elem,id){
	var elems = $('.inputBusqueda_'+id+' fieldset a');
	var enco = false;
	var indi = -1;
	
	for(i=0; i<elems.length && !enco; i++){
		if(elems[i] == elem){
			enco = true;
			indi = i;
		}
	}
	
	return indi;
}

function enterElemento(id){
	var elems = $('.inputBusqueda_'+id+' fieldset a');
	var aux = elems[activo].title;

	var aux2 = aux.indexOf(">");
	var aux3 = aux2;
	while(aux2 != -1){
		aux3 = aux2;
		aux2 = aux.indexOf(">",aux3+1);
	}
	if(aux3 != -1)
		aux = aux.substr(aux3+1,aux.length-aux3);


	aux = formatearCadenaBusqueda(aux);
	$('.inputBusqueda_'+id+' input.cajaTextoBusqueda').val(aux);
	ocultaResultados(id);
	
	return false;
}

function ocultaResultados(id){
	if($('.inputBusqueda_'+id+' .oculto').length == 0)
		$('.inputBusqueda_'+id+' .resultadosBusqueda').addClass("oculto");
}

function muestraResultados(id){
	$('.inputBusqueda_'+id+' .resultadosBusqueda').removeClass("oculto");
}
function estaOculto(id){
	return ($('.inputBusqueda_'+id+' .oculto').length > 0);
}

/* Comprobamos si realmente tenemos que realizar la b�squeda */
function compruebaEnviarAjax(id){
	var enviar;
	var contenido = $('.inputBusqueda_'+id+' input.cajaTextoBusqueda').val();
	var PressTecla=/[a-zA-Z0-9]/;

	//Quitamos los acentos y mayúsculas
	contenido = formatearCadenaBusqueda(contenido);
	$('.inputBusqueda_'+id+' input.cajaTextoBusqueda').val(contenido);

 	enviar = PressTecla.test(String.fromCharCode(auxTeclaPulsada)); //Solo enviamos si es un carcater alfanum�rico
 	enviar = enviar || (auxTeclaPulsada==8); //Si es la tecla de borrar si que enviamos
	if(contenido.length < 4){
		enviar = false;
		ocultaResultados(id);
	}

	if(enviar){
		$('.inputBusqueda_'+id+' span.ajaxLoading').addClass("visible");
	}

	return enviar;
}

function formatearCadenaBusqueda(contenido){
	contenido = contenido.toLowerCase();
	contenido = contenido.replace(/á/g, "a");
	contenido = contenido.replace(/é/g, "e");
	contenido = contenido.replace(/í/g, "i");
	contenido = contenido.replace(/ó/g, "o");
	contenido = contenido.replace(/ú/g, "u");
	contenido = contenido.replace(/ñ/g, "n");
	return contenido;
}

/* Cuando se reciben los datos del servidor */
function enviado(id){
	var enco = $('.inputBusqueda_'+id+' fieldset a');
	
	$('.inputBusqueda_'+id+' span.ajaxLoading').removeClass("visible");
	
	if(enco.length == 0)
		return false;

	$('.inputBusqueda_'+id+' fieldset a').hover(function() {
		// Over
		seleccionar(this,id);
		sobreEnlaceResultado = true;
	}, function() {
		// Out
		sobreEnlaceResultado = false;
	});

	$('.inputBusqueda_'+id+' fieldset a').click(function(e) {
		enterElemento(id);
		activo = -1;
		return false;
	});

	if(activo != -1)
		$(enco[activo]).addClass('seleccionado');
		
}
