var oneMultiMenu = new Object ({
	init: function (contextID) {
		var context = document.getElementById(contextID);
		this.tlms = typeof(context)!=="undefined"?YAHOO.util.Dom.getChildrenBy(context,YAHOO.util.Dom.hasClass('hasSub')):YAHOO.util.Dom.getElementsByClassName('hasSub');
		YAHOO.util.Event.addListener(this.tlms, 'mouseover', oneMultiMenu.expand);
		YAHOO.util.Event.addListener(this.tlms, 'mouseout', oneMultiMenu.contract);
		this.slms = typeof(context)!=="undefined"?YAHOO.util.Dom.getChildrenBy(context,YAHOO.util.Dom.hasClass('subMenu')):YAHOO.util.Dom.getElementsByClassName('subMenu');
		YAHOO.util.Event.addListener(this.slms, 'mouseover', oneMultiMenu.keepAlive);
		YAHOO.util.Event.addListener(this.slms, 'mouseout', oneMultiMenu.contract);
	},
	expand: function (e) {
		this.obj = e.target || e.srcElement;
		while(this.obj.tagName.toUpperCase() != "LI") {
			this.obj = this.obj.parentNode;
		}
		if(YAHOO.util.Dom.hasClass(this.obj, "menuColumn")||YAHOO.util.Dom.hasClass(this.obj, "menuRow")) {
			oneMultiMenu.killAll();
			clearTimeout(oneMultiMenu.closeTimer);
			oneMultiMenu.closeTimer = [];
			YAHOO.util.Dom.addClass(this.obj, "selected");
			this.setPos = "main";
		}
		else {
			this.setPos = "sub";
			oneMultiMenu.killSiblings(e);
		}
		this.subMenu = this.obj.getElementsByTagName('ul');
		oneMultiMenu.active = this.subMenu[0];
		oneMultiMenu.setSubPos(this.obj, this.setPos);
		YAHOO.util.Dom.setStyle(this.subMenu[0], 'display', '');
	},
	setSubPos: function (parent, type) {
		this.pPos = YAHOO.util.Dom.getRegion(parent);
		this.pmPos = YAHOO.util.Dom.getRegion(parent.parentNode);
		switch(type) {
			case "main":
				if(YAHOO.util.Dom.hasClass(parent.parentNode, "GeneralVerticalMenu")){
					YAHOO.util.Dom.setStyle(oneMultiMenu.active, "top", this.pPos.top-this.pmPos.top+"px");
					YAHOO.util.Dom.setStyle(oneMultiMenu.active, "left", this.pmPos.width+"px");
				} else {
					YAHOO.util.Dom.setStyle(oneMultiMenu.active, "top", this.pPos.bottom-this.pPos.top+"px");
					YAHOO.util.Dom.setStyle(oneMultiMenu.active, "left", this.pPos.left-this.pmPos.left+"px");
				}
				break;
			case "sub":
				YAHOO.util.Dom.setStyle(oneMultiMenu.active, "top", this.pPos.top-this.pmPos.top+"px");
				YAHOO.util.Dom.setStyle(oneMultiMenu.active, "left", this.pmPos.right-this.pmPos.left+"px");
				break;
		}
	},
	contract: function (e) {
		if(!oneMultiMenu.closeTimer || oneMultiMenu.closeTimer == "") {
			oneMultiMenu.closeTimer = setTimeout("oneMultiMenu.killAll()", 500);
		}
	},
	killSiblings: function (e) {
		this.obj = e.target || e.srcElement;
		this.item = this.obj;
		while(this.obj.tagName.toUpperCase() != "UL") {
			this.obj = this.obj.parentNode;
		}
		this.items = this.obj.getElementsByTagName('li');
		YAHOO.util.Dom.removeClass(this.items, "selected");
		while(this.item.tagName.toUpperCase() != "LI") {
			this.item = this.item.parentNode;
		}
		if(!(YAHOO.util.Dom.hasClass(this.item, "menuColumn"))&&!(YAHOO.util.Dom.hasClass(this.item, "menuRow"))) {
			YAHOO.util.Dom.addClass(this.item, "selected");
		}
		this.subMenu = this.obj.getElementsByTagName('ul');
		YAHOO.util.Dom.setStyle(this.subMenu, 'left', '-10000px');
	},
	keepAlive: function (e) {
		this.obj = e.target || e.srcElement;
		this.obj = this.obj.parentNode;
		oneMultiMenu.closeTimer = clearTimeout(oneMultiMenu.closeTimer);
		oneMultiMenu.closeTimer = [];
	},
	killAll: function () {
		this.menucont = YAHOO.util.Dom.getElementsByClassName('DynamicMenu');
		for(var x=0;x<this.menucont.length;x++){
			this.menus = this.menucont[x].getElementsByTagName('ul');
			YAHOO.util.Dom.setStyle(this.menus, 'left', '-10000px');
			this.items = this.menucont[x].getElementsByTagName('li');
			YAHOO.util.Dom.removeClass(this.items, "selected");
		}
		clearTimeout(oneMultiMenu.closeTimer);
		oneMultiMenu.active = [];
	}
});
