function esynTree(tree, params)

{

	var tree = $('#'+tree);



	this.params = params;

	delete params;



	var str = '';

	// Opera refuses to work with radios without form tag

	if($.browser.opera)

	{

		str += "<form>";

	}

	if(this.params.widget)

	{

		widget = this.params.widget;

	}

	else

	{

		widget = 'radio'

	}



	disabled = new Array();

	if(this.params.disabled)

	{

		disabled = this.params.disabled.split(",");

	}



	state = new Array();

	if(this.params.state)

	{

		state = this.params.state.split(",");

	}



	var rootChecked = '';

	for(var i = 0; i < state.length; i++)

	{

		if(state[i] == '0')

		{

			rootChecked = ' checked="checked"';

			break;

		}

	}

	var rootNotDisabled = this.params.rootNotDisabled ? '' : ' disabled="yes"';

	

	str += '<ul class="'+this.params.treeClass+'">';

	str += '<li>';

	str += '<a href="javascript:void(0)" onclick="'+this.params.obj+'.getCategoryChildren(\'0\')" class="no"><img style="margin-bottom:3px;height:9px;width:9px" src="templates/'+template_name+'/img/tree/plus.png" id="im_0'+this.params.obj+'" alt="" /> <img style="margin-bottom:3px;height:12px;width:16px" src="templates/'+template_name+'/img/tree/folder.gif" id="imf_0'+this.params.obj+'" alt="" /></a>';

	str += '<input type="'+widget+'" class="'+this.params.inputClass+'" path="" title="ROOT" name="categories[]" onclick="'+this.params.obj+'.'+this.params.callback+'(this)" class="treeItem_1" value="0" id="labelcat0'+this.params.obj+'"'+rootChecked+rootNotDisabled+' />';

	str += '<label for="labelcat0'+this.params.obj+'">ROOT</label>';

	str += '<div id="category_0'+this.params.obj+'" style="display:none;"></div>'

	str += '</li>';

	str += '</ul>';

	if($.browser.opera)

	{

		str += "</form>";

	}



	tree.html(str);

}



esynTree.prototype.getCategoryChildren = function(catid, state)

{

	var act = $("#action").val();

	var c = "#category_"+catid+this.params.obj;



	imsrc = $('#im_' + catid + this.params.obj).attr("src");



	// if the node is expanded then collapse

	if(-1!=imsrc.indexOf("minus.png"))

	{

		$('#im_' + catid + this.params.obj).attr("src", 'templates/'+template_name+'/img/tree/plus.png');

		$('#imf_' + catid + this.params.obj).attr("src", 'templates/'+template_name+'/img/tree/folder.gif');

		$(c).hide();



		return;

	}

	else

	{

		var x = $(c).attr("class");

		$('#im_' + catid + this.params.obj).attr("src", 'templates/'+template_name+'/img/tree/minus.png');	

		$('#imf_' + catid + this.params.obj).attr("src", 'templates/'+template_name+'/img/tree/open_folder.gif');



		// if class contains _tree_loaded but not marked as reloadTree then show already loaded

		// otherwise tree must be reloaded (e.g if type of the tree is changed)

		if(x && x.match(/_tree_loaded/))

		{

			$(c).show();

		

			return;

		}

	}



	var pars = 'id='+catid;

	pars += '&widget='+this.params.widget;

	pars += "&callback="+this.params.obj+"."+this.params.callback;

	pars += "&obj="+this.params.obj;

	pars += "&inputClass="+this.params.inputClass;



	if(this.params.state)

	{

		pars+="&state="+this.params.state;

	}

	if(this.params.disabled)

	{

		pars+="&disabled="+this.params.disabled;

	}





	$(c).before($("#spinner"));

	$("#spinner").show();



	$.get("get-categories.php?"+pars,

		function(data)

		{

			$(c).html(data).show();

			// mark the node as loaded see above code

			$(c).addClass("_tree_loaded");

			$("#spinner").hide();

		});

}


