function toggleNode(obj)
{
	var next = obj.parentNode.nextSibling;
	if (!next)
		return;
	if (next.childNodes.length>1)
		return;
	var oldstate = next.style.display;
	closeSiblings(obj);
	if (oldstate=='none')
		next.style.display='';
	else
		next.style.display='none'
}

function switchNode(obj, state)
{
	var next = obj.parentNode.nextSibling;
	if (!next)
		return;
	if (next.childNodes.length>1)
		return;
	if (state)
		next.style.display=''
	else
		next.style.display='none'
}
function closeSiblings(obj)
{
	var siblings = obj.parentNode.parentNode.childNodes;
	for (var i=0; i<siblings.length; i++)
		switchNode(siblings[i].childNodes[0], false);
}

function getChildByTagName(obj, tagName)
{
	tagName = tagName.toLowerCase();
	var children = obj.childNodes;
	var result = [];
	for (var i=0; i<children.length; i++)
		if (children[i].tagName && children[i].tagName.toLowerCase()==tagName)
			result.push(children[i]);
	if (result.length==1)
		return result[0];
	else
		return result;
}

function getNextSiblingByTagName(obj, tagName)
{
	tagName = tagName.toLowerCase();
	var siblings = obj.parentNode.childNodes;
	for (var i=0, found = false; i<siblings.length; i++)
	{
		if (siblings[i]==obj)
		{
			found = true;
			continue;
		}
		if (found && siblings[i].tagName && siblings[i].tagName.toLowerCase()==tagName)
			return siblings[i];
	}
}

function toggleObject(obj)
{
	if (obj)
		obj.style.display = (obj.style.display=="none")?"":"none";
}