var Conexion=false; // Variable que manipula la conexion.
var Palabra=""; //Determina la ultima palabra 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(NDiv)
{
	/* 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(NDiv).style.display="block";
			document.getElementById(NDiv).innerHTML=Conexion.responseText;
		}else
			document.getElementById(NDiv).style.display="none";
	}else{
		document.getElementById(NDiv).innerHTML=Conexion.status+"-"+Conexion.statusText;
	}

	// Deshabilitamos la visualización del reloj
 document.getElementById("reloj").style.visibility="hidden"; //* Anulo Guille

	Conexion=false;
}

function Solicitud(NDiv,Cadena,Modo,URL)
{
	// 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)
	{		
		//Antes era fija la URL del servidor. Ahora se pasa por parametro.
		//var Servidor="./asientos/5ConsultaAuto.asp"; // Determina la pagina donde buscar
		
		var Servidor = URL;
		
		// 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;
				
			//Le paso el modo a la pagina que resuelve la busqueda
			Servidor = Servidor + "?Modo=" + Modo

							
			/* 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(NDiv);
			}
				
			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("NDiv="+NDiv+"&word="+Cadena+"&"+date.getTime());
			Conexion.send("NDiv="+NDiv+"&word="+escape(Cadena)+"&"+date.getTime());
		}else
			document.getElementById(NDiv).innerHTML="No disponible";
		
	}
}

// Funcion que inicia la busqueda.
// Tiene que recibir el identificador donde mostrar el listado, y la cadena a buscar
//Modo = 0 Pulse un digito del codigo de subcuenta
//Modo = 1 Pulse un caracter de la descripcion de la subcuenta

function autocompletar(NDiv,Cadena,Modo,URL)
{
	
	// Comprobamos que la longitud de la cadena sea superior o igual a 1 caracteres
	if(Cadena.length>=1)
	{
		try{
			if(Conexion!=false)
			{
				// Deshabilitamos la visualización del reloj
				 document.getElementById("reloj").style.visibility="hidden";				//* Anulo Guille
				//si esta en medio de una conexion, la cancelamos
				Conexion.abort();
				Conexion=false;
			}
			Solicitud(NDiv,Cadena,Modo, URL);
		}
		catch(err){
			//Aqui manejar errores
		}
	}else{
		document.getElementById(NDiv).style.display="none";
		Palabra = '';
		}
}

// Funcion que se ejecuta cuando seleccionamos un valor del desplegable
function selectItem(NDiv, cuit, Nombre, IdSubCta)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("Cod0").value=cuit;                                         //Modif
	document.getElementById("Cuenta0").value=Nombre;									//Modif
	document.getElementById("IdSubCta0").value=IdSubCta;                                //Modif
	//volvemos a indicar que actualice el listado con el nuevo valor
	//autocompletar(NDiv, cuit, Nombre, IdSubCta);
	document.getElementById("Debe0").focus();
	document.getElementById(NDiv).style.display="none";									//Modif
	
}
// Agregado *********************************//
var xmlHttp;
function CreateXmlHttp()
{
    
    // Probamos con IE
    try
    {
        // Funcionará para JavaScript 5.0
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
        try
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(oc)
        {   
            xmlHttp = null;
        }
    }

    // Si no se trataba de un IE, probamos con esto
    if(!xmlHttp && typeof XMLHttpRequest != "undefined")
    {
        xmlHttp = new XMLHttpRequest();
    }

    return xmlHttp;
}

function envioInfoPost(XML)
{
    // 1.- Creamos el objeto xmlHttpRequest
    xmlHttp = CreateXmlHttp();
    //Conexion=Conectar()
    // 2.- Definimos la llamada. 
    var ajaxRequest = 'abpermiso.asp';

    // 3.- Marcar qué función manejará la respuesta
    xmlHttp.onreadystatechange = recogeInfo;
   
    // 4.- Enviar
    xmlHttp.open("POST", ajaxRequest, true);
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
    xmlHttp.send(XML);
}

function recogeInfo()
{
    if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
    {
        alert(xmlHttp.responseText);
    }
}

function AB(opcion,IdClienteUsuario,IdSubmenu)
{
envioInfoPost("opcion="+opcion+"&IdClienteUsuario="+IdClienteUsuario+"&IdSubmenu="+IdSubmenu)
}

function SelectUsuario(NDiv, Cadena, Apellido, Nombre)
{
	// Cuando pulsamos sobre el desplegable, colocamos el valor en el cuadro de texto
	document.getElementById("Usuario0").value=Apellido+", "+Nombre;
	document.getElementById(NDiv).style.display="none";	
	autocompletar("Alta",Cadena,"POST","Vincula_usuario_a_Cliente_3.asp");//autocompletar(NDiv,Cadena,Modo,URL)//									
}

function ABX(opcion,IdClienteUsuario,IdSubmenu)
{
//envioInfoPost("opcion="+opcion+"&idCliente="+idCliente+"&IdUsuario="+idUsuario)
//alert("Hola"+opcion+IdClienteUsuario+IdSubmenu)
//autocompletar(NDiv,Cadena,Modo,URL)//	
//autocompletar("lista","&opcion="+opcion+"&IdClienteUsuario="+IdClienteUsuario+"&IdSubmenu ="+IdSubmenu,"POST","abpermiso.asp");
}
