]> git.evergreen-ils.org Git - working/Evergreen.git/blob - stylesheets/evergreen_docbook_files/docbook-xsl-1.75.2/slides/browser/CTOCWidget.js
Add stylesheets for our evergreen docbook site.
[working/Evergreen.git] / stylesheets / evergreen_docbook_files / docbook-xsl-1.75.2 / slides / browser / CTOCWidget.js
1 /*\r
2  * CTOCWidget.js\r
3  * $Revision: 1.3 $ $Date: 2003/07/14 06:02:50 $\r
4  */\r
5 \r
6 /* ***** BEGIN LICENSE BLOCK *****\r
7  * Version: MPL 1.1/GPL 2.0/LGPL 2.1\r
8  *\r
9  * The contents of this file are subject to the Mozilla Public License Version\r
10  * 1.1 (the "License"); you may not use this file except in compliance with\r
11  * the License. You may obtain a copy of the License at\r
12  * http://www.mozilla.org/MPL/\r
13  *\r
14  * Software distributed under the License is distributed on an "AS IS" basis,\r
15  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\r
16  * for the specific language governing rights and limitations under the\r
17  * License.\r
18  *\r
19  * The Original Code is Netscape code.\r
20  *\r
21  * The Initial Developer of the Original Code is\r
22  * Netscape Corporation.\r
23  * Portions created by the Initial Developer are Copyright (C) 2003\r
24  * the Initial Developer. All Rights Reserved.\r
25  *\r
26  * Contributor(s): Bob Clary <bclary@netscape.com>\r
27  *\r
28  * ***** END LICENSE BLOCK ***** */\r
29 \r
30 function CTOCWidget(domTOCModel, target)\r
31 {\r
32   if (domTOCModel.documentElement.nodeName != 'toc')\r
33   {\r
34     throw 'CTOCWidget called on non toc Document: ' + domTOCModel.nodeName;\r
35   }\r
36 \r
37   this.model = domTOCModel;\r
38   this.target = target;\r
39   this.view = document.createElement('div');\r
40   this.view.setAttribute('class', CTOCWidget._classprefix + '_view');\r
41 \r
42   var modelItems = domTOCModel.documentElement.childNodes;\r
43   for (var i = 0; i < modelItems.length; i++)\r
44   {\r
45     var modelItem = modelItems.item(i);\r
46     if (modelItem.nodeType == Node.ELEMENT_NODE)\r
47     {\r
48       var viewItem  = CTOCWidget.createItemView(modelItem, target);\r
49       this.view.appendChild(viewItem);\r
50     }\r
51   }\r
52 }\r
53 \r
54 CTOCWidget._handleImages  = { open: '/toolbox/examples/2003/CTOCWidget/minus.gif', closed: '/toolbox/examples/2003/CTOCWidget/plus.gif', height: '12px', width: '16px'};\r
55 CTOCWidget._classprefix  = 'CTOCWidget';\r
56 \r
57 CTOCWidget.createItemView = function (modelItem, target)\r
58 {\r
59   if (modelItem.nodeType != Node.ELEMENT_NODE)\r
60   {\r
61     throw 'CTOCWidget.createItemView called on non-Element: ' + modelItem.nodeName;\r
62   }\r
63 \r
64   var i;\r
65 \r
66   var viewItem = document.createElement('div');\r
67   viewItem.setAttribute('class', CTOCWidget._classprefix + '_item');\r
68 \r
69   var viewItemHandle = document.createElement('div');\r
70   viewItemHandle.setAttribute('class', CTOCWidget._classprefix + '_itemhandle');\r
71   viewItemHandle.style.cursor = 'pointer';\r
72 \r
73   var viewItemHandleImg = document.createElement('img');\r
74   viewItemHandleImg.style.height = CTOCWidget._handleImages.height;\r
75   viewItemHandleImg.style.width = CTOCWidget._handleImages.width;\r
76   viewItemHandleImg.addEventListener('click', CTOCWidget.toggleHandle, false);\r
77 \r
78   var viewItemHandleLink;\r
79   if (!modelItem.getAttribute('url'))\r
80   {\r
81     viewItemHandleLink = document.createElement('span');\r
82   }\r
83   else \r
84   {\r
85     viewItemHandleLink = document.createElement('a');\r
86     viewItemHandleLink.setAttribute('href', modelItem.getAttribute('url'));\r
87     viewItemHandleLink.setAttribute('target', target);\r
88   }\r
89   viewItemHandleLink.appendChild(document.createTextNode(modelItem.getAttribute('title')));\r
90 \r
91   viewItemHandle.appendChild(viewItemHandleImg);\r
92   viewItemHandle.appendChild(viewItemHandleLink);\r
93   viewItem.appendChild(viewItemHandle);\r
94 \r
95   if (modelItem.childNodes.length == 0)\r
96   {\r
97     viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.open);\r
98   }\r
99   else\r
100   {\r
101     viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.closed);\r
102 \r
103     var viewItemChildren = document.createElement('div');\r
104     viewItemChildren.setAttribute('class', CTOCWidget._classprefix + '_itemchildren');\r
105     viewItemChildren.style.display = 'none';\r
106     viewItemChildren.style.position = 'relative';\r
107     viewItemChildren.style.left = '1em';\r
108 \r
109     for (i = 0; i < modelItem.childNodes.length; i++)\r
110     {\r
111       var modelItemChild = modelItem.childNodes.item(i);\r
112       if (modelItemChild.nodeType == Node.ELEMENT_NODE)\r
113       {\r
114         viewItemChildren.appendChild(CTOCWidget.createItemView(modelItemChild, target));\r
115       }\r
116     }\r
117 \r
118     viewItem.appendChild(viewItemChildren);\r
119   }\r
120 \r
121   return viewItem;\r
122 };\r
123 \r
124 // fires on img part of the handle\r
125 CTOCWidget.toggleHandle = function(e)\r
126 {\r
127   switch (e.eventPhase)\r
128   {\r
129     case Event.CAPTURING_PHASE:\r
130     case Event.BUBBLING_PHASE:\r
131       return true;\r
132     \r
133     case Event.AT_TARGET:\r
134      \r
135       e.preventBubble();\r
136 \r
137       var domHandle   = e.target.parentNode;\r
138       var domChildren = domHandle.nextSibling;\r
139 \r
140       if (!domChildren)\r
141       {\r
142         return true;\r
143       }\r
144 \r
145       switch(domChildren.style.display)\r
146       {\r
147         case '':\r
148         case 'block':\r
149           domChildren.style.display = 'none';\r
150           e.target.setAttribute('src', CTOCWidget._handleImages.closed);\r
151           break;\r
152         case 'none':\r
153           domChildren.style.display = 'block';\r
154           e.target.setAttribute('src', CTOCWidget._handleImages.open);\r
155           break;\r
156         default:\r
157           return false;\r
158        }\r
159 \r
160        return true;\r
161 \r
162     default:\r
163       dump('Unknown Event Phase ' + e.eventPhase);\r
164       break;\r
165   }\r
166 \r
167   return true;\r
168 }\r
169 \r