var accordion = false;
var mainAccordion = false;

var elemIds = new Array();
var elemHeights = new Array();

var idsMain = new Array();
var elemHeightsMain = new Array();

function init()
{
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	
	if (document.getElementById("accordion")) accordion = true;
	if (document.getElementById("mainAccordion")) mainAccordion = true;
	
	var addressString = window.location.toString();
		
	if(accordion)
	{
		var idString = document.getElementById("accordion")
		elemIds = getIds(idString);
		elemHeights = getHeights(idString);
		toggleLinks(idString);
	}
	
	if(mainAccordion)
	{
		var mainIdString = document.getElementById("mainAccordion")
		idsMain = getIds(mainIdString);
		elemHeightsMain = getHeights(mainIdString);
		toggleLinks(mainIdString);
	}
	
	if(addressString.indexOf("#") != -1) 
	{
		var divToOpen = addressString.split("#")[1];
		if(document.getElementById(divToOpen))
		{
			window.location = addressString.split("#")[0] + "#";
			divHead = document.getElementById(divToOpen).parentNode.getElementsByTagName("div")[0];
			divHead.className = "highlight";
			toggle(divToOpen, divHead);			
		}
	}
}

function getIds(accordion)
{
	var divs = accordion.getElementsByTagName("div");
	var ids = new Array();
	
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("body") == -1) continue;
		ids[ids.length] = divs[i].getAttribute("id");
	}
	return ids;
}

function getHeights(accordion)
{
	var divs = accordion.getElementsByTagName("div");
	var heights = new Array();
	
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("body") == -1) continue;
		divs[i].style.display = "block";
		heights[heights.length] = divs[i].offsetHeight;
		changeHeight(divs[i].getAttribute("id"), 0, intervalSpeed);
	}
	return heights;
}

function resetColour(divs)
{
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("head") == -1) continue;
		divs[i].className = "head";
	}
}

function toggleLinks(accordion)
{
	var divs = accordion.getElementsByTagName("div");
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("head") == -1) continue;
		divs[i].style.cursor = "pointer";
		
		divs[i].oldClassName = divs[i].className;
		divs[i].onmouseover = function()
		{
			if(this.className !== "head highlight")
			{ addClass(this,"hover"); }
		}
		
		divs[i].onmouseout = function() 
		{
			if(this.className !== "head highlight")
			{ this.className = this.oldClassName; }
		}
		
		divs[i].onclick = function()
		{
			var link = this.getElementsByTagName("a")[0];
			var id = link.getAttribute("href").split("#")[1];
			resetColour(divs);
			toggle(id, this);
			return false;
		}
	}
}

function findParentNode(parentName, childObj)
{
    var testObj = childObj.parentNode;
    var count = 1;
    while(testObj.getAttribute("id") != parentName) 
    {
        testObj = testObj.parentNode;
        count++;
    }
    if(testObj.getAttribute("id") == parentName) return parentName;
}

function toggle(id, divHead)
{	
	if(!document.getElementById) return false;
	var div = document.getElementById(id);
	var divName = div.getAttribute("id");
	
	var parentIsAccordion = false;
	
	if(div.parentNode.parentNode.getAttribute("id") == "accordion") 
	{ parentIsAccordion = true; }
	
	if(parentIsAccordion)
	{
		var index = elemIds.indexOf(id);
		var divHeight = elemHeights[index];
	}
	else
	{
		var index = idsMain.indexOf(id);
		var divHeight = elemHeightsMain[index];
	}
	
	if(div.style.height == "0px")
	{
		if(parentIsAccordion)
		{ getHeights(document.getElementById("accordion")); }
		else
		{ getHeights(document.getElementById("mainAccordion")); }
		changeHeight(divName, divHeight, intervalSpeed);
		divHead.className = "head highlight";
	}
	else 
	{	
		if(parentIsAccordion)
		{ getHeights(document.getElementById("accordion")); }
		else
		{ getHeights(document.getElementById("mainAccordion")); }
		changeHeight(divName, 0, intervalSpeed);
		divHead.className = "head";
	}
}

addLoadEvent(init);
