function jGUI_Tree(treeID, cls0, cls1, itemCount, defExpand)
{
//  var arr1 = eval("new Array(" + arrLevel + ",0)");
  return new __Tree(treeID, new Array(cls0, cls1), itemCount, defExpand);
}

function __Tree(treeID, arrClass, itemCount, defExpand)
{
  this.id = treeID;
  this.me = get_obj(treeID);
  this.arrClass = arrClass;

  this.toggle = __tree_toggle;

  this.__tree_init = __tree_init;
  this.__tree_toggle_expand = __tree_toggle_expand;
  this.getExpand = __tree_get_expand;
  
  var treeExp = get_cookie(this.id + "_STATUS");
//  alert(treeExp);
//  alert(defExpand);
  while(treeExp.length < itemCount)
  {
  	treeExp+= defExpand;
  }
//  alert(treeExp);
  set_cookie(this.id + "_STATUS", treeExp, "31536000");
/*
  this.arrLevel = arrLevel;
  this.arrItems = Array();
  this.arrPicts = Array();

  this.toggle2 = __tree_toggle2;
  
  this.__tree_expand = __tree_expand;
  this.__tree_collaps = __tree_collaps;
  for(var i=0;;i++)
  {
	var objItm = get_obj(treeID+'_'+i);
	if(objItm == null)
	  break;
	this.arrItems.push(objItm);
//	var oldClassName = objItm.className;
//	if(oldClassName.length > 0)
//		oldClassName = ' ' + oldClassName
	objItm.className = this.arrClass[0] + '_ROW ' + this.arrClass[0] + '_LEVEL_' + arrLevel[i];

	var objItm = get_obj(treeID+'_PICT_'+i);
	this.arrPicts.push(objItm);
	if(objItm != null)
	  objItm.className = this.arrClass[0] + '_PICT';
//	  alert(objItm.onclick);
//	  objItm.onclick = treeID + ".toggle(" + i + ")";
  }
 
*/
  this.__tree_init();
 
}

function __tree_toggle(idx, dontCollapse)
{
	if (dontCollapse == undefined || dontCollapse == null)
		dontCollapse = false;
	var obj = get_obj(this.id + '_GROUP_' + idx);
	if(obj == null)
	{
		return;
	}
	var icon = get_obj(this.id + '_PICT_' + idx);
	if(obj.style.display == "none")
	{
		obj.style.display = "";
		if(icon != null)
		{
			icon.className = this.arrClass[1] + "_PICT";
		}
	}
	else if (!dontCollapse)
	{
		obj.style.display = "none";
		if(icon != null)
		{
			icon.className = this.arrClass[0] + "_PICT";
		}
	}
	this.__tree_toggle_expand(idx, dontCollapse);
}

function __tree_init()
{
	var arrExp = this.getExpand();
	for(var i=0; i < arrExp.length; i++)
	{
		if(arrExp[i] == 0)
		{
			continue;
		}
		this.toggle(i);
		this.__tree_toggle_expand(i);
	}
}

/*
function __tree_init()
{
	var arrExp = this.getExpand();
	for(var i=0; i < this.arrItems.length; i++)
	{
		objItm = this.arrItems[i];
		if(this.arrLevel[i] != 0)
			continue;
			
//		alert(objItm.id);
		objItm.style.display = "";
		
		if(arrExp[i])
		{
			this.__tree_expand(i);
		}
		else
		{
			this.__tree_collaps(i);
		}
	}
}

function __tree_toggle(ord)
{
	this.__tree_toggle_expand(ord);
	this.__tree_init();
}

function __tree_toggle2(ord)
{
	arrExp = this.getExpand();
	if(arrExp[ord] == 0)
	{
		this.__tree_toggle_expand(ord);
	}
}

function __tree_expand(i)
{
	if(this.arrPicts[i] != null)
		this.arrPicts[i].className = this.arrClass[1] + '_PICT';
//	alert(this.arrPicts[i].className);

	var arrExp = this.getExpand();
	var level = this.arrLevel[i] + 1;
	for(i++;i<this.arrItems.length;i++)
	{
		objItm = this.arrItems[i];
		if(this.arrLevel[i] != level)
			continue;
//		alert(objItm.id);
		objItm.style.display = "";
		if(arrExp[i] == 1)
		{
			this.__tree_expand(i);
		}
		else
		{
			this.__tree_collaps(i);
		}
	}
}

function __tree_collaps(i)
{
	if(this.arrPicts[i] != null)
		this.arrPicts[i].className = this.arrClass[0] + '_PICT';
		
	var arrExp = this.getExpand();
	var level = this.arrLevel[i] + 1;
	for(i++;i<this.arrItems.length;i++)
	{
		objItm = this.arrItems[i];
		if(this.arrLevel[i] < level)
			break;
		objItm.style.display = "none";
	}
}
*/

function __tree_get_expand()
{
	var ret = Array();
	var treeExp = get_cookie(this.id + "_STATUS");
	for(var i=0;i<treeExp.length; i++)
	{
	  ret[i] = treeExp.substr(i,1) == "1";
	}
	return ret
}

function __tree_toggle_expand(idx, dontCollapse)
{
	var treeExp = get_cookie(this.id + "_STATUS");
	var treeExpNew = '';
	for(var i = 0; i < treeExp.length; i++)
	{
		if(i == idx)
		{
			var status = treeExp.substr(i,1);
			if (dontCollapse)
				 status = "0"
			treeExpNew+= status == "1" ? "0" : "1";
			continue
		}
		treeExpNew+= treeExp.substr(i,1);
	}
	set_cookie(this.id + "_STATUS", treeExpNew, "31536000");
}
