window.onload=attachHandler;

function attachHandler()
{
	// Only add link if the browser can understand it
	if (document.createElement && document.createTextNode && document.removeChild)
	{
		var objContent = document.createElement('p')
		var objAnchor = document.createElement('a');

		objAnchor.href = '#';
		objAnchor.onclick = function(event){return investigate(event);}
		objAnchor.onkeypress = function(event){return investigate(event);}
		objAnchor.appendChild(document.createTextNode('Display head and body elements'));
		objContent.appendChild(objAnchor);

		if (document.getElementsByTagName('body')[0])
			document.getElementsByTagName('body')[0].appendChild(objContent);
		else
			document.getElementById('lastelement').parentNode.appendChild(objContent);
	}
}

function investigate(objEvent)
{
	var iKeyCode;

	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			iKeyCode = objEvent.keyCode;
		else if (objEvent.which)
			iKeyCode = objEvent.which;

		if (iKeyCode != 13 && iKeyCode != 32)
			return true;
	}

	var objHead = document.getElementsByTagName('head')[0];
	var objBody = document.getElementsByTagName('body')[0];

	if (objHead && objBody)
	{
		if (!document.getElementById('investigate'))
		{
			var objHeadElements = objHead.getElementsByTagName('*');
			var objBodyElements = objBody.getElementsByTagName('*');

			var objContainer = document.createElement('div');
			objContainer.id = 'investigate';

			addSection(objContainer, objHeadElements, 'Head');
			addSection(objContainer, objBodyElements, 'Body');

			objBody.appendChild(objContainer);
		}
		else
		{
			var objContainer = document.getElementById('investigate');
			objContainer.parentNode.removeChild(objContainer);
		}
	}
	else
		alert('Head or body not found');

	objHeadElements = null;
	objBodyElements = null;
	objHead = null;
	objBody = null;

	return false;
}

function addSection(objContainer, objSection, strSectionName)
{
	var objItem;
	var objElement = document.createElement('h2');
	var objList = document.createElement('ul');

	objElement.appendChild(document.createTextNode('Elements in the ' + strSectionName + ' Section'));
	objContainer.appendChild(objElement);

	for (var iCounter=0; iCounter<objSection.length; iCounter++)
	{
		objItem = document.createElement('li');
		objItem.appendChild(document.createTextNode(objSection[iCounter].tagName));
		objList.appendChild(objItem);
	}

	objContainer.appendChild(objList);
}

