var ConexionUD=false; // Variable que manipula la ConexionUD.
var ServidorUD="_ajax/buscadortop.php"; // Determina la pagina donde buscar
var PalabraUD=""; //Determina la ultima PalabraUD buscada.

// funcion que realiza la ConexionUD con el objeto XMLHTTP...
function ConectarUD()
{
	if(window.XMLHttpRequest)
		ConexionUD=new XMLHttpRequest(); //mozilla
	else if(window.ActiveXObject)
		ConexionUD=new ActiveXObject("Microsoft.XMLHTTP"); //microsoft
}

function UD(idUD)
{
	/* readyState devuelve el estado de la ConexionUD. puede valer:
	 *	0- No inicializado (Es el valor inicial de readyState)
	 *	1- Abierto (El método "open" ha tenido éxito)
	 *	2- Enviado (Se ha completado la SolicitudUD pero ningun dato ha sido recibido todavía)
	 *	3- Recibiendo
	 *	4- Respuesta completa (Todos los datos han sido recibidos)
	 */

	// En espera del valor 4
	if(ConexionUD.readyState!=4) return;
	/* status: contiene un codigo enviado por el ServidorUD
	 *	200-Completado con éxito
	 *	404-No se encontró URL
	 *	414-Los valores pasados por GET superan los 512
	 * statusText: contiene el texto del estado
	 */
	if(ConexionUD.status==200) // Si ConexionUD HTTP es buena !!!
	{
		//si recibimos algun valor a mostrar...
		if(ConexionUD.responseText)
		{
			/* Modificamos el identificador temp con el valor recibido por la consulta
			*	Podemos recibir diferentes tipos de datos:
			*	responseText-Datos devueltos por el ServidorUD en formato CadenaUD
			*	responseXML-Datos devueltos por el ServidorUD en forma de documento XML
			*/
			document.getElementById(idUD).style.display="block";
			document.getElementById(idUD).innerHTML=ConexionUD.responseText;
		}else
			document.getElementById(idUD).style.display="none";
	}else{
		document.getElementById(idUD).innerHTML=ConexionUD.status+"-"+ConexionUD.statusText;
	}

	// Deshabilitamos la visualización del reloj
	document.getElementById("reloj").style.visibility="hidden";

	ConexionUD=false;
}

function SolicitudUD(idUD,CadenaUD)
{
	// si no recibimos CadenaUD, no hacemos nada.
	// CadenaUD=la CadenaUD a buscar en la base de datos
	/* Si CadenaUD es igual a PalabraUD, no se realiza la busqueda. Puede ser que pulsen la tecla tabulador,
	 * y no interesa que vuelva a verificar...*/
	if(CadenaUD && CadenaUD!=PalabraUD)
	{
		// Si ya esta conectado, cancela la SolicitudUD en espera de que termine
		if(ConexionUD) return; // Previene uso repetido del boton.
		
		// Realiza la ConexionUD
		ConectarUD();
		
		// Si la ConexionUD es correcta...
		if(ConexionUD)
		{
			// Habilitamos la visualización del reloj
			document.getElementById("reloj").style.visibility="visible";

			// Esta variable, se utiliza para igualar con la CadenaUD a buscar.
			PalabraUD=CadenaUD;

			/* Preparamos una ConexionUD con el ServidorUD:
			*	POST|GET - determina como se envian los datos al ServidorUD
			*	true - No sincronizado. Ello significa que la página WEB no es interferida en su funcionamiento
			*	por la respuesta del ServidorUD. El usuario puede continuar usando la página mientras el ServidorUD
			*	retorna una respuesta que la actualizará, usualmente, en forma parcial.
			*	false - Sincronizado */
			ConexionUD.open("POST",ServidorUD,true);

			// Añade un par etiqueta/valor a la cabecera HTTP a enviar. Si no lo colocamos, no se pasan los parametros.
			ConexionUD.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	
			// Cada vez que el estado de la conexión (readyState) cambie se ejecutara el UD de esta "funcion()"
			ConexionUD.onreadystatechange=function()
			{
				UD(idUD);
			}
			
			date=new Date();
			/* Realiza la SolicitudUD al ServidorUD. Puede enviar una CadenaUD de caracteres, o un objeto del tipo XML
			 * Si no deseamos enviar ningun valor, enviariamos null */
			ConexionUD.send("idClientes="+idUD+"&word="+CadenaUD+"&"+date.getTime());
		}else
			document.getElementById(idUD).innerHTML="No disponible";
	}
}

// Funcion que inicia la busqueda.
// Tiene que recibir el identificador donde mostrar el listado, y la CadenaUD a buscar
function autocompletarUD(idUD,CadenaUD)
{
	// Comprovamos que la longitud de la CadenaUD sea superior o igual a 1 caracteres
	if(CadenaUD.length>=1)
	{
		if(ConexionUD!=false)
		{
			// Deshabilitamos la visualización del reloj
			document.getElementById("reloj").style.visibility="hidden";
			//si esta en medio de una ConexionUD, la cancelamos
			ConexionUD.abort();
			ConexionUD=false;
		}
		SolicitudUD(idUD,CadenaUD);
	}else
		document.getElementById(idUD).style.display="none";
}

// Funcion que se ejecuta cuando seleccionamos un valor del desplegable
function selectItemUD(idUD,value,ID)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("input").value=value;
	document.getElementById(idUD).style.display='none';
	//volvemos a indicar que actualice el listado con el nuevo valor
	//autocompletarUD(idUD,value);
	Go2("../../../detalles/"+document.getElementById("input").value+"/"+ID+"/");
	//Contenido("_ajax/ResultadoBusquedaPrincipal.php?emp="+document.getElementById("input").value,"cuerpo-center");
}
