/***************** AJAX *****************/
var http_request;

/* Get XML data */
function getXMLData(url, callback) {
  if (!url || !callback) return false;

  http_request = false;
  if (window.XMLHttpRequest) // Mozilla, Safari,...
  {
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
      http_request.overrideMimeType('text/xml');
      // See note below about this line
  } else {
    if (window.ActiveXObject) { // IE
      try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        alert("FAILED Msxml2.XMLHTTP");
        try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {alert("FAILED Microsoft.XMLHTTP"); }
      }
    }
  }

  if (!http_request) {
    alert('Giving up -- Cannot create an XMLHTTP instance');
    return false;
  }
  http_request.onreadystatechange = callback;
  http_request.open('GET', url, true);
  http_request.send(null);
  return true;
}

/* Extract all text from a "<[[CDATA"  XML element */
function extractCDATA(cdataEle)
{
  var data = "";
  var ele = cdataEle;
  // Collect all CDATA, skipping over text nodes
  while (ele) {
    if (ele.nodeType == 4) // ele.CDATA_SECTION_NODE doesn't work in IE!
      data += ele.nodeValue;

    ele = ele.nextSibling;
  };
  return data;
}
/* Get text from the first XML node with the given name */
function getXMLText(xml, name) {
  return xml.getElementsByTagName(name).item(0).firstChild.data;
}
