/* ---------------------------------------- *\
   Terrace - Tabbed multilevel navigation
   (c) 2008-2009 Agiles / Jaap-Hein  Wester
   
   Version 1.1
   Needs mootools 1.2 Core (No plugins) 
\* ---------------------------------------- */

itemsize = 24; // height of listitems
paddingsize = (Browser.Engine.trident && (Browser.Engine.version < 5)) ? -2 : 1; // padding needed under submenus

window.addEvent('domready', function() {
	var menu = $('nav');
	menu.addClass('nav-active');
	
	var menulist = menu.getElement('ul');
	var menuFx = new Fx.Tween(menulist, {'link': 'cancel'});
	var sizeMenu = function (size) {
		size = (size != 0) ? size+paddingsize : size;
		menuFx.start('height', size+itemsize);
	}
		
	topmenu = $$('#nav > ul > li');
	topmenu.each(function (el) {
		var submenusize;
		var subsubmenuoffset;
		var subsubmenusize;
		
		submenus = el.getElements('ul');
		submenus.each(function (ul) {
			ul.setStyle('display', 'none');
			parents = el.getElements('li');
			parents.each(function (li) {
				if (li.getElement('ul')) {
					li.addClass('nav-parent');
					li.addEvent('mouseenter', function() {
						this.addClass('nav-parent-active');
						subsubmenu = this.getElement('ul');
						if (subsubmenu) {
							subsubmenu.setStyle('display', 'block');
							subsubmenuoffset = this.getPosition(this.getOffsetParent());
							subsubmenusize = subsubmenu.getSize();
							if (subsubmenuoffset.y+subsubmenusize.y > submenusize.y) {
								sizeMenu(subsubmenuoffset.y+subsubmenusize.y);
							}
						}
					});
					li.addEvent('mouseleave', function() {
						this.removeClass('nav-parent-active');
						subsubmenu = this.getElement('ul');
						if (subsubmenu) {
							subsubmenu.setStyle('display', 'none');
							sizeMenu(submenusize.y);
						}
					});
				}
				else {
					li.addClass('nav-item');
				}
			});
		});

		el.addClass('nav-top');
		el.addEvent('mouseenter', function() {
			this.addClass('nav-top-active');
			submenu = this.getElement('ul');
			if (submenu) {
				submenu.setStyle('display', 'block');
				submenusize = submenu.getSize();
				sizeMenu(submenusize.y);
			}
		});
		el.addEvent('mouseleave', function() {
			this.removeClass('nav-top-active');
			if (submenu) {
				submenu.setStyle('display', 'none');
				sizeMenu(0);
			}
		});
	});
});
