/*
	YUIDomCollapse by Christian Heilmann
	Version 1.0 / May 2007
	License: http://creativecommons.org/licenses/by/3.0/
	Homepage: http://onlinetools.org/tools/yuidomcollapse/
*/
YAHOO.namespace('otorg');
YAHOO.otorg.DomCollapse={
	init:function(){
		var css=YAHOO.otorg.DomCollapse.css;
		if(typeof(css)!=='undefined'){
			var bookmark=window.location.hash.replace('#','');
			var elms=YAHOO.util.Dom.getElementsByClassName(css.triggerClass);
			for(var i=0,j=elms.length;i<j;i++){
				if(elms[i].nodeName.toLowerCase()!=='a'){
					var t=YAHOO.otorg.DomCollapse.getNext(elms[i]);
					if(t){
						var newID=t.id || YAHOO.util.Dom.generateId();
						t.setAttribute('id',newID);
						var a=document.createElement('a');
						a.setAttribute('href','#'+newID);
						var c=elms[i].innerHTML;
						a.innerHTML=elms[i].innerHTML;
						elms[i].innerHTML='';
						elms[i].appendChild(a);
						if(newID!==bookmark){
							YAHOO.util.Dom.addClass(elms[i],css.parentClass);
							YAHOO.util.Dom.addClass(t,css.hideClass);
						} else {
							YAHOO.util.Dom.addClass(elms[i],css.openClass);
							YAHOO.util.Dom.removeClass(t,css.hideClass);
						};
						YAHOO.util.Event.on(a, 'click', YAHOO.otorg.DomCollapse.toggle);
					};
				}
				else {
					var newID=elms[i].href.replace(/.*#/,'');
					var t=document.getElementById(newID) || YAHOO.otorg.DomCollapse.getNext(elms[i]);
					if(t!==null){
						if(t.id!==newID){
							newID=t.id;elms[i].setAttribute('href','#'+newID);
						};
						if(newID!==bookmark){
							YAHOO.util.Dom.addClass(elms[i],css.parentClass);
							YAHOO.util.Dom.addClass(t,css.hideClass);
						} else {
							YAHOO.util.Dom.addClass(elms[i],css.openClass);
						};
						YAHOO.util.Event.on(elms[i], 'click', YAHOO.otorg.DomCollapse.toggle);
					};
				};
			};
		};
	},getNext:function(o){
		var t=o.nextSibling;
		if(t){
			while(t.nodeType!==1&&t.nextSibling){
				t=t.nextSibling;
			}
		}
		return t;
	},toggle:function(e){
		var css=YAHOO.otorg.DomCollapse.css;
		var parent=YAHOO.util.Dom.hasClass(this,css.triggerClass)?this:this.parentNode;
		var id=this.href.replace(/.*#/,'');
		var t=document.getElementById(id);
		if(t!==undefined){
			if(YAHOO.util.Dom.hasClass(t,css.hideClass)){
				YAHOO.util.Dom.removeClass(t,css.hideClass);
				YAHOO.util.Dom.replaceClass(parent,css.parentClass,css.openClass);
			} else {
				YAHOO.util.Dom.addClass(t,css.hideClass);
				YAHOO.util.Dom.replaceClass(parent,css.openClass,css.parentClass);
				YAHOO.util.Event.preventDefault(e);
			};
		};
	}
};

YAHOO.util.Event.onDOMReady(YAHOO.otorg.DomCollapse.init);