5e2d9d97a59f10703917097ccbbaa43adabd6984
[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       $arrow = $("#" + anchorid + ' .arrow'),
28       $menu = $("#" + menuid),
29       $page = $(':not(#' + menuid + ', #' + anchorid + ')');
30
31   function hide() {
32     $menu.hide();
33     $page.unbind('click', hide);
34   }
35
36   $arrow.click(function(e) {
37       e.stopPropagation();
38       e.preventDefault();
39       if ($menu.is(':visible')) {
40           $menu.hide();
41           $page.unbind('click', hide);
42       } else {
43           openMenu($anchor, $menu.show(), 'left');
44           $page.bind('click', hide);
45       }
46   });
47 }