Event.observe(window,'load',initStatus);

var UPDATE_FREQUENCY = 5000; // number of ms between updates

function initStatus(e) {
  new Ajax.Request('xml-rpc?method=stats',{method: 'get',onComplete:rsStats});

  window.setInterval(function () {
    new Ajax.Request('xml-rpc?method=stats',{method: 'get',onComplete:rsStats});
  },UPDATE_FREQUENCY);

}
function rsStats(request) {
  ['service','stat'].each(function (tag) {
    $A(request.responseXML.getElementsByTagName(tag)).each(function (element) {
      var node = $(element.firstChild.firstChild.nodeValue.toLowerCase().replace(/\ /,'_'));  
      node.replaceChild(document.createTextNode(element.childNodes[1].firstChild.nodeValue),node.firstChild);
    });
  });  
  var thread = $A(request.responseXML.getElementsByTagName('thread'));
  var threadTable = new Table('thread');
  threadTable.removeTBodyRows();
  thread.each(function (element) {
    row = [];
    row.push(element.childNodes[1].firstChild.nodeValue);
    row.push(element.childNodes[2].firstChild.nodeValue);
    threadTable.addTbodyRow(row);    
  });
}

Table = Class.create();
Object.extend(Table.prototype,{
  initialize: function (id) {
    this.tbody = $(id).getElementsByTagName('tbody')[0];  
  },
  removeTBodyRows: function () {
    Element.removeChildren(this.tbody);
  },
  addTbodyRow: function (cells) {
    var tr = document.createElement('tr');
    cells.each(function (cell) {
      var td = document.createElement('td');
      td.appendChild(document.createTextNode(cell));
      tr.appendChild(td);
    });
    this.tbody.appendChild(tr);
  }
});
Object.extend(Element, {
  removeChildren: function(element) {
  while(element.hasChildNodes()) {
    element.removeChild(element.firstChild);
  }
  },
  textContent: function(node) {
  if ((!node) || !node.hasChildNodes()) {
    // Empty text node
    return '';
  } else {
    if (node.textContent) {
    // W3C ?
    return node.textContent;
    } else if (node.text) {
    // IE
    return node.text;
    }
  }
  // We shouldn't end up here;
  return '';
  }
});