updateProgress();


function TreeModel(SHOW_STEPS) {

	this.getTreeNodes = getTreeNodes;
		
	function getTreeNodes(tree, rootId) {
		zindex = 1000;
		
		//rootId = "3ee64ac6-bb98-47cc-be9f-ee6afd6e9645";
		
		if (!rootId) rootId = "root";
		var myTreeNodes = new Array();
		
		var rootStructure = database.getStructureById(rootId);
		var parentStructure = database.getStructureById(rootStructure.parentId);
		if (parentStructure) {
			alert(parentStructure.title);
		}
		var diffLevel = rootStructure.level;
		var rootNode = createTreeNode(rootStructure, 0, null, tree.id);
		myTreeNodes.push(rootNode);
		
		myTreeNodes = collectStructures(rootStructure, rootNode, myTreeNodes, tree.id);
		
		for (var i = 0; i < myTreeNodes.length; i++) {
			myTreeNodes[i].setTree(tree);
			myTreeNodes[i].setSection(rootStructure.position);
			var level = myTreeNodes[i].getLevel();
			myTreeNodes[i].setLevel(level - diffLevel);
		}
		
		//alert(myTreeNodes.length);
		return myTreeNodes;
	}
	
	
	function createTreeNode(structure, position, parentNode, treeId) {
		var treeNode = new TreeNode(treeId + "_" + structure.id, structure.title, structure.level, position, zindex--, parentNode);
		treeNode.setStructure(structure);
		treeNode.setVisited(structure.visited);
		//alert(structure.title);
		return treeNode;
	}
	
	function collectStructures(structure, rootNode, myTreeNodes, treeId) {
		if (!structure.visible) {
			return myTreeNodes;
		}
		
		var position = 0;
		var children = structure.getStructures();
		for (var i = 0; i < children.length; i++) {
			if (!children[i].visible) {
				continue;
			}
			
			if (children[i].type == "step" && !SHOW_STEPS) {
				continue;
			}
			//alert(children[i].title + " " + children[i].type);
			
			var treeNode = createTreeNode(children[i], position, rootNode, treeId);
			myTreeNodes.push(treeNode);
			myTreeNodes = collectStructures(children[i], treeNode, myTreeNodes, treeId);
			position++;
		}
		return myTreeNodes;		
	
	}
	
	
	
	/*	
	function getNode(id) {
		var myNode = null;
		var length = treeNodes.length;
		var id = tree.id + "_" + id;
		for (var i = 0; i < length; i++) {
			if (treeNodes[i].id == id) {
				myNode = treeNodes[i];
				break;
			}
		}
		return myNode;
	}
	*/
			
}

