Liferay.Menu = new Class({
	initialize: function(params) {
		var instance = this;

		instance._button = jQuery(params.button, params.context || document);
		instance._menu = instance._button.find('ul:first');
		instance._trigger = instance._button.find(params.trigger);

		if (instance._menu.length) {
			instance._run();
		}
	},

	_run: function() {
		var instance = this;

		var lastLi = instance._trigger.find('ul:first li:last-child');

		lastLi.addClass('last');

		var off = function(event) {
			instance._button.removeClass('visible');
		}

		var on = function(event) {
			var trigger = jQuery(this);

			var parent = trigger.parent();

			if (parent.is('.visible')) {
				parent.removeClass('visible');
			}
			else {
				instance._button.removeClass('visible');

				parent.addClass('visible');
			}

			jQuery(document).unbind().one(
				'click',
				off
			);

			var originalTarget = jQuery(event.originalTarget || event.srcElement);

			if (!originalTarget.is('a') && !originalTarget.is('img')) {
				return false;
			}
		};

		instance._trigger.unbind().click(on);
	}
});