var connect_server_vars=false; // Variable que manipula la conexion.

// funcion que realiza la conexion con el objeto XMLHTTP...
function connect_server() {
	if (window.XMLHttpRequest) {// if Mozilla, IE7, Safari etc
		connect_server_vars = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // if IE
		try {
			connect_server_vars = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
	  	try {
				connect_server_vars = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
			}
		}
	} else {
		return false;
	}
}

function content(idContent) {
	/* 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 (connect_server_vars.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 (connect_server_vars.status==200)	{ // Si conexion HTTP es buena !!!
		/* 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(idContent).innerHTML=connect_server_vars.responseText;
		// var scs=connect_server_vars.responseText.extractScript();    //capturamos los scripts
    // divTip.innerHTML=connect_server_vars.responseText.stripScript();    //eliminamos los scripts... ya son innecesarios
    // scs.evalScript();
	} else {
		document.getElementById(idContent).innerHTML=connect_server_vars.status+"-"+connect_server_vars.statusText;
	}
	
	connect_server_vars=false;
}

function request_page(page, idContent, id) {
	// Si ya esta conectado, cancela la solicitud en espera de que termine
	if (connect_server_vars) return; // Previene uso repetido del boton.
	
	var text="<img src=\"images/loading.gif\" alt=\"X\" /> La pagina esta cargando...";	
	// var divMsg=document.getElementById("page"); // error - contenedor limitado
	var divMsg=document.getElementById(idContent);
	divMsg.innerHTML=text;
	
	// Realiza la conexion
	connect_server();
	
	// Si la conexion es correcta...
	if (connect_server_vars) {
		/* 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 */
		connect_server_vars.open("GET", page+"?id="+id, true);
    
		// Cada vez que el estado de la conexión (readyState) cambie se ejecutara el contenido de esta "funcion()"
		connect_server_vars.onreadystatechange=function() {
			content(idContent);
		}
		
		/* Realiza la solicitud al servidor. Puede enviar una cadena de caracteres, o un objeto del tipo XML
		 * Si no deseamos enviar ningun valor, enviamos null */
		connect_server_vars.send(null);
	} else {
		document.getElementById(idContent).innerHTML="No disponible";
	}
}

function show_msg(divMsg, msg) {
	divMsg.innerHTML=msg;
}
