// Utility Methods
document.getElementsByClassName = function(clsName)
{
	var retVal = new Array();
	var elements = document.getElementsByTagName("*");
	for (var i = 0; i < elements.length; i++)
	{
		if (elements[i].className.indexOf(" ") >= 0)
		{
			var classes = elements[i].className.split(" ");
			for (var j = 0; j < classes.length; j++)
			{
				if(classes[j] == clsName)
				{
					retVal.push(elements[i]);
				}
			}
		}
		else if (elements[i].className == clsName)
		{
			retVal.push(elements[i]);
		}
	}
	return retVal;
}

function handleExternalLinks()
{
	if (!document.getElementsByTagName)
	{
		return;
	}
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++)
	{
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && 
				(anchor.getAttribute("rel") == "external" || anchor.getAttribute("rel") == "license"))
		{
			anchor.target = "_blank";
		}
	}
}

function writeEmailLink(elemName)
{
	if (!document.getElementsByTagName)
	{
		return;
	}
	var elem = document.getElementById(elemName);
	elem.innerHTML = "<a href=\"mailto:greg@greghaines.net\" class=\"emailLink\">greg@greghaines.net</a>";
}

// DHTMLHistory Functions

function toggleLayer(elemName)
{
	var elem = document.getElementById(elemName);
	var layers = document.getElementsByClassName('contentLayer');
	for (var i = 0; i < layers.length; i++)
	{
		var layer = layers[i];
		layer.style.visibility = (layer == elem) ? 'visible' : 'hidden'; 
	}
}

function onHistoryChange(newLocation, historyData)
{
	var location = newLocation;
	if (newLocation == "")
	{
		location = "index";
	}
	toggleLayer(location + "Layer");
}

function initializeDhtmlHistory()
{
	dhtmlHistory.initialize();
	dhtmlHistory.addListener(onHistoryChange);
	if (dhtmlHistory.isFirstLoad())
	{
		var location = dhtmlHistory.getCurrentLocation();
		onHistoryChange(location);
	}
}

function doHistoryLink(newLocation, historyData)
{
	var retVal = true;
	if (document.getElementById)
	{
		retVal = false;
		dhtmlHistory.add(newLocation, historyData);
		onHistoryChange(newLocation, historyData);
	}
	return retVal;
}
