/* Requires miscFunctions.js and prototype.js to be included */

var Menu = function(params, menuFamily){
	var menuId = params.menuId;
	var connectTo = params.connectTo;
	var orientation = params.orientation;
    var menuItems = [];
	var menuFamily = menuFamily || [];

	menuFamily.push(menuId);

	return{
		addMenuItem : function(menuItem){
			menuItems.push(menuItem);
		},
		addToDocument : function(){
			if(!$(params.menuId)){
				// If not already created - onresize may call this function over again, shouldn't rebuild, just reconnect
				var output = [];

				var ulElem = document.createElement("ul");
				ulElem.style.display = "block"; 
				ulElem.style.position = "absolute"; 
				ulElem.style.visibility = "hidden";
				ulElem.className = params.className || "dropdown";
				ulElem.id = menuId;
				ulElem.onmouseover = function(){ showElements(menuFamily);}
				ulElem.onmouseout = function(){ hideElements(menuFamily);}

				var i = 0;
				for(i; i < menuItems.length; i++){
					var liElem = document.createElement("li");
					var useAnchor = menuItems[i].getAsAnchorElement();
					if(menuItems[i].getSubMenu()){
						var showHide = [];
						showHide.push(menuItems[i].getSubMenu());
						showHide.concat(menuFamily);
						liElem.onmouseover = function(){ showElements(showHide);}
						liElem.onmouseout = function(){ hideElements(showHide);}
						var useClass = "hasSubMenu" + params.orientation;
						useAnchor.className = useAnchor.className ? useAnchor.className + " " + useClass : useClass;
					}
					liElem.appendChild(useAnchor);
					ulElem.appendChild(liElem);
				}

				document.getElementsByTagName("BODY")[0].appendChild(ulElem);
			}
			connectPopupToElement({popupId: menuId, connectTo: connectTo, orientation: orientation, offset: params.offset}, false);
		}
	}
};

var MenuItem = function(id, text, link, subMenu){
	var id = id;
	var text = text;
	var link = link;
	var subMenu = subMenu;

	return {
		getAsAnchorElement : function(){
			var elem = document.createElement("a");
			elem.id = id;
			elem.href = link;
			elem.innerHTML = text;
			return elem;
		},
		getSubMenu : function(){
			return subMenu;
		}
	}
};