~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/adm/style/tooltip.js

  • Committer: dcoles
  • Date: 2008-02-13 04:10:55 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:443
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
javascript for Bubble Tooltips by Alessandro Fulciniti
 
3
- http://pro.html.it - http://web-graphics.com 
 
4
obtained from: http://web-graphics.com/mtarchive/001717.php
 
5
 
 
6
phpBB Development Team:
 
7
        - modified to adhere to our coding guidelines
 
8
        - integration into our design
 
9
        - added ability to perform tooltips on select elements
 
10
        - further adjustements
 
11
*/
 
12
 
 
13
var head_text, tooltip_mode;
 
14
 
 
15
/**
 
16
* Enable tooltip replacements for links
 
17
*/
 
18
function enable_tooltips_link(id, headline, sub_id)
 
19
{
 
20
        var links, i, hold;
 
21
        
 
22
        head_text = headline;
 
23
 
 
24
        if (!document.getElementById || !document.getElementsByTagName)
 
25
        {
 
26
                return;
 
27
        }
 
28
 
 
29
        hold = document.createElement('span');
 
30
        hold.id = '_tooltip_container';
 
31
        hold.setAttribute('id', '_tooltip_container');
 
32
        hold.style.position = 'absolute';
 
33
 
 
34
        document.getElementsByTagName('body')[0].appendChild(hold);
 
35
 
 
36
        if (id == null)
 
37
        {
 
38
                links = document.getElementsByTagName('a');
 
39
        }
 
40
        else
 
41
        {
 
42
                links = document.getElementById(id).getElementsByTagName('a');
 
43
        }
 
44
 
 
45
        for (i = 0; i < links.length; i++)
 
46
        {
 
47
                if (sub_id)
 
48
                {
 
49
                        if (links[i].id.substr(0, sub_id.length) == sub_id)
 
50
                        {
 
51
                                prepare(links[i]);
 
52
                        }
 
53
                }
 
54
                else
 
55
                {
 
56
                        prepare(links[i]);
 
57
                }
 
58
        }
 
59
 
 
60
        tooltip_mode = 'link';
 
61
}
 
62
 
 
63
/**
 
64
* Enable tooltip replacements for selects
 
65
*/
 
66
function enable_tooltips_select(id, headline, sub_id)
 
67
{
 
68
        var links, i, hold;
 
69
        
 
70
        head_text = headline;
 
71
 
 
72
        if (!document.getElementById || !document.getElementsByTagName)
 
73
        {
 
74
                return;
 
75
        }
 
76
 
 
77
        hold = document.createElement('span');
 
78
        hold.id = '_tooltip_container';
 
79
        hold.setAttribute('id', '_tooltip_container');
 
80
        hold.style.position = 'absolute';
 
81
 
 
82
        document.getElementsByTagName('body')[0].appendChild(hold);
 
83
 
 
84
        if (id == null)
 
85
        {
 
86
                links = document.getElementsByTagName('option');
 
87
        }
 
88
        else
 
89
        {
 
90
                links = document.getElementById(id).getElementsByTagName('option');
 
91
        }
 
92
 
 
93
        for (i = 0; i < links.length; i++)
 
94
        {
 
95
                if (sub_id)
 
96
                {
 
97
                        if (links[i].parentNode.id.substr(0, sub_id.length) == sub_id)
 
98
                        {
 
99
                                prepare(links[i]);
 
100
                        }
 
101
                }
 
102
                else
 
103
                {
 
104
                        prepare(links[i]);
 
105
                }
 
106
        }
 
107
 
 
108
        tooltip_mode = 'select';
 
109
}
 
110
 
 
111
/**
 
112
* Prepare elements to replace
 
113
*/
 
114
function prepare(element)
 
115
{
 
116
        var tooltip, text, desc, title;
 
117
 
 
118
        text = element.getAttribute('title');
 
119
 
 
120
        if (text == null || text.length == 0)
 
121
        {
 
122
                return;
 
123
        }
 
124
 
 
125
        element.removeAttribute('title');
 
126
        tooltip = create_element('span', 'tooltip');
 
127
 
 
128
        title = create_element('span', 'top');
 
129
        title.appendChild(document.createTextNode(head_text));
 
130
        tooltip.appendChild(title);
 
131
 
 
132
        desc = create_element('span', 'bottom');
 
133
        desc.innerHTML = text;
 
134
        tooltip.appendChild(desc);
 
135
 
 
136
        set_opacity(tooltip);
 
137
 
 
138
        element.tooltip = tooltip;
 
139
        element.onmouseover = show_tooltip;
 
140
        element.onmouseout = hide_tooltip;
 
141
 
 
142
        if (tooltip_mode == 'link')
 
143
        {
 
144
                element.onmousemove = locate;
 
145
        }
 
146
}
 
147
 
 
148
/**
 
149
* Show tooltip
 
150
*/
 
151
function show_tooltip(e)
 
152
{
 
153
        document.getElementById('_tooltip_container').appendChild(this.tooltip);
 
154
        locate(this);
 
155
}
 
156
 
 
157
/**
 
158
* Hide tooltip
 
159
*/
 
160
function hide_tooltip(e)
 
161
{
 
162
        var d = document.getElementById('_tooltip_container');
 
163
        if (d.childNodes.length > 0)
 
164
        {
 
165
                d.removeChild(d.firstChild);
 
166
        }
 
167
}
 
168
 
 
169
/**
 
170
* Set opacity on tooltip element
 
171
*/
 
172
function set_opacity(element)
 
173
{
 
174
        element.style.filter = 'alpha(opacity:95)';
 
175
        element.style.KHTMLOpacity = '0.95';
 
176
        element.style.MozOpacity = '0.95';
 
177
        element.style.opacity = '0.95';
 
178
}
 
179
 
 
180
/**
 
181
* Create new element
 
182
*/
 
183
function create_element(tag, c)
 
184
{
 
185
        var x = document.createElement(tag);
 
186
        x.className = c;
 
187
        x.style.display = 'block';
 
188
        return x;
 
189
}
 
190
 
 
191
/**
 
192
* Correct positioning of tooltip container
 
193
*/
 
194
function locate(e)
 
195
{
 
196
        var posx = 0;
 
197
        var posy = 0;
 
198
 
 
199
        e = e.parentNode;
 
200
 
 
201
        if (e.offsetParent)
 
202
        {
 
203
                for (var posx = 0, posy = 0; e.offsetParent; e = e.offsetParent)
 
204
                {
 
205
                        posx += e.offsetLeft;
 
206
                        posy += e.offsetTop;
 
207
                }
 
208
        }
 
209
        else
 
210
        {
 
211
                posx = e.offsetLeft;
 
212
                posy = e.offsetTop;
 
213
        }
 
214
 
 
215
        if (tooltip_mode == 'link')
 
216
        {
 
217
                document.getElementById('_tooltip_container').style.top=(posy+20) + 'px';
 
218
                document.getElementById('_tooltip_container').style.left=(posx-20) + 'px';
 
219
        }
 
220
        else
 
221
        {
 
222
                document.getElementById('_tooltip_container').style.top=(posy+30) + 'px';
 
223
                document.getElementById('_tooltip_container').style.left=(posx-205) + 'px';
 
224
        }
 
225
 
 
226
/*
 
227
        if (e == null)
 
228
        {
 
229
                e = window.event;
 
230
        }
 
231
 
 
232
        if (e.pageX || e.pageY)
 
233
        {
 
234
                posx = e.pageX;
 
235
                posy = e.pageY;
 
236
        }
 
237
        else if (e.clientX || e.clientY)
 
238
        {
 
239
                if (document.documentElement.scrollTop)
 
240
                {
 
241
                        posx = e.clientX+document.documentElement.scrollLeft;
 
242
                        posy = e.clientY+document.documentElement.scrollTop;
 
243
                }
 
244
                else
 
245
                {
 
246
                        posx = e.clientX+document.body.scrollLeft;
 
247
                        posy = e.clientY+document.body.scrollTop;
 
248
                }
 
249
        }
 
250
*/
 
251
}