//global variable to allow console inspection of tree:
var tree;

function traverseData(data, node) {
    if (typeof data == "string")
        new YAHOO.widget.TextNode(data, node, false);
    else { // it's an array
        var newNode = new YAHOO.widget.TextNode(data[0], node, false);
        for (var i = 1; i < data.length; i++) {                
            // newNode.collapse();
            newNode.expand();
            traverseData(data[i], newNode);
        }
    }
}

function treeInit() {
   var elements = document.getElementsByTagName("treedata");
   for (var i = 0; i < elements.length; i++) {
   	var dataString = elements[i].firstChild.nodeValue;
   	var treeDiv = elements[i].getAttribute("ref");
   	tree = new YAHOO.widget.TreeView(treeDiv);
   	traverseData(eval(dataString), tree.getRoot());
   	tree.subscribe("expand", function(node){
   		YAHOO.log(node.index + " was expanded", "info", "example");
   		// return false; // return false to cancel the expand
				});
				
	tree.subscribe("collapse", function(node){
		YAHOO.log(node.index + " was collapsed", "info", "example");
	});
	
	// Trees with TextNodes will fire an event for when the label is clicked:
	tree.subscribe("labelClick", function(node){
		YAHOO.log(node.index + " label was clicked", "info", "example");
	});
	
	//The tree is not created in the DOM until this method is called:
	tree.draw();
   }
}

//Add an onDOMReady handler to build the tree when the document is ready
YAHOO.util.Event.onDOMReady(treeInit);

