// JavaScript Document
	var topMenu;

	// ----------------------------------------------------
	// init
	function initMenu()
	{
		topMenu = new topMenuCls();
	}
	
	// ----------------------------------------------------
	// eventhandler
	var btnClick = function(ev)
	{
		topMenu.btnClick(ev);
	}
	
	var btnOver = function(ev)
	{
		topMenu.btnOver(ev);
	}
	
	var rmBtn = function(ev)
	{
		topMenu.rmBtn(ev);
	}
	
	
	// ----------------------------------------------------
	// Class
	function topMenuCls()
	{
		var subMenuId = false;
		var topMenuId = false;

		var topMenuElements = $('topMenu').getElementsByTagName('a');
		
		// ----------------------------------------------------
		// init
		for (var i in topMenuElements)
		{
			if (topMenuElements[i].href == '')
			{
				addEvent(topMenuElements[i], 'click', btnClick, false);
			}
			addEvent(topMenuElements[i], 'mouseover', btnOver, false);
		}
		addEvent(document, 'click', rmBtn, false);
		
		// ----------------------------------------------------
		// private functions
		// ----------------------------------------------------
		// display button
		var diplaySubMenu = function()
		{
			var mObj = ($(subMenuId)) ? $(subMenuId) : $('sm_empty');
			mObj.style.left = getPageOffsetLeft($(topMenuId)) + "px";
			mObj.style.top = getPageOffsetTop($(topMenuId)) + $(topMenuId).offsetHeight + "px";
			mObj.style.visibility = "visible";
			if (isIE && !mObj.firstChild.style.width)
			{
				var w = mObj.firstChild.offsetWidth;
				mObj.firstChild.style.width = w + "px";
				dw = mObj.firstChild.offsetWidth - w;
				w -= dw;
				mObj.firstChild.style.width = w + "px";
			}
		}
		
		// hide button
		var hideSubMenu = function()
		{
			var mObj = ($(subMenuId)) ? $(subMenuId) : $('sm_empty');
			mObj.style.visibility = "hidden";
		}
		
		// ----------------------------------------------------
		// get left
		var getPageOffsetLeft = function(el)
		{
			return el.offsetLeft + (el.offsetParent ? getPageOffsetLeft(el.offsetParent) : 0);
		}

		// get top
		var getPageOffsetTop = function(el)
		{
			return el.offsetTop + (el.offsetParent ? getPageOffsetTop(el.offsetParent) : 0);
		}
		
		// ----------------------------------------------------
		// get event object target parent node object
		var getEvEl = function(ev)
		{
			if (isIE)
			{
				return event.srcElement.parentNode;
			}
			else
			{
				// FF ignores a tags, so get parent
				return (ev.target.id == '') ? ev.target.parentNode : ev.target;
			}
		}
		
		// ----------------------------------------------------
		// set submenu id
		var setSubMenuId = function()
		{
			var num = topMenuId.split("_");
			subMenuId = "sm_" + num[1];
		}
		
		// ----------------------------------------------------
		// public functions
		// ----------------------------------------------------
		// eventhandler
		this.btnClick = function(ev)
		{
			var newTopMenuId = getEvEl(ev).id;
			if (topMenuId)
			{
				if (newTopMenuId == topMenuId)
				{
					hideSubMenu();
					topMenuId = false;
				}
			}
			else
			{
				topMenuId = newTopMenuId;
				setSubMenuId();
				diplaySubMenu();
			}
		}
		
		this.btnOver = function(ev)
		{
			if (topMenuId)
			{
				var newTopMenuId = getEvEl(ev).id;
				if (newTopMenuId != topMenuId)
				{
					hideSubMenu();
					topMenuId = newTopMenuId;
				}
				setSubMenuId();
				diplaySubMenu();
			}
		}
		
		this.rmBtn = function(ev)
		{
			var el = getEvEl(ev);
			var hide = true;
			for (var i in topMenuElements)
			{
				if (topMenuElements[i] == el)
				{
					hide = false;
					break;
				}
			}
			if (hide)
			{
				hideSubMenu();
				topMenuId = false;
			}
		}
	}
	
