/******************************************************************************************
 * Las funciones encargadas de instanciar el objeto y controlar la respuesta del servidor *
 ******************************************************************************************/

var req;

/*
 * Crea el objecto XMLHTTPRequest, de acuerdo al browser que estemos usando
 * @url = la hubicación del script php
 */
function loadXMLDoc(url) 
{
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

/*
 * Controla el estado de la respuesta recibida de parte del servidor
 */
function processReqChange() 
{
    // only if req shows "complete"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
	  response  = req.responseXML.documentElement;
	  //alert(response.responseXML);
      	  method    = response.getElementsByTagName('method')[0].firstChild.data; //obtengo el metodo a ejecutar, 
	  									  //que se devuelve con el xml
      	  result    = response.getElementsByTagName('result')[0].firstChild.data; //obtengo los resultados

      	  eval(method + '(\'\', \'\','+ '\''+result +'\')'); //ahora llamo al método, pero esta vez, el parametro "resutados" no es vacio
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}
