/*
OBJETIVO: Funciones que manejan AJAX.

PASOS:
1) Llamar a la funcion "sendRequest(url)" pasandole el url con todos los parametros necesarios para el proceso.
2) Crear la funcion "processHttpResults(resultado)" para procesar los resultados que vengan de la respuesta.
*/

var ajax_is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0; 
var ajax_is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0; 
var ajax_is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0; 
//netscape, safari, mozilla behave the same??? 
var ajax_is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0;

var ajax_enProceso = false; // lo usamos para ver si hay un proceso activo
var ajax_httpObject; // getHttpObject(); Creamos el objeto XMLHttpRequest
	
// Devuelve el resultado
function handleHttpResponse() { 
    if (ajax_httpObject.readyState == 4 || ajax_httpObject.readyState == 'complete') { 
       if (ajax_httpObject.status == 200) { 
          if (ajax_httpObject.responseText.indexOf('invalid') == -1) {
             // Respuesta del procesamiento de la pagina solicitada
			 
			 processHttpResults(ajax_httpObject.responseText);
             ajax_enProceso = false;
          }
       }
    }
}

// Envia un Request a la pagina para obtener los resultados
function sendRequest(url) {
    if (!ajax_enProceso && ajax_httpObject) {
       ajax_httpObject.open("GET", url, true);
	   if (ajax_is_ie){ 
       	ajax_httpObject.onreadystatechange = handleHttpResponse;
	   }else{
		ajax_httpObject.onload = handleHttpResponse; 
		ajax_httpObject.onerror = handleHttpResponse; 
	   }
		
       ajax_enProceso = true;
       ajax_httpObject.send(null);
    }
}

// Crea un objeto HTTP para manejar los Request y Responses
function getHttpObject() {
    var objXmlHttp = null;    //Holds the local xmlHTTP object instance 

	//Depending on the browser, try to create the xmlHttp object 
	if (ajax_is_ie){ 
		//The object to create depends on version of IE 
		//If it isn't ie5, then default to the Msxml2.XMLHTTP object 
		var strObjName = (ajax_is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; 
		 
		//Attempt to create the object 
		try{ 
			objXmlHttp = new ActiveXObject(strObjName); 
			//objXmlHttp.onreadystatechange = handleHttpResponse;
		} 
		catch(e){ 
		//Object creation errored 
			alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); 
			return; 
		} 
	} 
	else if (ajax_is_opera){ 
		//Opera has some issues with xmlHttp object functionality 
		alert('Opera detected. The page may not behave as expected.'); 
		return; 
	} 
	else{ 
		// Mozilla | Netscape | Safari 
		objXmlHttp = new XMLHttpRequest(); 
		//objXmlHttp.onload = handleHttpResponse; 
		//objXmlHttp.onerror = handleHttpResponse; 
	} 
	 
	//Return the instantiated object 
	return objXmlHttp;
}

// Genero el objeto que manejara Ajax
ajax_httpObject = getHttpObject();