/* YADM - Yet another dynamic menu, taken from http://www.onlinetools.org/tools/yadm/
   MODIFIED BY INNOBIT, ML
*/
// function to show and hide the nested lists and add the classes to the parent LIs
var yadm_mmoveevt = null;
var yadm_docmousemove = 0;
function yadm() {
	var parentClass='isParent';
	var activeParentClass='isActive';
	var preventHoverClass='nohover';
	var indicateJSClass='dhtml';
	var toHideClass='hiddenChild';
	var toShowClass='shownChild';
	var currentClass='current';
	var d=document.getElementById('sectionsNav');
	if(!document.getElementById && !document.createTextNode){return;}
	if(d){
		d.className+=d.className==''?indicateJSClass:' '+indicateJSClass;
		var lis,i,firstUL,j,apply;
		lis=d.getElementsByTagName('li');
		for(i=0;i<lis.length;i++) {
			firstUL=lis[i].getElementsByTagName('ul')[0]
			if(firstUL) {
				lis[i].childNodes[0].onclick=function(){return false;}
				lis[i].className+=lis[i].className==''?parentClass:' '+parentClass;
				apply=true;
				if(new RegExp('\\b'+currentClass+'\\b').test(lis[i].className)){apply=false;}
				if(apply){
					for(j=0;j<firstUL.getElementsByTagName('li').length;j++){
						if(new RegExp('\\b'+currentClass+'\\b').test(firstUL.getElementsByTagName('li')[j].className)){apply=false;break}
					}
					firstUL.className+=firstUL.className==''?toHideClass:' '+toHideClass;
					if(new RegExp('\\b'+preventHoverClass+'\\b').test(d.className)) {
						lis[i].onclick=function(){doyadm(this);}
					} else {
						lis[i].onclick=function(){doyadm(this);}
						lis[i].onmouseover=function(){doyadm(this);}
						lis[i].onmouseout=function(){doyadm(null);}
					}
				} else {
					lis[i].keepopen=1;
					firstUL.className+=firstUL.className==''?toShowClass:' '+toShowClass;
					lis[i].className=lis[i].className.replace(parentClass,activeParentClass);
				}
			}
		}
	}
	function doyadm(o) {
		var childUL,isobj,swap;
		lis=d.getElementsByTagName('li');
	    var hideboxobj = null;
		for(i=0;i<lis.length;i++){
			isobj=lis[i]==o;
			swap=function(tmpobj,tmporg,tmprep){
				tmpobj.className=tmpobj.className.replace(tmporg,tmprep)		
			}
			if(!lis[i].keepopen){
				childUL=lis[i].getElementsByTagName('ul')[0];
				
				if(childUL){	
					if(new RegExp('\\b'+preventHoverClass+'\\b').test(d.className)){
						if(new RegExp('\\b'+activeParentClass+'\\b').test(lis[i].className)){
							swap(childUL,isobj?toShowClass:toHideClass,isobj?toHideClass:toShowClass);		
							swap(lis[i],isobj?activeParentClass:parentClass,isobj?parentClass:activeParentClass);
							if (!isobj) {
								hideSelectBox(childUL);
								hideboxobj = childUL;
							}
						} else {
							swap(childUL,isobj?toHideClass:toShowClass,isobj?toShowClass:toHideClass);
							swap(lis[i],isobj?parentClass:activeParentClass,isobj?activeParentClass:parentClass);
							if (isobj) hideboxobj = childUL;
						}
					} else {
						swap(childUL,isobj?toHideClass:toShowClass,isobj?toShowClass:toHideClass);
						swap(lis[i],isobj?parentClass:activeParentClass,isobj?activeParentClass:parentClass);
						if (isobj) hideboxobj = childUL;
					}
				}
			}
		}
		if (hideboxobj != null) {
			yadm_hideSelectBox(hideboxobj);
			if (document.onmousemove != null) {
				yadm_mmoveevt = document.onmousemove;
				document.onmousemove = null;
			}
		} else {
			yadm_docmousemove ++;
			window.setTimeout("resetDocMouseMove();",1000);
			yadm_showSelectBox();
		}
	}
}
function resetDocMouseMove() {
	if (yadm_docmousemove > 0) yadm_docmousemove--;
	if (yadm_mmoveevt != null && yadm_docmousemove == 0) {
		document.onmousemove = yadm_mmoveevt;
  }
}
yadmOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
yadmNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
yadmIe4 = (document.all) ? true : false;
yadmIe55 = false;
// Hides SELECT boxes that will be under the popup
function yadm_hideSelectBox(over) {
	if(yadmNs4 || yadmOp || yadmIe55) return;
	var px, py, pw, ph, sx, sw, sy, sh, selEl, v;
	if(yadmIe4) v = 0;
	else {
		v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
		if(!v) return;
		v = parseInt(v[1]);
	}
	if (v < 20030624) {
		px = pageLocation(over,'Left')-over.offsetLeft;
		py = pageLocation(over,'Top');
		pw = over.offsetWidth;
		ph = over.offsetHeight;
		selEl = (yadmIe4) ? document.all.tags("SELECT") : document.getElementsByTagName("SELECT");
		for (var i=0; i<selEl.length; i++) {
			if(!yadmIe4 && selEl[i].size < 2) continue;
			sx = pageLocation(selEl[i],'Left');
			sy = pageLocation(selEl[i],'Top');
			sw = selEl[i].offsetWidth;
			sh = selEl[i].offsetHeight;
			if((px+pw) < sx || px > (sx+sw) || (py+ph) < sy || py > (sy+sh)) continue;
			selEl[i].isHidden = 1;
			selEl[i].style.visibility = 'hidden';
		}
	}
}
// Shows previously hidden SELECT Boxes
function yadm_showSelectBox() {
	if(yadmNs4 || yadmOp || yadmIe55) return;
	var selEl, v;
	if(yadmIe4) v = 0;
	else {
		v = navigator.userAgent.match(/Gecko\/(\d{8})/i);
		if(!v) return; 
		v = parseInt(v[1]);
	}
	if(v < 20030624) {
		selEl = (yadmIe4) ? document.all.tags("SELECT") : document.getElementsByTagName("SELECT");
		for (var i=0; i<selEl.length; i++) {
			if(typeof selEl[i].isHidden !=  'undefined' && selEl[i].isHidden) {
				selEl[i].isHidden = 0;
				selEl[i].style.visibility = 'visible';
			}
		}
	}
}
// function gets the total offset properties of an element
function pageLocation(o,t){
	var x = 0
	while(o.offsetParent){
		x += o['offset'+t]
		o = o.offsetParent
	}
	x += o['offset'+t]
	return x
}
// init
addOnloadEvent(yadm);