function addEvent( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/**************************************************/
/*START: functions Toggle Collapsable List */
var state_a = "collapsed";
var state_b = "expanded";
var title_a = "expand";
var title_b = "collapse";
var icon_class_to_check = "toggle-icon";

function initCollapsableLists()
{
	var iconTags = document.getElementsByTagName("a");
	for (var i = 0; i < iconTags.length ; i++)
	{
		if(iconTags[i].className == icon_class_to_check)
		{
			iconTags[i].title = title_a;
		}
	}
}

function toggleCollapsable(obj)
{
	hideAllCollapsable(obj);
	
	var collapsable_obj = getParentCollapsable(obj);
	if(collapsable_obj.className.indexOf(state_b) != -1)
	{
		var re = new RegExp(state_b);
		collapsable_obj.className = collapsable_obj.className.replace(re, state_a);
		obj.title = title_a;
	}
	else
	{
		var re = new RegExp(state_a);
		collapsable_obj.className = collapsable_obj.className.replace(re, state_b);
		collapsable_obj.style.display='block';
		obj.title = title_b;
		window.expanded_item=obj;
	}
	obj.blur();
}

function hideCollapsable(obj)
{
	var collapsable_obj = getParentCollapsable(obj);

	collapsable_obj.style.display='none';

}

function showCollapsable(obj)
{
	var collapsable_obj = getParentCollapsable(obj);

	collapsable_obj.style.display='block';

}

function hideAllCollapsable(obj)
{
	var collapsable_obj = getParentCollapsable(obj);
	
	var foldout_obj = getParentElement(collapsable_obj);
	var root_obj = getParentElement(foldout_obj);
	
	var expanded_elements = getElementsByClass("collapsable" + " " + state_b, root_obj, "dl")
	
	for (var i=0; i<expanded_elements.length; i++) 
		expanded_elements[i].className = "collapsable" + " " + state_a;
}

function getParentCollapsable(obj)
{
	var collapsable_obj = getParentElement(obj);
	while (collapsable_obj.nodeName != 'DL' && collapsable_obj.nodeName != 'BODY')
	collapsable_obj = getParentElement(collapsable_obj);
	return collapsable_obj;
}

function getParentElement(obj)
{
	if (obj.parentElement) {
		return obj.parentElement;
	} else if (obj.parentNode) {
		return obj.parentNode;
	}
}

addEvent(window, 'load', initCollapsableLists);

/*END: functions Toggle Collapsable List */
/**************************************************/
