

function expandable_h3_click(e)
{
	if(typeof e == 'undefined')
	{
		e = window.event;
		e.target = e.srcElement;
	}
	
	var h3 = e.target;
	while(h3.nodeName.toLowerCase()!='h3')
	{
		h3 = h3.parentNode;
	}
	var expand_data = h3.parentNode.getElementsByTagName('div')[0];
	
	if(typeof expand_data.style.display == 'undefined' || expand_data.style.display!='block')
	{
		expand_data.style.display = 'block';
		h3.className = 'opened';
	}
	else
	{
		expand_data.style.display = 'none';
		h3.className = h3.className.replace(/(\s|^)opened(\s|$)/,'');
	}
}


/*loop over all elements and add "expandable" functionality where applicable*/
var make_expandable = function()
{
	var c = document.getElementsByTagName('h3');
	var n = c.length;
	var i = 0;
	var o = null;
	
	var hash = document.location.hash.substr(1);
	
	while(i<n)
	{
		o = c[i];
		if(o.parentNode.className.match(/(\s|^)expandable(\s|$)/))
		{
			o.onclick = expandable_h3_click;
			if(o.id == hash)
			{
				o.parentNode.getElementsByTagName('div')[0].style.display = 'block';
				o.className = 'opened';
			}
		}
		++i;
	}
	
	c = document.getElementsByTagName('a');
	n = c.length;
	i = 0;
	while(i<n)
	{
		o = c[i];
		
		/*links referring to the same page (#-links) must also trigger a change in "open" state so this global function watches all clicks*/
		o.onclick = function(e)
		{
			if(typeof e == 'undefined')
			{
				e = window.event;
				e.target = e.srcElement;
			}
			
			var hash = '';
			if(typeof e.target.parentNode.className == 'string' && e.target.parentNode.className.match(/(\s|^)expandable(\s|$)/) && e.target.id)
			{
				hash = e.target.id;	
			}
			else if(typeof e.target.href == 'string')
			{
				hash = e.target.href.substr(e.target.href.indexOf('#')+1);
			}

			if(hash.length > 0)
			{
				var o = document.getElementById(hash);
				if(o)
				{
					if(!o.className.match(/(\s|^)opened(\s|$)/))
					{
						o.parentNode.getElementsByTagName('div')[0].style.display = 'block';
						o.className = 'opened';
					}
				}
			}
		};
		
		++i;
	}
}();




