Liferay.Menu = new Class({initialize: function() {var instance = this;if (!arguments.callee._hasRun) {arguments.callee._hasRun = true;instance._window = jQuery(window);instance._active = {menu: null,trigger: null};if (Liferay.Layout && Liferay.Layout.Columns.sortColumns) {Liferay.Layout.Columns.sortColumns.bind('sortstart.sortable',function(event) {instance._closeActiveMenu();});}jQuery(window).bind('resize',function(event) {instance._positionActiveMenu();});jQuery(document).bind('click.liferay',function(event) {var target = jQuery(event.target);var cssClass = (event.target.className || '');var isTrigger = (cssClass.indexOf('lfr-actions') > -1);var trigger = [];if (!isTrigger) {trigger = target.parents('.lfr-actions');}else {trigger = target;}if (trigger.length) {var menu = trigger.data('lfr-menu-list');if (!menu) {var list = trigger.find('ul:first');list.find('li:last-child').addClass('last');menu = jQuery('<div class="lfr-component lfr-menu-list" />');menu.append(list);menu.appendTo('body');menu.hide();Liferay.Util.createFlyouts({container: menu[0]});trigger.data('lfr-menu-list', menu);}if (instance._active.menu && instance._active.menu[0] != menu[0]) {instance._closeActiveMenu();}if (menu.is(':visible')) {instance._closeActiveMenu();}else {instance._active.menu = menu;instance._active.trigger = trigger;instance._positionActiveMenu();}return false;}instance._closeActiveMenu();});}},_closeActiveMenu: function() {var instance = this;if (instance._active.menu) {instance._active.menu.hide();instance._active.menu = null;instance._active.trigger.removeClass('visible');instance._active.trigger = null;}},_positionActiveMenu: function() {var instance = this;var menu = instance._active.menu;var trigger = instance._active.trigger;if (menu) {var offset = trigger.offset();offset.position = 'absolute';cssClass = trigger.attr('class');var direction = 'auto';var vertical = 'bottom';var win = instance._window;if (cssClass.indexOf('right') > -1) {direction = 'right';}else if (cssClass.indexOf('left') > -1) {direction = 'left';}var menuHeight = menu.height();var menuWidth = menu.width();var triggerHeight = trigger.outerHeight();var triggerWidth = trigger.outerWidth();var menuTop = menuHeight + offset.top;var menuLeft = menuWidth + offset.left;var scrollTop = win.scrollTop();var scrollLeft = win.scrollLeft();var windowHeight = win.height() + scrollTop;var windowWidth = win.width() + scrollLeft;if (direction == 'auto') {if (menuTop > windowHeight&& !((offset.top - menuHeight) < 0)) {offset.top -= menuHeight;}else {offset.top += triggerHeight;}if ((menuLeft > windowWidth || ((menuWidth/2) + offset.left) > windowWidth/2)&& !((offset.left - menuWidth) < 0)) {offset.left -= (menuWidth - triggerWidth);}}else {if (direction == 'right') {offset.left -= (menuWidth - 2);}else if (direction == 'left') {offset.left += (triggerWidth + 2);}offset.top -= (menuHeight - triggerHeight);}menu.css(offset);menu.show();trigger.addClass('visible');instance._active = {menu: menu,trigger: trigger};}}});