function checked_nodes_to_array(tree) {
	var checked_elements = new Array;
	
	var nodes = tree.getRoot().children;
	add_checked_nodes(checked_elements, nodes);
	
	return checked_elements;
}

function add_checked_nodes(checked_elements, nodes) {
	for(var i=0; i<nodes.length; ++i) {
		var node = nodes[i];
			var leaf = node;
			if (leaf.checked) {
				checked_elements.push(leaf);	
			}
		if (node.children.length != 0) {
			add_checked_nodes(checked_elements, node.children);
		}
  }
}

function checkNodes(nodes) {
  for(var i = 0; i < nodes.length; ++i) {
      nodes[i].check();
  }
}

function uncheckNodes(nodes) {
  for(var i = 0; i < nodes.length; ++i) {
      nodes[i].uncheck();
  }
}

Object.extend(YAHOO.widget.TreeView.prototype, {
  checkAll : function() {
      var topNodes = this.root.children;
      for(var i = 0; i < topNodes.length; ++i) {
          topNodes[i].check();
      }
    },
  uncheckAll : function() {
      var topNodes = this.root.children;
      for(var i = 0; i < topNodes.length; ++i) {
          topNodes[i].uncheck();
      }
    },

  getNodesByValue: function(value) {
      var values = [];
      for (var i in this._nodes) {
          var n = this._nodes[i];
          if (typeof(n.value) != 'undefined' && value == n.value) {
              values.push(n);
					}
      }

      return (values.length) ? values : null;
  }

});

