  //Tree Walker
  //
  //An implementation using the DOM Level 2 Tree Walker methods. Builds a generic filter function and traverses through all elements.
  document.getElementsByClass = function(needle) {
    function acceptNode(node) {
      if (node.hasAttribute("class")) {
        var c = " " + node.className + " ";
         if (c.indexOf(" " + needle + " ") != -1)
           return NodeFilter.FILTER_ACCEPT;
      }
      return NodeFilter.FILTER_SKIP;
    }
    var treeWalker = document.createTreeWalker(document.documentElement,
        NodeFilter.SHOW_ELEMENT, acceptNode, true);
    var outArray = new Array();
    if (treeWalker) {
      var node = treeWalker.nextNode();
      while (node) {
        outArray.push(node);
        node = treeWalker.nextNode();
      }
    }
    return outArray;
  }



