/**
 * topmenu.js - controls drop down menus system for top menu bar
 * depends on YUI3 library
 */

YUI().use('node','anim', function(Y) {
	
	var activeMenu = false;
	var menuActivated = false;
	var menu;
	
	// function to show menu
	var showMenu = function(e) {
		
		if (!activeMenu) {
			
			if (activeMenu) {
				activeMenu.setStyle('display','none');
				activeMenu = false;
				Y.one('#menucloser').setStyle('display','none');
			}
			
			// extract menuheader id
			var id = e.target.get('id');
			menu = id + '-menu';
			e.target.blur();
			Y.one('#'+menu).setStyle('left', (getPageOffsetLeft(Y.one('#'+id))-1)+'px');
			Y.one('#'+menu).setStyle('opacity', '0');
			Y.one('#'+menu).setStyle('display', 'block');
			
			var fader = new Y.Anim({
				node: Y.one('#'+menu),
				to: { opacity: 1 },
				duration: 0.4
			});
			fader.on('end', menuReady);
			fader.run();
		}
		
	}
	
	var menuReady = function(e) {
		activeMenu = Y.one('#'+menu);
		Y.one('#menucloser').setStyle('display','block');
	}
	
	var hideMenu = function(e) {
		
		activeMenu.setStyle('display','none');
		activeMenu = false;
		Y.one('#menucloser').setStyle('display','none');
		menuActivated = false;
	};
	
	var getPageOffsetLeft = function(o) {
		var x;
		x = o.get('offsetLeft');
		if (o.get('offsetParent') !=  null)
			x += getPageOffsetLeft(o.get('offsetParent'));
		return x;
	};
	
	var initMenus = function(e) {

		// subscribe event handlers
		Y.all('.menuheader').on('mouseover', showMenu);
		Y.all('.menu').on('mouseover', activateMenu);
		Y.one('#menucloser').on('mouseover', hideMenu);
	};
	
	var activateMenu = function (e) {
		menuActivated = true;
	}
	
	Y.on('domready', initMenus);
});
