// Helper functions to strip whitespace when finding the node before or after the current node.
function is_all_ws( nod )
{
	// Use ECMA-262 Edition 3 String and RegExp features
	return !(/[^\t\n\r ]/.test(nod.data));
}

function is_ignorable( nod )
{
	return ( nod.nodeType == 8) || // A comment node
		( (nod.nodeType == 3) && is_all_ws(nod) ); // a text node, all ws
}

function node_before( sib )
{
	while ((sib = sib.previousSibling)) {
		if (!is_ignorable(sib)) return sib;
	}
	return null;
}

function node_after( sib )
{
	while ((sib = sib.nextSibling)) {
		if (!is_ignorable(sib)) return sib;
	}
	return null;
}

// Toggle visibility of an individual <dd> and change + to -
function toggle_visibility(id)
{
	var dd_element = node_after(id);
	var dt_element = node_before(dd_element);
	if(dd_element.style.display == 'block')
	{
		dd_element.style.display = 'none';
		dt_element.style.backgroundImage = 'url("css/images/plus.gif")';
	}
	else
	{
		dd_element.style.display = 'block';
		dt_element.style.backgroundImage = 'url("css/images/minus.gif")';
		dt_element.style.color = "#551A8B";
	}
}

// Toggle visibility of all <dd> tags in the document and change + to -
function toggle_all()
{
	var all_dd = document.getElementsByTagName("dd");
	for(i=0;i<all_dd.length;i++)
	{
		var dt_element = node_before(all_dd[i]);
		if(all_dd[i].style.display == 'block')
		{
			all_dd[i].style.display = 'none';
			dt_element.style.backgroundImage = 'url("css/images/plus.gif")';			
		}
	   else
		{
			all_dd[i].style.display = 'block';
			dt_element.style.backgroundImage = 'url("css/images/minus.gif")';
			dt_element.style.color = "#551A8B";
		}
	}
}