var Conexion=false; // Variable que manipula la conexion.
var Servidor="procesos/per_autocomplete.php"; // Determina la pagina donde buscar
var Palabra=""; //Determina la ultima palabra buscada.

var Conexion1=false; // Variable que manipula la conexion.
var Servidor1="procesos/per_autocomplete1.php"; // Determina la pagina donde buscar
var Palabra1=""; //Determina la ultima Palabra1 buscada.

var Conexion2=false; // Variable que manipula la conexion.
var Servidor2="procesos/per_autocomplete2.php"; // Determina la pagina donde buscar
var Palabra2=""; //Determina la ultima Palabra2 buscada.
// funcion que realiza la conexion con el objeto XMLHTTP...
function Conectar()
{
	if(window.XMLHttpRequest)
		Conexion=new XMLHttpRequest(); //mozilla
	else if(window.ActiveXObject)
		Conexion=new ActiveXObject("Microsoft.XMLHTTP"); //microsoft
}

function Contenido(idContenido)
{
	/* readyState devuelve el estado de la conexion. 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 solicitud 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(Conexion.readyState!=4) return;
	/* status: contiene un codigo enviado por el servidor
	 *	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(Conexion.status==200) // Si conexion HTTP es buena !!!
	{
		//si recibimos algun valor a mostrar...
		if(Conexion.responseText)
		{
			/* Modificamos el identificador temp con el valor recibido por la consulta
			*	Podemos recibir diferentes tipos de datos:
			*	responseText-Datos devueltos por el servidor en formato cadena
			*	responseXML-Datos devueltos por el servidor en forma de documento XML
			*/
			document.getElementById(idContenido).style.display="block";
			document.getElementById(idContenido).innerHTML=Conexion.responseText;
		}else
			document.getElementById(idContenido).style.display="none";
	}else{
		document.getElementById(idContenido).innerHTML=Conexion.status+"-"+Conexion.statusText;
	}

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

	Conexion=false;
}

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

			// Esta variable, se utiliza para igualar con la cadena a buscar.
			Palabra=Cadena;

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

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

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

// Funcion que se ejecuta cuando seleccionamos un valor del desplegable
function selectItem(idContenido,value)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("input").value=document.getElementById("input").value+value+",";
	document.getElementById("send").value="";
	document.getElementById("send").focus();
	//volvemos a indicar que actualice el listado con el nuevo valor
	autocompletar(idContenido,value);
}
///********************************************************************************************************************************************************************
function Conectar1()
{
	if(window.XMLHttpRequest)
		Conexion1=new XMLHttpRequest(); //mozilla
	else if(window.ActiveXObject)
		Conexion1=new ActiveXObject("Microsoft.XMLHTTP"); //microsoft
}

function Contenido1(idContenido1)
{
	/* readyState devuelve el estado de la Conexion1. 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 Solicitud1 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(Conexion1.readyState!=4) return;
	/* status: contiene un codigo enviado por el Servidor1
	 *	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(Conexion1.status==200) // Si Conexion1 HTTP es buena !!!
	{
		//si recibimos algun valor a mostrar...
		if(Conexion1.responseText)
		{
			/* Modificamos el identificador temp con el valor recibido por la consulta
			*	Podemos recibir diferentes tipos de datos:
			*	responseText-Datos devueltos por el Servidor1 en formato cadena
			*	responseXML-Datos devueltos por el Servidor1 en forma de documento XML
			*/
			document.getElementById(idContenido1).style.display="block";
			document.getElementById(idContenido1).innerHTML=Conexion1.responseText;
		}else
			document.getElementById(idContenido1).style.display="none";
	}else{
		document.getElementById(idContenido1).innerHTML=Conexion1.status+"-"+Conexion1.statusText;
	}

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

	Conexion1=false;
}

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

			// Esta variable, se utiliza para igualar con la cadena a buscar.
			Palabra1=Cadena;

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

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

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

// Funcion que se ejecuta cuando seleccionamos un valor del desplegable
function selectItem1(idContenido1,value)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("solicita").value=value;	
	//volvemos a indicar que actualice el listado con el nuevo valor
	autocompletar1(idContenido1,value);
}
//**********************************************************************************************************************************************************************
function Conectar2()
{
	if(window.XMLHttpRequest)
		Conexion2=new XMLHttpRequest(); //mozilla
	else if(window.ActiveXObject)
		Conexion2=new ActiveXObject("Microsoft.XMLHTTP"); //microsoft
}
function Contenido2(idContenido2)
{
	/* readyState devuelve el estado de la Conexion2. 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 Solicitud2 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(Conexion2.readyState!=4) return;
	/* status: contiene un codigo enviado por el Servidor2
	 *	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(Conexion2.status==200) // Si Conexion2 HTTP es buena !!!
	{
		//si recibimos algun valor a mostrar...
		if(Conexion2.responseText)
		{
			/* Modificamos el identificador temp con el valor recibido por la consulta
			*	Podemos recibir diferentes tipos de datos:
			*	responseText-Datos devueltos por el Servidor2 en formato cadena
			*	responseXML-Datos devueltos por el Servidor2 en forma de documento XML
			*/
			document.getElementById(idContenido2).style.display="block";
			document.getElementById(idContenido2).innerHTML=Conexion2.responseText;
		}else
			document.getElementById(idContenido2).style.display="none";
	}else{
		document.getElementById(idContenido2).innerHTML=Conexion2.status+"-"+Conexion2.statusText;
	}

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

	Conexion2=false;
}

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

			// Esta variable, se utiliza para igualar con la cadena a buscar.
			Palabra2=Cadena;

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

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

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

// Funcion que se ejecuta cuando seleccionamos un valor del desplegable
function selectItem2(idContenido2,value)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("aprueba").value=value;	
	//volvemos a indicar que actualice el listado con el nuevo valor
	autocompletar2(idContenido2,value);
}

