// -----------------------------------------------------------------------------------------------
//	Archivo: ajax.js
//	Tipo   : Javascript
//	Autor  : Javi Urrutia
//	Versión: 1.0
//	Objeto : Funciones para trabajar con AJAX
// -----------------------------------------------------------------------------------------------

// Objeto petición
var request=null;

// -----------------------------------------------------------------------------------------------
// Crea el objeto XmlHttpRequest en función del navegador del cliente
// A partir del argumento 5 se esperan los datos POST
// -----------------------------------------------------------------------------------------------

function httpRequest(reqType,url,asynch,respHandle)
{
    // Mozilla, FireFox, Opera, IE7 disponen de objeto XmlHttpRequest Nativo
    // En IE5, IE6 se carga a través de un objeto ActiveX Msxml2.XMLHTTP o
    // Microsoft.XMLHTTP
    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        request=new ActiveXObject("Msxml2.XMLHTTP");
        if (! request)
        {
            request=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }

    // Si se crea el objeto request lo inicia sino se ha creado falla
    if(request)
    {

        if(reqType.toLowerCase() != "post")
        {
                initRequest(reqType,url,asynch,respHandle);
        }
        else
        {
                // Toma los argumentos POST
                var args = arguments[4];
                if(args != null && args.length > 0)
                {
                    initReq(reqType,url,asynch,respHandle,args);
                }
        }
    }
    else
    {
        // El navegador no admite Ajax
    }
}

// -----------------------------------------------------------------------------------------------
// Inicia el objeto XmlHttpRequest
// -----------------------------------------------------------------------------------------------

function initRequest(reqType,url,bool,respHandle)
{
    try{
        // La función respHandle es el manejador de la respuesta del servidor
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
        if(reqType.toLowerCase() == "post")
        {
            // La petición es del tipo Post
            request.setRequestHeader("Content-Type",
                        "application/x-www-form-urlencoded; charset=UTF-8");
            // El quinto argumento de la función posee los datos POST
            request.send(arguments[4]);
        }
        else
        {
            // La petición es del tipo GET
            request.send(null);
        }

    }
    catch (e)
    {
        alert(
                "La conexión con el servidor ha fallado. "+
                "Intente la petición un poco más tarde.\n"+
                "Información Adicional: "+e.message);
    }
}

