function attachEventListener(target, eventType, functionRef, capture)
{
    if (typeof target.addEventListener != "undefined")
    {
        target.addEventListener(eventType, functionRef, capture);
    }
    else if (typeof target.attachEvent != "undefined")
    {
        target.attachEvent("on" + eventType, functionRef);
    }
    else
    {
        return false;
    }

    return true;
};




function detachEventListener(target, eventType, functionRef, capture)
{
    if (typeof target.removeEventListener != "undefined")
    {
        target.removeEventListener(eventType, functionRef, capture);
    }
    else if (typeof target.detachEvent != "undefined")
    {
        target.detachEvent("on" + eventType, functionRef);
    }
    else
    {
        return false;
    }

    return true;
};

//


function hasClass(target, classValue)
{
	var pattern = new RegExp("(^| )" + classValue + "( |$)");

	if (target.className.match(pattern))
	{
		return true;
	}

	return false;
};




function addClass(target, classValue)
{
	if (!hasClass(target, classValue))
	{
		if (target.className == "")
		{
			target.className = classValue;
		}
		else
		{
			target.className += " " + classValue;
		}
	}

	return true;
};




function removeClass(target, classValue)
{
	var removedClass = target.className;
	var pattern = new RegExp("(^| )" + classValue + "( |$)");

	removedClass = removedClass.replace(pattern, "$1");
	removedClass = removedClass.replace(/ $/, "");

	target.className = removedClass;

	return true;
};

//


addWebblerLoadEvent(initExpandCollapse);



function initExpandCollapse()
{
	var modules = [document.getElementById("subNavigation")];
	
	for (var i in modules)
	{
		var h4s = modules[i].getElementsByTagName("h4");

		for (var i = 0; i < h4s.length; i++)
		{
			var newA = document.createElement("a");
			newA.setAttribute("href", "#");
			newA.setAttribute("title", "Expand/Collapse");
			attachEventListener(newA, "mousedown", mousedownExpandCollapse, false);
			newA.onclick = clickExpandCollapse;
			
				var newImg = document.createElement("img");
				newImg.setAttribute("src", "/images/expand-collapse-research.png");
				newImg.setAttribute("alt", "Expand/Collapse");
				newA.appendChild(newImg);
				
			h4s[i].appendChild(newA);
		}
	}
	
	return true;
};




function mousedownExpandCollapse(event)
{
	if (typeof event == "undefined")
	{
		event = window.event;
	}
	
	if (typeof event.stopPropagation != "undefined")
	{
		event.stopPropagation();
	}
	else
	{
		event.cancelBubble = true;
	}
	
	return true;
};




function clickExpandCollapse()
{
	if (!hasClass(this.parentNode.parentNode, "collapsed"))
	{
		addClass(this.parentNode.parentNode, "collapsed");
	}
	else
	{
		removeClass(this.parentNode.parentNode, "collapsed");
	}
	
	return false;
};