blob: a10296b2a4d309c4a19871fdbc63201b47a7cdac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
var last_popped = null;
var popped_in_use = false;
var last_timeout = null;
function prepareLastPopped(evt) {
last_popped.onmouseleave = removeLastPopped;
popped_in_use = true;
}
function removeLastPopped(evt) {
if (last_popped != null) {
last_popped.parentNode.removeChild(last_popped);
last_popped = null;
}
}
function forcePoppedHiding(evt) {
function cancelPopping() {
last_timeout = null;
if (!popped_in_use) {
removeLastPopped(null);
}
}
last_timeout = setTimeout(cancelPopping, 500);
}
function showMenu(target, inner) {
function waitForEvent(evt) {
if (last_timeout != null) {
clearTimeout(last_timeout);
last_timeout = null;
}
removeLastPopped(null);
if (inner == null)
return;
var menubar = document.createElement('div');
menubar.id = 'myMenu';
menubar.className = 'menu_arrow_box'
menubar.innerHTML = inner ;
document.body.insertBefore(menubar, document.body.childNodes[0]);
var rect = target.getBoundingClientRect();
var menu_rect = menubar.getBoundingClientRect();
menubar.style.left = (rect.left - (menu_rect.width - rect.width) / 2) + "px";
menubar.style.top = (rect.bottom + 20) + "px";
last_popped = menubar;
popped_in_use = false;
menubar.onmouseenter = prepareLastPopped;
target.onmouseleave = forcePoppedHiding;
}
return waitForEvent;
}
function addMenuToID(id, inner) {
var target = document.getElementById(id);
target.onmouseenter = showMenu(target, inner);
}
|