	var img_line			= new Image(); 	img_line.src 			= img_dir+"line.gif";
	var img_minus			= new Image(); 	img_minus.src			= img_dir+"minus.gif";
	var img_minusbottom		= new Image(); 	img_minusbottom.src		= img_dir+"minusbottom.gif";
	var img_minustoproot	= new Image(); 	img_minustoproot.src	= img_dir+"minustoproot.gif";
	var img_minusonlyroot	= new Image(); 	img_minusonlyroot.src	= img_dir+"minusonlyroot.gif";
	var img_plus			= new Image(); 	img_plus.src			= img_dir+"plus.gif";
	var img_plusbottom		= new Image(); 	img_plusbottom.src		= img_dir+"plusbottom.gif";
	var img_plusonlyroot	= new Image(); 	img_plusonlyroot.src	= img_dir+"plusonlyroot.gif";
	var img_plustoproot	    = new Image(); 	img_plustoproot.src   	= img_dir+"plustoproot.gif";
	var img_join			= new Image(); 	img_join.src			= img_dir+"join.gif";
	var img_joinbottom		= new Image(); 	img_joinbottom.src		= img_dir+"joinbottom.gif";
	var img_joinonlyroot	= new Image(); 	img_joinonlyroot.src	= img_dir+"joinonlyroot.gif";

	var img_sign_plus		= new Image(); 	img_sign_plus.src		= img_dir+"sign_plus.gif";
	var img_sign_minus		= new Image(); 	img_sign_minus.src		= img_dir+"sign_minus.gif";

	var x		 			= new Image();	x.src					= img_dir+"x.gif";

	var treeLineActive = 'tree_line_active';

	function changeState(cluster_id,collapse_other,ctb)
	{
		var d_id = 'children_'+cluster_id;
		var i_id = 'img_'+cluster_id;
		var type = '', state = ['plus','minus'];

		if(document.getElementById(d_id).style.display == 'none')
		{
			document.getElementById(d_id).style.display = 'block';
			state[0] = 'plus';
			state[1] = 'minus';
		}
		else
		{
			document.getElementById(d_id).style.display = 'none';
			state[0] = 'minus';
			state[1] = 'plus';
		}

		//for safary problem
		var t_str = x.src;
		t_str = t_str.replace(/x.gif/,'');
		var r = new RegExp('^.*?('+t_str+')');
		t_str = document.getElementById(i_id).src;
		t_str = t_str.replace(r,'$1');
		//alert(t_str);
		//preg_replace('~^(http://[^/]*)?/?(.*[^/])/?$~','$2/',get_ url(null,array(),false));

		switch(t_str)//document.getElementById(i_id).src)
		{
			case window['img_sign_'+state[0]].src:
				state[1] = 'sign_'+state[1]
				type='';
				break;
			case window['img_'+state[0]+'bottom'].src:
				type='bottom';
				break;
			case window['img_'+state[0]+'onlyroot'].src:
				type='onlyroot';
				break;
			case window['img_'+state[0]+'toproot'].src:
				type='toproot';
				break;
			default:
				break;
		}
		document.getElementById(i_id).src = window['img_'+state[1]+type].src;


		if(collapse_other && window[ctb + 'tree_data'])
		{
			window['tree_data'] = window[ctb + 'tree_data'];
			prev_t = t = cluster_id;
			while(t && tree_data[t] && tree_data[t]['parent'])
			{
				prev_t = t;
				t = tree_data[t]['parent'];
			}

			for(var i in tree_data)
			{
				if(i!=prev_t && i!=cluster_id && (tree_data[i]['parent']==0 || tree_data[i]['parent']==tree_data[cluster_id]['parent']) )
				{
					collapse(tree_data, i,true);
				}
			}
		}
	}
	function collapse(tree_data, id, recursively)
	{
		if(!document.getElementById('children_'+id))return;
		//alert(document.getElementById('children_'+id).style.display);
		if(document.getElementById('children_'+id).style.display != 'none')
		{
			changeState(id,false);
			if(recursively)
			{
				for(var i in tree_data[id]['children'])
				{
					collapse(tree_data, tree_data[id]['children'][i],recursively);
				}
			}
		}
	}
