function menuController()
{
	var currentObject = this;

	this.menu = new Object();
	this.current = '';

	this.container = document.createElement('DIV');
	this.container.className = 'float-menu';

	this.hide = false;

	this.container.onmouseover = function ()
	{
		currentObject.cancelHide();
	}

	this.container.onmouseout = function ()
	{
		currentObject.startHide();
	}

	this.registerMenu = function (name)
	{
		if (typeof(name) == 'string' && name != '' && (typeof(this.menu[name]) != 'object' || this.menu[name] == null))
		{
			this.menu[name] = new Object();
			this.menu[name].name = name;
			this.menu[name].items = new Array();
			return true;
		}
		return false;
	}

	this.registerMenuItem = function (name, link, title, tooltip, target)
	{
		if (typeof(name)  == 'string' && name  != '' &&
		    typeof(link)  == 'string' &&
		    typeof(title) == 'string' && title != '')
		{
			if (typeof(this.menu[name]) != 'object' || this.menu[name] == null)
			{
				this.registerMenu(name);
			}
			if (typeof(tooltip) != 'string') tooltip = '';
			if (typeof(target) != 'string') target = '';
			var index = this.menu[name].items.length;
			this.menu[name].items[index] = new Object();
			this.menu[name].items[index].menu = this.menu[name];
			this.menu[name].items[index].index   = index;
			this.menu[name].items[index].link    = link;
			this.menu[name].items[index].title   = title;
			this.menu[name].items[index].tooltip = tooltip;
			this.menu[name].items[index].target  = target;
			return true;
		}
		return false;
	}

	this.showMenu = function (name, item)
	{
		if (typeof(name) == 'string' && name != '' &&
		    typeof(this.menu[name]) == 'object' && this.menu[name] != null &&
		    this.menu[name].items.length > 0)
		{
			var html = '';
			var menu = this.menu[name];
			var ieFixFlag = (window.navigator.userAgent.toLowerCase().indexOf('msie') >= 0);
			if (ieFixFlag)
			{
				ieFixFlag = (window.navigator.userAgent.toLowerCase().indexOf('msie 8') < 0);
			}

			for (var i = 0; i < menu.items.length; i++)
			{
				html += '<a href="' + escape(menu.items[i].link) + '" class="float-item" ' + (menu.items[i].tooltip != '' ? ' title="' + escape(menu.items[i].tooltip) + '"' : '') + (menu.items[i].target != '' ? ' target="' + escape(menu.items[i].target) + '"' : '') + '>' + menu.items[i].title + '</a>\n';
			}
			this.current = name;
			this.container.innerHTML = html;
			this.container.style.display = 'block';
			this.container.style.left = Math.floor((document.body.offsetWidth - 987) / 2 + 225) + 'px';

			this.container.style.top = (ieFixFlag ? 326 : 0) + item.offsetTop + 'px';
			menu.item = item;
			menu.className = menu.item.className;
			menu.item.className = 'left-menu-item-hover';
			if (typeof(this.container.parentNode) != 'object' || this.container.parentNode == null || typeof(this.container.parentNode.tagName) != 'string')
			{
				document.body.appendChild(this.container);
			}	
			this.hide = false;
			return true;
		}
		return false;
	}

	this.startHide = function()
	{
		var currentObject = this;
		var callback = function ()
		{
			if (currentObject.hide)
			{
				currentObject.hideMenu();
				this.hide = false;
			}
		}
		this.hide = true;
		setTimeout(callback, 200);
	}

	this.cancelHide = function()
	{
		this.hide = false;
	}

	this.hideMenu = function ()
	{
		if (this.current != '') {
			this.menu[this.current].item.className = this.menu[this.current].className;
		}
		this.container.style.display = 'none';
	}
}
