]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/menu.js
Refactoring 4 life
[rails.git] / app / assets / javascripts / menu.js
1 /*
2  * Open a menu.
3  */
4 function openMenu(anchor, menu, align) {
5   var anchorPosition = anchor.offset();
6   var offset;
7
8   if (align == "left") {
9     offset = 0;
10   } else if (align == "right") {
11     offset = menu.outerWidth() - anchor.outerWidth();
12   }
13
14   menu.show();
15
16   menu.offset({
17     top: anchorPosition.top + anchor.outerHeight(),
18     left: anchorPosition.left - offset
19   });
20 }
21
22 /*
23  * Setup a menu, triggered by hovering over an anchor for a given time.
24  */
25 function createMenu(anchorid, menuid, align) {
26   var $anchor = $("#" + anchorid);
27   var $arrow = $("#" + anchorid + " .menuicon");
28   var $menu = $("#" + menuid);
29   var $page = $(":not(#" + menuid + ", #" + anchorid + ")");
30
31   function hide() {
32     $menu.hide();
33     $page.off("click", hide);
34   }
35
36   $arrow.click(function(e) {
37     if ($anchor.is(":not(.disabled)")) {
38       e.stopPropagation();
39       e.preventDefault();
40       if ($menu.is(":visible")) {
41         $menu.hide();
42         $page.off("click", hide);
43       } else {
44         openMenu($anchor, $menu.show(), align);
45         $page.on("click", hide);
46       }
47     }
48   });
49 }