	var ua = navigator.userAgent.toLowerCase();
	var client = {
		isStrict:   document.compatMode == 'CSS1Compat',
		isOpera:    ua.indexOf('opera') > -1,
		isIE:       ua.indexOf('msie') > -1,
		isIE7:      ua.indexOf('msie 7') > -1,
		isSafari:   /webkit|khtml/.test(ua),
		isWindows:  ua.indexOf('windows') != -1 || ua.indexOf('win32') != -1,
		isMac:      ua.indexOf('macintosh') != -1 || ua.indexOf('mac os x') != -1,
		isLinux:    ua.indexOf('linux') != -1
	};
	client.isBorderBox = client.isIE && !client.isStrict;
	client.isSafari3 = client.isSafari && !!(document.evaluate);
	client.isGecko = ua.indexOf('gecko') != -1 && !client.isSafari;
	var ltIE7 = client.isIE && !client.isIE7;
	var outCount = 0;

function showDropdowns() {
	var paras = $A(document.getElementsByTagName('select'));
	paras.each(Element.show);
}

Element.addMethods({
	downChild: function(element, expression, index) {
		element = $(element);
		if (arguments.length == 1) return element.firstDescendant();
		var descendants = element.childElements();
		return expression ? Selector.findElement(descendants, expression, index) :
			descendants[index || 0];
	},
	
	selectChildren: function() {
		var args = $A(arguments), element = $(args.shift());
		var res1 = Selector.findChildElements(element, args);
	
		var res = $A([]);
		for (var i = 0; i < res1.length; i++)
		{
			if (res1[i].parentNode == element)
			res.push(res1[i])
		}	
	
		return res;
	}

});


var MainMenu = Class.create({
	initialize: function(container, activeClassName)
	{
		this.lengths = new Array();
		this.heights = new Array();
		this.offsets = new Array();
		this.divHider = $('divHider');
		this.frameHider = $('frameHider');
	
		this.domContainer = $(container);
		this.activeClassName = activeClassName;

		var menuItems = this.domContainer.selectChildren('li');
		var len = 0;
		var ofs = 1;
	
		for (var i = 0; i < menuItems.length; i++)
		{
			var domMenuItem = menuItems[i];
/*
			if (domMenuItem.hasClassName(this.activeClassName))
			this.domDefaultMenuItem = domMenuItem;
*/
			len = domMenuItem.getWidth()+58;
			this.lengths[i] = len;
			this.offsets[i] = ofs;
			this.heights[i] = 0;
			ofs = ofs+len;

			domLink = domMenuItem.select('a');
			if (domLink.length>1) {
				domLink.fx1 = this.onMouseOverLink.bindAsEventListener();
				Event.observe(domLink[0], 'mouseover', domLink.fx1);
			}

			domMenuItem.fx1 = this.onMouseOver.bindAsEventListener(this, domMenuItem, i);
			domMenuItem.fx2 = this.onMouseOut.bindAsEventListener(this, domMenuItem);
			Event.observe(domMenuItem, 'mouseover', domMenuItem.fx1);
			Event.observe(domMenuItem, 'mouseout', domMenuItem.fx2);

			var domSubMenus = domMenuItem.select('ul > li > ul');

			if (domSubMenus.length)
			{
				for (var j=0; j<domSubMenus.length; j++) {
					var tmp = domSubMenus[j].up();
					tmp.fx1 = this.onMouseOver2.bindAsEventListener(this, tmp);
					tmp.fx2 = this.onMouseOut2.bindAsEventListener(this, tmp);
					Event.observe(tmp, 'mouseover', tmp.fx1);
					Event.observe(tmp, 'mouseout', tmp.fx2);
				}
			}
		}
	
		if (this.domDefaultMenuItem)
		{
			var domSubmenu = this.domDefaultMenuItem.downChild('ul');
			if (domSubmenu)
			{
				domSubmenu.style.display = 'block';
			}
		}	
	},
	
	onMouseOver: function(event, domLi, num)
	{
		if (this.queuedHandler)
			this.queuedHandler();

		if (this.inactivityTimer)
			clearTimeout(this.inactivityTimer);
		
		if (this.domDefaultMenuItem)
			this.domDefaultMenuItem.removeClassName(this.activeClassName);

		if (this.domDefaultMenuItem && this.domDefaultMenuItem != domLi)
		{
			var domSubmenu = this.domDefaultMenuItem.downChild('ul');
			if (domSubmenu) {
				domSubmenu.style.display = 'none';
			}
		}

		domLi.addClassName(this.activeClassName);
		
		var domSubmenu = domLi.downChild('ul');
		if (domSubmenu)
		{
			domSubmenu.style.display = 'block';
			if (ltIE7 && num==1) {
				if (!this.heights[1])
					this.heights[1] = domSubmenu.getHeight();
				this.divHider.style.left = this.offsets[1]+'px';
				this.divHider.style.width = this.lengths[1]-1+'px';
				this.divHider.style.height = this.heights[1]+'px';
				this.divHider.style.display = 'block';
			}
		}
	},
	
	onMouseOut: function(event, domLi)
	{
		this.queuedHandler = this.onMouseOutDelayed.bind(this, domLi);
		this.inactivityTimer = setTimeout(this.onInactivity.bind(this), 200);
		if (this.queuedHandler2)
			this.queuedHandler2();
	},
	
	onMouseOutDelayed: function(domLi)
	{
		var domSubmenu = domLi.downChild('ul');
		if (domSubmenu)
		{
			domSubmenu.style.display = 'none';
			if (ltIE7 && !this.inMenu) {
				this.divHider.style.width = 0+'px';
				this.divHider.style.height = 0+'px';
				this.divHider.style.display = 'none';
			}
		}
	
		domLi.removeClassName(this.activeClassName);
	},
	
	onMouseOver2: function(event, domLi)
	{
		if (this.queuedHandler2)
			this.queuedHandler2();
	
		if (this.domDefaultMenuItem)
			this.domDefaultMenuItem.removeClassName(this.activeClassName);

		if (this.domDefaultMenuItem && this.domDefaultMenuItem != domLi)
		{	
			var domSubmenu = this.domDefaultMenuItem.downChild('ul');
			if (domSubmenu)
			{
				domSubmenu.style.display = 'none';
			}
		}
		

		domLi.addClassName(this.activeClassName);

		var domSubmenu = domLi.downChild('ul');
		if (domSubmenu)
		{
			domSubmenu.style.display = 'block';
		}
	
	},
	
	onMouseOut2: function(event, domLi)
	{
		this.queuedHandler2 = this.onMouseOut2Delayed.bind(this, domLi);
	},
	
	onMouseOut2Delayed: function(domLi)
	{
		var domSubmenu = domLi.downChild('ul');
		if (domSubmenu)
		{
			if (client.isIE) {
				outCount++; //a hack to remove blinking in IE
				if (outCount >= 2) {
					domSubmenu.style.display = 'none';
					outCount = 0;
				}
			} else {
				domSubmenu.style.display = 'none';
			}
		}
	
		domLi.removeClassName(this.activeClassName);
	},
	
	onInactivity: function()
	{
		if (this.queuedHandler)
		this.queuedHandler();
	
		if (this.domDefaultMenuItem)
		{	
			this.domDefaultMenuItem.addClassName(this.activeClassName);
		
			var domSubmenu = this.domDefaultMenuItem.downChild('ul');
			if (domSubmenu)
			{
				domSubmenu.style.display = 'block';
			}
		}
	},

	onMouseOverLink: function() {
		var paras = $A(document.getElementsByTagName('select'));
		paras.each(Element.hide);
		setTimeout('showDropdowns()', 1);
	}

});

Event.observe(document, 'dom:loaded', function() {new MainMenu($$('#mainmenuend>ul').first(), 'current')});