var submenuIndicator = document.createElement("div");
submenuIndicator.style.cssFloat = "right";

function convertListToPopUpMenu(menu){
	menu.removeAttachedMenu = menu_removeAttachedMenu;

	if( menu.parentNode && menu.parentNode.parentNode){
		menu.parentNode.menu = menu;

		var clearer = document.createElement("div");
		// clearer.style.clear = "both";
		// menu.parentNode.appendChild(clearer);

		if( !menu.parentNode.parentNode.menus ){
			menu.parentNode.parentNode.menus = [];
		}
    menu.parentNode.parentNode.menus.push(menu);

		reset_nodes = [menu.parentNode.parentNode, $("main_content")];
		reset_nodes.each(function(node) {
		  node.onmouseover = function(e) {
		    e = e || window.event;
		    ev = e.srcElement || e.target;
  			if( ev == menu.parentNode.parentNode ){
  				for( var i = 0; i < menu.parentNode.parentNode.menus.length; i++ ){
  					menu.parentNode.parentNode.menus[i].reset();
  				}
  			}
  		}

		});

		menu.reset = function(){
			if( this.pathToCurrent ){
				for( var i = 0; i < this.pathToCurrent.length; i++ ){
					this.pathToCurrent[i].attachSubmenu();
				}
			}
		}

	}

	var items = menu.getElementsByTagName("li");

	for( var i = 0; i < items.length; i++ ){
		var submenus = items[i].getElementsByTagName("ul");
		items[i].attachSubmenu = menuitem_attachSubmenu;
		items[i].onmouseover = function(){
			this.attachSubmenu();
		}
		items[i].supermenu = menu;
		if( Element.hasClassName(items[i], "currentItem") ){
			var path = [];
			var parentItem = items[i];
			while( parentItem ){
				path.push(parentItem);
				parentItem = parentItem.supermenu.supermenuItem;
			}
			path.reverse();
			path[0].supermenu.pathToCurrent = path;

		}
		if( submenus.length ){
			items[i].submenu = items[i].removeChild(submenus[0]);
			items[i].submenu.supermenuItem = items[i];
			items[i].submenu.style.cssFloat = "left";


			items[i].insertBefore(submenuIndicator.cloneNode(true),items[i].childNodes[0]);
			convertListToPopUpMenu(items[i].submenu);
		}
	}

}

function menu_removeAttachedMenu(){
	if( this.attachedMenu ){
		this.attachedMenu.removeAttachedMenu();
		this.parentNode.removeChild(this.attachedMenu);
		Element.removeClassName( this.attachedMenu.supermenuItem, "hasAttachedSubmenu" );
		this.attachedMenu = null;
	}
}

function menuitem_attachSubmenu(){
	this.supermenu.removeAttachedMenu();
	if( this.submenu ){
		this.supermenu.attachedMenu = this.submenu;
		this.supermenu.parentNode.insertBefore(this.submenu,this.supermenu.nextSibling);
		Element.addClassName( this, "hasAttachedSubmenu" );
	}
}
