annotate client/digitallibrary/buttons/menu.js @ 20:d407cb901df4

Initial revision
author robcast
date Thu, 17 Jan 2002 15:29:55 +0100
parents
children e6349a389da2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
d407cb901df4 Initial revision
robcast
parents:
diff changeset
1 function checkBrowser(){
d407cb901df4 Initial revision
robcast
parents:
diff changeset
2 this.ver = navigator.appVersion;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
3 this.dom = document.getElementById ? 1 : 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
4 this.ie5 = (this.ver.indexOf("MSIE 5")>-1 && this.dom) ? 1 : 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
5 this.ie4 = (document.all && !this.dom) ? 1 : 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
6 this.ns5 = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
7 this.ns4 = (document.layers && !this.dom) ? 1 : 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
8 this.ie = (this.ie4 || this.ie5);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
9 return this;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
10 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
11
d407cb901df4 Initial revision
robcast
parents:
diff changeset
12 browser = new checkBrowser();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
13
d407cb901df4 Initial revision
robcast
parents:
diff changeset
14 function changeBc(obj, color){
d407cb901df4 Initial revision
robcast
parents:
diff changeset
15 var div;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
16
d407cb901df4 Initial revision
robcast
parents:
diff changeset
17 if (color == '' && browser.ns4) color = null;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
18
d407cb901df4 Initial revision
robcast
parents:
diff changeset
19 if (browser.ns4) div = document.layers[obj];
d407cb901df4 Initial revision
robcast
parents:
diff changeset
20 else if (browser.dom) div = document.getElementById(obj).style;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
21 else if (browser.ie) div = document.all[obj].style;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
22
d407cb901df4 Initial revision
robcast
parents:
diff changeset
23 if (browser.dom || browser.ie) div.backgroundColor = color;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
24 if (browser.ns4) div.bgColor = color;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
25 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
26
d407cb901df4 Initial revision
robcast
parents:
diff changeset
27 function makeArray(n){
d407cb901df4 Initial revision
robcast
parents:
diff changeset
28 this.length = n;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
29 for (var i = 0; i < n; i++) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
30 this[i] = new Image();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
31 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
32
d407cb901df4 Initial revision
robcast
parents:
diff changeset
33 return this;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
34 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
35
d407cb901df4 Initial revision
robcast
parents:
diff changeset
36 function preloadImages() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
37 over = new makeArray(document.images.length);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
38 away = new makeArray(document.images.length);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
39
d407cb901df4 Initial revision
robcast
parents:
diff changeset
40 for (i = 0; i < document.images.length; i++) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
41 currName = document.images[i].src.slice(0, document.images[i].src.lastIndexOf('.')-1);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
42 away[i].src = currName + "0.gif";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
43 over[i].src = currName + "1.gif";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
44 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
45 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
46
d407cb901df4 Initial revision
robcast
parents:
diff changeset
47 function overButton(n) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
48 currButton = document.images[n];
d407cb901df4 Initial revision
robcast
parents:
diff changeset
49
d407cb901df4 Initial revision
robcast
parents:
diff changeset
50 currButton.src = over[n].src;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
51 if (showHelp) contextHelp(n);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
52 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
53
d407cb901df4 Initial revision
robcast
parents:
diff changeset
54 function awayButton(n) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
55 currButton = document.images[n];
d407cb901df4 Initial revision
robcast
parents:
diff changeset
56
d407cb901df4 Initial revision
robcast
parents:
diff changeset
57 currButton.src = away[n].src;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
58 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
59
d407cb901df4 Initial revision
robcast
parents:
diff changeset
60 function overItem(obj) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
61 changeBc("menu" + obj, '#770000');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
62 clearTimeout(timeID);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
63 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
64
d407cb901df4 Initial revision
robcast
parents:
diff changeset
65 function awayItem(obj) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
66 changeBc("menu" + obj, '');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
67 timeID = setTimeout("hideMenu()", 700);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
68 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
69
d407cb901df4 Initial revision
robcast
parents:
diff changeset
70 var timeID = null;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
71
d407cb901df4 Initial revision
robcast
parents:
diff changeset
72 function changeMark(obj) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
73 var object;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
74
d407cb901df4 Initial revision
robcast
parents:
diff changeset
75 if (browser.ns4) object = document.layers["menu" + obj].document.images[0];
d407cb901df4 Initial revision
robcast
parents:
diff changeset
76 else if (browser.dom) object = document.getElementById("mark" + obj);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
77 else if (browser.ie) object = document.all["mark" + obj];
d407cb901df4 Initial revision
robcast
parents:
diff changeset
78
d407cb901df4 Initial revision
robcast
parents:
diff changeset
79 var path = object.src.slice(0, object.src.lastIndexOf('/')+1);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
80
d407cb901df4 Initial revision
robcast
parents:
diff changeset
81 object.src = (object.src.indexOf("nomark") > -1) ? path + "mark.gif" : path + "nomark.gif";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
82 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
83
d407cb901df4 Initial revision
robcast
parents:
diff changeset
84 function showMenu(obj) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
85 menu(obj, true);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
86 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
87
d407cb901df4 Initial revision
robcast
parents:
diff changeset
88 function menu(obj, show) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
89 var currObj = "menu" + obj;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
90 var idx = 0;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
91 while(true) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
92 if (browser.ns4 && document.layers[currObj]) document.layers[currObj].visibility = (show) ? "show" : "hide";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
93 else if (browser.dom && document.getElementById(currObj)) document.getElementById(currObj).style.visibility = (show) ? "visible" : "hidden";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
94 else if (browser.ie && document.all[currObj]) document.all[currObj].style.visibility = (show) ? "visible" : "hidden";
d407cb901df4 Initial revision
robcast
parents:
diff changeset
95 else break;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
96
d407cb901df4 Initial revision
robcast
parents:
diff changeset
97 currObj = "menu" + obj + (++idx);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
98 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
99 if (!show) activeMenu = '';
d407cb901df4 Initial revision
robcast
parents:
diff changeset
100 else activeMenu = obj;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
101
d407cb901df4 Initial revision
robcast
parents:
diff changeset
102 timeID = setTimeout("hideMenu()", 2000);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
103 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
104
d407cb901df4 Initial revision
robcast
parents:
diff changeset
105 function hideMenu() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
106 if (activeMenu != '') menu(activeMenu, false);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
107 clearTimeout(timeID);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
108 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
109
d407cb901df4 Initial revision
robcast
parents:
diff changeset
110 var activeMenu = '';
d407cb901df4 Initial revision
robcast
parents:
diff changeset
111
d407cb901df4 Initial revision
robcast
parents:
diff changeset
112
d407cb901df4 Initial revision
robcast
parents:
diff changeset
113 // just to be sure, that no buffer overflow can arrive
d407cb901df4 Initial revision
robcast
parents:
diff changeset
114 var semaphor = true;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
115
d407cb901df4 Initial revision
robcast
parents:
diff changeset
116 function contextHelp(n) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
117
d407cb901df4 Initial revision
robcast
parents:
diff changeset
118 if (helpWindow.closed) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
119 changeMark(31);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
120 changeHelp();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
121 return;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
122 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
123
d407cb901df4 Initial revision
robcast
parents:
diff changeset
124 if ((navigator.appVersion.indexOf("Macintosh") < 0) && semaphor) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
125 semaphor = false;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
126 var help = helpText[n].split("|");
d407cb901df4 Initial revision
robcast
parents:
diff changeset
127
d407cb901df4 Initial revision
robcast
parents:
diff changeset
128 helpWindow.focus();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
129 helpWindow.document.open();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
130 helpWindow.document.write('<html><head><title>Context Help</title>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
131 helpWindow.document.write('<style type="text/css">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
132 helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
133 helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
134 helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7" onload="opener.semaphor = true;">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
135 helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#666666" class="title">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
136 helpWindow.document.write(help[0] + '</tr><tr><td class="text">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
137 helpWindow.document.write(help[1] + '</tr></td></table></body></html>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
138 helpWindow.document.close();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
139
d407cb901df4 Initial revision
robcast
parents:
diff changeset
140 // stupid workaround because of netscape 6, that doesen't know the opener property
d407cb901df4 Initial revision
robcast
parents:
diff changeset
141 // this workaround is still ok cause netscape 6 has eventbuffer checks so no overflow
d407cb901df4 Initial revision
robcast
parents:
diff changeset
142 if (browser.ns5) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
143 semaphor = true;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
144 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
145 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
146
d407cb901df4 Initial revision
robcast
parents:
diff changeset
147 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
148
d407cb901df4 Initial revision
robcast
parents:
diff changeset
149 function openContextHelp() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
150 if (navigator.appVersion.indexOf("Macintosh") > -1) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
151 openContextHelpMac();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
152 return;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
153 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
154
d407cb901df4 Initial revision
robcast
parents:
diff changeset
155 semaphor = false;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
156
d407cb901df4 Initial revision
robcast
parents:
diff changeset
157 var winWidth = 270;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
158 var winHeight = 130;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
159
d407cb901df4 Initial revision
robcast
parents:
diff changeset
160 var xScreen = 0.9*(screen.width-winWidth);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
161 var yScreen = 0.8*(screen.height-winHeight);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
162
d407cb901df4 Initial revision
robcast
parents:
diff changeset
163 helpWindow = window.open("", "ContextHelp", "width=" + winWidth + ",height=" + winHeight + ",screenX=" + xScreen + ",screenY=" + yScreen + ",left=" + xScreen + ",top=" + yScreen);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
164
d407cb901df4 Initial revision
robcast
parents:
diff changeset
165 helpWindow.focus();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
166 helpWindow.document.open();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
167 helpWindow.document.write('<html><head><title>Context Help</title>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
168 helpWindow.document.write('<style type="text/css">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
169 helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
170 helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
171 helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
172 helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3"><tr><td bgcolor="#666666" class="title">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
173 helpWindow.document.write('Context Help</tr><tr><td class="text">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
174 helpWindow.document.write('Move over any button to get some more information about its function</tr></td></table></body></html>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
175 helpWindow.document.close();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
176
d407cb901df4 Initial revision
robcast
parents:
diff changeset
177 // for some safety reason help-requests have to be blocked while opening the window
d407cb901df4 Initial revision
robcast
parents:
diff changeset
178 setTimeout("semaphor = true;", 200);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
179 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
180
d407cb901df4 Initial revision
robcast
parents:
diff changeset
181 // because macs have a strange window focus behaviour we have to go a special
d407cb901df4 Initial revision
robcast
parents:
diff changeset
182 // way for them - just opening a window that contains all button-descriptions
d407cb901df4 Initial revision
robcast
parents:
diff changeset
183 function openContextHelpMac() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
184
d407cb901df4 Initial revision
robcast
parents:
diff changeset
185 var winWidth = 270;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
186 var winHeight = 600;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
187
d407cb901df4 Initial revision
robcast
parents:
diff changeset
188 var xScreen = 0.9*(screen.width-winWidth);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
189 var yScreen = 0.8*(screen.height-winHeight);
d407cb901df4 Initial revision
robcast
parents:
diff changeset
190
d407cb901df4 Initial revision
robcast
parents:
diff changeset
191 helpWindow = window.open("", "ContextHelp", "width=" + winWidth + ",height=" + winHeight + ",screenX=" + xScreen + ",screenY=" + yScreen + ",left=" + xScreen + ",top=" + yScreen + ",scrollbars");
d407cb901df4 Initial revision
robcast
parents:
diff changeset
192
d407cb901df4 Initial revision
robcast
parents:
diff changeset
193 helpWindow.focus();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
194 helpWindow.document.open();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
195 helpWindow.document.write('<html><head><title>Context Help Macintosh</title>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
196 helpWindow.document.write('<style type="text/css">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
197 helpWindow.document.write('.title {font-family: Verdana, sans-serif, Arial; font-size: 12px; font-weight: bold; color: #FFFFFF}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
198 helpWindow.document.write('.text {font-family: Verdana, sans-serif, Arial; font-size: 10px; color: #000000}');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
199 helpWindow.document.write('</style></head><body bgcolor="#CCCCCC" leftmargin="7" topmargin="7" marginwidth="7" marginheight="7">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
200 helpWindow.document.write('<table width="99%" border="0" cellspacing="0" cellpadding="3">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
201
d407cb901df4 Initial revision
robcast
parents:
diff changeset
202 for (n = 0; n < helpText.length; n++) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
203
d407cb901df4 Initial revision
robcast
parents:
diff changeset
204 help = helpText[n].split("|");
d407cb901df4 Initial revision
robcast
parents:
diff changeset
205 helpWindow.document.write('<tr><td bgcolor="#666666" class="title">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
206 helpWindow.document.write(help[0] + '</tr><tr><td class="text">');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
207 helpWindow.document.write('<p>' + help[1] + '<br>&nbsp;</p></tr></td>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
208 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
209 helpWindow.document.write('</table></body></html>');
d407cb901df4 Initial revision
robcast
parents:
diff changeset
210 helpWindow.document.close();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
211 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
212
d407cb901df4 Initial revision
robcast
parents:
diff changeset
213
d407cb901df4 Initial revision
robcast
parents:
diff changeset
214 function closeContextHelp() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
215 if (helpWindow != '' && !helpWindow.closed) {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
216 helpWindow.close();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
217 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
218 helpWindow = '';
d407cb901df4 Initial revision
robcast
parents:
diff changeset
219 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
220
d407cb901df4 Initial revision
robcast
parents:
diff changeset
221 function changeHelp() {
d407cb901df4 Initial revision
robcast
parents:
diff changeset
222 showHelp = !showHelp;
d407cb901df4 Initial revision
robcast
parents:
diff changeset
223 showHelp ? openContextHelp() : closeContextHelp();
d407cb901df4 Initial revision
robcast
parents:
diff changeset
224 }
d407cb901df4 Initial revision
robcast
parents:
diff changeset
225
d407cb901df4 Initial revision
robcast
parents:
diff changeset
226
d407cb901df4 Initial revision
robcast
parents:
diff changeset
227 // variable containing the contextwindow
d407cb901df4 Initial revision
robcast
parents:
diff changeset
228 var helpWindow = '';