function bSubmenuOver(obj){
	obj.className=obj.activeClass;
	clearTimeout(obj.parentNode.hideTimer);

	for(var i=0;i<obj.childNodes.length;i++){
		var cNode=obj.childNodes[i];
		if(obj.childNodes[i].nodeName=="UL"){
			clearTimeout(obj.childNodes[i].hideTimer);
			obj.childNodes[i].hasHideTimer = false;
			bSubmenuShow(obj.childNodes[i]);
		}else{
			if(cNode.nodeName!='#text'){
				obj.childNodes[i].originalClass=obj.childNodes[i].className;
				obj.childNodes[i].className=obj.activeClass;
			}
		}
	}
}
function bSubmenuOut(obj){
	obj.className=obj.originalClass;

	for(var i=0; i<obj.childNodes.length;i++){
		var cNode=obj.childNodes[i];
		if(cNode.nodeName=="UL"){
			cNode.hideTimer = setTimeout('bSubmenuHide("'+obj.menuObjName+'.lists['+cNode.listIndex+']")',cNode.hideDelay);
			//break;
		}else{
			if(cNode.nodeName!='#text') cNode.className=cNode.originalClass;
		}
	}
	if(!obj.highlight_parents){
		pNode = obj.parentNode;
		while(pNode.id!=obj.listId){
			if(pNode.nodeName=="UL"){
				pNode.hideTimer = setTimeout('bSubmenuHide("'+obj.menuObjName+'.lists['+pNode.listIndex+']")',pNode.hideDelay);
			}
			pNode=pNode.parentNode;
		}
	}
}
function bSubmenuHide(index){
	obj=eval(index);
	eval('$JQ(obj).'+obj.disappearString);
}
function bSubmenuShow(index){
	var obj = index;
	eval('$JQ(obj).'+obj.appearString);
	//bm_shadow(obj);
	return;
}
function bSubmenuShowReady(){

}
function bMenu(listId, objName){
	//this.menu = document.getElementById(listId);
	var menufetch=$JQ(listId);
	if(menufetch.length==0)return alert('bMenu error: There is no menu specified at "'+listId+'"');
	this.menu=menufetch.get(0);
	if(listId.charAt(0)=="." || listId.charAt(0)=="#") listId=listId.substring(1);
	this.depth = 1;
	this.links = this.menu.getElementsByTagName('li');
	this.lists = this.menu.getElementsByTagName('ul');
	this.hideDelay = 1000;
	this.highlight_parents=1;
	this.appearString = "show()";
	this.disappearString = "hide()";
	
	this.activeClass = "hover";
	this.initialise = function(){
		this.activeClass = this.activeClass.replace(/^\./,'');
		for(var i=0;i<this.links.length; i++){
			this.links[i].onmouseover = function(e){
				if(!this.highlight_parents){
					e = e || window.event;
					var target = e.srcElement || e.target;
					if (target != this && target.parentNode != this) return;
				}
				bSubmenuOver(this);
			}
			this.links[i].onmouseout = function(e){

				if(!this.highlight_parents){
					e = e || window.event;
					var target = e.srcElement || e.target;
					if (target != this && target.parentNode != this) return;
				}
				bSubmenuOut(this);
			}
			this.links[i].menuObjName = objName;
			this.links[i].numLists = this.lists.length;
			this.links[i].listId = listId;
			this.links[i].activeClass = this.activeClass;
			this.links[i].highlight_parents=this.highlight_parents;
			this.links[i].originalClass = this.links[i].className;
		}
		for(var i=0;i<this.lists.length;i++){
			this.lists[i].listIndex=i;
			this.lists[i].appearString = this.appearString;
			this.lists[i].disappearString = this.disappearString;
			
			this.lists[i].hideDelay = this.hideDelay;
		}
	}
}
function bm_shadow(element){
	var wrap1 = document.createElement("div");
	wrap1.setAttribute("class", "wrap1");
	var wrap2 = document.createElement("div");
	wrap2.setAttribute("class", "wrap2");
	var wrap3 = document.createElement("div");
	wrap3.setAttribute("class", "wrap3");
		   
	var outerNode = element.parentNode;
	outerNode.insertBefore(wrap1, element);
	wrap1.appendChild(wrap2);
	wrap2.appendChild(wrap3);
	outerNode.removeChild(element);
   	wrap3.appendChild(element);
	wrap1.style.top = element.style.top;
}

