var MenuManager = function(opts) {
	this.onBouton = false;
	this.onMenu = false;
	
	this.bouton	= opts.bouton;
	this.menu	= opts.menu;
	this.klass	= opts.klass;
	
	this.speed	= 100;
	
	this.mouseOutTimer = null;
	
	this.bindOpeningHandlers();
};

MenuManager.prototype = {
	bindOpeningHandlers: function (){
		var _this = this;
		this.bouton.mouseenter(function (){
			_this.onBouton = true;
			clearTimeout(_this.mouseOutTimer);
			_this.mouseOutTimer = null;
			
			_this.openMenu();
			_this.bindClosingHandlers();
		});
		this.menu.mouseenter(function (){
			_this.onMenu = true;
			clearTimeout(_this.mouseOutTimer);
			_this.mouseOutTimer = null;
			_this.bindClosingHandlers();
		});
	},
	bindClosingHandlers: function() {
		var _this = this;
		this.bouton.mouseleave(function (){
			_this.onBouton = false;
			_this.closeMenu();
		});
		this.menu.mouseleave(function (){
			_this.onMenu = false;
			_this.closeMenu();
		});
	},
	removeClosingHandlers: function(){
		this.bouton.unbind('mouseleave');
		this.menu.unbind('mouseleave');
	},
	openMenu: function(){
		this.bouton.addClass(this.klass);
		this.menu.show();
	},
	closeMenu: function(){
		var _this = this;
		if(!this.onBouton && !this.onMenu) {
			this.mouseOutTimer = setTimeout(function (){
				_this.bouton.removeClass(_this.klass);
				_this.menu.hide();
			}, _this.speed);
			_this.removeClosingHandlers();
		}
	}
};
