/* Core */
Tree = function (treeID, depthLevel) {
    this.LEVEL = new Array();
    this.treeObj = document.getElementById(treeID);
    for (var i = 0; i < depthLevel ; i++) {
        this.LEVEL[i] = new Array();
    }
	this.initTree();
}
	Node = function () {
		this.depth = 0;
		this.value;
	}
	/* TREE Methods */
	Tree.prototype.initTree = function () {
		var allNodes = this.treeObj.getElementsByTagName("li");
		var treeNodes = new Array();
		for (var i = 0; i < allNodes.length ; i++) {
			if (allNodes[i].parentNode.id == this.treeObj.id || allNodes[i].parentNode.parentNode.nodeName.toLowerCase() == "li") {
				treeNodes.push(allNodes[i]);
			}
		}
		for (var i = 0; i < treeNodes.length ; i++) {
			var node = new Node();
			node.value = treeNodes[i];
			this.LEVEL[getNodeDepth(node, this)].push(node.value);
		}
	}
	//Access One Node
	Tree.prototype.accessNode = function (nodeDepth, nodeIndex) {
		try {
			//alert(this.LEVEL[nodeDepth-1][nodeIndex-1].innerHTML)
			if (typeof(this.LEVEL[nodeDepth-1][nodeIndex-1]) != "undefined")
				return this.LEVEL[nodeDepth-1][nodeIndex-1];
			else 
				alert("This node does not exist !");
		}
		catch (e) {
			alert("This node does not exist !");
			return false;
		}
	}

	function getNodeDepth (node, tree) {
		NODE_VALUE = node.value;
		while (NODE_VALUE.parentNode.id != tree.treeObj.id && NODE_VALUE.parentNode.parentNode.nodeName.toLowerCase() == "li") {
			node.depth += 1;
			NODE_VALUE = NODE_VALUE.parentNode.parentNode;
		}
		return node.depth;
	}

