
treenode.prototype.checkbox_check = function () {
	var i;
	this.oNodeCheckbox.state = 1;
//	this.oNodeCheckbox.src = treeConfig.checkboxCheckedFullIcon;
	this.oNodeCheckbox.checked = "checked";
	this.oNodeCheckbox.indeterminate = null;
	for (i = 0; i < this.oNode.oNodeChilds.childNodes.length; i++) {
		this.oNode.oNodeChilds.childNodes[i].obj.checkbox_check();
	}
};
treenode.prototype.toggleCheckbox = function () {
	if (this.oNodeCheckbox.state == 0 || this.oNodeCheckbox.state == 2) {
		this.oNodeCheckbox.obj.checkbox_check();
	} else {
		if (this.oNodeCheckbox.state == 1) {
//			this.oNodeCheckbox.src = treeConfig.checkboxIcon;
			this.oNodeCheckbox.checked = null;
			this.oNodeCheckbox.indeterminate = null;
			this.updateChildren(this.oNode);
			this.oNodeCheckbox.state = 0;
		}
	}
	
	// set parent
	this.updateParent(this.oNodeCheckbox.obj.parentNode);
};
treenode.prototype.updateChildren = function (pNode) {
	var children = pNode.oNodeChilds.childNodes;
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
//		child.oNodeCheckbox.src = treeConfig.checkboxIcon;
		child.oNodeCheckbox.checked = null;
		child.oNodeCheckbox.indeterminate = null;
		child.oNodeCheckbox.state = 0;
		this.updateChildren(child);
	}
	return;
};
treenode.prototype.updateParent = function (parentNode) {
	if (parentNode.oNodeCheckbox) {
		var checkedChilds = 0;
		var partialChilds = 0;
		for (i = 0; i < parentNode.oNodeChilds.childNodes.length; i++) {
			if (parentNode.oNodeChilds.childNodes[i].oNodeCheckbox.state == 1) {
				checkedChilds++;
			} else {
				if (parentNode.oNodeChilds.childNodes[i].oNodeCheckbox.state == 2) {
					partialChilds++;
				}
			}
		}
		if (partialChilds > 0) {
//			parentNode.oNodeCheckbox.src = treeConfig.checkboxCheckedPartialIcon;
			parentNode.oNodeCheckbox.checked = null;
			parentNode.oNodeCheckbox.indeterminate = "true";//!!!
			parentNode.oNodeCheckbox.state = 2;
		} else {
			if (checkedChilds == 0) {
//				parentNode.oNodeCheckbox.src = treeConfig.checkboxIcon;
				parentNode.oNodeCheckbox.checked = null;
				parentNode.oNodeCheckbox.indeterminate = null;
				parentNode.oNodeCheckbox.state = 0;
			} else {
				if (checkedChilds == parentNode.oNodeChilds.childNodes.length) {
//					parentNode.oNodeCheckbox.src = treeConfig.checkboxCheckedFullIcon;
					parentNode.oNodeCheckbox.checked = "checked";
					parentNode.oNodeCheckbox.indeterminate = null;
					parentNode.oNodeCheckbox.state = 1;
				} else {
//					parentNode.oNodeCheckbox.src = treeConfig.checkboxCheckedPartialIcon;
					parentNode.oNodeCheckbox.checked = null;
					parentNode.oNodeCheckbox.indeterminate = "true";//!!!
					parentNode.oNodeCheckbox.state = 2;
				}
			}
		}
		if (parentNode.oNodeCheckbox && parentNode.oNodeCheckbox.obj) {
			var parentParentNode = parentNode.oNodeCheckbox.obj.parentNode;
			if (parentParentNode) {
				this.updateParent(parentParentNode);
			}
		}
	}
};

treenode.prototype.checkByItemIdPath = function (path) {
	var path;
	if (this.src != null && !this.loaded) {
		var self = this;
		this.eventManager.addListener("onload", function () {
			self.checkByItemIdPath(path);
		}, "once");
		this.load();
		return;
	}
	path = path.split(",");
	var found = false;
	for (i = 0; i < this.oNodeChilds.childNodes.length; i++) {
		if (this.oNodeChilds.childNodes[i].obj.itemId == path[0]) {
			this.oNodeChilds.childNodes[i].obj.select();
			if(path.length == 1) {
				this.oNodeChilds.childNodes[i].obj.toggleCheckbox();
			}
			found = true;
			break;
		}
	}

	if(found) {
		if (path.length > 1) {
			var tmp = "";
			for (i = 1; i < path.length; i++) {
				tmp += path[i];
				if (i < path.length - 1) {
					tmp += ",";
				}
			}
			path = tmp;
			this.treeview.selectedNode.checkByItemIdPath(path);
		}
	}
};
treeview.prototype.checkByItemIdPath = treenode.prototype.checkByItemIdPath;


