function toggleCode()
{ 
	var divs = document.getElementsByTagName('div');
	var numH3s = 0, numCodeDivs = 0;
	for (var i = 0; i < divs.length; i++)
	{
		if (divs[i].className && divs[i].className.match(/code/))
		{
			numCodeDivs++;
			var codeDiv = divs[i];
			codeDiv.style.display = 'none';
			var prev = codeDiv.previousSibling;
			while (codeDiv)
			{
				if (prev.tagName && prev.tagName.toLowerCase() == 'h3')
				{
					numH3s++;
					var h3 = prev;
					if (!h3.getAttribute('id'))
					{
						h3.setAttribute('id', 'h3_' + numH3s);
					}
					var h3ID = h3.getAttribute('id');
					if (!codeDiv.getAttribute('id'))
					{
						codeDiv.setAttribute('id', 'codeDiv_' + numCodeDivs);
					}
					var codeDivID = codeDiv.getAttribute('id');
					var toggleCodeLink = document.createElement('a');
					/*
					//IE and Opera can't handle onclick dynamically set :|
					toggleCodeLink.setAttribute('href', '#' + h3ID);
					toggleCodeLink.setAttribute('onclick', "var e = document.getElementById('" + codeDivID + "'), es = e.style; if (es.display == 'none') { es.display = 'block'; } else { es.display = 'none'; return false; } void(0); ");
					*/
					toggleCodeLink.setAttribute('href', "javascript: var e = document.getElementById('" + codeDivID + "'), es = e.style; if (es.display == 'none') { es.display = 'block'; location = '" + "#" + h3ID + "'; } else { es.display = 'none'; } void(0); ");
					toggleCodeLink.appendChild(document.createTextNode('[+/-]'));
					h3.appendChild(document.createTextNode(' '));
					h3.appendChild(toggleCodeLink);
					break;
				}
				else
				{
					prev = prev.previousSibling;
				}
			}
		}
	}
}

if (document.getElementsByTagName) 
{
	window.onload = toggleCode;
}
