1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5(function() {
6
7// A simple popup manager.
8var activePopup = null;
9
10function init() {
11  // Set up the buttons to toggle the popup.
12  Array.prototype.forEach.call(document.getElementsByTagName('button'),
13                               function(button) {
14    var popupId = button.getAttribute('data-menu');
15    if (popupId == null)
16      return;
17    var popup = document.getElementById(popupId);
18    if (popup == null)
19      throw new Error('No element with id "' + popupId + '" for popup');
20    button.addEventListener('click', function(event) {
21      toggle(popup);
22      event.stopPropagation();
23    });
24  });
25  // Make clicking anywhere else or pressing escape on the page hide the popup.
26  document.body.addEventListener('click', function() {
27    hideActive();
28  });
29  document.body.addEventListener('keydown', function(event) {
30    if (event.keyCode == 27)
31      hideActive();
32  });
33}
34
35function toggle(popup) {
36  if (hideActive() == popup)
37    return;
38  popup.style.display = 'block';
39  activePopup = popup;
40}
41
42function hideActive() {
43  if (activePopup == null)
44    return;
45  activePopup.style.display = ''
46  var wasActive = activePopup;
47  activePopup = null;
48  return wasActive;
49}
50
51init();
52
53}());
54