|
1 //\///// |
|
2 //\ overLIB 4.21 - You may not remove or change this notice. |
|
3 //\ Copyright Erik Bosrup 1998-2004. All rights reserved. |
|
4 //\ |
|
5 //\ Contributors are listed on the homepage. |
|
6 //\ This file might be old, always check for the latest version at: |
|
7 //\ http://www.bosrup.com/web/overlib/ |
|
8 //\ |
|
9 //\ Please read the license agreement (available through the link above) |
|
10 //\ before using overLIB. Direct any licensing questions to erik@bosrup.com. |
|
11 //\ |
|
12 //\ Do not sell this as your own work or remove this copyright notice. |
|
13 //\ For full details on copying or changing this script please read the |
|
14 //\ license agreement at the link above. Please give credit on sites that |
|
15 //\ use overLIB and submit changes of the script so other people can use |
|
16 //\ them as well. |
|
17 // $Revision$ $Date$ |
|
18 //\///// |
|
19 //\mini |
|
20 |
|
21 //////// |
|
22 // PRE-INIT |
|
23 // Ignore these lines, configuration is below. |
|
24 //////// |
|
25 var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1); |
|
26 var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4; |
|
27 var olHideForm=0; // parameter for hiding SELECT and ActiveX elements in IE5.5+ |
|
28 var olHautoFlag = 0; // flags for over-riding VAUTO and HAUTO if corresponding |
|
29 var olVautoFlag = 0; // positioning commands are used on the command line |
|
30 var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array(); |
|
31 // for plugins |
|
32 registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); |
|
33 |
|
34 //////// |
|
35 // DEFAULT CONFIGURATION |
|
36 // Settings you want everywhere are set here. All of this can also be |
|
37 // changed on your html page or through an overLIB call. |
|
38 //////// |
|
39 if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF"; |
|
40 if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399"; |
|
41 if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000"; |
|
42 if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF"; |
|
43 if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF"; |
|
44 if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica"; |
|
45 if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica"; |
|
46 if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica"; |
|
47 if (typeof ol_textsize=='undefined') var ol_textsize="1"; |
|
48 if (typeof ol_captionsize=='undefined') var ol_captionsize="1"; |
|
49 if (typeof ol_closesize=='undefined') var ol_closesize="1"; |
|
50 if (typeof ol_width=='undefined') var ol_width="200"; |
|
51 if (typeof ol_border=='undefined') var ol_border="1"; |
|
52 if (typeof ol_cellpad=='undefined') var ol_cellpad=2; |
|
53 if (typeof ol_offsetx=='undefined') var ol_offsetx=10; |
|
54 if (typeof ol_offsety=='undefined') var ol_offsety=10; |
|
55 if (typeof ol_text=='undefined') var ol_text="Default Text"; |
|
56 if (typeof ol_cap=='undefined') var ol_cap=""; |
|
57 if (typeof ol_sticky=='undefined') var ol_sticky=0; |
|
58 if (typeof ol_background=='undefined') var ol_background=""; |
|
59 if (typeof ol_close=='undefined') var ol_close="Close"; |
|
60 if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT; |
|
61 if (typeof ol_status=='undefined') var ol_status=""; |
|
62 if (typeof ol_autostatus=='undefined') var ol_autostatus=0; |
|
63 if (typeof ol_height=='undefined') var ol_height=-1; |
|
64 if (typeof ol_snapx=='undefined') var ol_snapx=0; |
|
65 if (typeof ol_snapy=='undefined') var ol_snapy=0; |
|
66 if (typeof ol_fixx=='undefined') var ol_fixx=-1; |
|
67 if (typeof ol_fixy=='undefined') var ol_fixy=-1; |
|
68 if (typeof ol_relx=='undefined') var ol_relx=null; |
|
69 if (typeof ol_rely=='undefined') var ol_rely=null; |
|
70 if (typeof ol_fgbackground=='undefined') var ol_fgbackground=""; |
|
71 if (typeof ol_bgbackground=='undefined') var ol_bgbackground=""; |
|
72 if (typeof ol_padxl=='undefined') var ol_padxl=1; |
|
73 if (typeof ol_padxr=='undefined') var ol_padxr=1; |
|
74 if (typeof ol_padyt=='undefined') var ol_padyt=1; |
|
75 if (typeof ol_padyb=='undefined') var ol_padyb=1; |
|
76 if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0; |
|
77 if (typeof ol_vpos=='undefined') var ol_vpos=BELOW; |
|
78 if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0; |
|
79 if (typeof ol_capicon=='undefined') var ol_capicon=""; |
|
80 if (typeof ol_frame=='undefined') var ol_frame=self; |
|
81 if (typeof ol_timeout=='undefined') var ol_timeout=0; |
|
82 if (typeof ol_function=='undefined') var ol_function=null; |
|
83 if (typeof ol_delay=='undefined') var ol_delay=0; |
|
84 if (typeof ol_hauto=='undefined') var ol_hauto=0; |
|
85 if (typeof ol_vauto=='undefined') var ol_vauto=0; |
|
86 if (typeof ol_closeclick=='undefined') var ol_closeclick=0; |
|
87 if (typeof ol_wrap=='undefined') var ol_wrap=0; |
|
88 if (typeof ol_followmouse=='undefined') var ol_followmouse=1; |
|
89 if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0; |
|
90 if (typeof ol_closetitle=='undefined') var ol_closetitle='Close'; |
|
91 if (typeof ol_compatmode=='undefined') var ol_compatmode=0; |
|
92 if (typeof ol_css=='undefined') var ol_css=CSSOFF; |
|
93 if (typeof ol_fgclass=='undefined') var ol_fgclass=""; |
|
94 if (typeof ol_bgclass=='undefined') var ol_bgclass=""; |
|
95 if (typeof ol_textfontclass=='undefined') var ol_textfontclass=""; |
|
96 if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass=""; |
|
97 if (typeof ol_closefontclass=='undefined') var ol_closefontclass=""; |
|
98 |
|
99 //////// |
|
100 // ARRAY CONFIGURATION |
|
101 //////// |
|
102 |
|
103 // You can use these arrays to store popup text here instead of in the html. |
|
104 if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1"); |
|
105 if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1"); |
|
106 |
|
107 //////// |
|
108 // END OF CONFIGURATION |
|
109 // Don't change anything below this line, all configuration is above. |
|
110 //////// |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
|
116 //////// |
|
117 // INIT |
|
118 //////// |
|
119 // Runtime variables init. Don't change for config! |
|
120 var o3_text=""; |
|
121 var o3_cap=""; |
|
122 var o3_sticky=0; |
|
123 var o3_background=""; |
|
124 var o3_close="Close"; |
|
125 var o3_hpos=RIGHT; |
|
126 var o3_offsetx=2; |
|
127 var o3_offsety=2; |
|
128 var o3_fgcolor=""; |
|
129 var o3_bgcolor=""; |
|
130 var o3_textcolor=""; |
|
131 var o3_capcolor=""; |
|
132 var o3_closecolor=""; |
|
133 var o3_width=100; |
|
134 var o3_border=1; |
|
135 var o3_cellpad=2; |
|
136 var o3_status=""; |
|
137 var o3_autostatus=0; |
|
138 var o3_height=-1; |
|
139 var o3_snapx=0; |
|
140 var o3_snapy=0; |
|
141 var o3_fixx=-1; |
|
142 var o3_fixy=-1; |
|
143 var o3_relx=null; |
|
144 var o3_rely=null; |
|
145 var o3_fgbackground=""; |
|
146 var o3_bgbackground=""; |
|
147 var o3_padxl=0; |
|
148 var o3_padxr=0; |
|
149 var o3_padyt=0; |
|
150 var o3_padyb=0; |
|
151 var o3_fullhtml=0; |
|
152 var o3_vpos=BELOW; |
|
153 var o3_aboveheight=0; |
|
154 var o3_capicon=""; |
|
155 var o3_textfont="Verdana,Arial,Helvetica"; |
|
156 var o3_captionfont="Verdana,Arial,Helvetica"; |
|
157 var o3_closefont="Verdana,Arial,Helvetica"; |
|
158 var o3_textsize="1"; |
|
159 var o3_captionsize="1"; |
|
160 var o3_closesize="1"; |
|
161 var o3_frame=self; |
|
162 var o3_timeout=0; |
|
163 var o3_timerid=0; |
|
164 var o3_allowmove=0; |
|
165 var o3_function=null; |
|
166 var o3_delay=0; |
|
167 var o3_delayid=0; |
|
168 var o3_hauto=0; |
|
169 var o3_vauto=0; |
|
170 var o3_closeclick=0; |
|
171 var o3_wrap=0; |
|
172 var o3_followmouse=1; |
|
173 var o3_mouseoff=0; |
|
174 var o3_closetitle=''; |
|
175 var o3_compatmode=0; |
|
176 var o3_css=CSSOFF; |
|
177 var o3_fgclass=""; |
|
178 var o3_bgclass=""; |
|
179 var o3_textfontclass=""; |
|
180 var o3_captionfontclass=""; |
|
181 var o3_closefontclass=""; |
|
182 |
|
183 // Display state variables |
|
184 var o3_x = 0; |
|
185 var o3_y = 0; |
|
186 var o3_showingsticky = 0; |
|
187 var o3_removecounter = 0; |
|
188 |
|
189 // Our layer |
|
190 var over = null; |
|
191 var fnRef, hoveringSwitch = false; |
|
192 var olHideDelay; |
|
193 |
|
194 // Decide browser version |
|
195 var isMac = (navigator.userAgent.indexOf("Mac") != -1); |
|
196 var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode); // Opera 7 |
|
197 var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4); |
|
198 var olNs6 = (document.getElementById) ? true : false; |
|
199 var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent)); |
|
200 var olIe4 = (document.all) ? true : false; |
|
201 var olIe5 = false; |
|
202 var olIe55 = false; // Added additional variable to identify IE5.5+ |
|
203 var docRoot = 'document.body'; |
|
204 |
|
205 // Resize fix for NS4.x to keep track of layer |
|
206 if (olNs4) { |
|
207 var oW = window.innerWidth; |
|
208 var oH = window.innerHeight; |
|
209 window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); } |
|
210 } |
|
211 |
|
212 // Microsoft Stupidity Check(tm). |
|
213 if (olIe4) { |
|
214 var agent = navigator.userAgent; |
|
215 if (/MSIE/.test(agent)) { |
|
216 var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]); |
|
217 if (versNum >= 5){ |
|
218 olIe5=true; |
|
219 olIe55=(versNum>=5.5&&!olOp) ? true : false; |
|
220 if (olNs6) olNs6=false; |
|
221 } |
|
222 } |
|
223 if (olNs6) olIe4 = false; |
|
224 } |
|
225 |
|
226 // Check for compatability mode. |
|
227 if (document.compatMode && document.compatMode == 'CSS1Compat') { |
|
228 docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot); |
|
229 } |
|
230 |
|
231 // Add window onload handlers to indicate when all modules have been loaded |
|
232 // For Netscape 6+ and Mozilla, uses addEventListener method on the window object |
|
233 // For IE it uses the attachEvent method of the window object and for Netscape 4.x |
|
234 // it sets the window.onload handler to the OLonload_handler function for Bubbling |
|
235 if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false); |
|
236 else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler); |
|
237 |
|
238 var capExtent; |
|
239 |
|
240 //////// |
|
241 // PUBLIC FUNCTIONS |
|
242 //////// |
|
243 |
|
244 // overlib(arg0,...,argN) |
|
245 // Loads parameters into global runtime variables. |
|
246 function overlib() { |
|
247 if (!olLoaded || isExclusive(overlib.arguments)) return true; |
|
248 if (olCheckMouseCapture) olMouseCapture(); |
|
249 if (over) { |
|
250 over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over; |
|
251 cClick(); |
|
252 } |
|
253 |
|
254 // Load defaults to runtime. |
|
255 olHideDelay=0; |
|
256 o3_text=ol_text; |
|
257 o3_cap=ol_cap; |
|
258 o3_sticky=ol_sticky; |
|
259 o3_background=ol_background; |
|
260 o3_close=ol_close; |
|
261 o3_hpos=ol_hpos; |
|
262 o3_offsetx=ol_offsetx; |
|
263 o3_offsety=ol_offsety; |
|
264 o3_fgcolor=ol_fgcolor; |
|
265 o3_bgcolor=ol_bgcolor; |
|
266 o3_textcolor=ol_textcolor; |
|
267 o3_capcolor=ol_capcolor; |
|
268 o3_closecolor=ol_closecolor; |
|
269 o3_width=ol_width; |
|
270 o3_border=ol_border; |
|
271 o3_cellpad=ol_cellpad; |
|
272 o3_status=ol_status; |
|
273 o3_autostatus=ol_autostatus; |
|
274 o3_height=ol_height; |
|
275 o3_snapx=ol_snapx; |
|
276 o3_snapy=ol_snapy; |
|
277 o3_fixx=ol_fixx; |
|
278 o3_fixy=ol_fixy; |
|
279 o3_relx=ol_relx; |
|
280 o3_rely=ol_rely; |
|
281 o3_fgbackground=ol_fgbackground; |
|
282 o3_bgbackground=ol_bgbackground; |
|
283 o3_padxl=ol_padxl; |
|
284 o3_padxr=ol_padxr; |
|
285 o3_padyt=ol_padyt; |
|
286 o3_padyb=ol_padyb; |
|
287 o3_fullhtml=ol_fullhtml; |
|
288 o3_vpos=ol_vpos; |
|
289 o3_aboveheight=ol_aboveheight; |
|
290 o3_capicon=ol_capicon; |
|
291 o3_textfont=ol_textfont; |
|
292 o3_captionfont=ol_captionfont; |
|
293 o3_closefont=ol_closefont; |
|
294 o3_textsize=ol_textsize; |
|
295 o3_captionsize=ol_captionsize; |
|
296 o3_closesize=ol_closesize; |
|
297 o3_timeout=ol_timeout; |
|
298 o3_function=ol_function; |
|
299 o3_delay=ol_delay; |
|
300 o3_hauto=ol_hauto; |
|
301 o3_vauto=ol_vauto; |
|
302 o3_closeclick=ol_closeclick; |
|
303 o3_wrap=ol_wrap; |
|
304 o3_followmouse=ol_followmouse; |
|
305 o3_mouseoff=ol_mouseoff; |
|
306 o3_closetitle=ol_closetitle; |
|
307 o3_css=ol_css; |
|
308 o3_compatmode=ol_compatmode; |
|
309 o3_fgclass=ol_fgclass; |
|
310 o3_bgclass=ol_bgclass; |
|
311 o3_textfontclass=ol_textfontclass; |
|
312 o3_captionfontclass=ol_captionfontclass; |
|
313 o3_closefontclass=ol_closefontclass; |
|
314 |
|
315 setRunTimeVariables(); |
|
316 |
|
317 fnRef = ''; |
|
318 |
|
319 // Special for frame support, over must be reset... |
|
320 o3_frame = ol_frame; |
|
321 |
|
322 if(!(over=createDivContainer())) return false; |
|
323 |
|
324 parseTokens('o3_', overlib.arguments); |
|
325 if (!postParseChecks()) return false; |
|
326 |
|
327 if (o3_delay == 0) { |
|
328 return runHook("olMain", FREPLACE); |
|
329 } else { |
|
330 o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay); |
|
331 return false; |
|
332 } |
|
333 } |
|
334 |
|
335 // Clears popups if appropriate |
|
336 function nd(time) { |
|
337 if (olLoaded && !isExclusive()) { |
|
338 hideDelay(time); // delay popup close if time specified |
|
339 |
|
340 if (o3_removecounter >= 1) { o3_showingsticky = 0 }; |
|
341 |
|
342 if (o3_showingsticky == 0) { |
|
343 o3_allowmove = 0; |
|
344 if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over); |
|
345 } else { |
|
346 o3_removecounter++; |
|
347 } |
|
348 } |
|
349 |
|
350 return true; |
|
351 } |
|
352 |
|
353 // The Close onMouseOver function for stickies |
|
354 function cClick() { |
|
355 if (olLoaded) { |
|
356 runHook("hideObject", FREPLACE, over); |
|
357 o3_showingsticky = 0; |
|
358 } |
|
359 return false; |
|
360 } |
|
361 |
|
362 // Method for setting page specific defaults. |
|
363 function overlib_pagedefaults() { |
|
364 parseTokens('ol_', overlib_pagedefaults.arguments); |
|
365 } |
|
366 |
|
367 |
|
368 //////// |
|
369 // OVERLIB MAIN FUNCTION |
|
370 //////// |
|
371 |
|
372 // This function decides what it is we want to display and how we want it done. |
|
373 function olMain() { |
|
374 var layerhtml, styleType; |
|
375 runHook("olMain", FBEFORE); |
|
376 |
|
377 if (o3_background!="" || o3_fullhtml) { |
|
378 // Use background instead of box. |
|
379 layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml); |
|
380 } else { |
|
381 // They want a popup box. |
|
382 styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass"); |
|
383 |
|
384 // Prepare popup background |
|
385 if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\""; |
|
386 if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground); |
|
387 |
|
388 // Prepare popup colors |
|
389 if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor); |
|
390 if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor); |
|
391 |
|
392 // Prepare popup height |
|
393 if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height); |
|
394 else o3_height = ""; |
|
395 |
|
396 // Decide which kinda box. |
|
397 if (o3_cap=="") { |
|
398 // Plain |
|
399 layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text); |
|
400 } else { |
|
401 // With caption |
|
402 if (o3_sticky) { |
|
403 // Show close text |
|
404 layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close); |
|
405 } else { |
|
406 // No close text |
|
407 layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, ""); |
|
408 } |
|
409 } |
|
410 } |
|
411 |
|
412 // We want it to stick! |
|
413 if (o3_sticky) { |
|
414 if (o3_timerid > 0) { |
|
415 clearTimeout(o3_timerid); |
|
416 o3_timerid = 0; |
|
417 } |
|
418 o3_showingsticky = 1; |
|
419 o3_removecounter = 0; |
|
420 } |
|
421 |
|
422 // Created a separate routine to generate the popup to make it easier |
|
423 // to implement a plugin capability |
|
424 if (!runHook("createPopup", FREPLACE, layerhtml)) return false; |
|
425 |
|
426 // Prepare status bar |
|
427 if (o3_autostatus > 0) { |
|
428 o3_status = o3_text; |
|
429 if (o3_autostatus > 1) o3_status = o3_cap; |
|
430 } |
|
431 |
|
432 // When placing the layer the first time, even stickies may be moved. |
|
433 o3_allowmove = 0; |
|
434 |
|
435 // Initiate a timer for timeout |
|
436 if (o3_timeout > 0) { |
|
437 if (o3_timerid > 0) clearTimeout(o3_timerid); |
|
438 o3_timerid = setTimeout("cClick()", o3_timeout); |
|
439 } |
|
440 |
|
441 // Show layer |
|
442 runHook("disp", FREPLACE, o3_status); |
|
443 runHook("olMain", FAFTER); |
|
444 |
|
445 return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != ''); |
|
446 } |
|
447 |
|
448 //////// |
|
449 // LAYER GENERATION FUNCTIONS |
|
450 //////// |
|
451 // These functions just handle popup content with tags that should adhere to the W3C standards specification. |
|
452 |
|
453 // Makes simple table without caption |
|
454 function ol_content_simple(text) { |
|
455 var cpIsMultiple = /,/.test(o3_cellpad); |
|
456 var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>'; |
|
457 |
|
458 set_background(""); |
|
459 return txt; |
|
460 } |
|
461 |
|
462 // Makes table with caption and optional close link |
|
463 function ol_content_caption(text,title,close) { |
|
464 var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad); |
|
465 var closing, closeevent; |
|
466 |
|
467 closing = ""; |
|
468 closeevent = "onmouseover"; |
|
469 if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick"; |
|
470 if (o3_capicon != "") { |
|
471 nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"'; |
|
472 if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"'; |
|
473 o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />'; |
|
474 } |
|
475 |
|
476 if (close != "") |
|
477 closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>'; |
|
478 txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>'; |
|
479 |
|
480 set_background(""); |
|
481 return txt; |
|
482 } |
|
483 |
|
484 // Sets the background picture,padding and lots more. :) |
|
485 function ol_content_background(text,picture,hasfullhtml) { |
|
486 if (hasfullhtml) { |
|
487 txt=text; |
|
488 } else { |
|
489 txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>'; |
|
490 } |
|
491 |
|
492 set_background(picture); |
|
493 return txt; |
|
494 } |
|
495 |
|
496 // Loads a picture into the div. |
|
497 function set_background(pic) { |
|
498 if (pic == "") { |
|
499 if (olNs4) { |
|
500 over.background.src = null; |
|
501 } else if (over.style) { |
|
502 over.style.backgroundImage = "none"; |
|
503 } |
|
504 } else { |
|
505 if (olNs4) { |
|
506 over.background.src = pic; |
|
507 } else if (over.style) { |
|
508 over.style.width=o3_width + 'px'; |
|
509 over.style.backgroundImage = "url("+pic+")"; |
|
510 } |
|
511 } |
|
512 } |
|
513 |
|
514 //////// |
|
515 // HANDLING FUNCTIONS |
|
516 //////// |
|
517 var olShowId=-1; |
|
518 |
|
519 // Displays the popup |
|
520 function disp(statustext) { |
|
521 runHook("disp", FBEFORE); |
|
522 |
|
523 if (o3_allowmove == 0) { |
|
524 runHook("placeLayer", FREPLACE); |
|
525 (olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over); |
|
526 o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1; |
|
527 } |
|
528 |
|
529 runHook("disp", FAFTER); |
|
530 |
|
531 if (statustext != "") self.status = statustext; |
|
532 } |
|
533 |
|
534 // Creates the actual popup structure |
|
535 function createPopup(lyrContent){ |
|
536 runHook("createPopup", FBEFORE); |
|
537 |
|
538 if (o3_wrap) { |
|
539 var wd,ww,theObj = (olNs4 ? over : over.style); |
|
540 theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); |
|
541 layerWrite(lyrContent); |
|
542 wd = (olNs4 ? over.clip.width : over.offsetWidth); |
|
543 if (wd > (ww=windowWidth())) { |
|
544 lyrContent=lyrContent.replace(/\ /g, ' '); |
|
545 o3_width=ww; |
|
546 o3_wrap=0; |
|
547 } |
|
548 } |
|
549 |
|
550 layerWrite(lyrContent); |
|
551 |
|
552 // Have to set o3_width for placeLayer() routine if o3_wrap is turned on |
|
553 if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth); |
|
554 |
|
555 runHook("createPopup", FAFTER, lyrContent); |
|
556 |
|
557 return true; |
|
558 } |
|
559 |
|
560 // Decides where we want the popup. |
|
561 function placeLayer() { |
|
562 var placeX, placeY, widthFix = 0; |
|
563 |
|
564 // HORIZONTAL PLACEMENT, re-arranged to work in Safari |
|
565 if (o3_frame.innerWidth) widthFix=18; |
|
566 iwidth = windowWidth(); |
|
567 |
|
568 // Horizontal scroll offset |
|
569 winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset; |
|
570 |
|
571 placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); |
|
572 |
|
573 // VERTICAL PLACEMENT, re-arranged to work in Safari |
|
574 if (o3_frame.innerHeight) { |
|
575 iheight=o3_frame.innerHeight; |
|
576 } else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { |
|
577 iheight=eval('o3_frame.'+docRoot+'.clientHeight'); |
|
578 } |
|
579 |
|
580 // Vertical scroll offset |
|
581 scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset; |
|
582 placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); |
|
583 |
|
584 // Actually move the object. |
|
585 repositionTo(over, placeX, placeY); |
|
586 } |
|
587 |
|
588 // Moves the layer |
|
589 function olMouseMove(e) { |
|
590 var e = (e) ? e : event; |
|
591 |
|
592 if (e.pageX) { |
|
593 o3_x = e.pageX; |
|
594 o3_y = e.pageY; |
|
595 } else if (e.clientX) { |
|
596 o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft'); |
|
597 o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop'); |
|
598 } |
|
599 |
|
600 if (o3_allowmove == 1) runHook("placeLayer", FREPLACE); |
|
601 |
|
602 // MouseOut handler |
|
603 if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) { |
|
604 (olHideDelay ? hideDelay(olHideDelay) : cClick()); |
|
605 hoveringSwitch = !hoveringSwitch; |
|
606 } |
|
607 } |
|
608 |
|
609 // Fake function for 3.0 users. |
|
610 function no_overlib() { return ver3fix; } |
|
611 |
|
612 // Capture the mouse and chain other scripts. |
|
613 function olMouseCapture() { |
|
614 capExtent = document; |
|
615 var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove; |
|
616 var re = /function[ ]*(\w*)\(/; |
|
617 |
|
618 wMv = (!olIe4 && window.onmousemove); |
|
619 if (document.onmousemove || wMv) { |
|
620 if (wMv) capExtent = window; |
|
621 f = capExtent.onmousemove.toString(); |
|
622 fN = f.match(re); |
|
623 if (fN == null) { |
|
624 str = f+'(e); '; |
|
625 } else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) { |
|
626 if (!olOp && wMv) { |
|
627 l = f.indexOf('{')+1; |
|
628 k = f.lastIndexOf('}'); |
|
629 sS = f.substring(l,k); |
|
630 if ((l = sS.indexOf('(')) != -1) { |
|
631 sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,''); |
|
632 if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null; |
|
633 else str = sS + '(e);'; |
|
634 } |
|
635 } |
|
636 if (!str) { |
|
637 olCheckMouseCapture = false; |
|
638 return; |
|
639 } |
|
640 } else { |
|
641 if (fN[1]) str = fN[1]+'(e); '; |
|
642 else { |
|
643 l = f.indexOf('{')+1; |
|
644 k = f.lastIndexOf('}'); |
|
645 str = f.substring(l,k) + '\n'; |
|
646 } |
|
647 } |
|
648 str += 'olMouseMove(e); '; |
|
649 mseHandler = new Function('e', str); |
|
650 } |
|
651 |
|
652 capExtent.onmousemove = mseHandler; |
|
653 if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE); |
|
654 } |
|
655 |
|
656 //////// |
|
657 // PARSING FUNCTIONS |
|
658 //////// |
|
659 |
|
660 // Does the actual command parsing. |
|
661 function parseTokens(pf, ar) { |
|
662 // What the next argument is expected to be. |
|
663 var v, i, mode=-1, par = (pf != 'ol_'); |
|
664 var fnMark = (par && !ar.length ? 1 : 0); |
|
665 |
|
666 for (i = 0; i < ar.length; i++) { |
|
667 if (mode < 0) { |
|
668 // Arg is maintext,unless its a number between pmStart and pmUpper |
|
669 // then its a command. |
|
670 if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) { |
|
671 fnMark = (par ? 1 : 0); |
|
672 i--; // backup one so that the next block can parse it |
|
673 } else { |
|
674 switch(pf) { |
|
675 case 'ol_': |
|
676 ol_text = ar[i].toString(); |
|
677 break; |
|
678 default: |
|
679 o3_text=ar[i].toString(); |
|
680 } |
|
681 } |
|
682 mode = 0; |
|
683 } else { |
|
684 // Note: NS4 doesn't like switch cases with vars. |
|
685 if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; } |
|
686 if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; } |
|
687 if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; } |
|
688 if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; } |
|
689 if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; } |
|
690 if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; } |
|
691 if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; } |
|
692 if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; } |
|
693 if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; } |
|
694 if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; } |
|
695 if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; } |
|
696 if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; } |
|
697 if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; } |
|
698 if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; } |
|
699 if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; } |
|
700 if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; } |
|
701 if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; } |
|
702 if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; } |
|
703 if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; } |
|
704 if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; } |
|
705 if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; } |
|
706 if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again. |
|
707 if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; } |
|
708 if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; } |
|
709 if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; } |
|
710 if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; } |
|
711 if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; } |
|
712 if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; } |
|
713 if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; } |
|
714 if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; } |
|
715 if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; } |
|
716 if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; } |
|
717 if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; } |
|
718 if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; } |
|
719 if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; } |
|
720 if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; } |
|
721 if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; } |
|
722 if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; } |
|
723 if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; } |
|
724 if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; } |
|
725 if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; } |
|
726 if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; } |
|
727 if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; } |
|
728 if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i]; opt_FUNCTION(v); } continue; } |
|
729 if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; } |
|
730 if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; } |
|
731 if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; } |
|
732 if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; } |
|
733 if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; } |
|
734 if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; } |
|
735 if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; } |
|
736 if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; } |
|
737 if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; } |
|
738 if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; } |
|
739 if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; } |
|
740 if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; } |
|
741 if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; } |
|
742 if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; } |
|
743 if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; } |
|
744 i = parseCmdLine(pf, i, ar); |
|
745 } |
|
746 } |
|
747 |
|
748 if (fnMark && o3_function) o3_text = o3_function(); |
|
749 |
|
750 if ((pf == 'o3_') && o3_wrap) { |
|
751 o3_width = 0; |
|
752 |
|
753 var tReg=/<.*\n*>/ig; |
|
754 if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, ' '); |
|
755 if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, ' '); |
|
756 } |
|
757 if ((pf == 'o3_') && o3_sticky) { |
|
758 if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close; |
|
759 if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' '); |
|
760 } |
|
761 } |
|
762 |
|
763 |
|
764 //////// |
|
765 // LAYER FUNCTIONS |
|
766 //////// |
|
767 |
|
768 // Writes to a layer |
|
769 function layerWrite(txt) { |
|
770 txt += "\n"; |
|
771 if (olNs4) { |
|
772 var lyr = o3_frame.document.layers['overDiv'].document |
|
773 lyr.write(txt) |
|
774 lyr.close() |
|
775 } else if (typeof over.innerHTML != 'undefined') { |
|
776 if (olIe5 && isMac) over.innerHTML = ''; |
|
777 over.innerHTML = txt; |
|
778 } else { |
|
779 range = o3_frame.document.createRange(); |
|
780 range.setStartAfter(over); |
|
781 domfrag = range.createContextualFragment(txt); |
|
782 |
|
783 while (over.hasChildNodes()) { |
|
784 over.removeChild(over.lastChild); |
|
785 } |
|
786 |
|
787 over.appendChild(domfrag); |
|
788 } |
|
789 } |
|
790 |
|
791 // Make an object visible |
|
792 function showObject(obj) { |
|
793 runHook("showObject", FBEFORE); |
|
794 |
|
795 var theObj=(olNs4 ? obj : obj.style); |
|
796 theObj.visibility = 'visible'; |
|
797 |
|
798 runHook("showObject", FAFTER); |
|
799 } |
|
800 |
|
801 // Hides an object |
|
802 function hideObject(obj) { |
|
803 runHook("hideObject", FBEFORE); |
|
804 |
|
805 var theObj=(olNs4 ? obj : obj.style); |
|
806 if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; } |
|
807 theObj.visibility = 'hidden'; |
|
808 theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0); |
|
809 |
|
810 if (o3_timerid > 0) clearTimeout(o3_timerid); |
|
811 if (o3_delayid > 0) clearTimeout(o3_delayid); |
|
812 |
|
813 o3_timerid = 0; |
|
814 o3_delayid = 0; |
|
815 self.status = ""; |
|
816 |
|
817 if (obj.onmouseout||obj.onmouseover) { |
|
818 if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER); |
|
819 obj.onmouseout = obj.onmouseover = null; |
|
820 } |
|
821 |
|
822 runHook("hideObject", FAFTER); |
|
823 } |
|
824 |
|
825 // Move a layer |
|
826 function repositionTo(obj, xL, yL) { |
|
827 var theObj=(olNs4 ? obj : obj.style); |
|
828 theObj.left = xL + (!olNs4 ? 'px' : 0); |
|
829 theObj.top = yL + (!olNs4 ? 'px' : 0); |
|
830 } |
|
831 |
|
832 // Check position of cursor relative to overDiv DIVision; mouseOut function |
|
833 function cursorOff() { |
|
834 var left = parseInt(over.style.left); |
|
835 var top = parseInt(over.style.top); |
|
836 var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width)); |
|
837 var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight); |
|
838 |
|
839 if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true; |
|
840 |
|
841 return false; |
|
842 } |
|
843 |
|
844 |
|
845 //////// |
|
846 // COMMAND FUNCTIONS |
|
847 //////// |
|
848 |
|
849 // Calls callme or the default function. |
|
850 function opt_FUNCTION(callme) { |
|
851 o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function')); |
|
852 |
|
853 return 0; |
|
854 } |
|
855 |
|
856 // Handle hovering |
|
857 function opt_NOCLOSE(unused) { |
|
858 if (!unused) o3_close = ""; |
|
859 |
|
860 if (olNs4) { |
|
861 over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER); |
|
862 over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } } |
|
863 over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); } |
|
864 } else { |
|
865 over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } } |
|
866 } |
|
867 |
|
868 return 0; |
|
869 } |
|
870 |
|
871 // Function to scan command line arguments for multiples |
|
872 function opt_MULTIPLEARGS(i, args, parameter) { |
|
873 var k=i, re, pV, str=''; |
|
874 |
|
875 for(k=i; k<args.length; k++) { |
|
876 if(typeof args[k] == 'number' && args[k]>pmStart) break; |
|
877 str += args[k] + ','; |
|
878 } |
|
879 if (str) str = str.substring(0,--str.length); |
|
880 |
|
881 k--; // reduce by one so the for loop this is in works correctly |
|
882 pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str; |
|
883 eval(parameter + '="' + pV + '"'); |
|
884 |
|
885 return k; |
|
886 } |
|
887 |
|
888 // Remove in texts when done. |
|
889 function nbspCleanup() { |
|
890 if (o3_wrap) { |
|
891 o3_text = o3_text.replace(/\ /g, ' '); |
|
892 o3_cap = o3_cap.replace(/\ /g, ' '); |
|
893 } |
|
894 } |
|
895 |
|
896 // Escape embedded single quotes in text strings |
|
897 function escSglQuote(str) { |
|
898 return str.toString().replace(/'/g,"\\'"); |
|
899 } |
|
900 |
|
901 // Onload handler for window onload event |
|
902 function OLonLoad_handler(e) { |
|
903 var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i; |
|
904 |
|
905 if(!olLoaded) olLoaded=1; |
|
906 |
|
907 // Remove it for Gecko based browsers |
|
908 if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false); |
|
909 else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick() |
|
910 window.detachEvent("onload",OLonLoad_handler); |
|
911 var fN = document.body.getAttribute('onload'); |
|
912 if (fN) { |
|
913 fN=fN.toString().match(re); |
|
914 if (fN && fN.length) { |
|
915 for (i=0; i<fN.length; i++) { |
|
916 if (/anonymous/.test(fN[i])) continue; |
|
917 while((l=fN[i].search(/\)[;\s]+/)) != -1) { |
|
918 fn=fN[i].substring(0,l+1); |
|
919 fN[i] = fN[i].substring(l+2); |
|
920 if (olre.test(fn)) eval(fn); |
|
921 } |
|
922 } |
|
923 } |
|
924 } |
|
925 } |
|
926 } |
|
927 |
|
928 // Wraps strings in Layer Generation Functions with the correct tags |
|
929 // endWrap true(if end tag) or false if start tag |
|
930 // fontSizeStr - font size string such as '1' or '10px' |
|
931 // whichString is being wrapped -- 'text', 'caption', or 'close' |
|
932 function wrapStr(endWrap,fontSizeStr,whichString) { |
|
933 var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr); |
|
934 fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr; |
|
935 if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>'; |
|
936 else { |
|
937 fontStr='o3_'+whichString+'font'; |
|
938 fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color'; |
|
939 return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">'; |
|
940 } |
|
941 } |
|
942 |
|
943 // Quotes Multi word font names; needed for CSS Standards adherence in font-family |
|
944 function quoteMultiNameFonts(theFont) { |
|
945 var v, pM=theFont.split(','); |
|
946 for (var i=0; i<pM.length; i++) { |
|
947 v=pM[i]; |
|
948 v=v.replace(/^\s+/,'').replace(/\s+$/,''); |
|
949 if(/\s/.test(v) && !/['"]/.test(v)) { |
|
950 v="\'"+v+"\'"; |
|
951 pM[i]=v; |
|
952 } |
|
953 } |
|
954 return pM.join(); |
|
955 } |
|
956 |
|
957 // dummy function which will be overridden |
|
958 function isExclusive(args) { |
|
959 return false; |
|
960 } |
|
961 |
|
962 // Sets cellpadding style string value |
|
963 function setCellPadStr(parameter) { |
|
964 var Str='', j=0, ary = new Array(), top, bottom, left, right; |
|
965 |
|
966 Str+='padding: '; |
|
967 ary=parameter.replace(/\s+/g,'').split(','); |
|
968 |
|
969 switch(ary.length) { |
|
970 case 2: |
|
971 top=bottom=ary[j]; |
|
972 left=right=ary[++j]; |
|
973 break; |
|
974 case 3: |
|
975 top=ary[j]; |
|
976 left=right=ary[++j]; |
|
977 bottom=ary[++j]; |
|
978 break; |
|
979 case 4: |
|
980 top=ary[j]; |
|
981 right=ary[++j]; |
|
982 bottom=ary[++j]; |
|
983 left=ary[++j]; |
|
984 break; |
|
985 } |
|
986 |
|
987 Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;'); |
|
988 |
|
989 return Str; |
|
990 } |
|
991 |
|
992 // function will delay close by time milliseconds |
|
993 function hideDelay(time) { |
|
994 if (time&&!o3_delay) { |
|
995 if (o3_timerid > 0) clearTimeout(o3_timerid); |
|
996 |
|
997 o3_timerid=setTimeout("cClick()",(o3_timeout=time)); |
|
998 } |
|
999 } |
|
1000 |
|
1001 // Was originally in the placeLayer() routine; separated out for future ease |
|
1002 function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) { |
|
1003 var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount; |
|
1004 var parsedWidth = parseInt(o3_width); |
|
1005 |
|
1006 if (o3_fixx > -1 || o3_relx != null) { |
|
1007 // Fixed position |
|
1008 placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx); |
|
1009 } else { |
|
1010 // If HAUTO, decide what to use. |
|
1011 if (o3_hauto == 1) { |
|
1012 if ((o3_x - winoffset) > (iwidth / 2)) { |
|
1013 o3_hpos = LEFT; |
|
1014 } else { |
|
1015 o3_hpos = RIGHT; |
|
1016 } |
|
1017 } |
|
1018 |
|
1019 // From mouse |
|
1020 if (o3_hpos == CENTER) { // Center |
|
1021 placeX = o3_x+o3_offsetx-(parsedWidth/2); |
|
1022 |
|
1023 if (placeX < winoffset) placeX = winoffset; |
|
1024 } |
|
1025 |
|
1026 if (o3_hpos == RIGHT) { // Right |
|
1027 placeX = o3_x+o3_offsetx; |
|
1028 |
|
1029 if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) { |
|
1030 placeX = iwidth+winoffset - parsedWidth - widthFix; |
|
1031 if (placeX < 0) placeX = 0; |
|
1032 } |
|
1033 } |
|
1034 if (o3_hpos == LEFT) { // Left |
|
1035 placeX = o3_x-o3_offsetx-parsedWidth; |
|
1036 if (placeX < winoffset) placeX = winoffset; |
|
1037 } |
|
1038 |
|
1039 // Snapping! |
|
1040 if (o3_snapx > 1) { |
|
1041 var snapping = placeX % o3_snapx; |
|
1042 |
|
1043 if (o3_hpos == LEFT) { |
|
1044 placeX = placeX - (o3_snapx+snapping); |
|
1045 } else { |
|
1046 // CENTER and RIGHT |
|
1047 placeX = placeX+(o3_snapx - snapping); |
|
1048 } |
|
1049 |
|
1050 if (placeX < winoffset) placeX = winoffset; |
|
1051 } |
|
1052 } |
|
1053 |
|
1054 return placeX; |
|
1055 } |
|
1056 |
|
1057 // was originally in the placeLayer() routine; separated out for future ease |
|
1058 function verticalPlacement(browserHeight,verticalScrollAmount) { |
|
1059 var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount; |
|
1060 var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight)); |
|
1061 |
|
1062 if (o3_fixy > -1 || o3_rely != null) { |
|
1063 // Fixed position |
|
1064 placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy); |
|
1065 } else { |
|
1066 // If VAUTO, decide what to use. |
|
1067 if (o3_vauto == 1) { |
|
1068 if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) { |
|
1069 o3_vpos = ABOVE; |
|
1070 } else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) { |
|
1071 o3_vpos = BELOW; |
|
1072 } |
|
1073 } |
|
1074 |
|
1075 // From mouse |
|
1076 if (o3_vpos == ABOVE) { |
|
1077 if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; |
|
1078 |
|
1079 placeY = o3_y - (o3_aboveheight+o3_offsety); |
|
1080 if (placeY < scrolloffset) placeY = scrolloffset; |
|
1081 } else { |
|
1082 // BELOW |
|
1083 placeY = o3_y+o3_offsety; |
|
1084 } |
|
1085 |
|
1086 // Snapping! |
|
1087 if (o3_snapy > 1) { |
|
1088 var snapping = placeY % o3_snapy; |
|
1089 |
|
1090 if (o3_aboveheight > 0 && o3_vpos == ABOVE) { |
|
1091 placeY = placeY - (o3_snapy+snapping); |
|
1092 } else { |
|
1093 placeY = placeY+(o3_snapy - snapping); |
|
1094 } |
|
1095 |
|
1096 if (placeY < scrolloffset) placeY = scrolloffset; |
|
1097 } |
|
1098 } |
|
1099 |
|
1100 return placeY; |
|
1101 } |
|
1102 |
|
1103 // checks positioning flags |
|
1104 function checkPositionFlags() { |
|
1105 if (olHautoFlag) olHautoFlag = o3_hauto=0; |
|
1106 if (olVautoFlag) olVautoFlag = o3_vauto=0; |
|
1107 return true; |
|
1108 } |
|
1109 |
|
1110 // get Browser window width |
|
1111 function windowWidth() { |
|
1112 var w; |
|
1113 if (o3_frame.innerWidth) w=o3_frame.innerWidth; |
|
1114 else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) |
|
1115 w=eval('o3_frame.'+docRoot+'.clientWidth'); |
|
1116 return w; |
|
1117 } |
|
1118 |
|
1119 // create the div container for popup content if it doesn't exist |
|
1120 function createDivContainer(id,frm,zValue) { |
|
1121 id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000); |
|
1122 var objRef, divContainer = layerReference(id); |
|
1123 |
|
1124 if (divContainer == null) { |
|
1125 if (olNs4) { |
|
1126 divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm); |
|
1127 objRef = divContainer; |
|
1128 } else { |
|
1129 var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]); |
|
1130 if (olIe4&&!document.getElementById) { |
|
1131 body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>'); |
|
1132 divContainer=layerReference(id); |
|
1133 } else { |
|
1134 divContainer = frm.document.createElement("DIV"); |
|
1135 divContainer.id = id; |
|
1136 body.appendChild(divContainer); |
|
1137 } |
|
1138 objRef = divContainer.style; |
|
1139 } |
|
1140 |
|
1141 objRef.position = 'absolute'; |
|
1142 objRef.visibility = 'hidden'; |
|
1143 objRef.zIndex = zValue; |
|
1144 if (olIe4&&!olOp) objRef.left = objRef.top = '0px'; |
|
1145 else objRef.left = objRef.top = -10000 + (!olNs4 ? 'px' : 0); |
|
1146 } |
|
1147 |
|
1148 return divContainer; |
|
1149 } |
|
1150 |
|
1151 // get reference to a layer with ID=id |
|
1152 function layerReference(id) { |
|
1153 return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id))); |
|
1154 } |
|
1155 //////// |
|
1156 // UTILITY FUNCTIONS |
|
1157 //////// |
|
1158 |
|
1159 // Checks if something is a function. |
|
1160 function isFunction(fnRef) { |
|
1161 var rtn = true; |
|
1162 |
|
1163 if (typeof fnRef == 'object') { |
|
1164 for (var i = 0; i < fnRef.length; i++) { |
|
1165 if (typeof fnRef[i]=='function') continue; |
|
1166 rtn = false; |
|
1167 break; |
|
1168 } |
|
1169 } else if (typeof fnRef != 'function') { |
|
1170 rtn = false; |
|
1171 } |
|
1172 |
|
1173 return rtn; |
|
1174 } |
|
1175 |
|
1176 // Converts an array into an argument string for use in eval. |
|
1177 function argToString(array, strtInd, argName) { |
|
1178 var jS = strtInd, aS = '', ar = array; |
|
1179 argName=(argName ? argName : 'ar'); |
|
1180 |
|
1181 if (ar.length > jS) { |
|
1182 for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], '; |
|
1183 aS = aS.substring(0, aS.length-2); |
|
1184 } |
|
1185 |
|
1186 return aS; |
|
1187 } |
|
1188 |
|
1189 // Places a hook in the correct position in a hook point. |
|
1190 function reOrder(hookPt, fnRef, order) { |
|
1191 var newPt = new Array(), match, i, j; |
|
1192 |
|
1193 if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt; |
|
1194 |
|
1195 if (typeof order=='function') { |
|
1196 if (typeof fnRef=='object') { |
|
1197 newPt = newPt.concat(fnRef); |
|
1198 } else { |
|
1199 newPt[newPt.length++]=fnRef; |
|
1200 } |
|
1201 |
|
1202 for (i = 0; i < hookPt.length; i++) { |
|
1203 match = false; |
|
1204 if (typeof fnRef == 'function' && hookPt[i] == fnRef) { |
|
1205 continue; |
|
1206 } else { |
|
1207 for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) { |
|
1208 match = true; |
|
1209 break; |
|
1210 } |
|
1211 } |
|
1212 if (!match) newPt[newPt.length++] = hookPt[i]; |
|
1213 } |
|
1214 |
|
1215 newPt[newPt.length++] = order; |
|
1216 |
|
1217 } else if (typeof order == 'object') { |
|
1218 if (typeof fnRef == 'object') { |
|
1219 newPt = newPt.concat(fnRef); |
|
1220 } else { |
|
1221 newPt[newPt.length++] = fnRef; |
|
1222 } |
|
1223 |
|
1224 for (j = 0; j < hookPt.length; j++) { |
|
1225 match = false; |
|
1226 if (typeof fnRef == 'function' && hookPt[j] == fnRef) { |
|
1227 continue; |
|
1228 } else { |
|
1229 for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) { |
|
1230 match = true; |
|
1231 break; |
|
1232 } |
|
1233 } |
|
1234 if (!match) newPt[newPt.length++]=hookPt[j]; |
|
1235 } |
|
1236 |
|
1237 for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i]; |
|
1238 newPt.length = 0; |
|
1239 |
|
1240 for (j = 0; j < hookPt.length; j++) { |
|
1241 match = false; |
|
1242 for (i = 0; i < order.length; i++) { |
|
1243 if (hookPt[j] == order[i]) { |
|
1244 match = true; |
|
1245 break; |
|
1246 } |
|
1247 } |
|
1248 if (!match) newPt[newPt.length++] = hookPt[j]; |
|
1249 } |
|
1250 newPt = newPt.concat(order); |
|
1251 } |
|
1252 |
|
1253 hookPt = newPt; |
|
1254 |
|
1255 return hookPt; |
|
1256 } |
|
1257 |
|
1258 //////// |
|
1259 // PLUGIN ACTIVATION FUNCTIONS |
|
1260 //////// |
|
1261 |
|
1262 // Runs plugin functions to set runtime variables. |
|
1263 function setRunTimeVariables(){ |
|
1264 if (typeof runTime != 'undefined' && runTime.length) { |
|
1265 for (var k = 0; k < runTime.length; k++) { |
|
1266 runTime[k](); |
|
1267 } |
|
1268 } |
|
1269 } |
|
1270 |
|
1271 // Runs plugin functions to parse commands. |
|
1272 function parseCmdLine(pf, i, args) { |
|
1273 if (typeof cmdLine != 'undefined' && cmdLine.length) { |
|
1274 for (var k = 0; k < cmdLine.length; k++) { |
|
1275 var j = cmdLine[k](pf, i, args); |
|
1276 if (j >- 1) { |
|
1277 i = j; |
|
1278 break; |
|
1279 } |
|
1280 } |
|
1281 } |
|
1282 |
|
1283 return i; |
|
1284 } |
|
1285 |
|
1286 // Runs plugin functions to do things after parse. |
|
1287 function postParseChecks(pf,args){ |
|
1288 if (typeof postParse != 'undefined' && postParse.length) { |
|
1289 for (var k = 0; k < postParse.length; k++) { |
|
1290 if (postParse[k](pf,args)) continue; |
|
1291 return false; // end now since have an error |
|
1292 } |
|
1293 } |
|
1294 return true; |
|
1295 } |
|
1296 |
|
1297 |
|
1298 //////// |
|
1299 // PLUGIN REGISTRATION FUNCTIONS |
|
1300 //////// |
|
1301 |
|
1302 // Registers commands and creates constants. |
|
1303 function registerCommands(cmdStr) { |
|
1304 if (typeof cmdStr!='string') return; |
|
1305 |
|
1306 var pM = cmdStr.split(','); |
|
1307 pms = pms.concat(pM); |
|
1308 |
|
1309 for (var i = 0; i< pM.length; i++) { |
|
1310 eval(pM[i].toUpperCase()+'='+pmCount++); |
|
1311 } |
|
1312 } |
|
1313 |
|
1314 // Registers no-parameter commands |
|
1315 function registerNoParameterCommands(cmdStr) { |
|
1316 if (!cmdStr && typeof cmdStr != 'string') return; |
|
1317 pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr; |
|
1318 } |
|
1319 |
|
1320 // Register a function to hook at a certain point. |
|
1321 function registerHook(fnHookTo, fnRef, hookType, optPm) { |
|
1322 var hookPt, last = typeof optPm; |
|
1323 |
|
1324 if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return; |
|
1325 if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference(); |
|
1326 |
|
1327 hookPt = hookPts[fnHookTo]; |
|
1328 |
|
1329 if (hookType != null) { |
|
1330 if (hookType == FREPLACE) { |
|
1331 hookPt.ovload = fnRef; // replace normal overlib routine |
|
1332 if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; |
|
1333 |
|
1334 } else if (hookType == FBEFORE || hookType == FAFTER) { |
|
1335 var hookPt=(hookType == 1 ? hookPt.before : hookPt.after); |
|
1336 |
|
1337 if (typeof fnRef == 'object') { |
|
1338 hookPt = hookPt.concat(fnRef); |
|
1339 } else { |
|
1340 hookPt[hookPt.length++] = fnRef; |
|
1341 } |
|
1342 |
|
1343 if (optPm) hookPt = reOrder(hookPt, fnRef, optPm); |
|
1344 |
|
1345 } else if (hookType == FALTERNATE) { |
|
1346 if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef; |
|
1347 } else if (hookType == FCHAIN) { |
|
1348 hookPt = hookPt.chain; |
|
1349 if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions |
|
1350 else hookPt[hookPt.length++]=fnRef; |
|
1351 } |
|
1352 |
|
1353 return; |
|
1354 } |
|
1355 } |
|
1356 |
|
1357 // Register a function that will set runtime variables. |
|
1358 function registerRunTimeFunction(fn) { |
|
1359 if (isFunction(fn)) { |
|
1360 if (typeof fn == 'object') { |
|
1361 runTime = runTime.concat(fn); |
|
1362 } else { |
|
1363 runTime[runTime.length++] = fn; |
|
1364 } |
|
1365 } |
|
1366 } |
|
1367 |
|
1368 // Register a function that will handle command parsing. |
|
1369 function registerCmdLineFunction(fn){ |
|
1370 if (isFunction(fn)) { |
|
1371 if (typeof fn == 'object') { |
|
1372 cmdLine = cmdLine.concat(fn); |
|
1373 } else { |
|
1374 cmdLine[cmdLine.length++] = fn; |
|
1375 } |
|
1376 } |
|
1377 } |
|
1378 |
|
1379 // Register a function that does things after command parsing. |
|
1380 function registerPostParseFunction(fn){ |
|
1381 if (isFunction(fn)) { |
|
1382 if (typeof fn == 'object') { |
|
1383 postParse = postParse.concat(fn); |
|
1384 } else { |
|
1385 postParse[postParse.length++] = fn; |
|
1386 } |
|
1387 } |
|
1388 } |
|
1389 |
|
1390 //////// |
|
1391 // PLUGIN REGISTRATION FUNCTIONS |
|
1392 //////// |
|
1393 |
|
1394 // Runs any hooks registered. |
|
1395 function runHook(fnHookTo, hookType) { |
|
1396 var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments; |
|
1397 |
|
1398 if (hookType == FREPLACE) { |
|
1399 arS = argToString(ar, 2); |
|
1400 |
|
1401 if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')'); |
|
1402 else rtnVal = eval('l('+arS+')'); |
|
1403 |
|
1404 } else if (hookType == FBEFORE || hookType == FAFTER) { |
|
1405 if (typeof l != 'undefined') { |
|
1406 l=(hookType == 1 ? l.before : l.after); |
|
1407 |
|
1408 if (l.length) { |
|
1409 arS = argToString(ar, 2); |
|
1410 for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')'); |
|
1411 } |
|
1412 } |
|
1413 } else if (hookType == FALTERNATE) { |
|
1414 optPm = ar[2]; |
|
1415 arS = argToString(ar, 3); |
|
1416 |
|
1417 if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') { |
|
1418 rtnVal = eval(fnHookTo+'('+arS+')'); |
|
1419 } else { |
|
1420 rtnVal = eval('l('+arS+')'); |
|
1421 } |
|
1422 } else if (hookType == FCHAIN) { |
|
1423 arS=argToString(ar,2); |
|
1424 l=l.chain; |
|
1425 |
|
1426 for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break; |
|
1427 } |
|
1428 |
|
1429 return rtnVal; |
|
1430 } |
|
1431 |
|
1432 //////// |
|
1433 // OBJECT CONSTRUCTORS |
|
1434 //////// |
|
1435 |
|
1436 // Object for handling hooks. |
|
1437 function FunctionReference() { |
|
1438 this.ovload = null; |
|
1439 this.before = new Array(); |
|
1440 this.after = new Array(); |
|
1441 this.alt = new Array(); |
|
1442 this.chain = new Array(); |
|
1443 } |
|
1444 |
|
1445 // Object for simple access to the overLIB version used. |
|
1446 // Examples: simpleversion:351 major:3 minor:5 revision:1 |
|
1447 function Info(version, prerelease) { |
|
1448 this.version = version; |
|
1449 this.prerelease = prerelease; |
|
1450 |
|
1451 this.simpleversion = Math.round(this.version*100); |
|
1452 this.major = parseInt(this.simpleversion / 100); |
|
1453 this.minor = parseInt(this.simpleversion / 10) - this.major * 10; |
|
1454 this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10; |
|
1455 this.meets = meets; |
|
1456 } |
|
1457 |
|
1458 // checks for Core Version required |
|
1459 function meets(reqdVersion) { |
|
1460 return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion)); |
|
1461 } |
|
1462 |
|
1463 |
|
1464 //////// |
|
1465 // STANDARD REGISTRATIONS |
|
1466 //////// |
|
1467 registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF); |
|
1468 registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF); |
|
1469 registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF); |
|
1470 registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS); |
|
1471 registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS); |
|
1472 registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS); |
|
1473 registerPostParseFunction(checkPositionFlags); |
|
1474 registerHook("hideObject", nbspCleanup, FAFTER); |
|
1475 registerHook("horizontalPlacement", horizontalPlacement, FCHAIN); |
|
1476 registerHook("verticalPlacement", verticalPlacement, FCHAIN); |
|
1477 if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1; |
|
1478 registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); |
|
1479 /////// |
|
1480 // ESTABLISH MOUSECAPTURING |
|
1481 /////// |
|
1482 |
|
1483 // Capture events, alt. diffuses the overlib function. |
|
1484 var olCheckMouseCapture=true; |
|
1485 if ((olNs4 || olNs6 || olIe4)) { |
|
1486 olMouseCapture(); |
|
1487 } else { |
|
1488 overlib = no_overlib; |
|
1489 nd = no_overlib; |
|
1490 ver3fix = true; |
|
1491 } |