/**
 * Diese methode suscht den mit id angegebenen Knoten
 * und versucht soweit gefunden, die parent kette hinaifzuhangeln und alle
 * parent Knoten die noch nicht ge?ffnet sind zu ?ffnen.
 *
 * @author		Alexander K?mmerer <kaemmerer@exozet.com>
 * @param 		id String 	ID des zu ?ffnenden Knotens.
 */

function walkToRootNode( id )
{
	node = document.getElementById('node_'+ id);
	
	if (node)
	{
		do
		{
			if (node.style.visibility != 'visible' && node.nodeName == 'UL' && node.id != '')
			{
				buch_o_s(node.id);
			}
		}
		while (node = node.parentNode.parentNode);
	}
}

openNodes = new Array();
				
function isOpenNode(id)
{
	var	found = false;
	for (var i=0; i < openNodes.length && !found; i++)
	{
		if (openNodes[i] == id)
		{
			found = true;
		}
	}
	return found;
}
				
function addToOpenNodes(id)
{
	if (isOpenNode(id) == false)
	{
		openNodes.push(id);
	}
}
				
function removeFromOpenNodes(id)
{
	var	newOpenNodes = new Array();
	for (var i=0; i < openNodes.length; i++)
	{
		if (openNodes[i] != id)
		{
			newOpenNodes.push(openNodes[i]);
		}
	}
	openNodes = newOpenNodes;
}

function resetOpenNodes() {
	openNodes = Array();
	WriteCookieValue("opennodes", '');
}

function buch_o_s (id) {
	var node;
	var imgnode;
	
	if (document.getElementById(id)) {
		node = document.getElementById( id );
		imgnode = document.getElementById( 'img' + id );
	
		if ( node.style.visibility=='visible' ) {
			imgnode.src='images/book_closed.gif';
			node.style.visibility = 'hidden';
			node.style.display= 'none';
			removeFromOpenNodes(id);
		} else {
			imgnode.src='images/book_open.gif';
			node.style.visibility = 'visible';
			node.style.display= 'block';
			addToOpenNodes(id);
		}
		WriteCookieValue("opennodes", openNodes.join("|"));
	}
}

function buch_alle ( obj, open, reset )
{
	buch_alle_node ( obj, open );
	buch_alle_imgnode ( obj, open );
	if (reset)
	{
		resetOpenNodes();
	}
}
				
function buch_alle_node ( obj, open )
{
	var i;
	var node;
	var imgnode;
	var divs;
	var visibility;
	var display;
	
	if (obj.getElementsByTagName ('ul'))
	{
		divs = obj.getElementsByTagName ('ul');
		if (open)
		{
			visibility = 'visible';
			display = 'block';
		}
		else
		{
			visibility = 'hidden';
			display = 'none';
		}
		for (i = 0; i < divs.length; i++)
		{
			if ( divs[i].id.substr(0, 4) == 'node')
			{
				divs[i].style.visibility = visibility;
				divs[i].style.display = display;

				if (open)
				{
					addToOpenNodes(divs[i].id);
			    }
			    else
			    {
			    	removeFromOpenNodes(divs[i].id);
			    }
			}
		}
		WriteCookieValue("opennodes", openNodes.join("|"));
	}
}

function buch_alle_imgnode (obj, open)
{
	var i;
	var node;
	var imgnode;
	var imgs;
	var src;
	
	if (obj.getElementsByTagName('img'))
	{
		imgs = obj.getElementsByTagName('img');
		if (open)
		{
			src='images/book_open.gif';
		}
		else
        {
			src='images/book_closed.gif';
		}
		for (i=0; i<imgs.length; i++)
		{
			if (imgs[i].id.substr(0,7) == 'imgnode')
			{
				imgs[i].src = src;
			}
		}
	}
}
