		var expandedTriggerClass='triggerexpanded';
		var normalTriggerClass='triggernormal';
		var hoverTriggerClass='triggerhover';
		var normalElementClass='elementnormal';
		var collapsedElementClass='elementcollapsed';
		var collapsedElements=new Array();
		var triggerElements=new Array();
	        function domCollapse()
		{
			if(document.getElementById && document.createTextNode)
			{
				//parentElementId='collapsesection';
				//triggerelements='h2';
				var triggerClass=/trigger/;
	
				var elms,tohide,colobj,elementsToCheck,triggerelements,parentElementId;
				elementsToCheck=triggerelements?triggerelements:'*';
				if(parentElementId)
				{
					elms=document.getElementById('parentElementId').getElementsByTagName(elementsToCheck);
				} else {
					elms=document.getElementsByTagName(elementsToCheck);
				}
				for (i=0;i<elms.length;i++)
				{
					if(triggerClass.test(elms[i].className))
					{
						tohide=elms[i].nextSibling;
						while(tohide.nodeType!=1)
						{
							tohide=tohide.nextSibling;
						}
						collapsedElements.push(tohide)
						triggerElements.push(elms[i])
						juggleClass(tohide,normalElementClass,0);
						juggleClass(tohide,collapsedElementClass,1);
						elms[i].colobj=tohide;
						elms[i].onmouseover=function(){doTriggerHover(this);}
						elms[i].onmouseout=function(){juggleClass(this,hoverTriggerClass,0);}
						elms[i].onclick=function(){doDomCollapse(this,this.colobj);return false}
						elms[i].className=elms[i].className+' '+normalTriggerClass;
					}
				}
			}
		}
		function doTriggerHover(o)
		{
			if(!checkClass(hoverTriggerClass,o) && !checkClass(expandedTriggerClass,o))
			{
				juggleClass(o,hoverTriggerClass,1);
			}
		}
		function doDomCollapse(o,t)
		{
			if(t)
			{
				if(checkClass(collapsedElementClass,t))
				{
					juggleClass(t,collapsedElementClass,0);
					juggleClass(t,normalElementClass,1);
					juggleClass(o,normalTriggerClass,0);
					juggleClass(o,expandedTriggerClass,1);
				}else{
					juggleClass(t,normalElementClass,0);
					juggleClass(t,collapsedElementClass,1);
					juggleClass(o,expandedTriggerClass,0);
					juggleClass(o,normalTriggerClass,1);
				}
			}
		}
		function doDomCollapseAll(state){
			var i,o,t;
			for(i=0;i<collapsedElements.length;i++){
				t=collapsedElements[i];	
				o=triggerElements[i];	
				if(state==1){
					juggleClass(t,collapsedElementClass,0);
					juggleClass(t,normalElementClass,1);
					juggleClass(o,normalTriggerClass,0);
					juggleClass(o,expandedTriggerClass,1);
				} else {
					juggleClass(t,normalElementClass,0);
					juggleClass(t,collapsedElementClass,1);
					juggleClass(o,expandedTriggerClass,0);
					juggleClass(o,normalTriggerClass,1);
				}
			}
		}
		function juggleClass(o,c,s)
		{
			if(s==0) 
			{
				o.className=o.className.replace(c,'');	
			}
			if (s==1 && !checkClass(c,o))
			{
				o.className+=' '+c
			}
		}
		function checkClass(c,o)
		{
			var re=new RegExp('\\b'+c+'\\b');
			return re.test(o.className);
		}

		window.onload=domCollapse;
	

