﻿var Menu = Class.create();
Menu.prototype = {
	initialize: function() {
		this.navigation = $('navigation');
		this.closeElements = [
			{ element: 'airlock', mouseover: false },
			{ element: 'rogerseller', mouseover: false },
			{ element: 'ctl00', mouseover: false },
			{ element: 'main', mouseover: true }
		];
		this.registerEvents();
	},

	registerEvents: function() {
		if (this.navigation) {
			var links = this.navigation.select('a');

			for (var x = 0, y = links.length; x < y; x++) {
				var link = links[x];
				Event.observe(link, 'mouseover', this.onMouseOver.bind(this));
			}

			for (var x = 0; x < this.closeElements.length; x++) {
				var closeElement = this.closeElements[x];
				if ($(closeElement.element)) {
					if (closeElement.mouseover) {
						Event.observe($(closeElement.element), 'mouseover', this.onContentClick.bind(this));
					}
				}
			}

			this.hideMenus();
		}
	},

	hideMenus: function() {
		var menus = this.navigation.select('ul');
		var isHideAll = true;
		if (this.hideMenus.arguments.length > 0) {
			isHideAll = false;
			menus = this.getParentList(this.hideMenus.arguments[0]).select('ul');
		}

		for (var x = 0, y = menus.length; x < y; x++) {
			var menu = menus[x];
			if (menu.hasClassName('active')) {
				menu.previous().removeClassName('active');
				menu.removeClassName('active');
			}
		}
	},

	getParentList: function(element) {
		var isRoot = false;
		while (!isRoot) {
			if (element == null || !element.up) {
				return null;
			}

			element = element.up();
			if (element.tagName == 'UL') {
				return element;
			}
		}

		return null;
	},

	onMouseOver: function(e) {
		var element = Event.element(e);
		var menu = element.next();

		this.hideMenus(element);
		if (menu != null && menu.tagName == 'UL') {
			element.addClassName('active');
			menu.addClassName('active');
		}
	},

	onContentClick: function(e) {
		this.hideMenus();
	}
};

var menu;
FastInit.addOnLoad(function() {
	menu = new Menu();
});

