// JavaScript Document
// Ajax
function ajax(destino) {
    http = getHttpRequest();
    http.onreadystatechange = respuesta(); //Aquí va el nombre de la funcion (sin las comillas simples) que se llamara cuando retorne la query (consulta)
    //este evento, tiene 4 estados, por lo que la funcion asociada se llamara en cada estado a saber: 0, cuando se envia(no indica nada); 1, cargando; 2, terminada pero sin procesar; completada
    http.setRequestHeader('content-type', 'application/x-www-form-urlencoder'); //setRequestHeader le indica a la query que estamos construyendo si la vamos a usar para enviar datos al servidor, si no se indica esta linea la forma de actuar de la query sera la clasica PRP (peticion, respuesta, proceso) con sus parametros si los tubiese
    http.open("POST", destino, true); //(metodo de comunicacion(GET ó POST), pagina o servicio contra el que se va a mandar la query, tipo de conexion(false=sincrona ó true=asincrona))
    var timerCancela = new setTimeout("funcionquecancela()", 30000); // 30 segundos 
    http.send(); //aquí se envia la query: si no hay parametros que enviar se rellena con un null, si los hay los indicamos ("par1=datos&par2=datos..."), y si la query tiene una linea "setRequesHeader" (esto solo con el parametro POST) entonces enviamos cualquier informacion (el resultado de una funcion, la cadena de texto que introdujo el usuario en un listbox, datos binarios como un dibujo, foto, ...etc)

    function getHttpRequest() {
        var xmlHttpRequest;
        // Si es Mozilla, Opera, etc...
        if (window.XMLHttpRequest) {
            xmlHttpRequest = new XMLHttpRequest();
        }
        else //de lo contrario entendemos que es Internet Explorer. Y éste, expone el objeto XMLHttpRequest como control ActiveX 
        {
            xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xmlHttpRequest;
    }

    function respuesta() {
        if (http.readyState == 4) //propiedad que indica en cual de los 4 estados se encuentra la query
        {
            clearTimeout(timerCancela); //esto para el tiempo que hemos configurado como tiempo maximo de la query, donde si se excede, se cancela la query
            if (http.status == 200) //status guarda los stados de las respuesta del servidor (200, 400, 401 ...etc) el mundialmente conocido 401 Pagina no encontrada
            {
                return http.responseXML;
            }
        }

    }

    function funcionquecancela() {

    }
}

