
	YAHOO.widget.TreeView.prototype.getCheckedNodes = function () {
		var checkedNodes = [];

		for (var i in this._nodes) {
			var n = this._nodes[i];
			if (n.checked && n.checkState==2) {
				checkedNodes.push(n.data.group_id);
			}
		}
		return checkedNodes;
	};

	YAHOO.widget.TreeView.prototype.getFilteredNodes = function () {
		var filteredNodes = [];

		for (var i in this._nodes) {
			var n = this._nodes[i];
			if (n.labelStyle == 'ygtvlabelfiltered') {
				filteredNodes.push(n);
			}
		}
		return filteredNodes;
	};

	YAHOO.widget.TreeView.prototype.clearFilteredNodes = function () {
		var filteredNodes = this.getFilteredNodes();

		for (var i in filteredNodes) {
			if ( i != 'toJSONString')
            {
				filteredNodes[i].labelStyle = 'ygtvlabel';
			}
		}

		this.collapseAll();
		this.draw();

		return true;
	};

	YAHOO.widget.TreeView.prototype.onExpand = function ( node ) {
		node.expanded = true;
	};

	YAHOO.widget.TreeView.prototype.onCollapse = function ( node ) {
		node.expanded = false;
	};

	YAHOO.widget.TreeView.prototype.getExpandedNodes = function () {
		var expandedNodes = [];

		for (var i in this._nodes) {
			var n = this._nodes[i];
			if ( n.expanded ) {
				expandedNodes.push(n.data.group_id);
			}
		}
		return expandedNodes;
	};


	YAHOO.widget.TreeView.prototype.nodesCollection = new Array();

	var tree = new YAHOO.widget.TreeView( "treeDiv" );

	var nodes = new Array();

	function getTmpNodeObj( node )
	{
		var tmpObj = new Object();
		tmpObj.label = node.n;
		tmpObj.group_id = node.id;
		tmpObj.parent_group_id = node.pid;

		return tmpObj;
	}

	function treeInit( productGroups, ids )
	{
		if (tree) tree = new YAHOO.widget.TreeView( "treeDiv" );
		var root = tree.getRoot();

		for (var i in productGroups )
		{
			if ( i == 'toJSONString' )
			{
				continue;
			}
			tmpObj = getTmpNodeObj( productGroups[i] );

			isExpanded = in_array( tmpObj.group_id, expandedGroups );
			isSelected = in_array( tmpObj.group_id, selectedGroups );

			tmpNode = new YAHOO.widget.TreeNode( tmpObj, root, isExpanded, isSelected );

			if ( productGroups[i].sub.length > 1)
			{
				addChildren( tmpNode, productGroups[i].sub )
			}
		}

		tree.draw();

		document.getElementById( 'loadingDiv' ).style.display = 'none';

		document.getElementById( 'treeDiv' ).style.display = 'block';
	}

	function addChildren( parent, children )
	{
		for (var i in children )
		{
			if ( i == 'toJSONString' )
			{
				continue;
			}

			tmpObj = getTmpNodeObj(children[i]);

			isExpanded = in_array( tmpObj.group_id, expandedGroups );
			isSelected = in_array( tmpObj.group_id, selectedGroups );

			tmpNode = new YAHOO.widget.TreeNode( tmpObj, parent, isExpanded, isSelected );

			if ( children[i].sub.length >= 1)
			{
				addChildren( tmpNode, children[i].sub )
			}
		}
	}

	function expandAll()
	{
		tree.expandAll();
	}

	function collapseAll()
	{
		tree.collapseAll();
	}

