]> git.evergreen-ils.org Git - working/Evergreen.git/blob - stylesheets/evergreen_docbook_files/docbook-xsl-1.75.2/slides/browser/xbCollapsibleLists.js
Capitalized the start of a sentence in the bucket section of cataloging.
[working/Evergreen.git] / stylesheets / evergreen_docbook_files / docbook-xsl-1.75.2 / slides / browser / xbCollapsibleLists.js
1 /*\r
2 xbCollapsibleLists.js 2001-02-26\r
3 \r
4 Contributor(s): Michael Bostock, Netscape Communications, Copyright 1997\r
5                 Bob Clary, Netscape Communications, Copyright 2001\r
6                 Seth Dillingham, Macrobyte Resources, Copyright 2001\r
7                 Mark Filanowicz, Amdahl IT Services, Copyright 2002\r
8                 \r
9 Netscape grants you a royalty free license to use, modify or \r
10 distribute this software provided that this copyright notice \r
11 appears on all copies.  This software is provided "AS IS," \r
12 without a warranty of any kind.\r
13 \r
14 See xbCollapsibleLists.js.changelog.html for details of changes.\r
15 */\r
16 \r
17 \r
18 var xbcl__id = 0;\r
19 var xbcl_item_id = 0;\r
20 var xbcl_mLists = new Array();\r
21 var xbcl_parentElement = null;\r
22 \r
23 document.lists = xbcl_mLists;\r
24 \r
25 function List(visible, width, height, bgColor, collapsedImageURL, expandedImageURL) \r
26 {\r
27   this.lists   = new Array();  // sublists\r
28   this.items   = new Array();  // layers\r
29   this.types   = new Array();  // type\r
30   this.strs    = new Array();  // content\r
31   this.visible = visible;\r
32   this.id      = xbcl__id;\r
33   this.width   = width || 350;\r
34   this.height  = height || 22;\r
35   \r
36   this.collapsedImageURL = collapsedImageURL || 'false.gif';\r
37   this.expandedImageURL  = expandedImageURL || 'true.gif';\r
38   \r
39   if (bgColor) \r
40     this.bgColor = bgColor;\r
41 \r
42   xbcl_mLists[xbcl__id++] = this;\r
43 }\r
44 \r
45 function xbcl_SetFont(i,j) \r
46 {\r
47   this.fontIntro = i;\r
48   this.fontOutro = j;\r
49 }\r
50 \r
51 function xbcl_GetFont() \r
52 {\r
53   return [this.fontIntro, this.fontOutro];\r
54 }\r
55 \r
56 function xbcl_setIndent(indent) \r
57\r
58   this.i = indent; \r
59   if (this.i < 0) \r
60   { \r
61     this.i = 0; \r
62     this.space = false; \r
63   }\r
64   else\r
65     this.space = true;\r
66 }\r
67 \r
68 function xbcl_getIndent(indent)\r
69 {\r
70   return this.i;\r
71 }\r
72 \r
73 function xbcl_writeItemDOMHTML( obj, s, flList, listObj )\r
74 {\r
75   var styleObj;\r
76   var outerDiv, innerLeft, innerRight;\r
77   var str;\r
78   var leftEdge = 0;\r
79   \r
80   styleObj = new xbStyle(obj);\r
81   styleObj.setVisibility('hidden');\r
82   outerDiv = document.createElement( "DIV" );\r
83   outerDiv.id = "DIV_" + obj.id;\r
84   styleObj = new xbStyle( outerDiv );\r
85   styleObj.setWidth( this.width );\r
86   \r
87   if ( flList )\r
88   {\r
89     innerLeft = document.createElement( "DIV" );\r
90     innerLeft.style.position = "absolute";\r
91     innerLeft.style.valign = "middle";\r
92     leftEdge = 15;\r
93     \r
94     styleObj = new xbStyle( innerLeft );\r
95     styleObj.setWidth( 15 );\r
96     styleObj.setBackgroundColor( "transparent" );\r
97     \r
98     if ( listObj.visible )\r
99       str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';\r
100     else\r
101       str = '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');"><IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' + listObj.id + '" NAME="_img' + listObj.id + '"></A>';\r
102     \r
103     innerLeft.innerHTML = str;\r
104     outerDiv.appendChild( innerLeft );\r
105   }\r
106   else if ( this.space )\r
107     leftEdge = 15;\r
108   \r
109   innerRight = document.createElement( "DIV" );\r
110   innerRight.noWrap = true;\r
111   innerRight.style.position = "absolute";\r
112   \r
113   styleObj = new xbStyle( innerRight );\r
114   styleObj.setLeft( leftEdge + ( this.l * this.i ) );\r
115   styleObj.setWidth( this.width - 15 - this.l * this.i );\r
116   styleObj.setBackgroundColor( "transparent" );\r
117   \r
118   // start of change by Mark Filanowicz  02-22-2002\r
119   if ( flList ) \r
120         {\r
121           s = this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;\r
122         }\r
123         else\r
124         {\r
125   s = this.fontIntro + s + this.fontOutro;\r
126         }\r
127   // end of change by Mark Filanowicz  02-22-2002\r
128   \r
129   \r
130   innerRight.innerHTML = s;\r
131   outerDiv.appendChild( innerRight );\r
132 \r
133   obj.appendChild( outerDiv );\r
134   \r
135   return;\r
136 }\r
137 \r
138 function xbcl_writeItem( obj, s, flList, listObj )\r
139 {\r
140   var cellStyle = '';\r
141   var str = '';\r
142   var styleObj = new xbStyle( obj );\r
143   \r
144   styleObj.setVisibility( 'hidden' );\r
145   \r
146   if ( document.body && document.body.style )\r
147     cellStyle = ' style="background-color: transparent;"';\r
148   \r
149   str += '<TABLE WIDTH='+this.width+' NOWRAP BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR>';\r
150 \r
151   if ( flList ) \r
152   {\r
153     str += '<TD WIDTH="15" NOWRAP VALIGN="MIDDLE"' + cellStyle + '>';\r
154     str += '<A TARGET="_self" HREF="javascript:xbcl_expand(' + listObj.id + ');">';\r
155     \r
156     if ( listObj.visible )\r
157       str += '<IMG BORDER="0" SRC="' + this.expandedImageURL + '" ID="_img' +  listObj.id + '" NAME="_img' + listObj.id + '">';\r
158     else\r
159       str += '<IMG BORDER="0" SRC="' + this.collapsedImageURL + '" ID="_img' +  listObj.id + '" NAME="_img' + listObj.id + '">';\r
160     \r
161     str += '</A></TD>';\r
162   } \r
163   else if (this.space)\r
164     str += '<TD WIDTH="15" NOWRAP' + cellStyle + '>&nbsp;</TD>';\r
165   \r
166   if (this.l>0 && this.i>0) \r
167     str += '<TD WIDTH="' + this.l*this.i+ '" NOWRAP' + cellStyle + '>&nbsp;</TD>';\r
168 \r
169   str += '<TD HEIGHT="' + ( this.height - 3) + '" WIDTH="' + ( this.width - 15 - this.l * this.i ) + '" VALIGN="MIDDLE" ALIGN="LEFT"' + cellStyle + '>';\r
170   \r
171   // start of change by Mark Filanowicz  02-22-2002\r
172   if ( flList ) \r
173         {\r
174           str += this.fontIntro + '<A TARGET="_self" STYLE="text-decoration: none;" HREF="javascript:xbcl_expand(' + listObj.id + ');">' + s + this.fontOutro;\r
175         }\r
176         else\r
177         {\r
178   str += this.fontIntro + s + this.fontOutro;\r
179         }\r
180   // end of change by Mark Filanowicz  02-22-2002\r
181   \r
182   str += '</TD></TR></TABLE>';\r
183   \r
184   styleObj.setInnerHTML( str );\r
185   \r
186   return;\r
187 }\r
188 \r
189 function xbcl_writeList()\r
190 {\r
191   var item;\r
192   var i;\r
193   var flList;\r
194   \r
195   for ( i = 0; i < this.types.length; i++ )\r
196   {\r
197     item = this.items[ i ];\r
198     flList = ( this.types[ i ] == 'list' );\r
199     \r
200     this._writeItem( item, this.strs[ i ], flList, this.lists[ i ] );\r
201     \r
202     if ( flList && this.lists[ i ].visible )\r
203       this.lists[ i ]._writeList();\r
204   }\r
205   \r
206   this.built = true;\r
207   this.needsRewrite = false;\r
208   self.status = '';\r
209 }\r
210 \r
211 function xbcl_showList() \r
212 {\r
213   var item;\r
214   var styleObj;\r
215   var i;\r
216 \r
217   for (i = 0; i < this.types.length; i++) \r
218   { \r
219     item = this.items[i];\r
220     styleObj = new xbStyle(item);\r
221     styleObj.setClipLeft(0);\r
222     styleObj.setClipRight(this.width);\r
223     styleObj.setClipTop(0);\r
224     if (item.height)\r
225     {\r
226       styleObj.setClipBottom(item.height);\r
227       styleObj.setHeight(item.height);\r
228     }\r
229     else\r
230     {\r
231       styleObj.setClipBottom(this.height);\r
232       styleObj.setHeight(this.height);\r
233     }\r
234     \r
235     if ( this.visible )\r
236       styleObj.setVisibility( 'visible' );\r
237 \r
238     var bg = item.oBgColor || this.bgColor;\r
239     if ((bg == null) || (bg == 'null')) \r
240       bg = '';\r
241 \r
242     styleObj.setBackgroundColor(bg);\r
243 \r
244     if (this.types[i] == 'list' && this.lists[i].visible)\r
245       this.lists[i]._showList();\r
246   }\r
247   this.shown = true;\r
248   this.needsUpdate = false;\r
249 }\r
250 \r
251 function xbcl_setImage(list, item, file)\r
252 {\r
253   var id = '_img' + list.id;\r
254   var img = null;\r
255   \r
256   // for DOMHTML or IE4 use cross browser getElementById from xbStyle\r
257   // can't use it for NN4 since it only works for layers in NN4\r
258   if (document.layers) \r
259     img = item.document.images[0];\r
260   else \r
261     img = xbGetElementById(id);\r
262     \r
263   if (img)\r
264     img.src = file;\r
265 }\r
266 \r
267 function xbcl_getHeight() \r
268 {\r
269   var totalHeight = 0;\r
270   var i;\r
271   \r
272   if (!this.visible)\r
273     return 0;\r
274   \r
275   for (i = 0; i < this.types.length; i++) \r
276   {\r
277     if (this.items[i].height)\r
278       totalHeight += this.items[i].height;\r
279     else\r
280       totalHeight += this.height;\r
281     \r
282     if ((this.types[i] == 'list') && this.lists[i].visible)\r
283     {\r
284       totalHeight += this.lists[i].getHeight();\r
285     }\r
286   }\r
287   \r
288   return totalHeight;\r
289 }\r
290 \r
291 function xbcl_updateList(pVis, x, y) \r
292 {\r
293   var currTop = y; \r
294   var item;\r
295   var styleObj;\r
296   var i;\r
297 \r
298   for (i = 0; i < this.types.length; i++) \r
299   { \r
300     item = this.items[i];\r
301     styleObj = new xbStyle(item);\r
302 \r
303     if (this.visible && pVis) \r
304     {\r
305       styleObj.moveTo(x, currTop);\r
306       if (item.height)  // allow custom heights for each item\r
307         currTop += item.height;\r
308       else\r
309         currTop += this.height;\r
310       \r
311       styleObj.setVisibility('visible');\r
312     } \r
313     else \r
314     {\r
315       styleObj.setVisibility('hidden');\r
316     }\r
317 \r
318     if (this.types[i] == 'list') \r
319     {\r
320       if (this.lists[i].visible) \r
321       {\r
322         if (!this.lists[i].built || this.lists[i].needsRewrite) \r
323           this.lists[i]._writeList();\r
324 \r
325         if (!this.lists[i].shown || this.lists[i].needsUpdate) \r
326           this.lists[i]._showList();\r
327 \r
328         xbcl_setImage(this.lists[i], item, this.expandedImageURL );\r
329       } \r
330       else \r
331         xbcl_setImage(this.lists[i], item, this.collapsedImageURL );\r
332 \r
333       if (this.lists[i].built)\r
334         currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop);\r
335     }\r
336   }\r
337   return currTop;\r
338 }\r
339 \r
340 function xbcl_updateParent( pid, l ) \r
341 {\r
342   var i;\r
343 \r
344   if ( !l ) \r
345     l = 0;\r
346 \r
347   this.pid = pid;\r
348   this.l = l;\r
349 \r
350   for ( i = 0; i < this.types.length; i++ )\r
351   {\r
352     if ( this.types[ i ] == 'list' )\r
353     {\r
354       this.lists[ i ]._updateParent( pid, l + 1 );\r
355     }\r
356   }\r
357 }\r
358 \r
359 function xbcl_expand(i) \r
360 {\r
361   xbcl_mLists[i].visible = !xbcl_mLists[i].visible;\r
362 \r
363   if (xbcl_mLists[i].onexpand != null) \r
364     xbcl_mLists[i].onexpand(xbcl_mLists[i].id);\r
365 \r
366   xbcl_mLists[xbcl_mLists[i].pid].rebuild();\r
367 \r
368   if (xbcl_mLists[i].postexpand != null) \r
369     xbcl_mLists[i].postexpand(xbcl_mLists[i].id);\r
370 }\r
371 \r
372 function xbcl_build(x, y) \r
373 {\r
374   this._updateParent(this.id);\r
375   this._writeList();\r
376   this._showList();\r
377   this._updateList(true, x, y);\r
378   this.x = x; \r
379   this.y = y;\r
380 }\r
381 \r
382 function xbcl_rebuild() \r
383\r
384   this._updateList(true, this.x, this.y); \r
385 }\r
386 \r
387 function xbcl_getNewItem()\r
388 {\r
389   var newItem = null;\r
390 \r
391   newItem = xbGetElementById('lItem' + xbcl_item_id);\r
392 \r
393   if (!newItem) \r
394   {\r
395     if (document.all && !document.getElementById)\r
396     {\r
397       var parentElement = this.parentElement;\r
398       if (!parentElement)\r
399         parentElement = document.body;\r
400         \r
401       parentElement.insertAdjacentHTML('beforeEnd', '<div id="lItem' + xbcl_item_id + '" style="position:absolute;"></div>');\r
402       newItem = xbGetElementById('lItem' + xbcl_item_id);\r
403     }\r
404     else if (document.layers)\r
405     {\r
406       if (this.parentElement)\r
407         newItem = new Layer(this.width, this.parentElement);\r
408       else\r
409         newItem = new Layer(this.width);\r
410     }\r
411     else if (document.createElement)\r
412     {\r
413       newItem = document.createElement('div');\r
414       newItem.id= 'lItem' + xbcl_item_id;\r
415       newItem.style.position = 'absolute';\r
416 \r
417       if (this.parentElement)\r
418         this.parentElement.appendChild(newItem);\r
419       else \r
420         document.body.appendChild(newItem);\r
421     }\r
422   }\r
423 \r
424   return newItem;\r
425 }\r
426 \r
427 function xbcl_addItem(str, bgColor, item) \r
428 {\r
429   if (!item) \r
430     item = this._getNewItem();\r
431   \r
432   if (!item)\r
433     return;\r
434 \r
435   if (bgColor) \r
436     item.oBgColor = bgColor;\r
437 \r
438   this.items[this.items.length] = item;\r
439   this.types[this.types.length] = 'item';\r
440   this.strs[this.strs.length] = str;\r
441   ++xbcl_item_id;\r
442   \r
443   if ( this.built )\r
444   {\r
445     this._writeItem( item, str, false );\r
446     xbcl_mLists[this.pid].rebuild();\r
447     if ( this.visible )\r
448       this._showList();\r
449     else\r
450       this.needsUpdate = true;\r
451   }\r
452   \r
453   return item;\r
454 }\r
455 \r
456 function xbcl_addList(list, str, bgColor, item) \r
457 {\r
458   if (!item) \r
459     item = this._getNewItem();\r
460 \r
461   if (!item)\r
462     return;\r
463 \r
464   if (bgColor) \r
465     item.oBgColor = bgColor;\r
466 \r
467   this.lists[this.items.length] = list;\r
468   this.items[this.items.length] = item;\r
469   this.types[this.types.length] = 'list';\r
470   this.strs[this.strs.length] = str;\r
471   ++xbcl_item_id;\r
472   \r
473   list.parentList = this;\r
474   \r
475   list.pid = this.pid;\r
476   list.l = this.l + 1;\r
477   \r
478   if ( this.built )\r
479   {\r
480     this._writeItem( item, str, true, list );\r
481     xbcl_mLists[ this.pid ].rebuild();\r
482     if ( this.visible )\r
483       this._showList();\r
484     else\r
485       this.needsUpdate = true;\r
486   }\r
487   \r
488   return item;\r
489 }\r
490 \r
491 List.prototype.setIndent     = xbcl_setIndent;\r
492 List.prototype.getIndent     = xbcl_getIndent;\r
493 List.prototype.addItem       = xbcl_addItem;\r
494 List.prototype.addList       = xbcl_addList;\r
495 List.prototype.build         = xbcl_build;\r
496 List.prototype.rebuild       = xbcl_rebuild;\r
497 List.prototype.setFont       = xbcl_SetFont;\r
498 List.prototype.getFont       = xbcl_GetFont;\r
499 List.prototype.getHeight     = xbcl_getHeight;\r
500 \r
501 List.prototype._writeList    = xbcl_writeList;\r
502 List.prototype._getNewItem   = xbcl_getNewItem;\r
503 \r
504 if ( document.getElementById && document.createElement )\r
505   List.prototype._writeItem  = xbcl_writeItemDOMHTML;\r
506 else\r
507   List.prototype._writeItem  = xbcl_writeItem;\r
508 \r
509 List.prototype._showList     = xbcl_showList;\r
510 List.prototype._updateList   = xbcl_updateList;\r
511 List.prototype._updateParent = xbcl_updateParent;\r
512 \r
513 List.prototype.onexpand      = null;\r
514 List.prototype.postexpand    = null;\r
515 List.prototype.lists         = null;  // sublists\r
516 List.prototype.items         = null;  // layers\r
517 List.prototype.types         = null;  // type\r
518 List.prototype.strs          = null;  // content\r
519 List.prototype.x             = 0;\r
520 List.prototype.y             = 0;\r
521 List.prototype.visible       = false;\r
522 List.prototype.id            = -1;\r
523 List.prototype.i             = 18;\r
524 List.prototype.space         = true;\r
525 List.prototype.pid           = 0;\r
526 List.prototype.fontIntro     = '';\r
527 List.prototype.fontOutro     = '';\r
528 List.prototype.width         = 350;\r
529 List.prototype.height        = 22;\r
530 List.prototype.built         = false;\r
531 List.prototype.shown         = false;\r
532 List.prototype.needsUpdate   = false;\r
533 List.prototype.needsRewrite  = false;\r
534 List.prototype.l             = 0;\r
535 List.prototype.bgColor       = null;\r
536 List.prototype.parentList    = null;\r
537 List.prototype.parentElement = null;\r