root/trunk/deployment/webadmin/webapp/resources/default/default/default.xsl

Revision 1115 (checked in by johnsa, 6 years ago)

more work on admin client events - display event now uses identical jsp as the public client (this will allow us to combine and simplify the code)

fixed up event deletion in admin client

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3   <xsl:output
4       method="html"
5       indent="yes"
6       media-type="text/html"
7       doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
8       doctype-system="http://www.w3.org/TR/html4/strict.dtd"
9       standalone="yes"
10       omit-xml-declaration="yes"/>
11    <xsl:strip-space elements="*"/>
12
13   <!-- ======================================== -->
14   <!--      BEDEWORK ADMIN CLIENT STYLESHEET     -->
15   <!-- ========================================= -->
16
17   <!-- **********************************************************************
18     Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
19
20     Redistribution and use of this distribution in source and binary forms,
21     with or without modification, are permitted provided that:
22        The above copyright notice and this permission notice appear in all
23         copies and supporting documentation;
24
25         The name, identifiers, and trademarks of Rensselaer Polytechnic
26         Institute are not used in advertising or publicity without the
27         express prior written permission of Rensselaer Polytechnic Institute;
28
29     DISCLAIMER: The software is distributed" AS IS" without any express or
30     implied warranty, including but not limited to, any implied warranties
31     of merchantability or fitness for a particular purpose or any warrant)'
32     of non-infringement of any current or pending patent rights. The authors
33     of the software make no representations about the suitability of this
34     software for any particular purpose. The entire risk as to the quality
35     and performance of the software is with the user. Should the software
36     prove defective, the user assumes the cost of all necessary servicing,
37     repair or correction. In particular, neither Rensselaer Polytechnic
38     Institute, nor the authors of the software are liable for any indirect,
39     special, consequential, or incidental damages related to the software,
40     to the maximum extent the law permits. -->
41
42   <!-- DEFINE INCLUDES -->
43   <xsl:include href="errors.xsl"/>
44   <xsl:include href="messages.xsl"/>
45
46   <!-- DEFINE GLOBAL CONSTANTS -->
47   <!-- URL of html resources (images, css, other html); by default this is
48        set to the application root, but for the admin client
49        this should be changed to point to a
50        web server over https to avoid mixed content errors, e.g.,
51   <xsl:variable name="resourcesRoot" select="'https://mywebserver.edu/myresourcesdir'"/>
52     -->
53   <xsl:variable name="resourcesRoot" select="/bedeworkadmin/approot"/>
54
55   <!-- URL of the XSL template directory -->
56   <!-- The approot is an appropriate place to put
57        included stylesheets and xml fragments. These are generally
58        referenced relatively (like errors.xsl and messages.xsl above);
59        this variable is here for your convenience if you choose to
60        reference it explicitly.  It is not used in this stylesheet, however,
61        and can be safely removed if you so choose. -->
62   <xsl:variable name="appRoot" select="/bedeworkadmin/approot"/>
63
64   <!-- Properly encoded prefixes to the application actions; use these to build
65        urls; allows the application to be used without cookies or within a portal.
66        we will probably change the way we create these before long (e.g. build them
67        dynamically in the xslt). -->
68   <xsl:variable name="setup" select="/bedeworkadmin/urlPrefixes/setup/a/@href"/>
69   <xsl:variable name="logout" select="/bedeworkadmin/urlPrefixes/logout/a/@href"/>
70   <xsl:variable name="search" select="/bedeworkadmin/urlPrefixes/search/search/a/@href"/>
71   <xsl:variable name="search-next" select="/bedeworkadmin/urlPrefixes/search/next/a/@href"/>
72   <!-- events -->
73   <xsl:variable name="event-showEvent" select="/bedeworkadmin/urlPrefixes/event/showEvent/a/@href"/>
74   <xsl:variable name="event-showModForm" select="/bedeworkadmin/urlPrefixes/event/showModForm/a/@href"/>
75   <xsl:variable name="event-showUpdateList" select="/bedeworkadmin/urlPrefixes/event/showUpdateList/a/@href"/>
76   <xsl:variable name="event-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/event/showDeleteConfirm/a/@href"/>
77   <xsl:variable name="event-initAddEvent" select="/bedeworkadmin/urlPrefixes/event/initAddEvent/a/@href"/>
78   <xsl:variable name="event-initUpdateEvent" select="/bedeworkadmin/urlPrefixes/event/initUpdateEvent/a/@href"/>
79   <xsl:variable name="event-delete" select="/bedeworkadmin/urlPrefixes/event/delete/a/@href"/>
80   <xsl:variable name="event-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/event/fetchForDisplay/a/@href"/>
81   <xsl:variable name="event-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/event/fetchForUpdate/a/@href"/>
82   <xsl:variable name="event-update" select="/bedeworkadmin/urlPrefixes/event/update/a/@href"/>
83   <xsl:variable name="event-selectCalForEvent" select="/bedeworkadmin/urlPrefixes/event/selectCalForEvent/a/@href"/>
84   <xsl:variable name="event-initUpload" select="/bedeworkadmin/urlPrefixes/event/initUpload/a/@href"/>
85   <xsl:variable name="event-upload" select="/bedeworkadmin/urlPrefixes/event/upload/a/@href"/>
86   <!-- contacts -->
87   <xsl:variable name="contact-showContact" select="/bedeworkadmin/urlPrefixes/contact/showContact/a/@href"/>
88   <xsl:variable name="contact-showReferenced" select="/bedeworkadmin/urlPrefixes/contact/showReferenced/a/@href"/>
89   <xsl:variable name="contact-showModForm" select="/bedeworkadmin/urlPrefixes/contact/showModForm/a/@href"/>
90   <xsl:variable name="contact-showUpdateList" select="/bedeworkadmin/urlPrefixes/contact/showUpdateList/a/@href"/>
91   <xsl:variable name="contact-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/contact/showDeleteConfirm/a/@href"/>
92   <xsl:variable name="contact-initAdd" select="/bedeworkadmin/urlPrefixes/contact/initAdd/a/@href"/>
93   <xsl:variable name="contact-initUpdate" select="/bedeworkadmin/urlPrefixes/contact/initUpdate/a/@href"/>
94   <xsl:variable name="contact-delete" select="/bedeworkadmin/urlPrefixes/contact/delete/a/@href"/>
95   <xsl:variable name="contact-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/contact/fetchForDisplay/a/@href"/>
96   <xsl:variable name="contact-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/contact/fetchForUpdate/a/@href"/>
97   <xsl:variable name="contact-update" select="/bedeworkadmin/urlPrefixes/contact/update/a/@href"/>
98   <!-- locations -->
99   <xsl:variable name="location-showLocation" select="/bedeworkadmin/urlPrefixes/location/showLocation/a/@href"/>
100   <xsl:variable name="location-showReferenced" select="/bedeworkadmin/urlPrefixes/location/showReferenced/a/@href"/>
101   <xsl:variable name="location-showModForm" select="/bedeworkadmin/urlPrefixes/location/showModForm/a/@href"/>
102   <xsl:variable name="location-showUpdateList" select="/bedeworkadmin/urlPrefixes/location/showUpdateList/a/@href"/>
103   <xsl:variable name="location-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/location/showDeleteConfirm/a/@href"/>
104   <xsl:variable name="location-initAdd" select="/bedeworkadmin/urlPrefixes/location/initAdd/a/@href"/>
105   <xsl:variable name="location-initUpdate" select="/bedeworkadmin/urlPrefixes/location/initUpdate/a/@href"/>
106   <xsl:variable name="location-delete" select="/bedeworkadmin/urlPrefixes/location/delete/a/@href"/>
107   <xsl:variable name="location-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/location/fetchForDisplay/a/@href"/>
108   <xsl:variable name="location-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/location/fetchForUpdate/a/@href"/>
109   <xsl:variable name="location-update" select="/bedeworkadmin/urlPrefixes/location/update/a/@href"/>
110   <!-- categories -->
111   <xsl:variable name="category-showReferenced" select="/bedeworkadmin/urlPrefixes/category/showReferenced/a/@href"/>
112   <xsl:variable name="category-showModForm" select="/bedeworkadmin/urlPrefixes/category/showModForm/a/@href"/>
113   <xsl:variable name="category-showUpdateList" select="/bedeworkadmin/urlPrefixes/category/showUpdateList/a/@href"/>
114   <xsl:variable name="category-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/category/showDeleteConfirm/a/@href"/>
115   <xsl:variable name="category-initAdd" select="/bedeworkadmin/urlPrefixes/category/initAdd/a/@href"/>
116   <xsl:variable name="category-initUpdate" select="/bedeworkadmin/urlPrefixes/category/initUpdate/a/@href"/>
117   <xsl:variable name="category-delete" select="/bedeworkadmin/urlPrefixes/category/delete/a/@href"/>
118   <xsl:variable name="category-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/category/fetchForUpdate/a/@href"/>
119   <xsl:variable name="category-update" select="/bedeworkadmin/urlPrefixes/category/update/a/@href"/>
120   <!-- calendars -->
121   <xsl:variable name="calendar-fetch" select="/bedeworkadmin/urlPrefixes/calendar/fetch/a/@href"/>
122   <xsl:variable name="calendar-fetchDescriptions" select="/bedeworkadmin/urlPrefixes/calendar/fetchDescriptions/a/@href"/>
123   <xsl:variable name="calendar-initAdd" select="/bedeworkadmin/urlPrefixes/calendar/initAdd/a/@href"/>
124   <xsl:variable name="calendar-delete" select="/bedeworkadmin/urlPrefixes/calendar/delete/a/@href"/>
125   <xsl:variable name="calendar-fetchForDisplay" select="/bedeworkadmin/urlPrefixes/calendar/fetchForDisplay/a/@href"/>
126   <xsl:variable name="calendar-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calendar/fetchForUpdate/a/@href"/>
127   <xsl:variable name="calendar-update" select="/bedeworkadmin/urlPrefixes/calendar/update/a/@href"/>
128   <xsl:variable name="calendar-setAccess" select="/bedeworkadmin/urlPrefixes/calendar/setAccess/a/@href"/>
129   <!-- subscriptions -->
130   <xsl:variable name="subscriptions-fetch" select="/bedeworkadmin/urlPrefixes/subscriptions/fetch/a/@href"/>
131   <xsl:variable name="subscriptions-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/subscriptions/fetchForUpdate/a/@href"/>
132   <xsl:variable name="subscriptions-initAdd" select="/bedeworkadmin/urlPrefixes/subscriptions/initAdd/a/@href"/>
133   <xsl:variable name="subscriptions-subscribe" select="/bedeworkadmin/urlPrefixes/subscriptions/subscribe/a/@href"/>
134   <!-- views -->
135   <xsl:variable name="view-fetch" select="/bedeworkadmin/urlPrefixes/view/fetch/a/@href"/>
136   <xsl:variable name="view-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/view/fetchForUpdate/a/@href"/>
137   <xsl:variable name="view-addView" select="/bedeworkadmin/urlPrefixes/view/addView/a/@href"/>
138   <xsl:variable name="view-update" select="/bedeworkadmin/urlPrefixes/view/update/a/@href"/>
139   <xsl:variable name="view-remove" select="/bedeworkadmin/urlPrefixes/view/remove/a/@href"/>
140   <!-- system -->
141   <xsl:variable name="system-fetch" select="/bedeworkadmin/urlPrefixes/system/fetch/a/@href"/>
142   <xsl:variable name="system-update" select="/bedeworkadmin/urlPrefixes/system/update/a/@href"/>
143   <!-- calsuites -->
144   <xsl:variable name="calsuite-fetch" select="/bedeworkadmin/urlPrefixes/calsuite/fetch/a/@href"/>
145   <xsl:variable name="calsuite-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchForUpdate/a/@href"/>
146   <xsl:variable name="calsuite-add" select="/bedeworkadmin/urlPrefixes/calsuite/add/a/@href"/>
147   <xsl:variable name="calsuite-update" select="/bedeworkadmin/urlPrefixes/calsuite/update/a/@href"/>
148   <xsl:variable name="calsuite-showAddForm" select="/bedeworkadmin/urlPrefixes/calsuite/showAddForm/a/@href"/>
149   <xsl:variable name="calsuite-setAccess" select="/bedeworkadmin/urlPrefixes/calsuite/setAccess/a/@href"/>
150   <xsl:variable name="calsuite-fetchPrefsForUpdate" select="/bedeworkadmin/urlPrefixes/calsuite/fetchPrefsForUpdate/a/@href"/>
151   <xsl:variable name="calsuite-updatePrefs" select="/bedeworkadmin/urlPrefixes/calsuite/updatePrefs/a/@href"/>
152   <!-- timezones and stats -->
153   <xsl:variable name="timezones-initUpload" select="/bedeworkadmin/urlPrefixes/timezones/initUpload/a/@href"/>
154   <xsl:variable name="timezones-upload" select="/bedeworkadmin/urlPrefixes/timezones/upload/a/@href"/>
155   <xsl:variable name="stats-update" select="/bedeworkadmin/urlPrefixes/stats/update/a/@href"/>
156   <!-- authuser and prefs -->
157   <xsl:variable name="authuser-showModForm" select="/bedeworkadmin/urlPrefixes/authuser/showModForm/a/@href"/>
158   <xsl:variable name="authuser-showUpdateList" select="/bedeworkadmin/urlPrefixes/authuser/showUpdateList/a/@href"/>
159   <xsl:variable name="authuser-initUpdate" select="/bedeworkadmin/urlPrefixes/authuser/initUpdate/a/@href"/>
160   <xsl:variable name="authuser-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/authuser/fetchForUpdate/a/@href"/>
161   <xsl:variable name="authuser-update" select="/bedeworkadmin/urlPrefixes/authuser/update/a/@href"/>
162   <xsl:variable name="prefs-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/prefs/fetchForUpdate/a/@href"/>
163   <xsl:variable name="prefs-update" select="/bedeworkadmin/urlPrefixes/prefs/update/a/@href"/>
164   <!-- admin groups -->
165   <xsl:variable name="admingroup-showModForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModForm/a/@href"/>
166   <xsl:variable name="admingroup-showModMembersForm" select="/bedeworkadmin/urlPrefixes/admingroup/showModMembersForm/a/@href"/>
167   <xsl:variable name="admingroup-showUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/showUpdateList/a/@href"/>
168   <xsl:variable name="admingroup-showChooseGroup" select="/bedeworkadmin/urlPrefixes/admingroup/showChooseGroup/a/@href"/>
169   <xsl:variable name="admingroup-showDeleteConfirm" select="/bedeworkadmin/urlPrefixes/admingroup/showDeleteConfirm/a/@href"/>
170   <xsl:variable name="admingroup-initAdd" select="/bedeworkadmin/urlPrefixes/admingroup/initAdd/a/@href"/>
171   <xsl:variable name="admingroup-initUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/initUpdate/a/@href"/>
172   <xsl:variable name="admingroup-delete" select="/bedeworkadmin/urlPrefixes/admingroup/delete/a/@href"/>
173   <xsl:variable name="admingroup-fetchUpdateList" select="/bedeworkadmin/urlPrefixes/admingroup/fetchUpdateList/a/@href"/>
174   <xsl:variable name="admingroup-fetchForUpdate" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdate/a/@href"/>
175   <xsl:variable name="admingroup-fetchForUpdateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/fetchForUpdateMembers/a/@href"/>
176   <xsl:variable name="admingroup-update" select="/bedeworkadmin/urlPrefixes/admingroup/update/a/@href"/>
177   <xsl:variable name="admingroup-updateMembers" select="/bedeworkadmin/urlPrefixes/admingroup/updateMembers/a/@href"/>
178   <xsl:variable name="admingroup-switch" select="/bedeworkadmin/urlPrefixes/admingroup/switch/a/@href"/>
179
180   <!-- URL of the web application - includes web context -->
181   <xsl:variable name="urlPrefix" select="/bedeworkadmin/urlprefix"/>
182
183   <!-- Other generally useful global variables -->
184   <xsl:variable name="publicCal">/cal</xsl:variable>
185
186   <!--==== MAIN TEMPLATE  ====-->
187   <xsl:template match="/">
188     <html lang="en">
189       <head>
190         <title>Calendar Admin: Events Calendar Administration</title>
191         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
192         <link rel="stylesheet" href="{$resourcesRoot}/default/default/default.css"/>
193         <link rel="stylesheet" href="{$resourcesRoot}/default/default/subColors.css"/>
194         <xsl:if test="/bedeworkadmin/page='modEvent'">
195           <script type="text/javascript" src="{$resourcesRoot}/resources/includes.js"></script>
196           <script type="text/javascript" src="{$resourcesRoot}/resources/bwClock.js"></script>
197           <link rel="stylesheet" href="{$resourcesRoot}/resources/bwClock.css"/>
198           <script type="text/javascript" src="{$resourcesRoot}/resources/dynCalendarWidget.js"></script>
199           <link rel="stylesheet" href="{$resourcesRoot}/resources/dynCalendarWidget.css"/>
200           <script type="text/javascript" src="{$resourcesRoot}/resources/browserSniffer.js"></script>
201         </xsl:if>
202         <xsl:if test="/bedeworkadmin/page='upload' or /bedeworkadmin/page='selectCalForEvent'">
203           <script type="text/javascript" src="{$resourcesRoot}/resources/includes.js"></script>
204         </xsl:if>
205         <xsl:if test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
206           <link rel="stylesheet" href="{$resourcesRoot}/resources/calendarDescriptions.css"/>
207         </xsl:if>
208         <link rel="icon" type="image/ico" href="{$resourcesRoot}/resources/bedework.ico" />
209         <script language="JavaScript" type="text/javascript">
210           <xsl:comment>
211         <![CDATA[
212         // places the cursor in the first available form element when the page is loaded
213         // (if a form exists on the page)
214         function focusFirstElement() {
215           if (window.document.forms[0]) {
216             window.document.forms[0].elements[0].focus();
217           }
218         }]]>
219         </xsl:comment>
220         </script>
221       </head>
222       <body onLoad="focusFirstElement()">
223         <xsl:choose>
224           <xsl:when test="/bedeworkadmin/page='selectCalForEvent'">
225             <xsl:call-template name="selectCalForEvent"/>
226           </xsl:when>
227           <xsl:otherwise>
228             <xsl:call-template name="header"/>
229             <div id="content">
230               <xsl:choose>
231                 <xsl:when test="/bedeworkadmin/page='eventList'">
232                   <xsl:call-template name="eventList"/>
233                 </xsl:when>
234                 <xsl:when test="/bedeworkadmin/page='modEvent'">
235                   <xsl:call-template name="modEvent"/>
236                 </xsl:when>
237                 <xsl:when test="/bedeworkadmin/page='displayEvent' or /bedeworkadmin/page='deleteEventConfirm'">
238                   <xsl:apply-templates select="/bedeworkadmin/event" mode="displayEvent"/>
239                 </xsl:when>
240                 <xsl:when test="/bedeworkadmin/page='contactList'">
241                   <xsl:call-template name="contactList"/>
242                 </xsl:when>
243                 <xsl:when test="/bedeworkadmin/page='modContact'">
244                   <xsl:call-template name="modContact"/>
245                 </xsl:when>
246                 <xsl:when test="/bedeworkadmin/page='deleteContactConfirm' or /bedeworkadmin/page='contactReferenced'">
247                   <xsl:call-template name="deleteContactConfirm"/>
248                 </xsl:when>
249                 <xsl:when test="/bedeworkadmin/page='locationList'">
250                   <xsl:call-template name="locationList"/>
251                 </xsl:when>
252                 <xsl:when test="/bedeworkadmin/page='modLocation'">
253                   <xsl:call-template name="modLocation"/>
254                 </xsl:when>
255                 <xsl:when test="/bedeworkadmin/page='deleteLocationConfirm'">
256                   <xsl:call-template name="deleteLocationConfirm"/>
257                 </xsl:when>
258                 <xsl:when test="/bedeworkadmin/page='categoryList'">
259                   <xsl:call-template name="categoryList"/>
260                 </xsl:when>
261                 <xsl:when test="/bedeworkadmin/page='modCategory'">
262                   <xsl:call-template name="modCategory"/>
263                 </xsl:when>
264                 <xsl:when test="/bedeworkadmin/page='deleteCategoryConfirm'">
265                   <xsl:call-template name="deleteCategoryConfirm"/>
266                 </xsl:when>
267                 <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='deleteCalendarConfirm' or /bedeworkadmin/page='calendarReferenced'">
268                   <xsl:apply-templates select="/bedeworkadmin/calendars"/>
269                 </xsl:when>
270                 <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
271                   <xsl:apply-templates select="/bedeworkadmin/subscriptions"/>
272                 </xsl:when>
273                 <xsl:when test="/bedeworkadmin/page='views'">
274                   <xsl:apply-templates select="/bedeworkadmin/views" mode="viewList"/>
275                 </xsl:when>
276                 <xsl:when test="/bedeworkadmin/page='modView'">
277                   <xsl:call-template name="modView"/>
278                 </xsl:when>
279                 <xsl:when test="/bedeworkadmin/page='deleteViewConfirm'">
280                   <xsl:call-template name="deleteViewConfirm"/>
281                 </xsl:when>
282                 <xsl:when test="/bedeworkadmin/page='modSyspars'">
283                   <xsl:call-template name="modSyspars"/>
284                 </xsl:when>
285                 <xsl:when test="/bedeworkadmin/page='calSuiteList'">
286                   <xsl:apply-templates select="/bedeworkadmin/calSuites" mode="calSuiteList"/>
287                 </xsl:when>
288                 <xsl:when test="/bedeworkadmin/page='addCalSuite'">
289                   <xsl:call-template name="addCalSuite"/>
290                 </xsl:when>
291                 <xsl:when test="/bedeworkadmin/page='modCalSuite'">
292                   <xsl:apply-templates select="/bedeworkadmin/calSuite"/>
293                 </xsl:when>
294                 <xsl:when test="/bedeworkadmin/page='calSuitePrefs'">
295                   <xsl:call-template name="calSuitePrefs"/>
296                 </xsl:when>
297                 <xsl:when test="/bedeworkadmin/page='authUserList'">
298                   <xsl:call-template name="authUserList"/>
299                 </xsl:when>
300                 <xsl:when test="/bedeworkadmin/page='modAuthUser'">
301                   <xsl:call-template name="modAuthUser"/>
302                 </xsl:when>
303                 <xsl:when test="/bedeworkadmin/page='modPrefs'">
304                   <xsl:call-template name="modPrefs"/>
305                 </xsl:when>
306                 <xsl:when test="/bedeworkadmin/page='chooseGroup'">
307                   <xsl:apply-templates select="/bedeworkadmin/groups" mode="chooseGroup"/>
308                 </xsl:when>
309                 <xsl:when test="/bedeworkadmin/page='adminGroupList'">
310                   <xsl:call-template name="listAdminGroups"/>
311                 </xsl:when>
312                 <xsl:when test="/bedeworkadmin/page='modAdminGroup'">
313                   <xsl:call-template name="modAdminGroup"/>
314                 </xsl:when>
315                 <xsl:when test="/bedeworkadmin/page='modAdminGroupMembers'">
316                   <xsl:call-template name="modAdminGroupMembers"/>
317                 </xsl:when>
318                 <xsl:when test="/bedeworkadmin/page='deleteAdminGroupConfirm'">
319                   <xsl:call-template name="deleteAdminGroupConfirm"/>
320                 </xsl:when>
321                 <xsl:when test="/bedeworkadmin/page='searchResult'">
322                   <xsl:call-template name="searchResult"/>
323                 </xsl:when>
324                 <xsl:when test="/bedeworkadmin/page='noGroup'">
325                   <h2>No administrative group</h2>
326                   <p>Your userid has not been assigned to an administrative group.
327                     Please inform your administrator.</p>
328                 </xsl:when>
329                 <xsl:when test="/bedeworkadmin/page='upload'">
330                   <xsl:call-template name="upload"/>
331                 </xsl:when>
332                 <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
333                   <xsl:call-template name="uploadTimezones"/>
334                 </xsl:when>
335                 <xsl:when test="/bedeworkadmin/page='showSysStats'">
336                   <xsl:apply-templates select="/bedeworkadmin/sysStats" mode="showSysStats"/>
337                 </xsl:when>
338                 <xsl:when test="/bedeworkadmin/page='noAccess'">
339                   <h2>No Access</h2>
340                   <p>
341                     You have no access to the action you just attempted. If you believe
342                     you should have access and the problem persists, contact your
343                     administrator.
344                   </p>
345                   <p>
346                     <a href="{$setup}">continue</a>
347                   </p>
348                 </xsl:when>
349                 <xsl:when test="/bedeworkadmin/page='error'">
350                   <h2>Application error</h2>
351                   <p>An application error occurred.</p>
352                   <p>
353                     <a href="{$setup}">continue</a>
354                   </p>
355                 </xsl:when>
356                 <xsl:otherwise>
357                   <xsl:call-template name="mainMenu"/>
358                 </xsl:otherwise>
359               </xsl:choose>
360             </div>
361             <!-- footer -->
362             <xsl:call-template name="footer"/>
363           </xsl:otherwise>
364         </xsl:choose>
365       </body>
366     </html>
367   </xsl:template>
368
369   <!--==============================================-->
370   <!--==============================================-->
371   <!--============= PAGE TEMPLATES =================-->
372   <!--==============================================-->
373   <!--==============================================-->
374
375   <!--+++++++++++++++ Main Menu ++++++++++++++++++++-->
376   <xsl:template name="mainMenu">
377     <div id="adminLeftColumn">
378       <h2 class="menuTitle">Main Menu</h2>
379       <table id="mainMenuTable">
380         <tr>
381           <th>Events</th>
382           <td>
383             <a id="addEventLink" href="{$event-initAddEvent}">
384               Add
385             </a>
386           </td>
387           <td>
388             <a href="{$event-initUpdateEvent}">
389               Edit / Delete
390             </a>
391           </td>
392           <!--
393           Disable direct selection by ID; we'll need to find another way
394           of quickly getting to events: search and grid views should be implemented. -->
395           <!--
396           <td>
397             Event ID:
398             <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
399           </td>-->
400         </tr>
401         <tr>
402           <th>Contacts</th>
403           <td>
404             <a id="addContactLink" href="{$contact-initAdd}">
405               Add
406             </a>
407           </td>
408           <td>
409             <a href="{$contact-initUpdate}">
410               Edit / Delete
411             </a>
412           </td>
413         </tr>
414         <tr>
415           <th>Locations</th>
416           <td>
417             <a id="addLocationLink" href="{$location-initAdd}">
418               Add
419             </a>
420           </td>
421           <td>
422             <a href="{$location-initUpdate}">
423               Edit / Delete
424             </a>
425           </td>
426         </tr>
427         <tr>
428           <th>Categories</th>
429           <td>
430             <a id="addCategoryLink" href="{$category-initAdd}">
431               Add
432             </a>
433           </td>
434           <td>
435             <a href="{$category-initUpdate}">
436               Edit / Delete
437             </a>
438           </td>
439         </tr>
440       </table>
441
442       <h4 class="menuTitle">Event search:</h4>
443       <form name="searchForm" method="post" action="{$search}" id="searchForm">
444         <input type="text" name="query" size="30">
445           <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/searchResults/query"/></xsl:attribute>
446         </input>
447         <input type="submit" name="submit" value="go"/>
448         <div id="searchFields">
449           Limit:
450           <input type="radio" name="searchLimits" value="fromToday" checked="checked"/>today forward
451           <input type="radio" name="searchLimits" value="beforeToday"/>past dates
452           <input type="radio" name="searchLimits" value="none"/>all dates
453         </div>
454       </form>
455
456     </div>
457
458     <div id="adminRightColumn">
459       <xsl:if test="/bedeworkadmin/currentCalSuite/currentAccess/current-user-privilege-set/privilege/write or /bedeworkadmin/userInfo/superUser='true'">
460         <h4 class="menuTitle">
461           Manage calendar suite:
462           <em><xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
463           </em>
464         </h4>
465         <ul class="adminMenu">
466           <li>
467             <a href="{$calendar-fetch}">
468               Manage calendars
469             </a>
470           </li>
471           <li>
472             <a href="{$subscriptions-fetch}">
473               Manage subscriptions
474             </a>
475           </li>
476           <li>
477             <a href="{$view-fetch}">
478               Manage views
479             </a>
480           </li>
481           <li>
482             <a href="{$calsuite-fetchPrefsForUpdate}">
483               Manage preferences
484             </a>
485           </li>
486           <li>
487             <a href="{$event-initUpload}">
488               Upload iCAL file
489             </a>
490           </li>
491         </ul>
492       </xsl:if>
493
494       <xsl:if test="/bedeworkadmin/userInfo/contentAdminUser='true'">
495         <h4 class="menuTitle">Manage users:</h4>
496         <ul class="adminMenu">
497           <xsl:if test="/bedeworkadmin/userInfo/userMaintOK='true'">
498             <li>
499               <a href="{$authuser-initUpdate}">
500                 Manage public event administrators
501               </a>
502             </li>
503           </xsl:if>
504           <xsl:if test="/bedeworkadmin/userInfo/adminGroupMaintOk='true'">
505             <li>
506               <a href="{$admingroup-initUpdate}">
507                 Manage admin groups
508               </a>
509             </li>
510           </xsl:if>
511           <li>
512             <a href="{$admingroup-switch}">
513               Choose/change group...
514             </a>
515           </li>
516           <xsl:if test="/bedeworkadmin/userInfo/userMaintOK='true'">
517             <li>
518               <form action="{$prefs-fetchForUpdate}" method="post">
519                 Edit user preferences (enter userid):<br/>
520                 <input type="text" name="user" size="15"/>
521                 <input type="submit" name="getPrefs" value="go"/>
522               </form>
523             </li>
524           </xsl:if>
525         </ul>
526       </xsl:if>
527
528       <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
529         <h4 class="menuTitle">Super user features:</h4>
530         <ul class="adminMenu">
531           <li>
532             <a href="{$calsuite-fetch}">
533               Manage calendar suites
534             </a>
535           </li>
536           <li>
537             <a href="{$system-fetch}">
538               Manage system preferences
539             </a>
540           </li>
541           <li>
542             <a href="{$timezones-initUpload}">
543               Upload and replace system timezones
544             </a>
545           </li>
546           <li>
547             System statistics:
548             <ul>
549               <li>
550                 <a href="{$stats-update}&amp;fetch=yes">
551                   admin web client
552                 </a>
553               </li>
554               <li>
555                 <a href="{$publicCal}/stats.do" target="pubClient">
556                   public web client
557                 </a>
558               </li>
559             </ul>
560           </li>
561         </ul>
562       </xsl:if>
563     </div>
564   </xsl:template>
565
566   <!--++++++++++++++++++ Events ++++++++++++++++++++-->
567   <xsl:template name="eventList">
568     <h2>Edit Events</h2>
569     <p>
570       Select the event that you would like to update:
571       <input type="button" name="return" value="Add new event" onclick="javascript:location.replace('{$event-initAddEvent}')"/>
572     </p>
573
574     <form name="peForm" method="post" action="{$event-initUpdateEvent}">
575       <table>
576         <tr>
577           <td style="padding-right: 1em;">Show:</td>
578           <td>
579             <xsl:copy-of select="/bedeworkadmin/formElements/form/listAllSwitchFalse/*"/>
580             Active
581           </td>
582           <td>
583             <xsl:copy-of select="/bedeworkadmin/formElements/form/listAllSwitchTrue/*"/>
584             All
585           </td>
586         </tr>
587       </table>
588     </form>
589
590     <table id="commonListTable">
591       <tr>
592         <th>Title</th>
593         <th>Start Date</th>
594         <th>End Date</th>
595         <th>Calendar</th>
596         <th>Description</th>
597       </tr>
598
599       <xsl:for-each select="/bedeworkadmin/events/event">
600         <xsl:variable name="subscriptionId" select="subscription/id"/>
601         <xsl:variable name="calPath" select="calendar/encodedPath"/>
602         <xsl:variable name="guid" select="guid"/>
603         <xsl:variable name="recurrenceId" select="recurrenceId"/>
604         <tr>
605           <td>
606             <a href="{$event-fetchForUpdate}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
607               <xsl:value-of select="summary"/>
608             </a>
609           </td>
610           <td class="date">
611             <xsl:value-of select="start/longdate"/>,
612             <xsl:value-of select="start/time"/>
613           </td>
614           <td class="date">
615             <xsl:value-of select="end/longdate"/>,
616             <xsl:value-of select="end/time"/>
617           </td>
618           <td>
619             <xsl:value-of select="calendar/name"/>
620           </td>
621           <td>
622             <xsl:value-of select="description"/>
623           </td>
624         </tr>
625       </xsl:for-each>
626     </table>
627   </xsl:template>
628
629   <xsl:template name="modEvent">
630     <h2>Event Information</h2>
631
632     <xsl:variable name="modEventAction" select="/bedeworkadmin/formElements/form/@action"/>
633     <form name="peForm" method="post" action="{$modEventAction}">
634       <table class="eventFormTable">
635         <tr>
636           <td class="fieldName">
637             Title:
638           </td>
639           <td>
640             <xsl:copy-of select="/bedeworkadmin/formElements/form/title/*"/>
641           </td>
642         </tr>
643         <tr>
644           <td class="fieldName">
645             Calendar:**
646           </td>
647           <td>
648             <xsl:if test="/bedeworkadmin/formElements/form/calendar/preferred/select/option">
649               <select name="prefCalendarId">
650                 <option value="-1">
651                   Select preferred:
652                 </option>
653                 <xsl:copy-of select="/bedeworkadmin/formElements/form/calendar/preferred/select/*"/>
654               </select>
655               or Calendar (all):
656             </xsl:if>
657             <select name="calendarId">
658               <option value="-1">
659                 Select:
660               </option>
661               <xsl:copy-of select="/bedeworkadmin/formElements/form/calendar/all/select/*"/>
662             </select>
663             <xsl:text> </xsl:text>
664             <span id="calDescriptionsLink">
665               <a href="javascript:launchSimpleWindow('{$calendar-fetchDescriptions}')">calendar descriptions</a>
666             </span>
667           </td>
668         </tr>
669
670         <tr>
671           <td class="fieldName">
672             Date &amp; Time:
673           </td>
674           <td>
675             <!-- Set the timefields class for the first load of the page;
676                  subsequent changes will take place using javascript without a
677                  page reload. -->
678             <xsl:variable name="timeFieldsClass">
679               <xsl:choose>
680                 <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">invisible</xsl:when>
681                 <xsl:otherwise>timeFields</xsl:otherwise>
682               </xsl:choose>
683             </xsl:variable>
684             <xsl:choose>
685               <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">
686                 <input type="checkbox" name="allDayFlag" onclick="swapAllDayEvent(this)" value="on" checked="checked"/>
687                 <input type="hidden" name="eventStartDate.dateOnly" value="on" id="allDayStartDateField"/>
688                 <input type="hidden" name="eventEndDate.dateOnly" value="on" id="allDayEndDateField"/>
689               </xsl:when>
690               <xsl:otherwise>
691                 <input type="checkbox" name="allDayFlag" onclick="swapAllDayEvent(this)" value="off"/>
692                 <input type="hidden" name="eventStartDate.dateOnly" value="off" id="allDayStartDateField"/>
693                 <input type="hidden" name="eventEndDate.dateOnly" value="off" id="allDayEndDateField"/>
694               </xsl:otherwise>
695             </xsl:choose>
696             all day event<br/>
697             <div class="dateStartEndBox">
698               <strong>Start:</strong>
699               <div class="dateFields">
700                 <span class="startDateLabel">Date </span>
701                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/month/*"/>
702                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/day/*"/>
703                 <xsl:choose>
704                   <xsl:when test="/bedeworkadmin/creating = 'true'">
705                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/year/*"/>
706                   </xsl:when>
707                   <xsl:otherwise>
708                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/yearText/*"/>
709                   </xsl:otherwise>
710                 </xsl:choose>
711               </div>
712               <script language="JavaScript" type="text/javascript">
713                 <xsl:comment>
714                 startDateDynCalWidget = new dynCalendar('startDateDynCalWidget', 'startDateCalWidgetCallback', '<xsl:value-of select="$resourcesRoot"/>/resources/');
715               </xsl:comment>
716               </script>
717               <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
718               <div class="{$timeFieldsClass}" id="startTimeFields">
719                 <span id="calWidgetStartTimeHider" class="show">
720                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/hour/*"/>
721                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/minute/*"/>
722                   <xsl:if test="/bedeworkadmin/formElements/form/start/ampm">
723                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/ampm/*"/>
724                   </xsl:if>
725                   <xsl:text> </xsl:text>
726                   <a href="javascript:bwClockLaunch('eventStartDate');">
727                     <img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/>
728                   </a>
729                 </span>
730               </div>
731             </div>
732             <div class="dateStartEndBox">
733               <strong>End:</strong>
734               <xsl:choose>
735                 <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">
736                   <input type="radio" name="eventEndType" value="E" checked="checked" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
737                 </xsl:when>
738                 <xsl:otherwise>
739                   <input type="radio" name="eventEndType" value="E" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
740                 </xsl:otherwise>
741               </xsl:choose>
742               Date
743               <xsl:variable name="endDateTimeClass">
744                 <xsl:choose>
745                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">shown</xsl:when>
746                   <xsl:otherwise>invisible</xsl:otherwise>
747                 </xsl:choose>
748               </xsl:variable>
749               <div class="{$endDateTimeClass}" id="endDateTime">
750                 <div class="dateFields">
751                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/month/*"/>
752                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/day/*"/>
753                   <xsl:choose>
754                     <xsl:when test="/bedeworkadmin/creating = 'true'">
755                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/year/*"/>
756                     </xsl:when>
757                     <xsl:otherwise>
758                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/yearText/*"/>
759                     </xsl:otherwise>
760                   </xsl:choose>
761                 </div>
762                 <script language="JavaScript" type="text/javascript">
763                   <xsl:comment>
764                   endDateDynCalWidget = new dynCalendar('endDateDynCalWidget', 'endDateCalWidgetCallback', '<xsl:value-of select="$resourcesRoot"/>/resources/');
765                 </xsl:comment>
766                 </script>
767                 <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
768                 <div class="{$timeFieldsClass}" id="endTimeFields">
769                   <span id="calWidgetEndTimeHider" class="show">
770                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/hour/*"/>
771                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/minute/*"/>
772                     <xsl:if test="/bedeworkadmin/formElements/form/end/dateTime/ampm">
773                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/ampm/*"/>
774                     </xsl:if>
775                     <xsl:text> </xsl:text>
776                     <a href="javascript:bwClockLaunch('eventEndDate');">
777                       <img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/>
778                     </a>
779                   </span>
780                 </div>
781               </div>
782               <br/>
783               <div id="clock" class="invisible">
784                 <xsl:call-template name="clock"/>
785               </div>
786               <div class="dateFields">
787                 <xsl:choose>
788                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">
789                     <input type="radio" name="eventEndType" value="D" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
790                   </xsl:when>
791                   <xsl:otherwise>
792                     <input type="radio" name="eventEndType" value="D" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
793                   </xsl:otherwise>
794                 </xsl:choose>
795                 Duration
796                 <xsl:variable name="endDurationClass">
797                   <xsl:choose>
798                     <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">shown</xsl:when>
799                     <xsl:otherwise>invisible</xsl:otherwise>
800                   </xsl:choose>
801                 </xsl:variable>
802                 <xsl:variable name="durationHrMinClass">
803                   <xsl:choose>
804                     <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">invisible</xsl:when>
805                     <xsl:otherwise>shown</xsl:otherwise>
806                   </xsl:choose>
807                 </xsl:variable>
808                 <div class="{$endDurationClass}" id="endDuration">
809                   <xsl:choose>
810                     <xsl:when test="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value = '0'">
811                     <!-- we are using day, hour, minute format -->
812                     <!-- must send either no week value or week value of 0 (zero) -->
813                       <div class="durationBox">
814                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')" checked="checked"/>
815                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
816                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays"/>days
817                         <span id="durationHrMin" class="{$durationHrMinClass}">
818                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
819                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours"/>hours
820                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
821                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes"/>minutes
822                         </span>
823                       </div>
824                       <span class="durationSpacerText">or</span>
825                       <div class="durationBox">
826                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')"/>
827                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
828                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks" disabled="true"/>weeks
829                       </div>
830                     </xsl:when>
831                     <xsl:otherwise>
832                       <!-- we are using week format -->
833                       <div class="durationBox">
834                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')"/>
835                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
836                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays" disabled="true"/>days
837                         <span id="durationHrMin" class="{$durationHrMinClass}">
838                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
839                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours" disabled="true"/>hours
840                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
841                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes" disabled="true"/>minutes
842                         </span>
843                       </div>
844                       <span class="durationSpacerText">or</span>
845                       <div class="durationBox">
846                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')" checked="checked"/>
847                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
848                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks"/>weeks
849                       </div>
850                     </xsl:otherwise>
851                   </xsl:choose>
852                 </div>
853               </div>
854               <br/>
855               <div class="dateFields" id="noDuration">
856                 <xsl:choose>
857                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='N'">
858                     <input type="radio" name="eventEndType" value="N" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
859                   </xsl:when>
860                   <xsl:otherwise>
861                     <input type="radio" name="eventEndType" value="N" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
862                   </xsl:otherwise>
863                 </xsl:choose>
864                 This event has no duration / end date
865               </div>
866             </div>
867           </td>
868         </tr>
869         <!--  Status  -->
870         <tr>
871           <td class="fieldName">
872             Status:
873           </td>
874           <td>
875             <xsl:choose>
876               <xsl:when test="/bedeworkadmin/formElements/form/status = 'TENTATIVE'">
877                 <input type="radio" name="event.status" value="CONFIRMED"/>confirmed <input type="radio" name="event.status" value="TENTATIVE" checked="checked"/>tentative <input type="radio" name="event.status" value="CANCELLED"/>cancelled
878               </xsl:when>
879               <xsl:when test="/bedeworkadmin/formElements/form/status = 'CANCELLED'">
880                 <input type="radio" name="event.status" value="CONFIRMED"/>confirmed <input type="radio" name="event.status" value="TENTATIVE"/>tentative <input type="radio" name="event.status" value="CANCELLED" checked="checked"/>cancelled
881               </xsl:when>
882               <xsl:otherwise>
883                 <input type="radio" name="event.status" value="CONFIRMED" checked="checked"/>confirmed <input type="radio" name="event.status" value="TENTATIVE"/>tentative <input type="radio" name="event.status" value="CANCELLED"/>cancelled
884               </xsl:otherwise>
885             </xsl:choose>
886           </td>
887         </tr>
888         <!--  Description  -->
889         <tr>
890           <td class="fieldName">
891             Description:
892           </td>
893           <td>
894             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
895             <div class="fieldInfo">
896               Enter all pertinent information, including the academic titles of
897               all speakers and/or participants.
898               <span class="maxCharNotice">(<xsl:value-of select="/bedeworkadmin/formElements/form/descLength"/> characters max.)</span>
899             </div>
900           </td>
901         </tr>
902         <!-- Cost -->
903         <tr>
904           <td class="optional">
905             Price:
906           </td>
907           <td>
908             <xsl:copy-of select="/bedeworkadmin/formElements/form/cost/*"/>
909             <xsl:text> </xsl:text>
910             <span class="fieldInfo">(optional: if any, and place to purchase tickets)</span>
911           </td>
912         </tr>
913         <!-- Url -->
914         <tr>
915           <td class="optional">
916             URL:
917           </td>
918           <td>
919             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
920             <xsl:text> </xsl:text>
921             <span class="fieldInfo">(optional: for more information about the event)</span>
922           </td>
923         </tr>
924         <!-- Location -->
925         <tr>
926           <td class="fieldName">
927             Location:**
928           </td>
929           <td>
930             <xsl:if test="/bedeworkadmin/formElements/form/location/preferred/select/option">
931               <select name="prefLocationId" id="eventFormPrefLocationList">
932                 <option value="-1">
933                   Select preferred:
934                 </option>
935                 <xsl:copy-of select="/bedeworkadmin/formElements/form/location/preferred/select/*"/>
936               </select>
937               or Location (all):
938             </xsl:if>
939             <select name="allLocationId" id="eventFormLocationList">
940               <option value="-1">
941                 Select:
942               </option>
943               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/all/select/*"/>
944             </select>
945           </td>
946         </tr>
947
948         <xsl:if test="/bedeworkadmin/formElements/form/location/address">
949           <tr>
950             <td class="fieldName" colspan="2">
951               <span class="std-text">
952                 <span class="bold">or</span> add</span>
953             </td>
954           </tr>
955           <tr>
956             <td class="fieldName">
957               Address:
958             </td>
959             <td>
960               <xsl:variable name="addressFieldName" select="/bedeworkadmin/formElements/form/location/address/input/@name"/>
961               <xsl:variable name="calLocations">
962                 <xsl:for-each select="/bedeworkadmin/formElements/form/location/all/select/option">"<xsl:value-of select="."/>"<xsl:if test="position()!=last()">,</xsl:if>
963                 </xsl:for-each>
964               </xsl:variable>
965               <input type="text" size="30" name="{$addressFieldName}" autocomplete="off" onfocus="autoComplete(this,event,new Array({$calLocations}));"/>
966               <div class="fieldInfo">
967                 Please include room, building, and campus (if not Seattle).
968               </div>
969             </td>
970           </tr>
971           <tr>
972             <td class="optional">
973               <span class="std-text">Location URL:</span>
974             </td>
975             <td>
976               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/link/*"/>
977               <xsl:text> </xsl:text>
978               <span class="fieldInfo">(optional: for information about the location)</span>
979             </td>
980           </tr>
981         </xsl:if>
982
983         <!-- Contact -->
984         <tr>
985           <td class="fieldName">
986             Contact:**
987           </td>
988           <td>
989             <xsl:if test="/bedeworkadmin/formElements/form/contact/preferred/select/option">
990               <select name="prefContactId" id="eventFormContactList">
991                 <option value="-1">
992                   Select preferred:
993                 </option>option>
994                 <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/preferred/select/*"/>
995               </select>
996               or Contact (all):
997             </xsl:if>
998             <select name="allContactId" id="eventFormPrefContactList">
999               <option value="-1">
1000                 Select:
1001               </option>
1002               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/all/select/*"/>
1003             </select>
1004           </td>
1005         </tr>
1006
1007
1008         <!--  Category  -->
1009         <tr>
1010           <td class="fieldName">
1011             Categories:**
1012           </td>
1013           <td>
1014             <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1015               <input type="radio" name="categoryCheckboxes" value="preferred" checked="checked" onclick="changeClass('preferredCategoryCheckboxes','shown');changeClass('allCategoryCheckboxes','invisible');"/>show preferred
1016               <input type="radio" name="categoryCheckboxes" value="all" onclick="changeClass('preferredCategoryCheckboxes','invisible');changeClass('allCategoryCheckboxes','shown')"/>show all<br/>
1017               <table cellpadding="0" id="preferredCategoryCheckboxes">
1018                 <tr>
1019                   <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/preferred/category)"/>
1020                   <td>
1021                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &lt;= ceiling($catCount div 2)]">
1022                       <input type="checkbox" name="categoryKey">
1023                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1024                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1025                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1026                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1027                         <xsl:value-of select="keyword"/>
1028                       </input><br/>
1029                     </xsl:for-each>
1030                   </td>
1031                   <td>
1032                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &gt; ceiling($catCount div 2)]">
1033                       <input type="checkbox" name="categoryKey">
1034                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1035                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1036                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1037                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1038                         <xsl:value-of select="keyword"/>
1039                       </input><br/>
1040                     </xsl:for-each>
1041                   </td>
1042                 </tr>
1043               </table>
1044             </xsl:if>
1045             <table cellpadding="0" id="allCategoryCheckboxes">
1046               <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1047                 <xsl:attribute name="class">invisible</xsl:attribute>
1048               </xsl:if>
1049               <tr>
1050                 <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/all/category)"/>
1051                 <td>
1052                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &lt;= ceiling($catCount div 2)]">
1053                     <input type="checkbox" name="categoryKey">
1054                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1055                       <xsl:if test="/bedeworkadmin/creating='true'">
1056                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1057                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1058                       </xsl:if>
1059                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1060                         <xsl:attribute name="checked">checked</xsl:attribute>
1061                       </xsl:if>
1062                       <xsl:value-of select="keyword"/>
1063                     </input><br/>
1064                   </xsl:for-each>
1065                 </td>
1066                 <td>
1067                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &gt; ceiling($catCount div 2)]">
1068                     <input type="checkbox" name="categoryKey">
1069                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1070                       <xsl:if test="/bedeworkadmin/creating='true'">
1071                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1072                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1073                       </xsl:if>
1074                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1075                         <xsl:attribute name="checked">checked</xsl:attribute>
1076                       </xsl:if>
1077                       <xsl:value-of select="keyword"/>
1078                     </input><br/>
1079                   </xsl:for-each>
1080                 </td>
1081               </tr>
1082             </table>
1083           </td>
1084         </tr>
1085         <!-- note -->
1086         <tr>
1087           <td colspan="2" style="padding-top: 1em;">
1088             <span class="fieldInfo">
1089               **<strong>If "preferred values" are enabled</strong>
1090               by your administrator, the category, location, and contact lists will
1091               contain only those value you've used previously.  If you don't find the value
1092               you need in one of these lists, use the "all" list adjacent to each
1093               of these fields.  The event you select from the "all" list will be added
1094               to your preferred list from that point on.  <strong>Note: if you don't
1095               find a location or contact at all, you can add a new one from the
1096               <a href="{$setup}">main menu</a>.</strong>
1097               Only administrators can create categories, however.
1098               To make sure you've used the
1099               correct category, please see the
1100               <a href="" target="_blank">Calendar Definitions</a>
1101             </span>
1102           </td>
1103         </tr>
1104
1105         <xsl:if test="/bedeworkadmin/formElements/form/contact/name">
1106           <tr>
1107             <td class="fieldName" colspan="2">
1108               <span class="std-text">
1109                 <span class="bold">or</span> add</span>
1110             </td>
1111           </tr>
1112           <tr>
1113             <td class="fieldName">
1114               Contact (name):
1115             </td>
1116             <td>
1117               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/name/*"/>
1118             </td>
1119           </tr>
1120           <tr>
1121             <td class="fieldName">
1122               Contact Phone Number:
1123             </td>
1124             <td>
1125               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/phone/*"/>
1126               <xsl:text> </xsl:text>
1127               <span class="fieldInfo">(optional)</span>
1128             </td>
1129           </tr>
1130           <tr>
1131             <td class="optional">
1132               Contact's URL:
1133             </td>
1134             <td>
1135               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/link/*"/>
1136               <xsl:text> </xsl:text>
1137               <span class="fieldInfo">(optional)</span>
1138             </td>
1139           </tr>
1140           <tr>
1141             <td class="optional">
1142               Contact Email Address:
1143             </td>
1144             <td>
1145               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/email/*"/>
1146               <xsl:text> </xsl:text>
1147               <span class="fieldInfo">(optional)</span> test
1148               <div id="contactEmailAlert">&#160;</div> <!-- space for email warning -->
1149             </td>
1150           </tr>
1151         </xsl:if>
1152       </table>
1153
1154       <table border="0" id="submitTable">
1155         <tr>
1156           <xsl:choose>
1157             <xsl:when test="/bedeworkadmin/creating='true'">
1158               <td>
1159                 <input type="submit" name="addEvent" value="Add Event"/>
1160                 <input type="submit" name="cancelled" value="Cancel"/>
1161                 <input type="reset" value="Clear"/>
1162               </td>
1163             </xsl:when>
1164             <xsl:otherwise>
1165               <td>
1166                 <input type="submit" name="updateEvent" value="Update Event"/>
1167                 <input type="submit" name="cancelled" value="Cancel"/>
1168                 <input type="submit" name="copy" value="Duplicate Event"/>
1169               </td>
1170               <td align="right">
1171                 <input type="submit" name="delete" value="Delete Event"/>
1172               </td>
1173             </xsl:otherwise>
1174           </xsl:choose>
1175         </tr>
1176       </table>
1177     </form>
1178   </xsl:template>
1179
1180   <xsl:template name="clock">
1181     <div id="bwClock">
1182       <!-- Bedework 24-Hour Clock time selection widget
1183            used with resources/bwClock.js and resources/bwClock.css -->
1184       <div id="bwClockClock">
1185         <img id="clockMap" src="{$resourcesRoot}/resources/clockMap.gif" width="368" height="368" border="0" alt="" usemap="#bwClockMap" />
1186       </div>
1187       <div id="bwClockCover">
1188         <!-- this is a special effect div used simply to cover the pixelated edge
1189              where the clock meets the clock box title --></div>
1190       <div id="bwClockBox">
1191         <h2>
1192           Bedework 24-Hour Clock
1193         </h2>
1194         <div id="bwClockDateTypeIndicator">
1195           type
1196         </div>
1197         <div id="bwClockTime">
1198           select time
1199         </div>
1200         <div id="bwClockCloseText">
1201           close
1202         </div>
1203         <div id="bwClockCloseButton">
1204           <a href="javascript:bwClockClose();">X</a>
1205         </div>
1206       </div>
1207       <map name="bwClockMap" id="bwClockMap">
1208         <area shape="rect" alt="close clock" title="close clock" coords="160,167, 200,200" href="javascript:bwClockClose()"/>
1209         <area shape="poly" alt="minute 00:55" title="minute 00:55" coords="156,164, 169,155, 156,107, 123,128" href="javascript:bwClockUpdateDateTimeForm('minute','55')" />
1210         <area shape="poly" alt="minute 00:50" title="minute 00:50" coords="150,175, 156,164, 123,128, 103,161" href="javascript:bwClockUpdateDateTimeForm('minute','50')" />
1211         <area shape="poly" alt="minute 00:45" title="minute 00:45" coords="150,191, 150,175, 103,161, 103,206" href="javascript:bwClockUpdateDateTimeForm('minute','45')" />
1212         <area shape="poly" alt="minute 00:40" title="minute 00:40" coords="158,208, 150,191, 105,206, 123,237" href="javascript:bwClockUpdateDateTimeForm('minute','40')" />
1213         <area shape="poly" alt="minute 00:35" title="minute 00:35" coords="171,218, 158,208, 123,238, 158,261" href="javascript:bwClockUpdateDateTimeForm('minute','35')" />
1214         <area shape="poly" alt="minute 00:30" title="minute 00:30" coords="193,218, 172,218, 158,263, 209,263" href="javascript:bwClockUpdateDateTimeForm('minute','30')" />
1215         <area shape="poly" alt="minute 00:25" title="minute 00:25" coords="209,210, 193,218, 209,261, 241,240" href="javascript:bwClockUpdateDateTimeForm('minute','25')" />
1216         <area shape="poly" alt="minute 00:20" title="minute 00:20" coords="216,196, 209,210, 241,240, 261,206" href="javascript:bwClockUpdateDateTimeForm('minute','20')" />
1217         <area shape="poly" alt="minute 00:15" title="minute 00:15" coords="216,178, 216,196, 261,206, 261,159" href="javascript:bwClockUpdateDateTimeForm('minute','15')" />
1218         <area shape="poly" alt="minute 00:10" title="minute 00:10" coords="209,164, 216,178, 261,159, 240,126" href="javascript:bwClockUpdateDateTimeForm('minute','10')" />
1219         <area shape="poly" alt="minute 00:05" title="minute 00:05" coords="196,155, 209,164, 238,126, 206,107" href="javascript:bwClockUpdateDateTimeForm('minute','05')" />
1220         <area shape="poly" alt="minute 00:00" title="minute 00:00" coords="169,155, 196,155, 206,105, 156,105" href="javascript:bwClockUpdateDateTimeForm('minute','00')" />
1221         <area shape="poly" alt="11 PM, 2300 hour" title="11 PM, 2300 hour" coords="150,102, 172,96, 158,1, 114,14" href="javascript:bwClockUpdateDateTimeForm('hour','23')" />
1222         <area shape="poly" alt="10 PM, 2200 hour" title="10 PM, 2200 hour" coords="131,114, 150,102, 114,14, 74,36" href="javascript:bwClockUpdateDateTimeForm('hour','22')" />
1223         <area shape="poly" alt="9 PM, 2100 hour" title="9 PM, 2100 hour" coords="111,132, 131,114, 74,36, 40,69" href="javascript:bwClockUpdateDateTimeForm('hour','21')" />
1224         <area shape="poly" alt="8 PM, 2000 hour" title="8 PM, 2000 hour" coords="101,149, 111,132, 40,69, 15,113" href="javascript:bwClockUpdateDateTimeForm('hour','20')" />
1225         <area shape="poly" alt="7 PM, 1900 hour" title="7 PM, 1900 hour" coords="95,170, 101,149, 15,113, 1,159" href="javascript:bwClockUpdateDateTimeForm('hour','19')" />
1226         <area shape="poly" alt="6 PM, 1800 hour" title="6 PM, 1800 hour" coords="95,196, 95,170, 0,159, 0,204" href="javascript:bwClockUpdateDateTimeForm('hour','18')" />
1227         <area shape="poly" alt="5 PM, 1700 hour" title="5 PM, 1700 hour" coords="103,225, 95,196, 1,205, 16,256" href="javascript:bwClockUpdateDateTimeForm('hour','17')" />
1228         <area shape="poly" alt="4 PM, 1600 hour" title="4 PM, 1600 hour" coords="116,245, 103,225, 16,256, 41,298" href="javascript:bwClockUpdateDateTimeForm('hour','16')" />
1229         <area shape="poly" alt="3 PM, 1500 hour" title="3 PM, 1500 hour" coords="134,259, 117,245, 41,298, 76,332" href="javascript:bwClockUpdateDateTimeForm('hour','15')" />
1230         <area shape="poly" alt="2 PM, 1400 hour" title="2 PM, 1400 hour" coords="150,268, 134,259, 76,333, 121,355" href="javascript:bwClockUpdateDateTimeForm('hour','14')" />
1231         <area shape="poly" alt="1 PM, 1300 hour" title="1 PM, 1300 hour" coords="169,273, 150,268, 120,356, 165,365" href="javascript:bwClockUpdateDateTimeForm('hour','13')" />
1232         <area shape="poly" alt="Noon, 1200 hour" title="Noon, 1200 hour" coords="193,273, 169,273, 165,365, 210,364" href="javascript:bwClockUpdateDateTimeForm('hour','12')" />
1233         <area shape="poly" alt="11 AM, 1100 hour" title="11 AM, 1100 hour" coords="214,270, 193,273, 210,363, 252,352" href="javascript:bwClockUpdateDateTimeForm('hour','11')" />
1234         <area shape="poly" alt="10 AM, 1000 hour" title="10 AM, 1000 hour" coords="232,259, 214,270, 252,352, 291,330" href="javascript:bwClockUpdateDateTimeForm('hour','10')" />
1235         <area shape="poly" alt="9 AM, 0900 hour" title="9 AM, 0900 hour" coords="251,240, 232,258, 291,330, 323,301" href="javascript:bwClockUpdateDateTimeForm('hour','09')" />
1236         <area shape="poly" alt="8 AM, 0800 hour" title="8 AM, 0800 hour" coords="263,219, 251,239, 323,301, 349,261" href="javascript:bwClockUpdateDateTimeForm('hour','08')" />
1237         <area shape="poly" alt="7 AM, 0700 hour" title="7 AM, 0700 hour" coords="269,194, 263,219, 349,261, 363,212" href="javascript:bwClockUpdateDateTimeForm('hour','07')" />
1238         <area shape="poly" alt="6 AM, 0600 hour" title="6 AM, 0600 hour" coords="269,172, 269,193, 363,212, 363,155" href="javascript:bwClockUpdateDateTimeForm('hour','06')" />
1239         <area shape="poly" alt="5 AM, 0500 hour" title="5 AM, 0500 hour" coords="263,150, 269,172, 363,155, 351,109" href="javascript:bwClockUpdateDateTimeForm('hour','05')" />
1240         <area shape="poly" alt="4 AM, 0400 hour" title="4 AM, 0400 hour" coords="251,130, 263,150, 351,109, 325,68" href="javascript:bwClockUpdateDateTimeForm('hour','04')" />
1241         <area shape="poly" alt="3 AM, 0300 hour" title="3 AM, 0300 hour" coords="234,112, 251,130, 325,67, 295,37" href="javascript:bwClockUpdateDateTimeForm('hour','03')" />
1242         <area shape="poly" alt="2 AM, 0200 hour" title="2 AM, 0200 hour" coords="221,102, 234,112, 295,37, 247,11" href="javascript:bwClockUpdateDateTimeForm('hour','02')" />
1243         <area shape="poly" alt="1 AM, 0100 hour" title="1 AM, 0100 hour" coords="196,96, 221,102, 247,10, 209,-1, 201,61, 206,64, 205,74, 199,75" href="javascript:bwClockUpdateDateTimeForm('hour','01')" />
1244         <area shape="poly" alt="Midnight, 0000 hour" title="Midnight, 0000 hour" coords="172,96, 169,74, 161,73, 161,65, 168,63, 158,-1, 209,-1, 201,61, 200,62, 206,64, 205,74, 198,75, 196,96, 183,95" href="javascript:bwClockUpdateDateTimeForm('hour','00')" />
1245       </map>
1246     </div>
1247   </xsl:template>
1248
1249   <xsl:template match="event" mode="displayEvent">
1250     <xsl:variable name="calPath" select="calendar/path"/>
1251     <xsl:variable name="guid" select="guid"/>
1252     <xsl:variable name="recurrenceId" select="recurrenceId"/>
1253
1254     <xsl:choose>
1255       <xsl:when test="/bedeworkadmin/page='deleteEventConfirm'">
1256
1257         <h2>Ok to delete this event?</h2>
1258         <p style="width: 400px;">Note: we do not encourage deletion of old but correct events; we prefer to keep
1259            old events for historical reasons.  Please remove only those events
1260            that are truly erroneous.</p>
1261         <p id="confirmButtons">
1262           <form action="{$event-delete}" method="post">
1263             <input type="submit" name="cancelled" value="Cancel"/>
1264             <input type="submit" name="delete" value="Delete"/>
1265             <input type="hidden" name="calPath" value="{$calPath}"/>
1266             <input type="hidden" name="guid" value="{$guid}"/>
1267             <input type="hidden" name="recurrenceId" value="{$recurrenceId}"/>
1268           </form>
1269         </p>
1270       </xsl:when>
1271       <xsl:otherwise>
1272         <h2>Event Information</h2>
1273       </xsl:otherwise>
1274     </xsl:choose>
1275
1276     <table class="eventFormTable">
1277
1278       <tr>
1279         <th>
1280           Title:
1281         </th>
1282         <td>
1283           <strong><xsl:value-of select="summary"/></strong>
1284         </td>
1285       </tr>
1286
1287       <tr>
1288         <th>
1289           When:
1290         </th>
1291         <td>
1292           <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
1293           <xsl:if test="start/allday = 'false'">
1294             <span class="time"><xsl:value-of select="start/time"/></span>
1295           </xsl:if>
1296           <xsl:if test="(end/longdate != start/longdate) or
1297                         ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
1298           <xsl:if test="end/longdate != start/longdate">
1299             <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
1300           </xsl:if>
1301           <xsl:choose>
1302             <xsl:when test="start/allday = 'true'">
1303               <span class="time"><em>(all day)</em></span>
1304             </xsl:when>
1305             <xsl:when test="end/longdate != start/longdate">
1306               <span class="time"><xsl:value-of select="end/time"/></span>
1307             </xsl:when>
1308             <xsl:when test="end/time != start/time">
1309               <span class="time"><xsl:value-of select="end/time"/></span>
1310             </xsl:when>
1311           </xsl:choose>
1312         </td>
1313       </tr>
1314
1315       <tr>
1316         <th>
1317           Calendar:
1318         </th>
1319         <td>
1320           <xsl:value-of select="calendar/path"/>
1321         </td>
1322       </tr>
1323
1324       <!--  Description  -->
1325       <tr>
1326         <th>
1327           Description:
1328         </th>
1329         <td>
1330           <xsl:value-of select="description"/>
1331         </td>
1332       </tr>
1333       <!-- Cost -->
1334       <tr>
1335         <th class="optional">
1336           Price:
1337         </th>
1338         <td>
1339           <xsl:value-of select="cost"/>
1340         </td>
1341       </tr>
1342       <!-- Url -->
1343       <tr>
1344         <th class="optional">
1345           URL:
1346         </th>
1347         <td>
1348           <xsl:variable name="eventLink" select="link"/>
1349           <a href="{$eventLink}">
1350             <xsl:value-of select="link"/>
1351           </a>
1352         </td>
1353       </tr>
1354
1355       <!-- Location -->
1356       <tr>
1357         <th>
1358           Location:
1359         </th>
1360         <td>
1361           <xsl:value-of select="location/address"/><br/>
1362           <xsl:value-of select="location/subaddress"/>
1363         </td>
1364       </tr>
1365
1366       <!-- Contact -->
1367       <tr>
1368         <th>
1369           Contact:
1370         </th>
1371         <td>
1372           <xsl:value-of select="contact/name"/><br/>
1373           <xsl:value-of select="contact/phone"/><br/>
1374           <xsl:variable name="mailto" select="email"/>
1375           <a href="mailto:{$mailto}"><xsl:value-of select="email"/></a>
1376           <xsl:variable name="link" select="link"/>
1377           <a href="mailto:{$link}"><xsl:value-of select="link"/></a>
1378         </td>
1379       </tr>
1380
1381       <!-- Owner -->
1382       <tr>
1383         <th>
1384           Owner:
1385         </th>
1386         <td>
1387           <strong><xsl:value-of select="creator"/></strong>
1388         </td>
1389       </tr>
1390
1391       <!--  Categories  -->
1392       <tr>
1393         <th>
1394           Categories:
1395         </th>
1396         <td>
1397           <xsl:for-each select="categories/category">
1398             <xsl:value-of select="word"/><br/>
1399           </xsl:for-each>
1400         </td>
1401       </tr>
1402
1403     </table>
1404
1405     <p>
1406       <xsl:if test="/bedeworkadmin/canEdit = 'true' or /bedeworkadmin/userInfo/superUser = 'true'">
1407         <input type="button" name="return" value="Edit event" onclick="javascript:location.replace('{$event-fetchForUpdate}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}')"/>
1408       </xsl:if>
1409
1410       <input type="button" name="return" value="Back" onclick="javascript:history.back()"/>
1411     </p>
1412   </xsl:template>
1413
1414   <!--+++++++++++++++ Contacts ++++++++++++++++++++-->
1415   <xsl:template name="contactList">
1416     <h2>Edit Contacts</h2>
1417     <p>
1418       Select the contact you would like to update:
1419       <input type="button" name="return" value="Add new contact" onclick="javascript:location.replace('{$contact-initAdd}')"/>
1420     </p>
1421
1422     <table id="commonListTable">
1423       <tr>
1424         <th>Name</th>
1425         <th>Phone</th>
1426         <th>Email</th>
1427         <th>URL</th>
1428       </tr>
1429
1430       <xsl:for-each select="/bedeworkadmin/contacts/contact">
1431         <tr>
1432           <td>
1433             <xsl:copy-of select="name" />
1434           </td>
1435           <td>
1436             <xsl:value-of select="phone" />
1437           </td>
1438           <td>
1439             <xsl:variable name="email" select="email"/>
1440             <a href="mailto:{$email}">
1441               <xsl:value-of select="email"/>
1442             </a>
1443           </td>
1444           <td>
1445             <xsl:variable name="link" select="link" />
1446             <a href="{$link}" target="linktest">
1447               <xsl:value-of select="link" />
1448             </a>
1449           </td>
1450         </tr>
1451       </xsl:for-each>
1452     </table>
1453   </xsl:template>
1454
1455   <xsl:template name="modContact">
1456     <form action="{$contact-update}" method="post">
1457       <h2>Contact Information</h2>
1458
1459       <table id="eventFormTable">
1460         <tr>
1461           <td class="fieldName">
1462             Contact:
1463           </td>
1464           <td>
1465             <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
1466           </td>
1467         </tr>
1468         <tr>
1469           <td class="fieldName">
1470             Contact Phone Number:
1471           </td>
1472           <td>
1473             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
1474             <span class="fieldInfo"> (optional)</span>
1475           </td>
1476         </tr>
1477         <tr>
1478           <td class="optional">
1479             Contact's URL:
1480           </td>
1481           <td>
1482             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1483             <span class="fieldInfo"> (optional)</span>
1484           </td>
1485         </tr>
1486         <tr>
1487           <td class="optional">
1488             Contact Email Address:
1489           </td>
1490           <td>
1491             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
1492             <span class="fieldInfo"> (optional)</span>
1493           </td>
1494         </tr>
1495       </table>
1496
1497       <table border="0" id="submitTable">
1498         <tr>
1499           <xsl:choose>
1500             <xsl:when test="/bedeworkadmin/creating='true'">
1501               <td>
1502                 <input type="submit" name="addContact" value="Add Contact"/>
1503                 <input type="submit" name="cancelled" value="Cancel"/>
1504                 <input type="reset" value="Clear"/>
1505               </td>
1506             </xsl:when>
1507             <xsl:otherwise>
1508               <td>
1509                 <input type="submit" name="updateContact" value="Update Contact"/>
1510                 <input type="submit" name="cancelled" value="Cancel"/>
1511                 <input type="reset" value="Reset"/>
1512               </td>
1513               <td align="right">
1514                 <input type="submit" name="delete" value="Delete Contact"/>
1515               </td>
1516             </xsl:otherwise>
1517           </xsl:choose>
1518         </tr>
1519       </table>
1520
1521     </form>
1522   </xsl:template>
1523
1524   <xsl:template name="deleteContactConfirm">
1525     <h2>Ok to delete this contact?</h2>
1526     <p id="confirmButtons">
1527       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1528     </p>
1529
1530     <table class="eventFormTable">
1531       <tr>
1532         <th>Name</th>
1533         <td>
1534           <xsl:value-of select="/bedeworkadmin/contact/name" />
1535         </td>
1536       </tr>
1537       <tr>
1538         <th>Phone</th>
1539         <td>
1540           <xsl:value-of select="/bedeworkadmin/contact/phone" />
1541         </td>
1542       </tr>
1543       <tr>
1544         <th>Email</th>
1545         <td>
1546           <xsl:value-of select="/bedeworkadmin/contact/email" />
1547         </td>
1548       </tr>
1549       <tr>
1550         <th>URL</th>
1551         <td>
1552           <xsl:value-of select="/bedeworkadmin/contact/link" />
1553         </td>
1554       </tr>
1555     </table>
1556   </xsl:template>
1557
1558    <!--+++++++++++++++ Locations ++++++++++++++++++++-->
1559   <xsl:template name="locationList">
1560     <h2>Edit Locations</h2>
1561     <p>
1562       Select the location that you would like to update:
1563       <input type="button" name="return" value="Add new location" onclick="javascript:location.replace('{$location-initAdd}')"/>
1564     </p>
1565
1566     <table id="commonListTable">
1567       <tr>
1568         <th>Address</th>
1569         <th>Subaddress</th>
1570         <th>URL</th>
1571       </tr>
1572
1573       <xsl:for-each select="/bedeworkadmin/locations/location">
1574         <tr>
1575           <td>
1576             <xsl:copy-of select="address/*"/>
1577           </td>
1578           <td>
1579             <xsl:value-of select="subaddress"/>
1580           </td>
1581           <td>
1582             <xsl:variable name="link" select="link" />
1583             <a href="{$link}" target="linktest">
1584               <xsl:value-of select="link" />
1585             </a>
1586           </td>
1587         </tr>
1588       </xsl:for-each>
1589     </table>
1590   </xsl:template>
1591
1592   <xsl:template name="modLocation">
1593     <xsl:choose>
1594       <xsl:when test="/bedeworkadmin/creating='true'">
1595         <h2>Add Location</h2>
1596       </xsl:when>
1597       <xsl:otherwise>
1598         <h2>Update Location</h2>
1599       </xsl:otherwise>
1600     </xsl:choose>
1601
1602     <form action="{$location-update}" method="post">
1603       <table id="eventFormTable">
1604         <tr>
1605           <td class="fieldName">
1606             Address:
1607           </td>
1608           <td>
1609             <xsl:copy-of select="/bedeworkadmin/formElements/form/address/*"/>
1610           </td>
1611         </tr>
1612         <tr>
1613           <td class="optional">
1614             Subaddress:
1615           </td>
1616           <td>
1617             <xsl:copy-of select="/bedeworkadmin/formElements/form/subaddress/*"/>
1618             <span class="fieldInfo"> (optional)</span>
1619           </td>
1620         </tr>
1621         <tr>
1622           <td class="optional">
1623             Location's URL:
1624           </td>
1625           <td>
1626             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1627             <span class="fieldInfo"> (optional)</span>
1628           </td>
1629         </tr>
1630       </table>
1631
1632       <table border="0" id="submitTable">
1633         <tr>
1634           <xsl:choose>
1635             <xsl:when test="/bedeworkadmin/creating='true'">
1636               <td>
1637                 <input type="submit" name="addLocation" value="Add Location"/>
1638                 <input type="submit" name="cancelled" value="Cancel"/>
1639                 <input type="reset" value="Clear"/>
1640               </td>
1641             </xsl:when>
1642             <xsl:otherwise>
1643               <td>
1644                 <input type="submit" name="updateLocation" value="Update Location"/>
1645                 <input type="submit" name="cancelled" value="Cancel"/>
1646                 <input type="reset" value="Reset"/>
1647               </td>
1648               <td align="right">
1649                 <input type="submit" name="delete" value="Delete Location"/>
1650               </td>
1651             </xsl:otherwise>
1652           </xsl:choose>
1653         </tr>
1654       </table>
1655     </form>
1656   </xsl:template>
1657
1658   <xsl:template name="deleteLocationConfirm">
1659     <h2>Ok to delete this location?</h2>
1660     <p id="confirmButtons">
1661       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1662     </p>
1663
1664     <table class="eventFormTable">
1665       <tr>
1666         <td class="fieldName">
1667             Address:
1668           </td>
1669         <td>
1670           <xsl:value-of select="/bedeworkadmin/location/address"/>
1671         </td>
1672       </tr>
1673       <tr>
1674         <td class="optional">
1675             Subaddress:
1676           </td>
1677         <td>
1678           <xsl:value-of select="/bedeworkadmin/location/subaddress"/>
1679         </td>
1680       </tr>
1681       <tr>
1682         <td class="optional">
1683             Location's URL:
1684           </td>
1685         <td>
1686           <xsl:variable name="link" select="/bedeworkadmin/location/link"/>
1687           <a href="{$link}">
1688             <xsl:value-of select="/bedeworkadmin/location/link"/>
1689           </a>
1690         </td>
1691       </tr>
1692     </table>
1693   </xsl:template>
1694
1695   <!--+++++++++++++++ Categories ++++++++++++++++++++-->
1696   <xsl:template name="categoryList">
1697     <h2>Edit Categories</h2>
1698     <p>
1699       Select the category you would like to update:
1700       <input type="button" name="return" value="Add new category" onclick="javascript:location.replace('{$category-initAdd}')"/>
1701     </p>
1702
1703     <table id="commonListTable">
1704       <tr>
1705         <th>Keyword</th>
1706         <th>Description</th>
1707       </tr>
1708
1709       <xsl:for-each select="/bedeworkadmin/categories/category">
1710         <xsl:variable name="categoryKey" select="normalize-space(keyword)"/>
1711         <tr>
1712           <td>
1713             <a href="{$category-fetchForUpdate}&amp;categoryKey={$categoryKey}">
1714               <xsl:value-of select="keyword"/>
1715             </a>
1716           </td>
1717           <td>
1718             <xsl:value-of select="desc"/>
1719           </td>
1720         </tr>
1721       </xsl:for-each>
1722     </table>
1723   </xsl:template>
1724
1725   <xsl:template name="modCategory">
1726     <xsl:choose>
1727       <xsl:when test="/bedeworkadmin/creating='true'">
1728         <h2>Add Category</h2>
1729         <form action="{$category-update}" method="post">
1730           <table id="eventFormTable">
1731             <tr>
1732               <td class="fieldName">
1733                 Keyword:
1734               </td>
1735               <td>
1736                 <input type="text" name="categoryWord.value" value="" size="40"/>
1737               </td>
1738             </tr>
1739             <tr>
1740               <td class="optional">
1741                 Description:
1742               </td>
1743               <td>
1744                 <textarea name="categoryDesc.value" rows="3" cols="60">
1745                 </textarea>
1746               </td>
1747             </tr>
1748           </table>
1749           <table border="0" id="submitTable">
1750             <tr>
1751               <td>
1752                 <input type="submit" name="addCategory" value="Add Category"/>
1753                 <input type="submit" name="cancelled" value="Cancel"/>
1754                 <input type="reset" value="Clear"/>
1755               </td>
1756             </tr>
1757           </table>
1758         </form>
1759       </xsl:when>
1760       <xsl:otherwise>
1761         <h2>Update Category</h2>
1762         <form action="{$category-update}" method="post">
1763           <table id="eventFormTable">
1764             <tr>
1765               <td class="fieldName">
1766             Keyword:
1767             </td>
1768               <td>
1769                 <xsl:variable name="keyword" select="normalize-space(/bedeworkadmin/currentCategory/category/keyword)"/>
1770                 <input type="text" name="categoryWord.value" value="{$keyword}" size="40"/>
1771               </td>
1772             </tr>
1773             <tr>
1774               <td class="optional">
1775             Description:
1776             </td>
1777               <td>
1778                 <textarea name="categoryDesc.value" rows="3" cols="60">
1779                   <xsl:value-of select="normalize-space(/bedeworkadmin/currentCategory/category/desc)"/>
1780                 </textarea>
1781               </td>
1782             </tr>
1783           </table>
1784
1785           <table border="0" id="submitTable">
1786             <tr>
1787               <td>
1788                 <input type="submit" name="updateCategory" value="Update Category"/>
1789                 <input type="submit" name="cancelled" value="Cancel"/>
1790                 <input type="reset" value="Reset"/>
1791               </td>
1792               <td align="right">
1793                 <input type="submit" name="delete" value="Delete Category"/>
1794               </td>
1795             </tr>
1796           </table>
1797         </form>
1798       </xsl:otherwise>
1799     </xsl:choose>
1800
1801
1802   </xsl:template>
1803
1804   <xsl:template name="deleteCategoryConfirm">
1805     <h2>Ok to delete this category?</h2>
1806
1807
1808     <table class="eventFormTable">
1809       <tr>
1810         <td class="fieldName">
1811           Keyword:
1812         </td>
1813         <td>
1814           <xsl:value-of select="/bedeworkadmin/currentCategory/category/keyword"/>
1815         </td>
1816       </tr>
1817       <tr>
1818         <td class="optional">
1819           Description:
1820         </td>
1821         <td>
1822           <xsl:value-of select="/bedeworkadmin/currentCategory/category/desc"/>
1823         </td>
1824       </tr>
1825     </table>
1826
1827     <form action="{$category-delete}" method="post">
1828       <input type="submit" name="updateCategory" value="Yes: Delete Category"/>
1829       <input type="submit" name="cancelled" value="No: Cancel"/>
1830     </form>
1831   </xsl:template>
1832
1833 <!--+++++++++++++++ Calendars ++++++++++++++++++++-->
1834   <xsl:template match="calendars">
1835     <table id="calendarTable">
1836       <tr>
1837         <td class="cals">
1838           <h3>Public calendars</h3>
1839           <ul id="calendarTree">
1840             <xsl:choose>
1841               <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
1842                 <xsl:apply-templates select="calendar" mode="listForDisplay"/>
1843               </xsl:when>
1844               <xsl:otherwise>
1845                 <xsl:apply-templates select="calendar" mode="listForUpdate"/>
1846               </xsl:otherwise>
1847             </xsl:choose>
1848           </ul>
1849         </td>
1850         <td class="calendarContent">
1851           <xsl:choose>
1852             <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarReferenced'">
1853               <xsl:call-template name="calendarList"/>
1854             </xsl:when>
1855             <xsl:when test="/bedeworkadmin/page='calendarDescriptions'">
1856               <xsl:call-template name="calendarDescriptions"/>
1857             </xsl:when>
1858             <xsl:when test="/bedeworkadmin/page='displayCalendar'">
1859               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="displayCalendar"/>
1860             </xsl:when>
1861             <xsl:when test="/bedeworkadmin/page='deleteCalendarConfirm'">
1862               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="deleteCalendarConfirm"/>
1863             </xsl:when>
1864             <xsl:when test="/bedeworkadmin/creating='true'">
1865               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="addCalendar"/>
1866             </xsl:when>
1867             <xsl:otherwise>
1868               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="modCalendar"/>
1869             </xsl:otherwise>
1870           </xsl:choose>
1871         </td>
1872       </tr>
1873     </table>
1874   </xsl:template>
1875
1876   <xsl:template match="calendar" mode="listForUpdate">
1877     <xsl:variable name="calPath" select="encodedPath"/>
1878     <xsl:variable name="itemClass">
1879       <xsl:choose>
1880         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1881         <xsl:otherwise>calendar</xsl:otherwise>
1882       </xsl:choose>
1883     </xsl:variable>
1884     <li class="{$itemClass}">
1885       <a href="{$calendar-fetchForUpdate}&amp;calPath={$calPath}" title="update">
1886         <xsl:value-of select="name"/>
1887       </a>
1888       <xsl:if test="calendarCollection='false'">
1889         <xsl:text> </xsl:text>
1890         <a href="{$calendar-initAdd}&amp;calPath={$calPath}" title="add a calendar or folder">
1891           <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="add a calendar or folder" border="0"/>
1892         </a>
1893       </xsl:if>
1894       <xsl:if test="calendar">
1895         <ul>
1896           <xsl:apply-templates select="calendar" mode="listForUpdate">
1897             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1898         </ul>
1899       </xsl:if>
1900     </li>
1901   </xsl:template>
1902
1903   <xsl:template match="calendar" mode="listForDisplay">
1904     <xsl:variable name="calPath" select="encodedPath"/>
1905     <xsl:variable name="itemClass">
1906       <xsl:choose>
1907         <xsl:when test="calendarCollection='false'">folder</xsl:when>
1908         <xsl:otherwise>calendar</xsl:otherwise>
1909       </xsl:choose>
1910     </xsl:variable>
1911     <li class="{$itemClass}">
1912       <a href="{$calendar-fetchForDisplay}&amp;calPath={$calPath}" title="display">
1913         <xsl:value-of select="name"/>
1914       </a>
1915       <xsl:if test="calendar">
1916         <ul>
1917           <xsl:apply-templates select="calendar" mode="listForDisplay">
1918             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
1919         </ul>
1920       </xsl:if>
1921     </li>
1922   </xsl:template>
1923
1924   <xsl:template match="currentCalendar" mode="addCalendar">
1925     <h3>Add Calendar / Folder</h3>
1926     <form name="addCalForm" action="{$calendar-update}">
1927       <table class="eventFormTable">
1928         <tr>
1929           <th>Name:</th>
1930           <td>
1931             <xsl:variable name="curCalName" select="name"/>
1932             <input name="calendar.name" value="{$curCalName}" size="40"/>
1933           </td>
1934         </tr>
1935         <tr>
1936           <th>Summary:</th>
1937           <td>
1938             <xsl:variable name="curCalSummary" select="summary"/>
1939             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
1940           </td>
1941         </tr>
1942         <tr>
1943           <th>Description:</th>
1944           <td>
1945             <textarea name="calendar.description" cols="40" rows="4">
1946               <xsl:value-of select="desc"/>
1947             </textarea>
1948           </td>
1949         </tr>
1950         <tr>
1951           <th>Calendar/Folder:</th>
1952           <td>
1953             <xsl:choose>
1954               <xsl:when test="calendarCollection='true'">
1955                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
1956                 <input type="radio" value="false" name="calendarCollection"/> Folder
1957               </xsl:when>
1958               <xsl:otherwise>
1959                 <input type="radio" value="true" name="calendarCollection"/> Calendar
1960                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
1961               </xsl:otherwise>
1962             </xsl:choose>
1963           </td>
1964         </tr>
1965       </table>
1966
1967       <table border="0" id="submitTable">
1968         <tr>
1969           <td>
1970             <input type="submit" name="addCalendar" value="Add Calendar/Folder"/>
1971             <input type="submit" name="cancelled" value="Cancel"/>
1972             <input type="reset" value="Clear"/>
1973           </td>
1974         </tr>
1975       </table>
1976     </form>
1977     <div id="sharingBox">
1978       <h3>Sharing</h3>
1979       Sharing may be added to a calendar once created.
1980     </div>
1981   </xsl:template>
1982
1983   <xsl:template match="currentCalendar" mode="modCalendar">
1984     <xsl:choose>
1985       <xsl:when test="calendarCollection='true'">
1986         <h3>Modify Calendar</h3>
1987       </xsl:when>
1988       <xsl:otherwise>
1989         <h3>Modify Folder</h3>
1990       </xsl:otherwise>
1991     </xsl:choose>
1992     <form name="modCalForm" action="{$calendar-update}">
1993       <table class="eventFormTable">
1994         <tr>
1995           <th>Path:</th>
1996           <td>
1997             <xsl:value-of select="path"/>
1998           </td>
1999         </tr>
2000         <tr>
2001           <th>Name:</th>
2002           <td>
2003             <xsl:value-of select="name"/>
2004           </td>
2005         </tr>
2006         <tr>
2007           <th>Mailing List ID:</th>
2008           <td>
2009             <xsl:value-of select="mailListId"/>
2010           </td>
2011         </tr>
2012         <tr>
2013           <th>Summary:</th>
2014           <td>
2015             <xsl:variable name="curCalSummary" select="summary"/>
2016             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
2017           </td>
2018         </tr>
2019         <tr>
2020           <th>Description:</th>
2021           <td>
2022             <textarea name="calendar.description" cols="40" rows="4">
2023               <xsl:value-of select="desc"/>
2024             </textarea>
2025           </td>
2026         </tr>
2027         <tr>
2028           <th>Calendar/Folder:</th>
2029           <td>
2030             <xsl:choose>
2031               <xsl:when test="calendarCollection='true'">
2032                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
2033                 <input type="radio" value="false" name="calendarCollection"/> Folder
2034               </xsl:when>
2035               <xsl:otherwise>
2036                 <input type="radio" value="true" name="calendarCollection"/> Calendar
2037                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
2038               </xsl:otherwise>
2039             </xsl:choose>
2040           </td>
2041         </tr>
2042       </table>
2043
2044       <table border="0" id="submitTable">
2045         <tr>
2046           <td>
2047             <xsl:choose>
2048               <xsl:when test="calendarCollection='true'">
2049                 <input type="submit" name="updateCalendar" value="Update Calendar"/>
2050               </xsl:when>
2051               <xsl:otherwise>
2052                 <input type="submit" name="updateCalendar" value="Update Folder"/>
2053               </xsl:otherwise>
2054             </xsl:choose>
2055             <input type="submit" name="cancelled" value="Cancel"/>
2056             <input type="reset" value="Reset"/>
2057           </td>
2058           <td align="right">
2059             <xsl:choose>
2060               <xsl:when test="calendarCollection='true'">
2061                 <input type="submit" name="delete" value="Delete Calendar"/>
2062               </xsl:when>
2063               <xsl:otherwise>
2064                 <input type="submit" name="delete" value="Delete Folder"/>
2065               </xsl:otherwise>
2066             </xsl:choose>
2067           </td>
2068         </tr>
2069       </table>
2070     </form>
2071
2072
2073     <div id="sharingBox">
2074       <xsl:variable name="calPath" select="path"/>
2075       <xsl:variable name="encodedCalPath" select="encodedPath"/>
2076       <xsl:if test="currentAccess/current-user-privilege-set/privilege/read-acl or /bedeworkadmin/userInfo/superUser='true'">
2077         <h3>Sharing</h3>
2078         <table class="common" id="sharing">
2079           <tr>
2080             <th class="commonHeader">Who:</th>
2081             <th class="commonHeader">Current access:</th>
2082             <th class="commonHeader">Source:</th>
2083           </tr>
2084           <xsl:for-each select="acl/ace">
2085             <xsl:variable name="who">
2086               <xsl:choose>
2087                 <xsl:when test="invert">
2088                   <xsl:choose>
2089                     <xsl:when test="invert/principal/href"><xsl:value-of select="normalize-space(invert/principal/href)"/></xsl:when>
2090                     <xsl:when test="invert/principal/property"><xsl:value-of select="name(invert/principal/property/*)"/></xsl:when>
2091                     <xsl:otherwise><xsl:value-of select="name(invert/principal/*)"/></xsl:otherwise>
2092                   </xsl:choose>
2093                 </xsl:when>
2094                 <xsl:otherwise>
2095                   <xsl:choose>
2096                     <xsl:when test="principal/href"><xsl:value-of select="normalize-space(principal/href)"/></xsl:when>
2097                     <xsl:when test="principal/property"><xsl:value-of select="name(principal/property/*)"/></xsl:when>
2098                     <xsl:otherwise><xsl:value-of select="name(principal/*)"/></xsl:otherwise>
2099                   </xsl:choose>
2100                 </xsl:otherwise>
2101               </xsl:choose>
2102             </xsl:variable>
2103             <tr>
2104             <th class="thin">
2105                 <xsl:if test="invert">
2106                   Not
2107                 </xsl:if>
2108                 <xsl:choose>
2109                   <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">
2110                     <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
2111                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/>
2112                   </xsl:when>
2113                   <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">
2114                     <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
2115                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/>
2116                   </xsl:when>
2117                   <xsl:when test="invert and $who='owner'">
2118                     <xsl:value-of select="$who"/> (other)
2119                   </xsl:when>
2120                   <xsl:otherwise>
2121                     <xsl:value-of select="$who"/>
2122                   </xsl:otherwise>
2123                 </xsl:choose>
2124               </th>
2125               <td>
2126                 <xsl:for-each select="grant/node()">
2127                   <xsl:value-of select="name(.)"/>&#160;&#160;
2128                 </xsl:for-each>
2129                 <xsl:for-each select="deny/node()">
2130                   <xsl:choose>
2131                     <xsl:when test="name(.)='all'">
2132                       none
2133                     </xsl:when>
2134                     <xsl:otherwise>
2135                       deny-<xsl:value-of select="name(.)"/>
2136                     </xsl:otherwise>
2137                   </xsl:choose>
2138                   &#160;&#160;
2139                 </xsl:for-each>
2140               </td>
2141               <td>
2142                 <xsl:choose>
2143                   <xsl:when test="inherited">
2144                     inherited from:
2145                     <a>
2146                       <xsl:attribute name="href"><xsl:value-of select="$calendar-fetchForUpdate"/>&amp;calPath=<xsl:value-of select="inherited/href"/></xsl:attribute>
2147                       <xsl:value-of select="inherited/href"/>
2148                     </a>
2149                   </xsl:when>
2150                   <xsl:otherwise>
2151                     local:
2152                     <xsl:variable name="whoType">
2153                       <xsl:choose>
2154                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">user</xsl:when>
2155                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">group</xsl:when>
2156                         <xsl:otherwise></xsl:otherwise>
2157                       </xsl:choose>
2158                     </xsl:variable>
2159                     <xsl:variable name="shortWho">
2160                       <xsl:choose>
2161                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/></xsl:when>
2162                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/></xsl:when>
2163                         <xsl:otherwise><xsl:value-of select="$who"/></xsl:otherwise>
2164                       </xsl:choose>
2165                     </xsl:variable>
2166                     <xsl:choose>
2167                       <xsl:when test="invert">
2168                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}&amp;notWho=yes">
2169                           reset to default
2170                         </a>
2171                       </xsl:when>
2172                       <xsl:otherwise>
2173                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}">
2174                           reset to default
2175                         </a>
2176                       </xsl:otherwise>
2177                     </xsl:choose>
2178                   </xsl:otherwise>
2179                 </xsl:choose>
2180               </td>
2181             </tr>
2182           </xsl:for-each>
2183         </table>
2184       </xsl:if>
2185
2186       <xsl:if test="currentAccess/current-user-privilege-set/privilege/write-acl or /bedeworkadmin/userInfo/superUser='true'">
2187         <form name="calendarShareForm" action="{$calendar-setAccess}" id="shareForm" method="post">
2188           <input type="hidden" name="calPath" value="{$calPath}"/>
2189           <table cellpadding="0" id="shareFormTable" class="common">
2190             <tr>
2191               <th colspan="2" class="commonHeader">Set access:</th>
2192             </tr>
2193             <tr>
2194               <td>
2195                 <h5>Who:</h5>
2196                 <input type="text" name="who" size="20"/>
2197                 <br/>
2198                 <input type="radio" value="user" name="whoType" checked="checked"/> user
2199                 <input type="radio" value="group" name="whoType"/> group
2200                 <p>OR</p>
2201                 <p>
2202                   <input type="radio" value="auth" name="whoType"/> all authorized users<br/>
2203                   <input type="radio" value="other" name="whoType"/> other users<br/>
2204                   <input type="radio" value="owner" name="whoType"/> owner
2205                 </p>
2206                 <!-- we may never use the invert action ...it is probably
2207                      too confusing, and can be achieved in other ways -->
2208                 <!--
2209                 <p class="padTop">
2210                   <input type="checkbox" value="yes" name="notWho"/> invert (deny)
2211                 </p>-->
2212               </td>
2213               <td>
2214                 <h5>Rights:</h5>
2215                 <ul id="howList">
2216                   <li>
2217                     <input type="radio" value="A" name="how"/>
2218                     <strong>All</strong> (read, write, delete)</li>
2219                   <li class="padTop">
2220                     <input type="radio" value="R" name="how" checked="checked"/>
2221                     <strong>Read</strong> (content, access, freebusy)
2222                   </li>
2223                   <li>
2224                     <input type="radio" value="f" name="how"/> Read freebusy only
2225                   </li>
2226                   <li class="padTop">
2227                     <input type="radio" value="Rc" name="how"/>
2228                     <strong>Read</strong> and <strong>Write content only</strong>
2229                   </li>
2230                   <li class="padTop">
2231                     <input type="radio" value="W" name="how"/>
2232                     <strong>Write and delete</strong> (content, access, properties)
2233                   </li>
2234                   <li>
2235                     <input type="radio" value="c" name="how"/> Write content only
2236                   </li>
2237                   <li>
2238                     <input type="radio" value="u" name="how"/> Delete only
2239                   </li>
2240                   <li class="padTop">
2241                     <input type="radio" value="N" name="how"/>
2242                     <strong>None</strong>
2243                   </li>
2244                   <!--
2245                   <li class="padTop">
2246                     <input type="radio" value="default" name="how"/>
2247                     <strong>Restore default access</strong>
2248                   </li>-->
2249                 </ul>
2250               </td>
2251             </tr>
2252           </table>
2253           <input type="submit" name="submit" value="Submit"/>
2254         </form>
2255       </xsl:if>
2256     </div>
2257   </xsl:template>
2258
2259   <xsl:template name="calendarList">
2260     <h3>Manage Calendars</h3>
2261     <ul>
2262       <li>Select an item from the calendar list on the left to modify
2263       a calendar or folder.</li>
2264       <li>Select the
2265       <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="true" border="0"/>
2266       icon to add a new calendar or folder to the tree.
2267         <ul>
2268           <li>Folders may only contain calendars and subfolders.</li>
2269           <li>Calendars may only contain events (and other calendar items).</li>
2270           <li>
2271             If a calendar is empty, it may be converted to a folder and vice
2272             versa.  If a calendar or folder are not empty, it may not be
2273             converted.
2274           </li>
2275         </ul>
2276       </li>
2277     </ul>
2278   </xsl:template>
2279
2280   <xsl:template name="calendarDescriptions">
2281     <h2>Calendar Information</h2>
2282     <ul>
2283       <li>Select an item from the calendar tree on the left to view all information
2284       about that calendar or folder.  The tree on the left represents the calendar
2285       heirarchy.</li>
2286     </ul>
2287
2288     <p>
2289       <strong>All Calendar Descriptions:</strong>
2290     </p>
2291     <table id="flatCalendarDescriptions" cellspacing="0">
2292       <tr>
2293         <th>Name</th>
2294         <th>Description</th>
2295       </tr>
2296       <xsl:for-each select="//calendar">
2297         <xsl:variable name="descClass">
2298           <xsl:choose>
2299             <xsl:when test="position() mod 2 = 0">even</xsl:when>
2300             <xsl:otherwise>odd</xsl:otherwise>
2301           </xsl:choose>
2302         </xsl:variable>
2303         <tr class="{$descClass}">
2304           <td>
2305             <xsl:value-of select="name"/>
2306           </td>
2307           <td>
2308             <xsl:value-of select="desc"/>
2309           </td>
2310         </tr>
2311       </xsl:for-each>
2312     </table>
2313   </xsl:template>
2314
2315   <xsl:template match="currentCalendar" mode="displayCalendar">
2316     <h2>Calendar Information</h2>
2317     <table class="eventFormTable">
2318       <tr>
2319         <th>Name:</th>
2320         <td>
2321           <xsl:value-of select="name"/>
2322         </td>
2323       </tr>
2324       <tr>
2325         <th>Path:</th>
2326         <td>
2327           <xsl:value-of select="path"/>
2328         </td>
2329       </tr>
2330       <tr>
2331         <th>Summary:</th>
2332         <td>
2333           <xsl:value-of select="summary"/>
2334         </td>
2335       </tr>
2336       <tr>
2337         <th>Description:</th>
2338         <td>
2339           <xsl:value-of select="desc"/>
2340         </td>
2341       </tr>
2342     </table>
2343   </xsl:template>
2344
2345   <xsl:template match="currentCalendar" mode="deleteCalendarConfirm">
2346     <xsl:choose>
2347       <xsl:when test="calendarCollection='true'">
2348         <h3>Delete Calendar</h3>
2349         <p>
2350           The following calendar will be deleted.  Continue?
2351         </p>
2352       </xsl:when>
2353       <xsl:otherwise>
2354         <h3>Delete Folder</h3>
2355         <p>
2356           The following folder <em>and all its contents</em> will be deleted.
2357           Continue?
2358         </p>
2359       </xsl:otherwise>
2360     </xsl:choose>
2361
2362     <form name="delCalForm" action="{$calendar-delete}">
2363       <table class="eventFormTable">
2364         <tr>
2365           <th>Path:</th>
2366           <td>
2367             <xsl:value-of select="path"/>
2368           </td>
2369         </tr>
2370         <tr>
2371           <th>Name:</th>
2372           <td>
2373             <xsl:value-of select="name"/>
2374           </td>
2375         </tr>
2376         <tr>
2377           <th>Summary:</th>
2378           <td>
2379             <xsl:value-of select="summary"/>
2380           </td>
2381         </tr>
2382         <tr>
2383           <th>Description:</th>
2384           <td>
2385             <xsl:value-of select="desc"/>
2386           </td>
2387         </tr>
2388       </table>
2389
2390       <table border="0" id="submitTable">
2391         <tr>
2392           <td>
2393             <input type="submit" name="cancelled" value="Cancel"/>
2394           </td>
2395           <td align="right">
2396             <xsl:choose>
2397               <xsl:when test="calendarCollection='true'">
2398                 <input type="submit" name="delete" value="Yes: Delete Calendar!"/>
2399               </xsl:when>
2400               <xsl:otherwise>
2401                 <input type="submit" name="delete" value="Yes: Delete Folder!"/>
2402               </xsl:otherwise>
2403             </xsl:choose>
2404           </td>
2405         </tr>
2406       </table>
2407     </form>
2408   </xsl:template>
2409
2410   <!-- the selectCalForEvent listing creates a calendar tree in a pop-up window -->
2411   <xsl:template name="selectCalForEvent">
2412     <div id="calTreeBlock">
2413       <h2>Select a calendar</h2>
2414       <!--<form name="toggleCals" action="{$event-selectCalForEvent}">
2415         <xsl:choose>
2416           <xsl:when test="/bedework/appvar[key='showAllCalsForEvent']/value = 'true'">
2417             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" onclick="submit()"/>
2418             show only writable calendars
2419             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" checked="checked" onclick="submit()"/>
2420             show all calendars
2421           </xsl:when>
2422           <xsl:otherwise>
2423             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" checked="checked" onclick="submit()"/>
2424             show only writable calendars
2425             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" onclick="submit()"/>
2426             show all calendars
2427           </xsl:otherwise>
2428         </xsl:choose>
2429       </form>-->
2430       <h4>Calendars</h4>
2431       <ul id="calendarTree">
2432         <xsl:apply-templates select="/bedeworkadmin/calendars/calendar" mode="selectCalForEventCalTree"/>
2433       </ul>
2434     </div>
2435   </xsl:template>
2436
2437   <xsl:template match="calendar" mode="selectCalForEventCalTree">
2438     <xsl:variable name="id" select="id"/>
2439     <li>
2440       <xsl:attribute name="class">
2441         <xsl:choose>
2442           <xsl:when test="calendarCollection='false'">folder</xsl:when>
2443           <xsl:otherwise>calendar</xsl:otherwise>
2444         </xsl:choose>
2445       </xsl:attribute>
2446       <xsl:variable name="calPath" select="path"/><!-- not the encodedPath when put in a form - otherwise it gets double encoded -->
2447       <xsl:variable name="calDisplay" select="path"/>
2448       <xsl:choose>
2449         <xsl:when test="currentAccess/current-user-privilege-set/privilege/write-content and (calendarCollection = 'true')">
2450           <a href="javascript:updateEventFormCalendar('{$calPath}','{$calDisplay}')">
2451             <strong>
2452               <xsl:value-of select="name"/>
2453             </strong>
2454           </a>
2455         </xsl:when>
2456         <xsl:otherwise>
2457           <xsl:value-of select="name"/>
2458         </xsl:otherwise>
2459       </xsl:choose>
2460       <xsl:if test="calendar">
2461         <ul>
2462           <xsl:apply-templates select="calendar" mode="selectCalForEventCalTree"/>
2463         </ul>
2464       </xsl:if>
2465     </li>
2466   </xsl:template>
2467
2468   <!--+++++++++++++++ Subscriptions ++++++++++++++++++++-->
2469   <xsl:template match="subscriptions">
2470     <table id="subsTable">
2471       <tr>
2472         <td class="cals">
2473           <h3>Public calendars</h3>
2474           <p class="smaller">
2475             Select a calendar below to add a <em><strong>new</strong>
2476             </em>
2477             internal subscription. <!-- or
2478             <a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">
2479             subscribe to an external calendar</a>.-->
2480           </p>
2481           <ul id="calendarTree">
2482             <xsl:apply-templates select="/bedeworkadmin/subscriptions/subscribe/calendars/calendar" mode="subscribe"/>
2483           </ul>
2484         </td>
2485         <td class="subs">
2486           <xsl:choose>
2487             <xsl:when test="/bedeworkadmin/page='subscriptions'">
2488               <xsl:call-template name="subscriptionList"/>
2489             </xsl:when>
2490             <xsl:when test="/bedeworkadmin/creating='true'">
2491               <xsl:apply-templates select="subscription" mode="addSubscription"/>
2492             </xsl:when>
2493             <xsl:otherwise>
2494               <xsl:apply-templates select="subscription" mode="modSubscription"/>
2495             </xsl:otherwise>
2496           </xsl:choose>
2497         </td>
2498       </tr>
2499     </table>
2500   </xsl:template>
2501
2502   <xsl:template match="calendar" mode="subscribe">
2503     <xsl:variable name="calPath" select="encodedPath"/>
2504     <xsl:variable name="itemClass">
2505       <xsl:choose>
2506         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2507         <xsl:otherwise>calendar</xsl:otherwise>
2508       </xsl:choose>
2509     </xsl:variable>
2510     <li class="{$itemClass}">
2511       <a href="{$subscriptions-initAdd}&amp;calPath={$calPath}">
2512         <xsl:value-of select="name"/>
2513       </a>
2514       <xsl:if test="calendar">
2515         <ul>
2516           <xsl:apply-templates select="calendar" mode="subscribe">
2517             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2518         </ul>
2519       </xsl:if>
2520     </li>
2521   </xsl:template>
2522
2523   <xsl:template match="subscription" mode="addSubscription">
2524     <h2>Add New Subscription</h2>
2525     <p class="note">*the subsciption name must be unique</p>
2526     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2527       <table class="eventFormTable">
2528         <tr>
2529           <th>Name*:</th>
2530           <td>
2531             <xsl:variable name="subName" select="name"/>
2532             <input type="text" value="{$subName}" name="subscription.name" size="60"/>
2533           </td>
2534         </tr>
2535         <xsl:if test="internal='false'">
2536           <tr>
2537             <th>Uri:</th>
2538             <td>
2539               <xsl:variable name="subUri" select="uri"/>
2540               <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2541             </td>
2542           </tr>
2543         </xsl:if>
2544         <tr>
2545           <th>Display:</th>
2546           <td>
2547             <input type="radio" value="true" name="subscription.display"/> yes
2548             <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2549           </td>
2550         </tr>
2551         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2552           <tr>
2553             <th>Unremovable:</th>
2554             <td>
2555               <input type="radio" value="true" name="unremoveable" size="60"/> true
2556               <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2557             </td>
2558           </tr>
2559         </xsl:if>
2560         <tr>
2561           <th>Style:</th>
2562           <td>
2563             <xsl:variable name="subStyle" select="style"/>
2564             <input type="text" value="{$subStyle}" name="subscription.style" size="50"/>
2565             <div style="width: 400px">
2566               Enter a css class to style events rendered in the list and grid
2567               views.  Leave blank to render with the default colors, or select from
2568               one of the system-wide choices:
2569               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2570                 <option value="">default</option>
2571                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2572                   <xsl:variable name="subColor" select="."/>
2573                   <option value="{$subColor}" class="{$subColor}">
2574                     <xsl:value-of select="@name"/>
2575                   </option>
2576                 </xsl:for-each>
2577               </select>
2578               <p class="note">Note: This class is added alongside the default class used
2579               in the list and grid views.  It does not replace it, so create your
2580               style appropriately.</p>
2581             </div>
2582           </td>
2583         </tr>
2584       </table>
2585       <table border="0" id="submitTable">
2586         <tr>
2587           <td>
2588             <input type="submit" name="addSubscription" value="Add Subscription"/>
2589             <input type="submit" name="cancelled" value="Cancel"/>
2590             <input type="reset" value="Clear"/>
2591           </td>
2592         </tr>
2593       </table>
2594     </form>
2595   </xsl:template>
2596
2597   <xsl:template match="subscription" mode="modSubscription">
2598     <h2>Modify Subscription</h2>
2599     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2600       <table class="eventFormTable">
2601         <tr>
2602           <th>Name*:</th>
2603           <td>
2604             <xsl:value-of select="name"/>
2605             <xsl:variable name="subName" select="name"/>
2606             <input type="hidden" value="{$subName}" name="name"/>
2607           </td>
2608         </tr>
2609         <xsl:choose>
2610           <xsl:when test="internal='false'">
2611             <tr>
2612               <th>Uri:</th>
2613               <td>
2614                 <xsl:variable name="subUri" select="uri"/>
2615                 <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2616               </td>
2617             </tr>
2618           </xsl:when>
2619           <xsl:otherwise>
2620             <tr>
2621               <th>Uri:</th>
2622               <td>
2623                 <xsl:value-of select="uri"/>
2624               </td>
2625             </tr>
2626           </xsl:otherwise>
2627         </xsl:choose>
2628         <tr>
2629           <th>Display:</th>
2630           <td>
2631             <xsl:choose>
2632               <xsl:when test="display='true'">
2633                 <input type="radio" value="true" name="subscription.display" checked="checked"/> yes
2634                 <input type="radio" value="false" name="subscription.display"/> no
2635               </xsl:when>
2636               <xsl:otherwise>
2637                 <input type="radio" value="true" name="subscription.display"/> yes
2638                 <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2639               </xsl:otherwise>
2640             </xsl:choose>
2641           </td>
2642         </tr>
2643         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2644           <tr>
2645             <th>Unremovable:</th>
2646             <td>
2647               <xsl:choose>
2648                 <xsl:when test="unremoveable='true'">
2649                   <input type="radio" value="true" name="unremoveable" size="60" checked="checked"/> true
2650                   <input type="radio" value="false" name="unremoveable" size="60"/> false
2651                 </xsl:when>
2652                 <xsl:otherwise>
2653                   <input type="radio" value="true" name="unremoveable" size="60"/> true
2654                   <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2655                 </xsl:otherwise>
2656               </xsl:choose>
2657             </td>
2658           </tr>
2659         </xsl:if>
2660         <tr>
2661           <th>Style:</th>
2662           <td>
2663             <xsl:variable name="subStyle" select="style"/>
2664             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
2665             <div style="width: 400px">
2666               Enter a css class to style events rendered in the list and grid
2667               views.  Leave blank to render with the default colors, or select from
2668               one of the system-wide choices:
2669               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2670                 <option value="">default</option>
2671                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2672                   <xsl:variable name="subColor" select="."/>
2673                   <option value="{$subColor}" class="{$subColor}">
2674                     <xsl:value-of select="@name"/>
2675                   </option>
2676                 </xsl:for-each>
2677               </select>
2678               <p class="note">Note: This class is added alongside the default class used
2679               in the list and grid views.  It does not replace it, so create your
2680               style appropriately.</p>
2681             </div>
2682           </td>
2683         </tr>
2684       </table>
2685       <table border="0" id="submitTable">
2686         <tr>
2687           <td>
2688             <input type="submit" name="updateSubscription" value="Update Subscription"/>
2689             <input type="submit" name="cancelled" value="Cancel"/>
2690             <input type="reset" value="Reset"/>
2691           </td>
2692           <td align="right">
2693             <input type="submit" name="delete" value="Delete Subscription"/>
2694           </td>
2695         </tr>
2696       </table>
2697     </form>
2698   </xsl:template>
2699
2700   <xsl:template name="subscriptionList">
2701     <h3>Current subscriptions</h3>
2702     <table id="commonListTable">
2703       <tr>
2704         <th>Name</th>
2705         <th>URI</th>
2706         <th>Style</th>
2707         <th>Display</th>
2708         <th>Unremovable</th>
2709         <th>External</th>
2710         <th>Deleted?</th>
2711       </tr>
2712       <xsl:for-each select="subscription">
2713         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2714         <tr>
2715           <td>
2716             <xsl:variable name="subname" select="name"/>
2717             <a href="{$subscriptions-fetchForUpdate}&amp;subname={$subname}">
2718               <xsl:value-of select="name"/>
2719             </a>
2720           </td>
2721           <td>
2722             <xsl:value-of select="uri"/>
2723           </td>
2724           <td>
2725             <xsl:value-of select="style"/>
2726           </td>
2727           <td class="center">
2728             <xsl:if test="display='true'">
2729               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2730             </xsl:if>
2731           </td>
2732           <td class="center">
2733             <xsl:if test="unremoveable='true'">
2734               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2735             </xsl:if>
2736           </td>
2737           <td class="center">
2738             <xsl:if test="internal='false'">
2739               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2740             </xsl:if>
2741           </td>
2742           <td class="center">
2743             <xsl:if test="calendarDeleted='true'">
2744               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
2745             </xsl:if>
2746           </td>
2747         </tr>
2748       </xsl:for-each>
2749     </table>
2750     <!--<h4><a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">Subscribe to a remote calendar</a> (by URI)</h4>-->
2751   </xsl:template>
2752
2753   <!--+++++++++++++++ Views ++++++++++++++++++++-->
2754   <xsl:template match="views" mode="viewList">
2755
2756     <h3>Add a new view</h3>
2757     <form name="addView" action="{$view-addView}" method="post">
2758       <input type="text" name="name" size="60"/>
2759       <input type="submit" value="add view" name="addview"/>
2760     </form>
2761
2762     <h3>Views</h3>
2763     <table id="commonListTable">
2764       <tr>
2765         <th>Name</th>
2766         <th>Included subscriptions</th>
2767       </tr>
2768
2769       <xsl:for-each select="view">
2770         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2771         <tr>
2772           <td>
2773             <xsl:variable name="viewName" select="name"/>
2774             <a href="{$view-fetchForUpdate}&amp;name={$viewName}">
2775               <xsl:value-of select="name"/>
2776             </a>
2777           </td>
2778           <td>
2779             <xsl:for-each select="subscriptions/subscription">
2780               <xsl:value-of select="name"/>
2781               <xsl:if test="position()!=last()">, </xsl:if>
2782             </xsl:for-each>
2783           </td>
2784         </tr>
2785       </xsl:for-each>
2786     </table>
2787   </xsl:template>
2788
2789   <xsl:template name="modView">
2790     <h2>Update View</h2>
2791     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2792     <h3 class="viewName">
2793       <xsl:value-of select="$viewName"/>
2794     </h3>
2795     <table id="viewsTable">
2796       <tr>
2797         <td class="subs">
2798           <h3>Available Subscriptions:</h3>
2799
2800           <table class="subscriptionsListSubs">
2801             <xsl:for-each select="/bedeworkadmin/subscriptions/subscription">
2802               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2803               <xsl:if test="not(/bedeworkadmin/views/view/subscriptions/subscription/name=name)">
2804                 <tr>
2805                   <td>
2806                     <xsl:value-of select="name"/>
2807                   </td>
2808                   <td class="arrows">
2809                     <xsl:variable name="subAddName" select="name"/>
2810                     <a href="{$view-update}&amp;name={$viewName}&amp;add={$subAddName}">
2811                       <img src="{$resourcesRoot}/resources/arrowRight.gif"
2812                           width="13" height="13" border="0"
2813                           alt="add subscription"/>
2814                     </a>
2815                   </td>
2816                 </tr>
2817               </xsl:if>
2818             </xsl:for-each>
2819           </table>
2820         </td>
2821         <td class="view">
2822           <h3>Active Subscriptions:</h3>
2823           <table class="subscriptionsListView">
2824             <xsl:for-each select="/bedeworkadmin/views/view/subscriptions/subscription">
2825               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
2826               <tr>
2827                 <td class="arrows">
2828                   <xsl:variable name="subRemoveName" select="name"/>
2829                   <a href="{$view-update}&amp;name={$viewName}&amp;remove={$subRemoveName}">
2830                     <img src="{$resourcesRoot}/resources/arrowLeft.gif"
2831                         width="13" height="13" border="0"
2832                         alt="add subscription"/>
2833                   </a>
2834                 </td>
2835                 <td>
2836                   <xsl:value-of select="name"/>
2837                 </td>
2838               </tr>
2839             </xsl:for-each>
2840           </table>
2841         </td>
2842       </tr>
2843     </table>
2844     <table border="0" id="submitTable">
2845       <tr>
2846         <td>
2847           <input type="button" name="return" value="Return to Views Listing" onclick="javascript:location.replace('{$view-fetch}')"/>
2848         </td>
2849         <td align="right">
2850           <form name="deleteViewForm" action="{$view-fetchForUpdate}" method="post">
2851             <input type="submit" name="deleteButton" value="Delete View"/>
2852             <input type="hidden" name="name" value="{$viewName}"/>
2853             <input type="hidden" name="delete" value="yes"/>
2854           </form>
2855         </td>
2856       </tr>
2857     </table>
2858   </xsl:template>
2859
2860   <xsl:template name="deleteViewConfirm">
2861     <h2>Remove View?</h2>
2862
2863     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
2864     <p>The following view will be removed. Continue?</p>
2865
2866     <h3 class="viewName">
2867       <xsl:value-of select="$viewName"/>
2868     </h3>
2869     <form name="removeView" action="{$view-remove}">
2870       <input type="hidden" name="name" value="{$viewName}"/>
2871       <input type="submit" name="delete" value="Yes: Remove View"/>
2872       <input type="submit" name="cancelled" value="No: Cancel"/>
2873     </form>
2874
2875   </xsl:template>
2876
2877   <!--==== UPLOAD ====-->
2878   <xsl:template name="upload">
2879   <!-- The name "eventForm" is referenced by several javascript functions. Do not
2880     change it without modifying includes.js -->
2881     <form name="eventForm" method="post" action="{$event-upload}" id="standardForm" enctype="multipart/form-data">
2882       <h2>Upload iCAL File</h2>
2883       <table class="common" cellspacing="0">
2884         <tr>
2885           <td class="fieldname">
2886             Filename:
2887           </td>
2888           <td align="left">
2889             <input type="file" name="uploadFile" size="60" />
2890           </td>
2891         </tr>
2892         <tr>
2893           <td class="fieldname padMeTop">
2894             Into calendar:
2895           </td>
2896           <td align="left" class="padMeTop">
2897             <input type="hidden" name="newCalPath" value=""/>
2898             <span id="bwEventCalDisplay">
2899               <em>none selected</em>
2900             </span>
2901             <xsl:text> </xsl:text>
2902             [<a href="javascript:launchCalSelectWindow('{$event-selectCalForEvent}')" class="small">change</a>]
2903           </td>
2904         </tr>
2905         <!--<tr>
2906           <td class="fieldname padMeTop">
2907             Effects free/busy:
2908           </td>
2909           <td align="left" class="padMeTop">
2910             <input type="radio" value="" name="transparency" checked="checked"/> accept event's settings<br/>
2911             <input type="radio" value="OPAQUE" name="transparency"/> yes <span class="note">(opaque: event status affects your free/busy)</span><br/>
2912             <input type="radio" value="TRANSPARENT" name="transparency"/> no <span class="note">(transparent: event status does not affect your free/busy)</span><br/>
2913           </td>
2914         </tr>-->
2915         <tr>
2916           <td class="fieldname padMeTop">
2917             Status:
2918           </td>
2919           <td align="left" class="padMeTop">
2920             <input type="radio" value="" name="status" checked="checked"/> accept event's status<br/>
2921             <input type="radio" value="CONFIRMED" name="status"/> confirmed<br/>
2922             <input type="radio" value="TENTATIVE" name="status"/> tentative<br/>
2923             <input type="radio" value="CANCELLED" name="status"/> cancelled<br/>
2924           </td>
2925         </tr>
2926       </table>
2927       <table border="0" id="submitTable">
2928         <tr>
2929           <td>
2930             <input name="submit" type="submit" value="Continue"/>
2931             <input name="cancelled" type="submit" value="Cancel"/>
2932           </td>
2933         </tr>
2934       </table>
2935     </form>
2936   </xsl:template>
2937
2938   <!--+++++++++++++++ System Parameters (preferences) ++++++++++++++++++++-->
2939   <xsl:template name="modSyspars">
2940     <h2>Modify System Parameters</h2>
2941     <p>
2942       Do not change unless you know what you're doing.<br/>
2943       Changes to these parameters have wide impact on the system.
2944     </p>
2945     <form name="systemParamsForm" action="{$system-update}" method="post">
2946       <table class="eventFormTable">
2947         <tr>
2948           <th>Default timezone:</th>
2949           <td>
2950             <xsl:variable name="tzid" select="/bedeworkadmin/system/tzid"/>
2951             <input value="{$tzid}" name="tzid" size="20"/>
2952           </td>
2953           <td>
2954             Default timezone id for date/time values. This should normally be your local timezone
2955           </td>
2956         </tr>
2957         <tr>
2958           <th>Default user view name:</th>
2959           <td>
2960             <xsl:variable name="defaultViewName" select="/bedeworkadmin/system/defaultUserViewName"/>
2961             <input value="{$defaultViewName}" name="defaultUserViewName" size="20"/>
2962           </td>
2963           <td>
2964             Name used for default view created when a new user is added
2965           </td>
2966         </tr>
2967         <tr>
2968           <th>Http connections per user:</th>
2969           <td>
2970             <xsl:variable name="httpPerUser" select="/bedeworkadmin/system/httpConnectionsPerUser"/>
2971             <input value="{$httpPerUser}" name="httpConnectionsPerUser" size="20"/>
2972           </td>
2973           <td></td>
2974         </tr>
2975         <tr>
2976           <th>Http connections per host:</th>
2977           <td>
2978             <xsl:variable name="httpPerHost" select="/bedeworkadmin/system/httpConnectionsPerHost"/>
2979             <input value="{$httpPerHost}" name="httpConnectionsPerHost" size="20"/>
2980           </td>
2981           <td></td>
2982         </tr>
2983         <tr>
2984           <th>Total http connections:</th>
2985           <td>
2986             <xsl:variable name="httpTotal" select="/bedeworkadmin/system/httpConnections"/>
2987             <input value="{$httpTotal}" name="httpConnections" size="20"/>
2988           </td>
2989           <td></td>
2990         </tr>
2991         <tr>
2992           <th>Maximum length of public event description:</th>
2993           <td>
2994             <xsl:variable name="maxPublicDescriptionLength" select="/bedeworkadmin/system/maxPublicDescriptionLength"/>
2995             <input value="{$maxPublicDescriptionLength}" name="maxPublicDescriptionLength" size="20"/>
2996           </td>
2997           <td></td>
2998         </tr>
2999         <tr>
3000           <th>Maximum length of user event description:</th>
3001           <td>
3002             <xsl:variable name="maxUserDescriptionLength" select="/bedeworkadmin/system/maxUserDescriptionLength"/>
3003             <input value="{$maxUserDescriptionLength}" name="maxUserDescriptionLength" size="20"/>
3004           </td>
3005           <td></td>
3006         </tr>
3007         <tr>
3008           <th>Maximum size of a user entity:</th>
3009           <td>
3010             <xsl:variable name="maxUserEntitySize" select="/bedeworkadmin/system/maxUserEntitySize"/>
3011             <input value="{$maxUserEntitySize}" name="maxUserEntitySize" size="20"/>
3012           </td>
3013           <td></td>
3014         </tr>
3015         <tr>
3016           <th>Default user quota:</th>
3017           <td>
3018             <xsl:variable name="defaultUserQuota" select="/bedeworkadmin/system/defaultUserQuota"/>
3019             <input value="{$defaultUserQuota}" name="defaultUserQuota" size="20"/>
3020           </td>
3021           <td></td>
3022         </tr>
3023       </table>
3024       <table border="0" id="submitTable">
3025         <tr>
3026           <td>
3027             <input type="submit" name="updateSystemParams" value="Update"/>
3028             <input type="submit" name="cancelled" value="Cancel"/>
3029             <input type="reset" value="Reset"/>
3030           </td>
3031         </tr>
3032       </table>
3033     </form>
3034   </xsl:template>
3035
3036   <!--+++++++++++++++ Calendar Suites (calsuite) ++++++++++++++++++++-->
3037   <xsl:template match="calSuites" mode="calSuiteList">
3038     <h2>Manage Calendar Suites</h2>
3039
3040     <h4>Calendar suites:</h4>
3041     <p>
3042       <input type="button" name="return" value="Add calendar suite" onclick="javascript:location.replace('{$calsuite-showAddForm}')"/>
3043     </p>
3044
3045     <ul>
3046       <xsl:for-each select="calSuite">
3047         <li>
3048           <xsl:variable name="name" select="name"/>
3049           <a href="{$calsuite-fetchForUpdate}&amp;name={$name}">
3050             <xsl:value-of select="name"/>
3051           </a>
3052         </li>
3053       </xsl:for-each>
3054     </ul>
3055
3056   </xsl:template>
3057
3058   <xsl:template name="addCalSuite">
3059     <h2>Add Calendar Suite</h2>
3060     <form name="calSuiteForm" action="{$calsuite-add}" method="post">
3061       <table class="eventFormTable">
3062         <tr>
3063           <th>Name:</th>
3064           <td>
3065             <input name="name" size="20"/>
3066           </td>
3067           <td>
3068             Name of your calendar suite
3069           </td>
3070         </tr>
3071         <tr>
3072           <th>Group:</th>
3073           <td>
3074             <input name="groupName" size="20"/>
3075           </td>
3076           <td>
3077             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3078           </td>
3079         </tr>
3080         <tr>
3081           <th>Root calendar:</th>
3082           <td>
3083             <input name="calPath" size="20"/>
3084           </td>
3085           <td>
3086             Path of root calendar (not required if suite only consists of subscriptions and views)
3087           </td>
3088         </tr>
3089       </table>
3090       <table border="0" id="submitTable">
3091         <tr>
3092           <td>
3093             <input type="submit" name="updateCalSuite" value="Add"/>
3094             <input type="submit" name="cancelled" value="Cancel"/>
3095             <input type="reset" value="Reset"/>
3096           </td>
3097         </tr>
3098       </table>
3099     </form>
3100   </xsl:template>
3101
3102   <xsl:template match="calSuite" name="modCalSuite">
3103     <h2>Modify Calendar Suite</h2>
3104     <xsl:variable name="calSuiteName" select="name"/>
3105     <form name="calSuiteForm" action="{$calsuite-update}" method="post">
3106       <table class="eventFormTable">
3107         <tr>
3108           <th>Name:</th>
3109           <td>
3110             <input name="name" value="{$calSuiteName}" size="20"/>
3111           </td>
3112           <td>
3113             Name of your calendar suite
3114           </td>
3115         </tr>
3116         <tr>
3117           <th>Group:</th>
3118           <td>
3119             <xsl:variable name="group" select="group"/>
3120             <input name="groupName" value="{$group}" size="20"/>
3121           </td>
3122           <td>
3123             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3124           </td>
3125         </tr>
3126         <tr>
3127           <th>Root calendar:</th>
3128           <td>
3129             <xsl:variable name="calPath" select="calPath"/>
3130             <input name="calPath" value="{$calPath}" size="20"/>
3131           </td>
3132           <td>
3133             Path of root calendar (not required if suite only consists of subscriptions and views)
3134           </td>
3135         </tr>
3136       </table>
3137       <table border="0" id="submitTable">
3138         <tr>
3139           <td>
3140             <input type="submit" name="updateCalSuite" value="Update"/>
3141             <input type="submit" name="cancelled" value="Cancel"/>
3142             <input type="reset" value="Reset"/>
3143           </td>
3144         </tr>
3145       </table>
3146     </form>
3147     <div id="sharingBox">
3148       <h3>Manage suite administrators</h3>
3149       <table class="common">
3150         <tr>
3151           <th class="commonHeader" colspan="2">Current access:</th>
3152         </tr>
3153
3154         <xsl:for-each select="acl/ace">
3155           <tr>
3156             <th class="thin">
3157               <xsl:choose>
3158                 <xsl:when test="invert">
3159                   <em>Deny to
3160                   <xsl:choose>
3161                     <xsl:when test="invert/principal/href">
3162                       <xsl:value-of select="invert/principal/href"/>
3163                       </xsl:when>
3164                       <xsl:when test="invert/principal/property">
3165                         <xsl:value-of select="name(invert/principal/property/*)"/>
3166                       </xsl:when>
3167                       <xsl:otherwise>
3168                         <xsl:value-of select="name(invert/principal/*)"/>
3169                       </xsl:otherwise>
3170                     </xsl:choose>
3171                   </em>
3172                 </xsl:when>
3173                 <xsl:otherwise>
3174                   <xsl:choose>
3175                     <xsl:when test="principal/href">
3176                       <xsl:value-of select="principal/href"/>
3177                     </xsl:when>
3178                     <xsl:when test="principal/property">
3179                       <xsl:value-of select="name(principal/property/*)"/>
3180                     </xsl:when>
3181                     <xsl:otherwise>
3182                       <xsl:value-of select="name(principal/*)"/>
3183                     </xsl:otherwise>
3184                   </xsl:choose>
3185                 </xsl:otherwise>
3186               </xsl:choose>
3187             </th>
3188             <td>
3189               <xsl:for-each select="grant/node()">
3190                 <xsl:value-of select="name(.)"/>&#160;&#160;
3191               </xsl:for-each>
3192             </td>
3193           </tr>
3194         </xsl:for-each>
3195       </table>
3196       <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3197         <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3198         <input type="hidden" name="how" value="RW" />
3199         <p>
3200           Add administrator:<br/>
3201           <input type="text" name="who" size="20"/>
3202           <input type="radio" value="user" name="whoType" checked="checked"/> user
3203           <input type="radio" value="group" name="whoType"/> group
3204         </p>
3205         <input type="submit" name="submit" value="Submit"/>
3206       </form>
3207     </div>
3208   </xsl:template>
3209
3210   <xsl:template name="calSuitePrefs">
3211     <h2>Edit Calendar Suite Preferences</h2>
3212     <form name="userPrefsForm" method="post" action="{$calsuite-updatePrefs}">
3213       <table id="eventFormTable">
3214         <tr>
3215           <td class="fieldName">
3216             Calendar Suite:
3217           </td>
3218           <td>
3219             <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
3220           </td>
3221         </tr>
3222         <tr>
3223           <td class="fieldName">
3224             Preferred view:
3225           </td>
3226           <td>
3227             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3228             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3229           </td>
3230         </tr>
3231         <tr>
3232           <td class="fieldName">
3233             Preferred view period:
3234           </td>
3235           <td>
3236             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3237             <select name="viewPeriod">
3238               <!-- picking the selected item could be done with javascript. for
3239                    now, this will do.  -->
3240               <xsl:choose>
3241                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3242                   <option value="dayView" selected="selected">day</option>
3243                 </xsl:when>
3244                 <xsl:otherwise>
3245                   <option value="dayView">day</option>
3246                 </xsl:otherwise>
3247               </xsl:choose>
3248               <xsl:choose>
3249                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3250                   <option value="todayView" selected="selected">today</option>
3251                 </xsl:when>
3252                 <xsl:otherwise>
3253                   <option value="todayView">today</option>
3254                 </xsl:otherwise>
3255               </xsl:choose>
3256               <xsl:choose>
3257                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3258                   <option value="weekView" selected="selected">week</option>
3259                 </xsl:when>
3260                 <xsl:otherwise>
3261                   <option value="weekView">week</option>
3262                 </xsl:otherwise>
3263               </xsl:choose>
3264               <xsl:choose>
3265                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3266                   <option value="monthView" selected="selected">month</option>
3267                 </xsl:when>
3268                 <xsl:otherwise>
3269                   <option value="monthView">month</option>
3270                 </xsl:otherwise>
3271               </xsl:choose>
3272               <xsl:choose>
3273                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3274                   <option value="yearView" selected="selected">year</option>
3275                 </xsl:when>
3276                 <xsl:otherwise>
3277                   <option value="yearView">year</option>
3278                 </xsl:otherwise>
3279               </xsl:choose>
3280             </select>
3281           </td>
3282         </tr>
3283         <tr>
3284           <td class="fieldName">
3285             Skin name:
3286           </td>
3287           <td>
3288             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3289             <input type="text" name="skin" value="{$skinName}" size="40"/>
3290           </td>
3291         </tr>
3292         <tr>
3293           <td class="fieldName">
3294             Skin style:
3295           </td>
3296           <td>
3297             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3298             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3299           </td>
3300         </tr>
3301       </table>
3302       <br />
3303
3304       <input type="submit" name="modPrefs" value="Update"/>
3305       <input type="reset" value="Reset"/>
3306       <input type="submit" name="cancelled" value="Cancel"/>
3307     </form>
3308   </xsl:template>
3309
3310   <!--+++++++++++++++ Timezones ++++++++++++++++++++-->
3311   <xsl:template name="uploadTimezones">
3312     <h2>Upload Timezones</h2>
3313     <form name="peForm" method="post" action="{$timezones-upload}" enctype="multipart/form-data">
3314       <input type="file" name="uploadFile" size="40" value=""/>
3315       <input type="submit" name="doUpload" value="Upload Timezones"/>
3316       <input type="submit" name="cancelled" value="Cancel"/>
3317     </form>
3318   </xsl:template>
3319
3320   <!--+++++++++++++++ Authuser ++++++++++++++++++++-->
3321   <xsl:template name="authUserList">
3322     <h2>Modify Administrators</h2>
3323
3324     <div id="authUserInputForms">
3325       <form name="getUserRolesForm" action="{$authuser-fetchForUpdate}" method="post">
3326         Edit admin roles by userid: <input type="text" name="editAuthUserId" size="20"/>
3327         <input type="submit" value="go" name="submit"/>
3328       </form>
3329     </div>
3330
3331     <table id="commonListTable">
3332       <tr>
3333         <th>UserId</th>
3334         <th>Roles</th>
3335         <th></th>
3336       </tr>
3337
3338       <xsl:for-each select="bedeworkadmin/authUsers/authUser">
3339         <!--<xsl:sort select="account" order="ascending" case-order="upper-first"/>-->
3340         <tr>
3341           <td>
3342             <xsl:value-of select="account"/>
3343           </td>
3344           <td>
3345             <xsl:if test="publicEventUser='true'">
3346               publicEvent; <xsl:text> </xsl:text>
3347             </xsl:if>
3348             <xsl:if test="superUser='true'">
3349               superUser; <xsl:text> </xsl:text>
3350             </xsl:if>
3351             <xsl:if test="alertUser='true'">
3352               alert; <xsl:text> </xsl:text>
3353             </xsl:if>
3354           </td>
3355           <td>
3356             <xsl:variable name="account" select="account"/>
3357             <a href="{$authuser-fetchForUpdate}&amp;editAuthUserId={$account}">
3358               edit
3359             </a>
3360           </td>
3361         </tr>
3362       </xsl:for-each>
3363     </table>
3364   </xsl:template>
3365
3366   <xsl:template name="modAuthUser">
3367     <h2>Update Administrator</h2>
3368     <xsl:variable name="modAuthUserAction" select="/bedeworkadmin/formElements/form/@action"/>
3369     <form action="{$modAuthUserAction}" method="post">
3370       <table id="eventFormTable">
3371         <tr>
3372           <td class="fieldName">
3373             Account:
3374           </td>
3375           <td>
3376             <xsl:value-of select="/bedeworkadmin/formElements/form/account"/>
3377           </td>
3378         </tr>
3379         <tr>
3380           <td class="fieldName">
3381             Alerts:
3382           </td>
3383           <td>
3384             <xsl:copy-of select="/bedeworkadmin/formElements/form/alerts/*"/>
3385           </td>
3386         </tr>
3387         <tr>
3388           <td class="fieldName">
3389             Public Events:
3390           </td>
3391           <td>
3392             <xsl:copy-of select="/bedeworkadmin/formElements/form/publicEvents/*"/>
3393           </td>
3394         </tr>
3395         <tr>
3396           <td class="fieldName">
3397             Super User:
3398           </td>
3399           <td>
3400             <xsl:copy-of select="/bedeworkadmin/formElements/form/superUser/*"/>
3401           </td>
3402         </tr>
3403         <!--<tr>
3404           <td class="optional">
3405             Email:
3406           </td>
3407           <td>
3408             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
3409             <span class="fieldInfo"></span>
3410           </td>
3411         </tr>
3412         <tr>
3413           <td class="optional">
3414             Phone:
3415           </td>
3416           <td>
3417             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
3418             <span class="fieldInfo"></span>
3419           </td>
3420         </tr>
3421         <tr>
3422           <td class="optional">
3423             Department:
3424           </td>
3425           <td>
3426             <xsl:copy-of select="/bedeworkadmin/formElements/form/dept/*"/>
3427             <span class="fieldInfo"></span>
3428           </td>
3429         </tr>
3430         <tr>
3431           <td class="optional">
3432             Last name:
3433           </td>
3434           <td>
3435             <xsl:copy-of select="/bedeworkadmin/formElements/form/lastName/*"/>
3436             <span class="fieldInfo"></span>
3437           </td>
3438         </tr>
3439         <tr>
3440           <td class="optional">
3441             First name:
3442           </td>
3443           <td>
3444             <xsl:copy-of select="/bedeworkadmin/formElements/form/firstName/*"/>
3445             <span class="fieldInfo"></span>
3446           </td>
3447         </tr>-->
3448       </table>
3449       <br />
3450
3451       <input type="submit" name="modAuthUser" value="Update"/>
3452       <input type="reset" value="Reset"/>
3453       <input type="submit" name="cancelled" value="Cancel"/>
3454     </form>
3455   </xsl:template>
3456
3457   <!--+++++++++++++++ User Prefs ++++++++++++++++++++-->
3458   <xsl:template name="modPrefs">
3459     <h2>Edit User Preferences</h2>
3460     <form name="userPrefsForm" method="post" action="{$prefs-update}">
3461       <table id="eventFormTable">
3462         <tr>
3463           <td class="fieldName">
3464             User:
3465           </td>
3466           <td>
3467             <xsl:value-of select="/bedeworkadmin/prefs/user"/>
3468             <xsl:variable name="user" select="/bedeworkadmin/prefs/user"/>
3469             <input type="hidden" name="user" value="{$user}"/>
3470           </td>
3471         </tr>
3472         <tr>
3473           <td class="fieldName">
3474             Preferred view:
3475           </td>
3476           <td>
3477             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
3478             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
3479           </td>
3480         </tr>
3481         <tr>
3482           <td class="fieldName">
3483             Preferred view period:
3484           </td>
3485           <td>
3486             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
3487             <select name="viewPeriod">
3488               <!-- picking the selected item could be done with javascript. for
3489                    now, this will do.  -->
3490               <xsl:choose>
3491                 <xsl:when test="$preferredViewPeriod = 'dayView'">
3492                   <option value="dayView" selected="selected">day</option>
3493                 </xsl:when>
3494                 <xsl:otherwise>
3495                   <option value="dayView">day</option>
3496                 </xsl:otherwise>
3497               </xsl:choose>
3498               <xsl:choose>
3499                 <xsl:when test="$preferredViewPeriod = 'todayView'">
3500                   <option value="todayView" selected="selected">today</option>
3501                 </xsl:when>
3502                 <xsl:otherwise>
3503                   <option value="todayView">today</option>
3504                 </xsl:otherwise>
3505               </xsl:choose>
3506               <xsl:choose>
3507                 <xsl:when test="$preferredViewPeriod = 'weekView'">
3508                   <option value="weekView" selected="selected">week</option>
3509                 </xsl:when>
3510                 <xsl:otherwise>
3511                   <option value="weekView">week</option>
3512                 </xsl:otherwise>
3513               </xsl:choose>
3514               <xsl:choose>
3515                 <xsl:when test="$preferredViewPeriod = 'monthView'">
3516                   <option value="monthView" selected="selected">month</option>
3517                 </xsl:when>
3518                 <xsl:otherwise>
3519                   <option value="monthView">month</option>
3520                 </xsl:otherwise>
3521               </xsl:choose>
3522               <xsl:choose>
3523                 <xsl:when test="$preferredViewPeriod = 'yearView'">
3524                   <option value="yearView" selected="selected">year</option>
3525                 </xsl:when>
3526                 <xsl:otherwise>
3527                   <option value="yearView">year</option>
3528                 </xsl:otherwise>
3529               </xsl:choose>
3530             </select>
3531           </td>
3532         </tr>
3533         <tr>
3534           <td class="fieldName">
3535             Skin name:
3536           </td>
3537           <td>
3538             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
3539             <input type="text" name="skin" value="{$skinName}" size="40"/>
3540           </td>
3541         </tr>
3542         <tr>
3543           <td class="fieldName">
3544             Skin style:
3545           </td>
3546           <td>
3547             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
3548             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
3549           </td>
3550         </tr>
3551       </table>
3552       <br />
3553
3554       <input type="submit" name="modPrefs" value="Update"/>
3555       <input type="reset" value="Reset"/>
3556       <input type="submit" name="cancelled" value="Cancel"/>
3557     </form>
3558   </xsl:template>
3559
3560   <!--+++++++++++++++ Admin Groups ++++++++++++++++++++-->
3561   <xsl:template name="listAdminGroups">
3562     <h2>Modify Groups</h2>
3563     <form name="adminGroupMembersForm" method="post" action="{$admingroup-initUpdate}">
3564       <xsl:choose>
3565         <xsl:when test="/bedeworkadmin/groups/showMembers='true'">
3566           <input type="radio" name="showAgMembers" value="false" onclick="document.adminGroupMembersForm.submit();"/>
3567           Hide members
3568           <input type="radio" name="showAgMembers" value="true" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3569           Show members
3570         </xsl:when>
3571         <xsl:otherwise>
3572           <input type="radio" name="showAgMembers" value="false" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
3573           Hide members
3574           <input type="radio" name="showAgMembers" value="true" onclick="document.adminGroupMembersForm.submit();"/>
3575           Show members
3576         </xsl:otherwise>
3577       </xsl:choose>
3578     </form>
3579
3580     <p>Click on the group name to modify the group owner or description.<br/>
3581     Click "add/remove members" to modify group membership.</p>
3582     <p>
3583       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3584     </p>
3585     <table id="commonListTable">
3586       <tr>
3587         <th>Name</th>
3588         <th>Description</th>
3589         <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3590           <th>Members</th>
3591         </xsl:if>
3592         <th></th>
3593       </tr>
3594       <xsl:for-each select="/bedeworkadmin/groups/group">
3595         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3596         <xsl:variable name="groupName" select="name"/>
3597         <tr>
3598           <td>
3599             <a href="{$admingroup-fetchForUpdate}&amp;adminGroupName={$groupName}">
3600               <xsl:value-of select="name"/>
3601             </a>
3602           </td>
3603           <td>
3604             <xsl:value-of select="desc"/>
3605           </td>
3606           <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
3607             <td>
3608               <xsl:for-each select="members/member/account">
3609                 <xsl:value-of select="."/>&#160;
3610               </xsl:for-each>
3611             </td>
3612           </xsl:if>
3613           <td>
3614             <a href="{$admingroup-fetchForUpdateMembers}&amp;adminGroupName={$groupName}">Add/Remove members</a>
3615           </td>
3616         </tr>
3617       </xsl:for-each>
3618     </table>
3619     <p>
3620       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
3621     </p>
3622   </xsl:template>
3623
3624   <xsl:template match="groups" mode="chooseGroup">
3625     <h2>Choose Your Administrative Group</h2>
3626
3627     <table id="commonListTable">
3628
3629       <tr>
3630         <th>Name</th>
3631         <th>Description</th>
3632       </tr>
3633
3634       <xsl:for-each select="group">
3635         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3636         <tr>
3637           <td>
3638             <xsl:variable name="admGroupName" select="name"/>
3639             <a href="{$setup}&amp;adminGroupName={$admGroupName}">
3640               <xsl:copy-of select="name"/>
3641             </a>
3642           </td>
3643           <td>
3644             <xsl:value-of select="desc"/>
3645           </td>
3646         </tr>
3647       </xsl:for-each>
3648     </table>
3649   </xsl:template>
3650
3651   <xsl:template name="modAdminGroup">
3652     <xsl:choose>
3653       <xsl:when test="/bedeworkadmin/creating = 'true'">
3654         <h2>Add Group</h2>
3655       </xsl:when>
3656       <xsl:otherwise>
3657         <h2>Modify Group</h2>
3658       </xsl:otherwise>
3659     </xsl:choose>
3660     <form name="peForm" method="post" action="{$admingroup-update}">
3661       <table id="adminGroupFormTable">
3662         <tr>
3663           <td class="fieldName">
3664             Name:
3665           </td>
3666           <td>
3667             <xsl:choose>
3668               <xsl:when test="/bedeworkadmin/creating = 'true'">
3669                 <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
3670               </xsl:when>
3671               <xsl:otherwise>
3672                 <xsl:value-of select="/bedeworkadmin/formElements/form/name"/>
3673               </xsl:otherwise>
3674             </xsl:choose>
3675           </td>
3676         </tr>
3677         <tr>
3678           <td class="fieldName">
3679             Description:
3680           </td>
3681           <td>
3682             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
3683           </td>
3684         </tr>
3685         <tr>
3686           <td class="fieldName">
3687             Group owner:
3688           </td>
3689           <td>
3690             <xsl:copy-of select="/bedeworkadmin/formElements/form/groupOwner/*"/>
3691           </td>
3692         </tr>
3693         <tr>
3694           <td class="fieldName">
3695             Events owner:
3696           </td>
3697           <td>
3698             <xsl:copy-of select="/bedeworkadmin/formElements/form/eventsOwner/*"/>
3699           </td>
3700         </tr>
3701       </table>
3702       <table border="0" id="submitTable">
3703         <tr>
3704           <td>
3705             <xsl:choose>
3706               <xsl:when test="/bedeworkadmin/creating = 'true'">
3707                 <input type="submit" name="updateAdminGroup" value="Add Admin Group"/>
3708                 <input type="submit" name="cancelled" value="Cancel"/>
3709                 <input type="reset" value="Clear"/>
3710               </xsl:when>
3711               <xsl:otherwise>
3712                 <input type="submit" name="updateAdminGroup" value="Update Admin Group"/>
3713                 <input type="submit" name="cancelled" value="Cancel"/>
3714                 <input type="reset" value="Reset"/>
3715               </xsl:otherwise>
3716             </xsl:choose>
3717           </td>
3718           <td align="right">
3719             <input type="submit" name="delete" value="Delete"/>
3720           </td>
3721         </tr>
3722       </table>
3723     </form>
3724   </xsl:template>
3725
3726   <xsl:template name="modAdminGroupMembers">
3727     <h2>Update Group Membership</h2>
3728     <p>Enter a userid (for user or group) and click "add" to update group membership.
3729     Click the trash icon to remove a user from the group.</p>
3730
3731     <form name="adminGroupMembersForm" method="post" action="{$admingroup-updateMembers}">
3732       <p>Add member:
3733         <input type="text" name="updGroupMember" size="15"/>
3734         <input type="radio" value="user" name="kind" checked="checked"/>user
3735         <input type="radio" value="group" name="kind"/>group
3736         <input type="submit" name="addGroupMember" value="Add"/>
3737       </p>
3738     </form>
3739     <p>
3740       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initUpdate}')" value="Return to Admin Group listing"/>
3741     </p>
3742
3743     <table id="adminGroupFormTable">
3744       <tr>
3745         <td class="fieldName">
3746           Name:
3747         </td>
3748         <td>
3749           <xsl:value-of select="/bedeworkadmin/adminGroup/name"/>
3750         </td>
3751       </tr>
3752       <tr>
3753         <td class="fieldName">
3754           Members:
3755         </td>
3756         <td>
3757           <table id="memberAccountList">
3758             <xsl:for-each select="/bedeworkadmin/adminGroup/members/member">
3759               <xsl:choose>
3760                 <xsl:when test="kind='0'"><!-- kind = user -->
3761                   <tr>
3762                     <td>
3763                       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
3764                     </td>
3765                     <td>
3766                       <xsl:value-of select="account"/>
3767                     </td>
3768                     <td>
3769                       <xsl:variable name="acct" select="account"/>
3770                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=user" title="remove">
3771                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3772                       </a>
3773                     </td>
3774                   </tr>
3775                 </xsl:when>
3776                 <xsl:otherwise><!-- kind = group -->
3777                   <tr>
3778                     <td>
3779                       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3780                     </td>
3781                     <td>
3782                       <strong>
3783                         <xsl:value-of select="account"/>
3784                       </strong>
3785                     </td>
3786                     <td>
3787                       <xsl:variable name="acct" select="account"/>
3788                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=group" title="remove">
3789                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
3790                       </a>
3791                     </td>
3792                   </tr>
3793                 </xsl:otherwise>
3794               </xsl:choose>
3795             </xsl:for-each>
3796           </table>
3797         </td>
3798       </tr>
3799     </table>
3800     <p>
3801       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/> user,
3802       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3803       <xsl:text> </xsl:text>
3804       <strong>group</strong>
3805     </p>
3806   </xsl:template>
3807
3808   <xsl:template name="deleteAdminGroupConfirm">
3809     <h2>Delete Admin Group?</h2>
3810     <p>The following group will be deleted. Continue?</p>
3811     <p>
3812       <strong>
3813         <xsl:value-of select="/bedeworkadmin/groups/group/name"/>
3814       </strong>:
3815       <xsl:value-of select="/bedeworkadmin/groups/group/desc"/>
3816     </p>
3817     <form name="adminGroupDelete" method="post" action="{$admingroup-delete}">
3818       <input type="submit" name="removeAdminGroupOK" value="Yes: Delete!"/>
3819       <input type="submit" name="cancelled" value="No: Cancel"/>
3820     </form>
3821   </xsl:template>
3822
3823   <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
3824
3825   <xsl:template match="sysStats" mode="showSysStats">
3826     <h2>System Statistics</h2>
3827
3828     <p>
3829       Stats collection:
3830     </p>
3831     <ul>
3832       <li>
3833         <a href="{$stats-update}&amp;enable=yes">enable</a> |
3834         <a href="{$stats-update}&amp;disable=yes">disable</a>
3835       </li>
3836       <li>
3837         <a href="{$stats-update}&amp;fetch=yes">fetch statistics</a>
3838       </li>
3839       <li>
3840         <a href="{$stats-update}&amp;dump=yes">dump stats to log</a>
3841       </li>
3842     </ul>
3843     <table id="statsTable" cellpadding="0">
3844       <xsl:for-each select="*">
3845         <xsl:choose>
3846           <xsl:when test="name(.) = 'header'">
3847             <tr>
3848               <th colspan="2">
3849                 <xsl:value-of select="."/>
3850               </th>
3851             </tr>
3852           </xsl:when>
3853           <xsl:otherwise>
3854             <tr>
3855               <td class="label">
3856                 <xsl:value-of select="label"/>
3857               </td>
3858               <td class="value">
3859                 <xsl:value-of select="value"/>
3860               </td>
3861             </tr>
3862           </xsl:otherwise>
3863         </xsl:choose>
3864       </xsl:for-each>
3865     </table>
3866   </xsl:template>
3867
3868   <!--==== SEARCH RESULT ====-->
3869   <xsl:template name="searchResult">
3870     <h2 class="bwStatusConfirmed">
3871       <div id="searchFilter">
3872         <form name="searchForm" method="post" action="{$search}">
3873           Search:
3874           <input type="text" name="query" size="15">
3875             <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/searchResults/query"/></xsl:attribute>
3876           </input>
3877           <input type="submit" name="submit" value="go"/>
3878           Limit:
3879           <xsl:choose>
3880             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'beforeToday'">
3881               <input type="radio" name="searchLimits" value="fromToday"/>today forward
3882               <input type="radio" name="searchLimits" value="beforeToday" checked="checked"/>past dates
3883               <input type="radio" name="searchLimits" value="none"/>all dates
3884             </xsl:when>
3885             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'none'">
3886               <input type="radio" name="searchLimits" value="fromToday"/>today forward
3887               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
3888               <input type="radio" name="searchLimits" value="none" checked="checked"/>all dates
3889             </xsl:when>
3890             <xsl:otherwise>
3891               <input type="radio" name="searchLimits" value="fromToday" checked="checked"/>today forward
3892               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
3893               <input type="radio" name="searchLimits" value="none"/>all dates
3894             </xsl:otherwise>
3895           </xsl:choose>
3896         </form>
3897       </div>
3898       Search Result
3899     </h2>
3900     <table id="searchTable" cellpadding="0" cellspacing="0">
3901       <tr>
3902         <th colspan="5">
3903           <xsl:if test="/bedeworkadmin/searchResults/numPages &gt; 1">
3904             <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
3905             <div id="searchPageForm">
3906               page:
3907               <xsl:if test="/bedeworkadmin/searchResults/curPage != 1">
3908                 <xsl:variable name="prevPage" select="number($curPage) - 1"/>
3909                 &lt;<a href="{$search-next}&amp;pageNum={$prevPage}">prev</a>
3910               </xsl:if>
3911               <xsl:text> </xsl:text>
3912
3913               <xsl:call-template name="searchResultPageNav">
3914                 <xsl:with-param name="page">
3915                   <xsl:choose>
3916                     <xsl:when test="number($curPage) - 10 &lt; 1">1</xsl:when>
3917                     <xsl:otherwise><xsl:value-of select="number($curPage) - 6"/></xsl:otherwise>
3918                   </xsl:choose>
3919                 </xsl:with-param>
3920               </xsl:call-template>
3921
3922               <xsl:text> </xsl:text>
3923               <xsl:choose>
3924                 <xsl:when test="$curPage != /bedeworkadmin/searchResults/numPages">
3925                   <xsl:variable name="nextPage" select="number($curPage) + 1"/>
3926                   <a href="{$search-next}&amp;pageNum={$nextPage}">next</a>&gt;
3927                 </xsl:when>
3928                 <xsl:otherwise>
3929                   <span class="hidden">next&gt;</span><!-- occupy the space to keep the navigation from moving around -->
3930                 </xsl:otherwise>
3931               </xsl:choose>
3932             </div>
3933           </xsl:if>
3934           <xsl:value-of select="/bedeworkadmin/searchResults/resultSize"/>
3935           result<xsl:if test="/bedeworkadmin/searchResults/resultSize != 1">s</xsl:if> returned
3936           for <em><xsl:value-of select="/bedeworkadmin/searchResults/query"/></em>
3937         </th>
3938       </tr>
3939       <xsl:if test="/bedeworkadmin/searchResults/searchResult">
3940         <tr class="fieldNames">
3941           <td>
3942             relevance
3943           </td>
3944           <td>
3945             summary
3946           </td>
3947           <td>
3948             date &amp; time
3949           </td>
3950           <td>
3951             calendar
3952           </td>
3953           <td>
3954             location
3955           </td>
3956         </tr>
3957       </xsl:if>
3958       <xsl:for-each select="/bedeworkadmin/searchResults/searchResult">
3959         <xsl:variable name="subscriptionId" select="event/subscription/id"/>
3960         <xsl:variable name="calPath" select="event/calendar/encodedPath"/>
3961         <xsl:variable name="guid" select="event/guid"/>
3962         <xsl:variable name="recurrenceId" select="event/recurrenceId"/>
3963         <tr>
3964           <td class="relevance">
3965             <xsl:value-of select="ceiling(number(score)*100)"/>%
3966             <img src="{$resourcesRoot}/images/spacer.gif" height="4" class="searchRelevance">
3967               <xsl:attribute name="width"><xsl:value-of select="ceiling((number(score)*100) div 1.5)"/></xsl:attribute>
3968             </img>
3969           </td>
3970           <td>
3971             <a href="{$event-fetchForDisplay}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
3972               <xsl:value-of select="event/summary"/>
3973             </a>
3974           </td>
3975           <td>
3976             <xsl:value-of select="event/start/longdate"/>
3977             <xsl:text> </xsl:text>
3978             <xsl:value-of select="event/start/time"/>
3979             <xsl:choose>
3980               <xsl:when test="event/start/longdate != event/end/longdate">
3981                 - <xsl:value-of select="event/start/longdate"/>
3982                 <xsl:text> </xsl:text>
3983                 <xsl:value-of select="event/end/time"/>
3984               </xsl:when>
3985               <xsl:when test="event/start/time != event/end/time">
3986                 - <xsl:value-of select="event/end/time"/>
3987               </xsl:when>
3988             </xsl:choose>
3989           </td>
3990           <td>
3991             <xsl:value-of select="event/calendar/name"/>
3992           </td>
3993           <td>
3994             <xsl:value-of select="event/location/address"/>
3995           </td>
3996         </tr>
3997       </xsl:for-each>
3998     </table>
3999   </xsl:template>
4000
4001   <xsl:template name="searchResultPageNav">
4002     <xsl:param name="page">1</xsl:param>
4003     <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
4004     <xsl:variable name="numPages" select="/bedeworkadmin/searchResults/numPages"/>
4005     <xsl:variable name="endPage">
4006       <xsl:choose>
4007         <xsl:when test="number($curPage) + 6 &gt; number($numPages)"><xsl:value-of select="$numPages"/></xsl:when>
4008         <xsl:otherwise><xsl:value-of select="number($curPage) + 6"/></xsl:otherwise>
4009       </xsl:choose>
4010     </xsl:variable>
4011     <xsl:choose>
4012       <xsl:when test="$page = $curPage">
4013         <xsl:value-of select="$page"/>
4014       </xsl:when>
4015       <xsl:otherwise>
4016         <a href="{$search-next}&amp;pageNum={$page}">
4017           <xsl:value-of select="$page"/>
4018         </a>
4019       </xsl:otherwise>
4020     </xsl:choose>
4021     <xsl:text> </xsl:text>
4022     <xsl:if test="$page &lt; $endPage">
4023        <xsl:call-template name="searchResultPageNav">
4024          <xsl:with-param name="page" select="number($page)+1"/>
4025       </xsl:call-template>
4026     </xsl:if>
4027   </xsl:template>
4028
4029   <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
4030
4031   <xsl:template name="header">
4032     <div id="header">
4033       <a href="{$urlPrefix}">
4034         <img id="logo"
4035             alt="logo"
4036             src="{$resourcesRoot}/resources/bedeworkAdminLogo.gif"
4037             width="217"
4038             height="40"
4039             border="0"/>
4040       </a>
4041       <!-- set the page heading: -->
4042       <h1>
4043         <xsl:choose>
4044           <xsl:when test="/bedeworkadmin/page='modEvent' or /bedeworkadmin/page='eventList' or /bedeworkadmin/page='displayEvent'">
4045             Manage Events
4046           </xsl:when>
4047           <xsl:when test="/bedeworkadmin/page='contactList' or /bedeworkadmin/page='modContact' or /bedeworkadmin/page='deleteContactConfirm'">
4048             Manage Contacts
4049           </xsl:when>
4050           <xsl:when test="/bedeworkadmin/page='locationList' or /bedeworkadmin/page='modLocation' or /bedeworkadmin/page='deleteLocationConfirm'">
4051             Manage Locations
4052           </xsl:when>
4053           <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='calendarReferenced' or /bedeworkadmin/page='deleteCalendarConfirm'">
4054             Manage Calendars
4055           </xsl:when>
4056           <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
4057             Public Calendars
4058           </xsl:when>
4059           <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
4060             Manage Subscriptions
4061           </xsl:when>
4062           <xsl:when test="/bedeworkadmin/page='views' or /bedeworkadmin/page='modView'">
4063             Manage Views
4064           </xsl:when>
4065           <xsl:when test="/bedeworkadmin/page='modSyspars'">
4066             Manage System Preferences
4067           </xsl:when>
4068           <xsl:when test="/bedeworkadmin/page='authUserList' or /bedeworkadmin/page='modAuthUser'">
4069             Manage Public Events Administrators
4070           </xsl:when>
4071           <xsl:when test="/bedeworkadmin/page='chooseGroup'">
4072             Choose Administrative Group
4073           </xsl:when>
4074           <xsl:when test="/bedeworkadmin/page='adminGroupList' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroupMembers'">
4075             Manage Administrative Groups
4076           </xsl:when>
4077           <xsl:when test="/bedeworkadmin/page='noGroup'">
4078             No Administrative Group
4079           </xsl:when>
4080           <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
4081             Manage Time Zones
4082           </xsl:when>
4083           <xsl:when test="/bedeworkadmin/page='noAccess'">
4084             Access Denied
4085           </xsl:when>
4086           <xsl:when test="/bedeworkadmin/page='error'">
4087             Error
4088           </xsl:when>
4089           <xsl:otherwise>
4090             Bedework Calendar Administration
4091           </xsl:otherwise>
4092         </xsl:choose>
4093       </h1>
4094
4095       <xsl:if test="/bedeworkadmin/message">
4096         <div id="messages">
4097           <p>
4098             <xsl:apply-templates select="/bedeworkadmin/message"/>
4099           </p>
4100         </div>
4101       </xsl:if>
4102       <xsl:if test="/bedeworkadmin/error">
4103         <div id="errors">
4104           <p>
4105             <xsl:apply-templates select="/bedeworkadmin/error"/>
4106           </p>
4107         </div>
4108       </xsl:if>
4109
4110     </div>
4111     <table id="statusBarTable">
4112       <tr>
4113         <td class="leftCell">
4114           <a href="{$setup}">Main Menu</a> |
4115           <a href="{$publicCal}" target="calendar">Launch Calendar</a> |
4116           <a href="{$logout}">Log Out</a>
4117         </td>
4118         <xsl:if test="/bedeworkadmin/userInfo/user">
4119           <td class="rightCell">
4120             <xsl:if test="/bedeworkadmin/currentCalSuite/name">
4121               Calendar Suite:
4122               <span class="status">
4123                 <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
4124               </span>
4125               &#160;
4126             </xsl:if>
4127             Logged in as:
4128             <span class="status">
4129               <xsl:value-of select="/bedeworkadmin/userInfo/user"/>
4130             </span>
4131             &#160;
4132             <xsl:if test="/bedeworkadmin/userInfo/group">
4133               Group:
4134               <span class="status">
4135                 <xsl:value-of select="/bedeworkadmin/userInfo/group"/>
4136               </span>
4137             </xsl:if>
4138           </td>
4139         </xsl:if>
4140       </tr>
4141     </table>
4142     <div id="titleBar">
4143       CALENDAR of EVENTS
4144     </div>
4145   </xsl:template>
4146
4147   <!--==== FOOTER ====-->
4148   <xsl:template name="footer">
4149     <div id="footer">
4150       <a href="http://www.bedework.org/">Bedework Website</a> |
4151       <!-- Enable the following two items when debugging skins only -->
4152       <a href="?noxslt=yes">show XML</a> |
4153       <a href="?refreshXslt=yes">refresh XSLT</a>
4154     </div>
4155   </xsl:template>
4156 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.