/* SCRIPT QUE GENERA LAS SUGERENCIAS DEL BUSCADOR */

// Creamos nuestra referencia (ajax_http.js)
var XMLHttp2 = new newXMLHttpRequest();

$(function() { intervalo = 0; intervalo2 = 0; }); // <-- Estado inicial (intervalo)

// Creamos el intervalo
function crearIntervalo(e,directory) {
	if(e.keyCode != 38 && e.keyCode != 40) { // <-- Solo si no se presiona ninguna flecha (evita solicitudes durante la navegación)
	   intervalo = window.setTimeout("busquedaSugerida('"+directory+"')",400);
	} // if
} // function

function busquedaSugerida(directory) {
	if (XMLHttp2.readyState == 4 || XMLHttp2.readyState == 0) { // <-- Evitamos hacer mas solicitudes de las que podemos procesar
		var str = escape(document.getElementById('buscar').value); // <-- Obtenemos el valor, usamos "escape()", "ej. niño => ni%F1o ")
		randomNumber = Math.random(); // <-- Eviar caché
		XMLHttp2.open("GET", directory + 'ajax/ajax_suggest.php?buscar=' + str + '&r=' + randomNumber, true); // <-- La solicitud (ajax_suggest.php)
		XMLHttp2.onreadystatechange = handleSearchSuggest; 
		XMLHttp2.send(null);
     } // if
} // function

// Función que maneja la solicitud
function handleSearchSuggest() {
	if (XMLHttp2.readyState == 4) {
		var ss = document.getElementById('sugerencias'); // <-- Nuestro <div id="sugerencias"></div>
		ss.innerHTML = ''; // <-- Quitamos cualquier contenido que pudiera tener
		var str = XMLHttp2.responseText.split("\n"); // <-- La respuesta del servidor, dividida en un array
		
		if(str.length <= 1) { // <-- Si no hay sugerencias escondemos el <div id="sugerencias"></div>
		  ss.style.display = "none";
		  document.getElementById('buscar').className = "text"; // <-- Sin el "loading"
		} else {
		  document.getElementById('buscar').className = "text"; // <-- Sin el "loading"
		for(i=0; i < str.length - 1; i++) { // <-- Iteramos sobre los resultados
			
			// Armando los vínculos <div>'s
			var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onmousedown="javascript:setSearch(this.innerHTML);" ';
			suggest += 'class="suggest_link">' + str[i] + '</div>';
			ss.innerHTML += suggest; // <-- vamos aumentado los vínculos
			
		} // for
		$("#sugerencias").slideDown("fast");
		} // else
	} else {
	  document.getElementById('buscar').className = "text_loading"; // <-- El "loading"
	}
} // function


// Funciones de Interactividad (asignan una clase al pasar o quitar el mouse)
//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}

//Click function: Pasa el elemento seleccionado al cambpo "buscar"
function setSearch(value) {
	document.getElementById('buscar').value = value;
	document.getElementById('sugerencias').innerHTML = '';
	document.getElementById('sugerencias').style.display = 'none';
	document.getElementById('formulario_buscar').submit(); // <-- Enviamos el formulario
}


function navegacion(e) {

// SUGERENCIAS <div>)
var sugerencias = document.getElementById('sugerencias');

// AL PRESIONAR ABAJO (40)
if(e.keyCode == 40) {
 if(!document.getElementById('seleccionado')) { // <-- PRIMERA VEZ (si no existe "seleccionado")
  if(sugerencias.childNodes != null) { // <-- Solo si existen sugerencias (por si presionan abajo prematuramente)
  sugerencias.childNodes[0].id = 'seleccionado'; // <-- Asignamos el ID
  sugerencias.childNodes[0].className = 'suggest_link_over'; // <-- Asignamos la className
  } // if sugerencias.childNodes != null
  } else { // <-- NO PRIMERA VEZ
  var seleccionado = document.getElementById('seleccionado'); // <-- Elemento seleccionado
   if(seleccionado.nextSibling != null) { // <-- Comprobamos que exista un "siguiente elemento"
  seleccionado.nextSibling.className = 'suggest_link_over'; // <-- Asignamos la className (elemento nuevo)
  seleccionado.className = 'suggest_link'; // <-- Reasignamos la className (elemento antiguo)
  seleccionado.id = ''; // <-- Borramos el ID (elemento antiguo)
  seleccionado.nextSibling.id = 'seleccionado'; // <-- Reasingamos el ID (elemento nuevo)
   } // if seleccionado.nextSibling != null
  } // else !document.getElementById('seleccionado')
} // if e.KeyCode == 40


// AL PRESIONAR ARRIBA (38)
if(e.keyCode == 38) {
 if(document.getElementById('seleccionado')) { // <-- Tiene que existir el elemento (por si presionan arriba prematuramente)
  var seleccionado = document.getElementById('seleccionado'); // <-- Elemento seleccionado
   if(seleccionado.previousSibling != null) {
  seleccionado.previousSibling.className = 'suggest_link_over'; // <-- Asignamos la className (elemento nuevo)
  seleccionado.className = 'suggest_link'; // <-- Reasignamos la className (elemento antiguo)
  seleccionado.id = ''; // <-- Borramos el ID (elemento antiguo)
  seleccionado.previousSibling.id = 'seleccionado'; // <-- Reasingamos el ID (elemento nuevo)
   } // if seleccionado.nextSibling != null
  } // if document.getElementById('seleccionad')
} // if e.KeyCode == 38


// AL PRESIONAR ENTER (13)
if(e.keyCode == 13) {
  if(document.getElementById('seleccionado')) { // <-- Si existe "seleccionado"
  seleccionado = document.getElementById('seleccionado');
  document.getElementById('buscar').value = seleccionado.innerHTML;
  } // if
} // ife.KeyCode == 13


} // function


function eliminarSugerencias() {

// Borraremos con un ligero retraso (onBlur es mas veloz que onClick de las sugerencias, por eso el retraso)
var interval = window.setInterval(borrar,150); // <-- 150 milisegundos funcionan bien

function borrar() {
document.getElementById('sugerencias').innerHTML = '';
document.getElementById('sugerencias').style.display = 'none';
clearInterval(interval);
} // borrar

} // function 