var USubmenu = new Class({
	Implements: [Events, Options], 
	Binds: ['showMenu', 'hideMenu', 'hideMenuDelayed', 'menuEntered', 'hideMenuDelayedFromContainer'], 
	options: {
		'trigger': null, 
		'delay': 3000
	}, 
	
	initialize: function(args) {
		this.setOptions(args);
		this.isInsideSubmenu = false;
		this.trigger = this.options.trigger;
		this.container = this.trigger.getNext('div.submenu');
		this.container.fade('hide');
		this.container.setStyles({
			'left': this.trigger.getPosition($('navicontainer')).x, 
			'min-width': this.trigger.getSize().x + 42 + 12, 
			'display': 'block'
		});
		this.trigger.addEvent('mouseenter', this.showMenu);
		this.trigger.addEvent('mouseleave', this.hideMenuDelayed);
		this.container.addEvent('mouseenter', this.menuEntered);
		this.container.addEvent('mouseleave', this.hideMenuDelayedFromContainer);
		
	}, 
	
	showMenu: function() {
		this.hideAll();
		this.container.fade(1);	
	}, 
	
	hideMenu: function() {
		this.isInsideSubmenu = false;
		this.container.fade(0);
	}, 
	
	hideAll: function() {
		gAllSubmenus.each(function(sm) { sm.hideMenu() });
	}, 
	
	hideMenuDelayed: function() {
		var self = this;
		var f = function() {
			if(!self.isInsideSubmenu)
				self.hideMenu();
		}
		f.delay(this.options.delay);
	}, 
	
	hideMenuDelayedFromContainer: function() {
		this.isInsideSubmenu = false;
		this.hideMenuDelayed();
	}, 
	
	menuEntered: function() {
		this.isInsideSubmenu = true;
	}
	
	
	
});
