function getPrevious(el) {
	function isIgnorable(node) {
		// is a comment or contains only whitespace
		return (node.nodeType == 8 || /^[\t\n\r ]+$/.test(node.data));
	}
	
	var prev = el;
	while (prev = prev.previousSibling) {
		if (!isIgnorable(prev)) break;
	}

	return prev;
}


function expand(item)
{
	var preitem = document.getElementById(item); 
	var label = getPrevious(preitem);
	var thestyle = preitem.className;
	if (thestyle == "expanded_source")
	{
		preitem.className = "contracted_source";
		label.innerHTML = "Expand";
	}
	else
	{
		preitem.className = "expanded_source";
		label.innerHTML = "Contract";
	}
}