Liferay.Dock = { init: function() { var instance = this; var dock = jQuery('.lfr-dock'); if (!dock.is('.interactive-mode')) { return; } dock.addClass('lfr-component'); var dockList = dock.find('.lfr-dock-list'); if (dockList.length > 0) { var myPlaces = jQuery('.my-places', dock); Liferay.Util.createFlyouts( { container: dockList[0], mouseOver: function(event) { if (this.className.indexOf('my-places') > -1) { jQuery('.current-community > ul', this).show(); } else if (this.parentNode.className.indexOf('taglib-my-places') > -1) { jQuery('ul', this.parentNode).hide(); jQuery('> ul', this).show(); } } } ); dockList.find('li:first-child, a:first-child').addClass('first'); dockList.find('li:last-child, a:last-child').addClass('last'); instance._dock = dock; instance._dockList = dockList; instance._myPlaces = myPlaces; dockList.hide(); dockList.wrap('
'); var dockDefaults = { cursor: 'pointer', position: 'absolute', zIndex: Liferay.zIndex.DOCK }; instance._setPosition(dock, dockDefaults); var dockOver = function(event) { instance._setCloser(); instance._toggle('show'); }; var dockOut = function(event) { instance._toggle('hide'); }; dock.hoverIntent( { interval: 0, out: dockOut, over: dockOver, timeout: 500 } ); if (Liferay.Browser.isIe() && Liferay.Browser.getMajorVersion() <= 6) { myPlaces.find('> ul').css('zoom', 1); } var dockParent = dock.parent(); var dockParentDefaults = { position: 'relative', zIndex: Liferay.zIndex.DOCK_PARENT }; instance._setPosition(dockParent, dockParentDefaults); instance._handleDebug(); } }, _setPosition: function(obj, defaults) { var instance = this; var settings = defaults; if (!obj.is('.ignore-position')) { var position = obj.css('position'); var zIndex = obj.css('z-index'); var isStatic = !/absolute|relative|fixed/.test(position); if (zIndex == 'auto' || zIndex == 0) { zIndex = defaults.zIndex; } // The position is static, but use top/left positioning as a trigger if (isStatic) { position = defaults.position; var top = parseInt(obj.css('top')); if (Liferay.Browser.isSafari() && isNaN(top)) { top = -1; } if (!isNaN(top) && top != 0) { position = ''; zIndex = ''; } } settings = jQuery.extend( defaults, { position: position, zIndex: zIndex } ); } obj.css(settings); return settings; }, _handleDebug: function() { var instance = this; var dock = instance._dock; var dockList = instance._dockList; var myPlacesList = instance._myPlaces.find('> ul'); if (dock.is('.debug')) { dock.show(); dockList.show(); dockList.addClass('expanded'); } }, _setCloser: function() { var instance = this; if (!instance._hovered) { jQuery(document).one( 'click', function(event) { var currentEl = jQuery(event.target); var dockParent = currentEl.parents('.lfr-dock'); if ((dockParent.length == 0) && !currentEl.is('.lfr-dock')) { instance._toggle('hide'); instance._hovered = false; } } ); instance._hovered = true; } }, _toggle: function(state) { var instance = this; var dock = instance._dock; var dockList = instance._dockList; if (state == 'hide') { dockList.hide(); dock.removeClass('expanded'); } else if (state == 'show') { dockList.show(); dock.addClass('expanded'); } else { dockList.toggle(); dock.toggleClass('expanded'); } } };