function fetchDescriptions() {
  var descs = document.getElementsByTagName('span');
  for ( var i = 0 ; i < descs.length ; i++ ) {
    desc = descs[i];
    if ( desc.getAttribute('class') == 'desc' ) {
      loadXMLDoc('label','/service/cel/label?id='+desc.getAttribute('id'));
    }
  }
}

function takeCelAnnotateInput(id)
{
  var input = document.getElementById(id);
  var stat = document.getElementById(id+'stat');
  stat.innerHTML = 'saving...';
  input.disabled = true;
  loadXMLDoc('annotate_cel', '/service/write/annotate_cel?id='+id+';q='+input.value);
}

function takeCelTagInput(id)
{
  var input = document.getElementById(id);
  var stat = document.getElementById(id+'stat');
  stat.innerHTML = 'saving...';
  input.disabled = true;
  loadXMLDoc('tag_cel', '/service/write/tag_cel?id='+id+';q='+input.value);
}

function loadXMLDoc(mode,url) 
{
    var req;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();

    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }

    // lambda
    if ( mode == 'label' ) {
      req.onreadystatechange = function () {
        if (req.readyState == 4) {
          if (req.status == 200) {
            res = req.responseXML.documentElement;
            document.getElementById(res.getAttribute('id')).innerHTML = res.getAttribute('label');
          }
          else {
            document.getElementById(res.getAttribute('id')).innerHTML = 'an error occurred';
          }
        }
      }
    } else if ( mode == 'tag_cel' ) {
      req.onreadystatechange = function () {
        if (req.readyState == 4) {
          if (req.status == 200) {
            res = req.responseXML.documentElement;
            input = document.getElementById(res.getAttribute('id'));
            stat  = document.getElementById(res.getAttribute('id')+'stat');
            input.disabled = false;
            stat.innerHTML = res.getAttribute('msg');
          }
          else {
            input.disabled = false;
            stat.innerHTML = 'an error occurred';
          }
        }
      }
    } else if ( mode == 'annotate_cel' ) {
      req.onreadystatechange = function () {
        if (req.readyState == 4) {
          if (req.status == 200) {
            res = req.responseXML.documentElement;
            input = document.getElementById(res.getAttribute('id'));
            stat  = document.getElementById(res.getAttribute('id')+'stat');
            input.disabled = false;
            stat.innerHTML = res.getAttribute('msg');
          }
          else {
            input.disabled = false;
            stat.innerHTML = 'an error occurred';
          }
        }
      }
    }

    req.open("GET", url, true);
    
    if (window.XMLHttpRequest) {
        req.send(null);
    } else if (window.ActiveXObject) {
        req.send();
    }
}
