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); } });