/*****************************************************************
 *
 * JS_BRAMUS - by Bramus! - http://www.bram.us/
 * wTree: for use with the wTree PHP Class
 *
 * v 1.0.1 	- 2007.01.10 	- keepopen class added
 * v 1.0 	- 2007.01.09 	- initial release
 *
 * only comment so far (no time yet) is Exodus 20.15 (Google it!)
 *
 *****************************************************************/

wTree	= Class.create();

wTree.prototype = {

	initialize	: function(tree) {
		this.elements		= tree.getElementsByTagName("li");
		this.previousNode	= null;
		this.prepTree();		
	},
	
	// prepares the tree (click events baby!)
	prepTree	: function() {		
		$A(this.elements).each(function(treenode) {
			if (treenode.childNodes.length == 2) {
				
				// bind event listener on first item - disabled for this implementation
				// treenode.childNodes[0].onclick = 	this.toggleTreeNode.bindAsEventListener(this);
				
				// collapse the second item, only if we don't need to keep it open
				if (treenode.className == "keepOpen") {	// used to be "treenode.hasClassName("keepOpen")" but IE can't handle that :S
					this.previousNode	= treenode.childNodes[1].id;
				} else {
					// this.collapseTreeNode(treenode.childNodes[1], true); // disabling for this project since CSS already has display none in it
				}
				
				// init the subtree
				new wTree(treenode.childNodes[0]);
			} else {
				return;
			}
		}.bind(this));		
	},
	
	// collapses a treenode
	collapseTreeNode	: function(el, bypassqueue) {
		if (bypassqueue == true) {
			Effect.BlindUp(el);
		} else {
			Effect.BlindUp(el, {queue: 'end', duration: 0.5});
		}
	},
	
	// shows a treenode
	showTreeNode		: function(el) {
		Effect.BlindDown($(el), {queue: 'end', duration: 0.5});
		this.previousNode	= el;
	},
	
	// toggles a treenode 
	toggleTreeNode	: function(evt) {	
			
		Effect.toggle(Event.element(evt).parentNode.id + "_childTree", "blind");
		
		return false;
	}

}
