function AJAX() {

    /*
    *  cross-browser Http GET function
    *  returns response of http request
    */
    this.getHttpRequest = function(url) {
        var text = '';
        var xml;
        if (document.all) { // IE version
            // older versions (IE4 and some IE5.0) might be using MSXML2.XMLHTTP.4.0
            xml = new ActiveXObject("Microsoft.XMLHTTP");
            xml.Open("GET", url, false);
            xml.Send()
            text = xml.responseText;
        } else { // Mozilla/Netscrap 6+ version     
            xml = new XMLHttpRequest();
            xml.open("GET", url, false);
            xml.send(null);
            text = xml.responseText;
        }
        return text;
    }


    /*
    *  Parsea atributos monoevaluados de una plantilla XML
    *
    *  param1: un array con los atributos
    *  param2: el fichero XML a parsear
    *  return: a array con los valores de los elementos, o nulo
    *          en el caso de que existan errores
    */
    this.parseValuesXML = function(attributes, file) {
        var objDom = new XMLDoc(file, null);

        if (!objDom.hasErrors) {
            var objDomTree = objDom.docNode;
            var values = new Array();
            for (var i = 0; i < attributes.length; i++) {
                var tagElement = objDomTree.getElements(attributes[i]);
                if (tagElement.length == 0) {
                	return null;
                }
                values.push(tagElement[0].getText());
            }
            return values;
        }

        return null;
    }
    
}


/*
*  Parsea atributos de una plantilla XML a partir de un nodo dado
*
*  param1: el fichero XML a parsear
*  param2: tag en el que se empieza el parseo
*  return: a array con los valores de los elementos, o nulo
*          en el caso de que existan errores
*/
function parseValuesXMLFromNode(file, tag) {

   var objDom = new XMLDoc(file, null);

   if (!objDom.hasErrors) {
       var objDomTree = objDom.docNode;
       var tagSelected = objDomTree.getElements(tag);
       var atts = tagSelected[0].getElements('attribute');
       var values = new Array();
       for (var i = 0; i < atts.length; i++) {
           var tagElement = atts[i];
           values.push(tagElement.getText());
       }
       return values;
   }

   return null;
}

function ajaxAsynchronous(url) {
   var xml;
   if (document.all) { // IE version
       // older versions (IE4 and some IE5.0) might be using MSXML2.XMLHTTP.4.0
       xml = new ActiveXObject("Microsoft.XMLHTTP");
       xml.Open("GET", url, true);
       xml.Send()
   } else { // Mozilla/Netscrap 6+ version     
       xml = new XMLHttpRequest();
       xml.open("GET", url, true);
       xml.send(null);
   }
   return xml.responseText;
}
