function bpTreeViewNotSupported()
{
	if(bpTreeViewNotSupported.doneUnsupportedMessage == "undefined") bpTreeViewNotSupported.doneUnsupportedMessage = false;
	
	if(!bpTreeViewNotSupported.doneUnsupportedMessage)
	{
		alert("Unfortunately your browser's JavaScript interpreter does not support the tree views on this page.");
		bpTreeViewNotSupported.doneUnsupportedMessage = true;
	}
}


function bpToggleTreeNode( id )
{
	if($)
	{
		var node = $(id);
		var e = $(id + "_kids");
		var i = $(id + "_twist");
		
		if(typeof node.xbpTreeViewNodeToggleState == "undefined") node.xbpTreeViewNodeToggleState = (e.style.display == "block" ? "open" : "closed");

		if(e)
		{
			if(node.xbpTreeViewNodeToggleState == "closed")
			{
				node.xbpTreeViewNodeToggleState = "open";
				new Effect.SlideDown(e.id, {duration: 0.5});
				if(i) i.src = i.src.replace(/_closed/, "_open");
			}
			else
			{
				node.xbpTreeViewNodeToggleState = "closed";
				new Effect.SlideUp(e.id, {duration: 0.5});
				if(i) i.src =  i.src.replace(/_open/, "_closed");
			}
		}
	}
	else
		treeViewNotSupported();
}


function bpToggleUrlTreeNode( idOrObject, url )
{
	object = idOrObjectToObject(idOrObject);

	if(!object) return;
	var id = object.id;
	bpToggleTreeNode(id);
	
	if($)
	{
		var e = $(id + "_kids");
		var u = $(id + "_url");
		
		if(e && u && object.xbpTreeViewNodeToggleState == "open")
			new Ajax.Request( url, {method: "get", xTargetContainerId: u.id, onSuccess: function(r){new Effect.SlideUp(r.request.options.xTargetContainerId, {duration: 0.2, queue: {position: "end", scope: r.request.options.xTargetContainerId, limit: 2}});$(r.request.options.xTargetContainerId).update(r.responseText);new Effect.SlideDown(r.request.options.xTargetContainerId, {duration: 0.5, queue: {position: "end", scope: r.request.options.xTargetContainerId, limit: 2}});}, onFailure: function(r){$(r.request.options.xTargetContainerId).update(bp_URLTreeNodeErrorContent ? bp_URLTreeNodeErrorContent : "<p>Failed to load content...</p>");}, onCreate: function(r){$(r.request.options.xTargetContainerId).update(bp_URLTreeNodeLoadingContent ? bp_URLTreeNodeLoadingContent : "<p><img src=\"images/library/bphtmlurltreeviewnode_loading.gif\" />&nbsp;Loading...</p>");}});
	}
	else
		bpTreeViewNotSupported();
}
