1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*
- * Simple popup menu 1.0 (2010-05-15)
- *
- * Copyright (c) 2010 Combodo SARL (www.combodo.com)
- * Licenced under the GPL licence.
- *
- * http://www.combodo.com/
- *
- * Built upon jQuery jQuery 1.2.3a (http://jquery.com)
- * Requires the (modified) jQuery positionBy plugin by Jonathan Sharp (http://jdsharp.us)
- */
- jQuery.fn.popupmenu = function ()
- {
- var popupmenu = null;
- return this.each(function()
- {
- $(this).bind('click.popup_menu', function (evt)
- {
- var previous_popup = popupmenu;
- var bMenuClosed = false;
- popupmenu = $(this).find('ul');
- if ( previous_popup != null)
- {
- // The user clicked while a menu is open, close the currently opened menu
- previous_popup.css('display', 'none');
-
- }
- if ( (previous_popup == null) || (previous_popup.get(0) != popupmenu.get(0))) // Comparing the DOM objects
- {
- // The user clicked in a different menu, let's open it
- popupmenu.positionBy({ target: $(this),
- targetPos: 4,
- elementPos: 0,
- hideAfterPosition: true
- });
- // In links containing a hash, replace what's after the hash by the current hash
- // In order to navigate to the same tab as the current one when editing an object
- currentHash = '';
- aMatches = /#(.*)$/.exec(window.location.href);
- if (aMatches != null)
- {
- currentHash = aMatches[1];
- popupmenu.find('a').each( function() {
- if ( /#(.*)$/.test(this.href))
- {
- this.href = this.href.replace(/#(.*)$/, '#'+currentHash);
- }
- });
- }
- popupmenu.css('top', ''); // let the "position: absolute;" do its job, for better support of scrolling...
- popupmenu.css('display', 'block');
- }
- else
- {
- // The user clicked in the opened menu, it is closed now
- popupmenu = null;
- }
- evt.stopPropagation();
- });
- $(document).bind('click.popup_menu', function(evt)
- {
- if (popupmenu)
- {
- // The user clicked in the document's body, let's close the menu
- popupmenu.css('display', 'none');
- popupmenu = null;
- }
- });
- });
- };
|