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

Revision 1174 (checked in by johnsa, 7 years ago)

public and personal clients: final clean up to urlPrefixes

admin client: system params timezone selection now a select box

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="/bedework-common/default/default/errors.xsl"/>
44   <xsl:include href="/bedework-common/default/default/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}" onsubmit="setRecurrence(this)">
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 (anniversary)
697
698             <!-- floating event: no timezone (and not UTC) -->
699             <xsl:choose>
700               <xsl:when test="/bedeworkadmin/formElements/form/floating/input/@checked='checked'">
701                 <input type="checkbox" name="floatingFlag" id="floatingFlag" onclick="swapFloatingTime(this)" value="on" checked="checked"/>
702                 <input type="hidden" name="eventStartDate.floating" value="on" id="startFloating"/>
703                 <input type="hidden" name="eventEndDate.floating" value="on" id="endFloating"/>
704               </xsl:when>
705               <xsl:otherwise>
706                 <input type="checkbox" name="floatingFlag" id="floatingFlag" onclick="swapFloatingTime(this)" value="off"/>
707                 <input type="hidden" name="eventStartDate.floating" value="off" id="startFloating"/>
708                 <input type="hidden" name="eventEndDate.floating" value="off" id="endFloating"/>
709               </xsl:otherwise>
710             </xsl:choose>
711             floating
712
713             <!-- store time as coordinated universal time (UTC) -->
714             <xsl:choose>
715               <xsl:when test="/bedeworkadmin/formElements/form/storeUTC/input/@checked='checked'">
716                 <input type="checkbox" name="storeUTCFlag" id="storeUTCFlag" onclick="swapStoreUTC(this)" value="on" checked="checked"/>
717                 <input type="hidden" name="eventStartDate.storeUTC" value="on" id="startStoreUTC"/>
718                 <input type="hidden" name="eventEndDate.storeUTC" value="on" id="endStoreUTC"/>
719               </xsl:when>
720               <xsl:otherwise>
721                 <input type="checkbox" name="storeUTCFlag" id="storeUTCFlag" onclick="swapStoreUTC(this)" value="off"/>
722                 <input type="hidden" name="eventStartDate.storeUTC" value="off" id="startStoreUTC"/>
723                 <input type="hidden" name="eventEndDate.storeUTC" value="off" id="endStoreUTC"/>
724               </xsl:otherwise>
725             </xsl:choose>
726             store as UTC
727
728             <br/>
729             <div class="dateStartEndBox">
730               <strong>Start:</strong>
731               <div class="dateFields">
732                 <span class="startDateLabel">Date </span>
733                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/month/*"/>
734                 <xsl:copy-of select="/bedeworkadmin/formElements/form/start/day/*"/>
735                 <xsl:choose>
736                   <xsl:when test="/bedeworkadmin/creating = 'true'">
737                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/year/*"/>
738                   </xsl:when>
739                   <xsl:otherwise>
740                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/yearText/*"/>
741                   </xsl:otherwise>
742                 </xsl:choose>
743               </div>
744               <script language="JavaScript" type="text/javascript">
745                 <xsl:comment>
746                 startDateDynCalWidget = new dynCalendar('startDateDynCalWidget', <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/yearText/input/@value)"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/month/select/option[@selected='selected']/@value)-1"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/day/select/option[@selected='selected']/@value)"/>, 'startDateCalWidgetCallback',true,'<xsl:value-of select="$resourcesRoot"/>/resources/');
747                 </xsl:comment>
748               </script>
749               <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
750               <div class="{$timeFieldsClass}" id="startTimeFields">
751                 <span id="calWidgetStartTimeHider" class="show">
752                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/hour/*"/>
753                   <xsl:copy-of select="/bedeworkadmin/formElements/form/start/minute/*"/>
754                   <xsl:if test="/bedeworkadmin/formElements/form/start/ampm">
755                     <xsl:copy-of select="/bedeworkadmin/formElements/form/start/ampm/*"/>
756                   </xsl:if>
757                   <xsl:text> </xsl:text>
758                   <a href="javascript:bwClockLaunch('eventStartDate');"><img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/></a>
759
760                   <select name="eventStartDate.tzid" id="startTzid" class="timezones">
761                     <xsl:if test="form/floating/input/@checked='checked'"><xsl:attribute name="disabled">true</xsl:attribute></xsl:if>
762                     <option value="-1">select timezone...</option>
763                     <xsl:for-each select="/bedeworkadmin/timezones/timezone">
764                       <option>
765                         <xsl:attribute name="value"><xsl:value-of select="id"/></xsl:attribute>
766                         <xsl:if test="/bedeworkadmin/formElements/form/start/tzid = id"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>
767                         <xsl:value-of select="name"/>
768                       </option>
769                     </xsl:for-each>
770                   </select>
771                 </span>
772               </div>
773             </div>
774             <div class="dateStartEndBox">
775               <strong>End:</strong>
776               <xsl:choose>
777                 <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">
778                   <input type="radio" name="eventEndType" value="E" checked="checked" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
779                 </xsl:when>
780                 <xsl:otherwise>
781                   <input type="radio" name="eventEndType" value="E" onClick="changeClass('endDateTime','shown');changeClass('endDuration','invisible');"/>
782                 </xsl:otherwise>
783               </xsl:choose>
784               Date
785               <xsl:variable name="endDateTimeClass">
786                 <xsl:choose>
787                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='E'">shown</xsl:when>
788                   <xsl:otherwise>invisible</xsl:otherwise>
789                 </xsl:choose>
790               </xsl:variable>
791               <div class="{$endDateTimeClass}" id="endDateTime">
792                 <div class="dateFields">
793                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/month/*"/>
794                   <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/day/*"/>
795                   <xsl:choose>
796                     <xsl:when test="/bedeworkadmin/creating = 'true'">
797                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/year/*"/>
798                     </xsl:when>
799                     <xsl:otherwise>
800                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/yearText/*"/>
801                     </xsl:otherwise>
802                   </xsl:choose>
803                 </div>
804                 <script language="JavaScript" type="text/javascript">
805                   <xsl:comment>
806                   endDateDynCalWidget = new dynCalendar('endDateDynCalWidget', <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/yearText/input/@value)"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/month/select/option[@selected='selected']/@value)-1"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/day/select/option[@selected='selected']/@value)"/>, 'endDateCalWidgetCallback',true,'<xsl:value-of select="$resourcesRoot"/>/resources/');
807                 </xsl:comment>
808                 </script>
809                 <!--<img src="{$resourcesRoot}/resources/calIcon.gif" width="16" height="15" border="0"/>-->
810                 <div class="{$timeFieldsClass}" id="endTimeFields">
811                   <span id="calWidgetEndTimeHider" class="show">
812                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/hour/*"/>
813                     <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/minute/*"/>
814                     <xsl:if test="/bedeworkadmin/formElements/form/end/dateTime/ampm">
815                       <xsl:copy-of select="/bedeworkadmin/formElements/form/end/dateTime/ampm/*"/>
816                     </xsl:if>
817                     <xsl:text> </xsl:text>
818                     <a href="javascript:bwClockLaunch('eventEndDate');"><img src="{$resourcesRoot}/resources/clockIcon.gif" width="16" height="15" border="0"/></a>
819
820                     <select name="eventEndDate.tzid" id="endTzid" class="timezones">
821                       <xsl:if test="/bedeworkadmin/formElements/form/floating/input/@checked='checked'"><xsl:attribute name="disabled">true</xsl:attribute></xsl:if>
822                       <option value="-1">select timezone...</option>
823                       <xsl:for-each select="/bedeworkadmin/timezones/timezone">
824                         <option>
825                           <xsl:attribute name="value"><xsl:value-of select="id"/></xsl:attribute>
826                           <xsl:if test="/bedeworkadmin/formElements/form/end/dateTime/tzid = id"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>
827                           <xsl:value-of select="name"/>
828                         </option>
829                       </xsl:for-each>
830                     </select>
831                   </span>
832                 </div>
833               </div>
834               <br/>
835               <div id="clock" class="invisible">
836                 <xsl:call-template name="clock"/>
837               </div>
838               <div class="dateFields">
839                 <xsl:choose>
840                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">
841                     <input type="radio" name="eventEndType" value="D" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
842                   </xsl:when>
843                   <xsl:otherwise>
844                     <input type="radio" name="eventEndType" value="D" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','shown');"/>
845                   </xsl:otherwise>
846                 </xsl:choose>
847                 Duration
848                 <xsl:variable name="endDurationClass">
849                   <xsl:choose>
850                     <xsl:when test="/bedeworkadmin/formElements/form/end/type='D'">shown</xsl:when>
851                     <xsl:otherwise>invisible</xsl:otherwise>
852                   </xsl:choose>
853                 </xsl:variable>
854                 <xsl:variable name="durationHrMinClass">
855                   <xsl:choose>
856                     <xsl:when test="/bedeworkadmin/formElements/form/allDay/input/@checked='checked'">invisible</xsl:when>
857                     <xsl:otherwise>shown</xsl:otherwise>
858                   </xsl:choose>
859                 </xsl:variable>
860                 <div class="{$endDurationClass}" id="endDuration">
861                   <xsl:choose>
862                     <xsl:when test="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value = '0'">
863                     <!-- we are using day, hour, minute format -->
864                     <!-- must send either no week value or week value of 0 (zero) -->
865                       <div class="durationBox">
866                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')" checked="checked"/>
867                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
868                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays"/>days
869                         <span id="durationHrMin" class="{$durationHrMinClass}">
870                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
871                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours"/>hours
872                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
873                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes"/>minutes
874                         </span>
875                       </div>
876                       <span class="durationSpacerText">or</span>
877                       <div class="durationBox">
878                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')"/>
879                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
880                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks" disabled="true"/>weeks
881                       </div>
882                     </xsl:when>
883                     <xsl:otherwise>
884                       <!-- we are using week format -->
885                       <div class="durationBox">
886                         <input type="radio" name="eventDuration.type" value="daytime" onclick="swapDurationType('daytime')"/>
887                         <xsl:variable name="daysStr" select="/bedeworkadmin/formElements/form/end/duration/days/input/@value"/>
888                         <input type="text" name="eventDuration.daysStr" size="2" value="{$daysStr}" id="durationDays" disabled="true"/>days
889                         <span id="durationHrMin" class="{$durationHrMinClass}">
890                           <xsl:variable name="hoursStr" select="/bedeworkadmin/formElements/form/end/duration/hours/input/@value"/>
891                           <input type="text" name="eventDuration.hoursStr" size="2" value="{$hoursStr}" id="durationHours" disabled="true"/>hours
892                           <xsl:variable name="minutesStr" select="/bedeworkadmin/formElements/form/end/duration/minutes/input/@value"/>
893                           <input type="text" name="eventDuration.minutesStr" size="2" value="{$minutesStr}" id="durationMinutes" disabled="true"/>minutes
894                         </span>
895                       </div>
896                       <span class="durationSpacerText">or</span>
897                       <div class="durationBox">
898                         <input type="radio" name="eventDuration.type" value="weeks" onclick="swapDurationType('week')" checked="checked"/>
899                         <xsl:variable name="weeksStr" select="/bedeworkadmin/formElements/form/end/duration/weeks/input/@value"/>
900                         <input type="text" name="eventDuration.weeksStr" size="2" value="{$weeksStr}" id="durationWeeks"/>weeks
901                       </div>
902                     </xsl:otherwise>
903                   </xsl:choose>
904                 </div>
905               </div>
906               <br/>
907               <div class="dateFields" id="noDuration">
908                 <xsl:choose>
909                   <xsl:when test="/bedeworkadmin/formElements/form/end/type='N'">
910                     <input type="radio" name="eventEndType" value="N" checked="checked" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
911                   </xsl:when>
912                   <xsl:otherwise>
913                     <input type="radio" name="eventEndType" value="N" onClick="changeClass('endDateTime','invisible');changeClass('endDuration','invisible');"/>
914                   </xsl:otherwise>
915                 </xsl:choose>
916                 This event has no duration / end date
917               </div>
918             </div>
919
920
921             <!-- Recurrence fields -->
922             <!-- ================= -->
923             <xsl:if test="/bedeworkadmin/formElements/recurrenceId = ''">
924             <!-- existing recurrence instances can not themselves recur,
925                  so block this whole section if this event is an instance
926                  (has a recurrenceId) -->
927               <input type="checkbox" name="recurrenceFlag" onclick="swapRecurrence(this)" value="on"/>
928               <xsl:if test="/bedeworkadmin/formElements/form/recurring='true'"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
929               <xsl:choose>
930                 <xsl:when test="/bedeworkadmin/creating = 'true'">
931                   recurring
932                 </xsl:when>
933                 <xsl:otherwise>
934                   change recurrence
935                 </xsl:otherwise>
936               </xsl:choose>
937               <span id="recurrenceUiSwitch" class="invisible">
938                 <input type="checkbox" name="recurrenceUiSwitch" value="simple" onchange="swapVisible(this,'advancedRecurrenceRules')"/>show advanced recurrence rules
939               </span>
940
941               <!-- set these dynamically when form is submitted -->
942               <input type="hidden" name="interval" value=""/>
943               <input type="hidden" name="count" value=""/>
944               <input type="hidden" name="until" value=""/>
945               <input type="hidden" name="byday" value=""/>
946               <input type="hidden" name="bymonthday" value=""/>
947               <input type="hidden" name="bymonth" value=""/>
948               <input type="hidden" name="byweekno" value=""/>
949               <input type="hidden" name="byyearday" value=""/>
950               <input type="hidden" name="wkst" value=""/>
951
952               <div id="recurrenceFields" class="invisible">
953                 <table id="recurrenceTable" cellspacing="0">
954                   <tr>
955                     <td class="recurrenceFrequency" rowspan="2">
956                       <strong>Frequency:</strong><br/>
957                       <!-- "freq" is used to determine if a recurrence should be created; test for "NONE" -->
958                       <input type="radio" name="freq" value="NONE" onclick="showRecurrence(this.value)" checked="checked"/>none<br/>
959                       <!--<input type="radio" name="freq" value="HOURLY" onclick="showRecurrence(this.value)"/>hourly<br/>-->
960                       <input type="radio" name="freq" value="DAILY" onclick="showRecurrence(this.value)"/>daily<br/>
961                       <input type="radio" name="freq" value="WEEKLY" onclick="showRecurrence(this.value)"/>weekly<br/>
962                       <input type="radio" name="freq" value="MONTHLY" onclick="showRecurrence(this.value)"/>monthly<br/>
963                       <input type="radio" name="freq" value="YEARLY" onclick="showRecurrence(this.value)"/>yearly
964                     </td>
965                     <td class="recurrenceRules">
966                       <!-- none -->
967                       <div id="noneRecurrenceRules">
968                         <p>does not recur</p>
969                       </div>
970                       <span id="advancedRecurrenceRules" class="invisible">
971                         <!-- hourly -->
972                         <div id="hourlyRecurrenceRules" class="invisible">
973                           <strong>Interval:</strong>
974                           every <input type="text" name="hourlyInterval" size="2" value="1"/> hour(s)
975                         </div>
976                         <!-- daily -->
977                         <div id="dailyRecurrenceRules" class="invisible">
978                           <p>
979                             <strong>Interval:</strong>
980                             every <input type="text" name="dailyInterval" size="2" value="1"/> day(s)
981                           </p>
982                           <p>
983                             <input type="checkbox" name="swapDayMonthCheckBoxList" value="" onclick="swapVisible(this,'dayMonthCheckBoxList')"/>
984                             in these months:
985                             <div id="dayMonthCheckBoxList" class="invisible">
986                               <xsl:for-each select="/bedeworkadmin/monthlabels/val">
987                                 <xsl:variable name="pos"><xsl:value-of select="position()"/></xsl:variable>
988                                 <span class="chkBoxListItem">
989                                   <input type="checkbox" name="dayMonths">
990                                     <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/monthvalues/val[position() = $pos]"/></xsl:attribute>
991                                   </input>
992                                   <xsl:value-of select="."/>
993                                 </span>
994                                 <xsl:if test="$pos mod 6 = 0"><br/></xsl:if>
995                               </xsl:for-each>
996                             </div>
997                           </p>
998                         </div>
999                         <!-- weekly -->
1000                         <div id="weeklyRecurrenceRules" class="invisible">
1001                           <p>
1002                             <strong>Interval:</strong>
1003                             every <input type="text" name="weeklyInterval" size="2" value="1"/> week(s) on:<br/>
1004                           </p>
1005                           <p>
1006                             <div id="weekRecurFields">
1007                               <xsl:call-template name="byDayChkBoxList">
1008                                 <xsl:with-param name="name">byDayWeek</xsl:with-param>
1009                               </xsl:call-template>
1010                             </div>
1011                           </p>
1012                           <p class="weekRecurLinks">
1013                             <a href="javascript:recurSelectWeekdays('weekRecurFields')">select weekdays</a> |
1014                             <a href="javascript:recurSelectWeekends('weekRecurFields')">select weekends</a>
1015                           </p>
1016                           <p>
1017                             Week start:
1018                             <select name="weekWkst">
1019                               <xsl:for-each select="/bedeworkadmin/shortdaynames/val">
1020                                 <xsl:variable name="pos" select="position()"/>
1021                                 <option>
1022                                   <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/recurdayvals/val[position() = $pos]"/></xsl:attribute>
1023                                   <xsl:value-of select="."/>
1024                                 </option>
1025                               </xsl:for-each>
1026                             </select>
1027                           </p>
1028                         </div>
1029                         <!-- monthly -->
1030                         <div id="monthlyRecurrenceRules" class="invisible">
1031                           <p>
1032                             <strong>Interval:</strong>
1033                             every <input type="text" name="monthlyInterval" size="2" value="1"/> month(s)
1034                           </p>
1035                           <div id="monthRecurFields">
1036                             <div id="monthRecurFields1">
1037                               on
1038                               <select name="bymonthposPos1" width="7em" onchange="changeClass('monthRecurFields2','shown')">
1039                                 <xsl:call-template name="recurrenceDayPosOptions"/>
1040                               </select>
1041                               <xsl:call-template name="byDayChkBoxList"/>
1042                             </div>
1043                             <xsl:call-template name="buildRecurFields">
1044                               <xsl:with-param name="current">2</xsl:with-param>
1045                               <xsl:with-param name="total">10</xsl:with-param>
1046                               <xsl:with-param name="name">month</xsl:with-param>
1047                             </xsl:call-template>
1048                           </div>
1049                           <p>
1050                             <input type="checkbox" name="swapMonthDaysCheckBoxList" value="" onclick="swapVisible(this,'monthDaysCheckBoxList')"/>
1051                             on these days:<br/>
1052                             <div id="monthDaysCheckBoxList" class="invisible">
1053                               <xsl:call-template name="buildCheckboxList">
1054                                 <xsl:with-param name="current">1</xsl:with-param>
1055                                 <xsl:with-param name="end">31</xsl:with-param>
1056                                 <xsl:with-param name="name">monthDayBoxes</xsl:with-param>
1057                               </xsl:call-template>
1058                             </div>
1059                           </p>
1060                         </div>
1061                         <!-- yearly -->
1062                         <div id="yearlyRecurrenceRules" class="invisible">
1063                           <strong>Interval:</strong>
1064                           every <input type="text" name="yearlyInterval" size="2" value="1"/> years(s)<br/>
1065                           <div id="yearRecurFields">
1066                             <div id="yearRecurFields1">
1067                               on
1068                               <select name="byyearposPos1" width="7em" onchange="changeClass('yearRecurFields2','shown')">
1069                                 <xsl:call-template name="recurrenceDayPosOptions"/>
1070                               </select>
1071                               <xsl:call-template name="byDayChkBoxList"/>
1072                             </div>
1073                             <xsl:call-template name="buildRecurFields">
1074                               <xsl:with-param name="current">2</xsl:with-param>
1075                               <xsl:with-param name="total">10</xsl:with-param>
1076                               <xsl:with-param name="name">year</xsl:with-param>
1077                             </xsl:call-template>
1078                           </div>
1079                           <p>
1080                             <input type="checkbox" name="swapYearMonthCheckBoxList" value="" onclick="swapVisible(this,'yearMonthCheckBoxList')"/>
1081                             in these months:
1082                             <div id="yearMonthCheckBoxList" class="invisible">
1083                               <xsl:for-each select="/bedeworkadmin/monthlabels/val">
1084                                 <xsl:variable name="pos"><xsl:value-of select="position()"/></xsl:variable>
1085                                 <span class="chkBoxListItem">
1086                                   <input type="checkbox" name="yearMonths">
1087                                     <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/monthvalues/val[position() = $pos]"/></xsl:attribute>
1088                                   </input>
1089                                   <xsl:value-of select="."/>
1090                                 </span>
1091                                 <xsl:if test="$pos mod 6 = 0"><br/></xsl:if>
1092                               </xsl:for-each>
1093                             </div>
1094                           </p>
1095                           <p>
1096                             <input type="checkbox" name="swapYearMonthDaysCheckBoxList" value="" onclick="swapVisible(this,'yearMonthDaysCheckBoxList')"/>
1097                             on these days of the month:<br/>
1098                             <div id="yearMonthDaysCheckBoxList" class="invisible">
1099                               <xsl:call-template name="buildCheckboxList">
1100                                 <xsl:with-param name="current">1</xsl:with-param>
1101                                 <xsl:with-param name="end">31</xsl:with-param>
1102                                 <xsl:with-param name="name">yearMonthDayBoxes</xsl:with-param>
1103                               </xsl:call-template>
1104                             </div>
1105                           </p>
1106                           <p>
1107                             <input type="checkbox" name="swapYearWeeksCheckBoxList" value="" onclick="swapVisible(this,'yearWeeksCheckBoxList')"/>
1108                             in these weeks of the year:<br/>
1109                             <div id="yearWeeksCheckBoxList" class="invisible">
1110                               <xsl:call-template name="buildCheckboxList">
1111                                 <xsl:with-param name="current">1</xsl:with-param>
1112                                 <xsl:with-param name="end">53</xsl:with-param>
1113                                 <xsl:with-param name="name">yearWeekBoxes</xsl:with-param>
1114                               </xsl:call-template>
1115                             </div>
1116                           </p>
1117                           <p>
1118                             <input type="checkbox" name="swapYearDaysCheckBoxList" value="" onclick="swapVisible(this,'yearDaysCheckBoxList')"/>
1119                             on these days of the year:<br/>
1120                             <div id="yearDaysCheckBoxList" class="invisible">
1121                               <xsl:call-template name="buildCheckboxList">
1122                                 <xsl:with-param name="current">1</xsl:with-param>
1123                                 <xsl:with-param name="end">366</xsl:with-param>
1124                                 <xsl:with-param name="name">yearDayBoxes</xsl:with-param>
1125                               </xsl:call-template>
1126                             </div>
1127                           </p>
1128                           <p>
1129                             Week start:
1130                             <select name="yearWkst">
1131                               <xsl:for-each select="/bedeworkadmin/shortdaynames/val">
1132                                 <xsl:variable name="pos" select="position()"/>
1133                                 <option>
1134                                   <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/recurdayvals/val[position() = $pos]"/></xsl:attribute>
1135                                   <xsl:value-of select="."/>
1136                                 </option>
1137                               </xsl:for-each>
1138                             </select>
1139                           </p>
1140                         </div>
1141                       </span>
1142                     </td>
1143                   </tr>
1144                   <!-- recurrence count, until, forever -->
1145                   <tr>
1146                     <td class="recurrenceUntil">
1147                        <div id="recurrenceUntilRules" class="invisible">
1148                          <strong>Repeat:</strong>
1149                          <p>
1150                            <div class="dateFields">
1151                              <input type="radio" name="recurCountUntil" value="until" id="recurUntil"/>
1152                              until
1153                              <select name="untilMonth" onfocus="selectRecurCountUntil('recurUntil')">
1154                                <xsl:for-each select="/bedeworkadmin/formElements/form/start/month/select/option">
1155                                  <xsl:copy-of select="."/>
1156                                </xsl:for-each>
1157                              </select>
1158                              <select name="untilDay" onfocus="selectRecurCountUntil('recurUntil')">
1159                                <xsl:for-each select="/bedeworkadmin/formElements/form/start/day/select/option">
1160                                  <xsl:copy-of select="."/>
1161                                </xsl:for-each>
1162                              </select>
1163                              <xsl:choose>
1164                                <xsl:when test="/bedeworkadmin/creating = 'true'">
1165                                  <select name="untilYear" onfocus="selectRecurCountUntil('recurUntil')">
1166                                    <xsl:for-each select="/bedeworkadmin/formElements/form/start/year/select/option">
1167                                      <xsl:copy-of select="."/>
1168                                    </xsl:for-each>
1169                                  </select>
1170                                </xsl:when>
1171                                <xsl:otherwise>
1172                                  <input type="text" name="untilYear" size="4"  onfocus="selectRecurCountUntil('recurUntil')">
1173                                    <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/formElements/form/start/yearText/input/@value"/></xsl:attribute>
1174                                  </input>
1175                                </xsl:otherwise>
1176                              </xsl:choose>
1177                            </div>
1178                            <script language="JavaScript" type="text/javascript">
1179                            <xsl:comment>
1180                              untilDateDynCalWidget = new dynCalendar('untilDateDynCalWidget', <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/yearText/input/@value)"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/month/select/option[@selected='selected']/@value)-1"/>, <xsl:value-of select="number(/bedeworkadmin/formElements/form/start/day/select/option[@selected='selected']/@value)"/>, 'untilDateCalWidgetCallback',false,'<xsl:value-of select="$resourcesRoot"/>/resources/');
1181                            </xsl:comment>
1182                            </script>
1183                          </p>
1184                          <p>
1185                            <input type="radio" name="recurCountUntil" value="forever" checked="checked"/>
1186                            forever
1187                            &#160;
1188                            <input type="radio" name="recurCountUntil" value="count" id="recurCount"/>
1189                            <input type="text" value="1" size="2" name="countHolder"  onfocus="selectRecurCountUntil('recurCount')"/> times
1190                          </p>
1191                        </div>
1192                     </td>
1193                   </tr>
1194                 </table>
1195               </div>
1196             </xsl:if>
1197           </td>
1198         </tr>
1199         <!--  Status  -->
1200         <tr>
1201           <td class="fieldName">
1202             Status:
1203           </td>
1204           <td>
1205             <xsl:choose>
1206               <xsl:when test="/bedeworkadmin/formElements/form/status = 'TENTATIVE'">
1207                 <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
1208               </xsl:when>
1209               <xsl:when test="/bedeworkadmin/formElements/form/status = 'CANCELLED'">
1210                 <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
1211               </xsl:when>
1212               <xsl:otherwise>
1213                 <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
1214               </xsl:otherwise>
1215             </xsl:choose>
1216           </td>
1217         </tr>
1218         <!--  Description  -->
1219         <tr>
1220           <td class="fieldName">
1221             Description:
1222           </td>
1223           <td>
1224             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
1225             <div class="fieldInfo">
1226               Enter all pertinent information, including the academic titles of
1227               all speakers and/or participants.
1228               <span class="maxCharNotice">(<xsl:value-of select="/bedeworkadmin/formElements/form/descLength"/> characters max.)</span>
1229             </div>
1230           </td>
1231         </tr>
1232         <!-- Cost -->
1233         <tr>
1234           <td class="optional">
1235             Price:
1236           </td>
1237           <td>
1238             <xsl:copy-of select="/bedeworkadmin/formElements/form/cost/*"/>
1239             <xsl:text> </xsl:text>
1240             <span class="fieldInfo">(optional: if any, and place to purchase tickets)</span>
1241           </td>
1242         </tr>
1243         <!-- Url -->
1244         <tr>
1245           <td class="optional">
1246             URL:
1247           </td>
1248           <td>
1249             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1250             <xsl:text> </xsl:text>
1251             <span class="fieldInfo">(optional: for more information about the event)</span>
1252           </td>
1253         </tr>
1254         <!-- Location -->
1255         <tr>
1256           <td class="fieldName">
1257             Location:**
1258           </td>
1259           <td>
1260             <xsl:if test="/bedeworkadmin/formElements/form/location/preferred/select/option">
1261               <select name="prefLocationId" id="eventFormPrefLocationList">
1262                 <option value="-1">
1263                   Select preferred:
1264                 </option>
1265                 <xsl:copy-of select="/bedeworkadmin/formElements/form/location/preferred/select/*"/>
1266               </select>
1267               or Location (all):
1268             </xsl:if>
1269             <select name="allLocationId" id="eventFormLocationList">
1270               <option value="-1">
1271                 Select:
1272               </option>
1273               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/all/select/*"/>
1274             </select>
1275           </td>
1276         </tr>
1277
1278         <xsl:if test="/bedeworkadmin/formElements/form/location/address">
1279           <tr>
1280             <td class="fieldName" colspan="2">
1281               <span class="std-text">
1282                 <span class="bold">or</span> add</span>
1283             </td>
1284           </tr>
1285           <tr>
1286             <td class="fieldName">
1287               Address:
1288             </td>
1289             <td>
1290               <xsl:variable name="addressFieldName" select="/bedeworkadmin/formElements/form/location/address/input/@name"/>
1291               <xsl:variable name="calLocations">
1292                 <xsl:for-each select="/bedeworkadmin/formElements/form/location/all/select/option">"<xsl:value-of select="."/>"<xsl:if test="position()!=last()">,</xsl:if>
1293                 </xsl:for-each>
1294               </xsl:variable>
1295               <input type="text" size="30" name="{$addressFieldName}" autocomplete="off" onfocus="autoComplete(this,event,new Array({$calLocations}));"/>
1296               <div class="fieldInfo">
1297                 Please include room, building, and campus (if not Seattle).
1298               </div>
1299             </td>
1300           </tr>
1301           <tr>
1302             <td class="optional">
1303               <span class="std-text">Location URL:</span>
1304             </td>
1305             <td>
1306               <xsl:copy-of select="/bedeworkadmin/formElements/form/location/link/*"/>
1307               <xsl:text> </xsl:text>
1308               <span class="fieldInfo">(optional: for information about the location)</span>
1309             </td>
1310           </tr>
1311         </xsl:if>
1312
1313         <!-- Contact -->
1314         <tr>
1315           <td class="fieldName">
1316             Contact:**
1317           </td>
1318           <td>
1319             <xsl:if test="/bedeworkadmin/formElements/form/contact/preferred/select/option">
1320               <select name="prefContactId" id="eventFormContactList">
1321                 <option value="-1">
1322                   Select preferred:
1323                 </option>option>
1324                 <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/preferred/select/*"/>
1325               </select>
1326               or Contact (all):
1327             </xsl:if>
1328             <select name="allContactId" id="eventFormPrefContactList">
1329               <option value="-1">
1330                 Select:
1331               </option>
1332               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/all/select/*"/>
1333             </select>
1334           </td>
1335         </tr>
1336
1337
1338         <!--  Category  -->
1339         <tr>
1340           <td class="fieldName">
1341             Categories:**
1342           </td>
1343           <td>
1344             <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1345               <input type="radio" name="categoryCheckboxes" value="preferred" checked="checked" onclick="changeClass('preferredCategoryCheckboxes','shown');changeClass('allCategoryCheckboxes','invisible');"/>show preferred
1346               <input type="radio" name="categoryCheckboxes" value="all" onclick="changeClass('preferredCategoryCheckboxes','invisible');changeClass('allCategoryCheckboxes','shown')"/>show all<br/>
1347               <table cellpadding="0" id="preferredCategoryCheckboxes">
1348                 <tr>
1349                   <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/preferred/category)"/>
1350                   <td>
1351                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &lt;= ceiling($catCount div 2)]">
1352                       <input type="checkbox" name="categoryKey">
1353                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1354                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1355                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1356                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1357                         <xsl:value-of select="keyword"/>
1358                       </input><br/>
1359                     </xsl:for-each>
1360                   </td>
1361                   <td>
1362                     <xsl:for-each select="/bedeworkadmin/formElements/form/categories/preferred/category[position() &gt; ceiling($catCount div 2)]">
1363                       <input type="checkbox" name="categoryKey">
1364                         <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1365                         <xsl:attribute name="id">pref-<xsl:value-of select="keyword"/></xsl:attribute>
1366                         <xsl:attribute name="onchange">setCatChBx('pref-<xsl:value-of select="keyword"/>','all-<xsl:value-of select="keyword"/>')</xsl:attribute>
1367                         <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
1368                         <xsl:value-of select="keyword"/>
1369                       </input><br/>
1370                     </xsl:for-each>
1371                   </td>
1372                 </tr>
1373               </table>
1374             </xsl:if>
1375             <table cellpadding="0" id="allCategoryCheckboxes">
1376               <xsl:if test="/bedeworkadmin/formElements/form/categories/preferred/category and /bedeworkadmin/creating='true'">
1377                 <xsl:attribute name="class">invisible</xsl:attribute>
1378               </xsl:if>
1379               <tr>
1380                 <xsl:variable name="catCount" select="count(/bedeworkadmin/formElements/form/categories/all/category)"/>
1381                 <td>
1382                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &lt;= ceiling($catCount div 2)]">
1383                     <input type="checkbox" name="categoryKey">
1384                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1385                       <xsl:if test="/bedeworkadmin/creating='true'">
1386                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1387                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1388                       </xsl:if>
1389                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1390                         <xsl:attribute name="checked">checked</xsl:attribute>
1391                       </xsl:if>
1392                       <xsl:value-of select="keyword"/>
1393                     </input><br/>
1394                   </xsl:for-each>
1395                 </td>
1396                 <td>
1397                   <xsl:for-each select="/bedeworkadmin/formElements/form/categories/all/category[position() &gt; ceiling($catCount div 2)]">
1398                     <input type="checkbox" name="categoryKey">
1399                       <xsl:attribute name="value"><xsl:value-of select="keyword"/></xsl:attribute>
1400                       <xsl:if test="/bedeworkadmin/creating='true'">
1401                         <xsl:attribute name="id">all-<xsl:value-of select="keyword"/></xsl:attribute>
1402                         <xsl:attribute name="onchange">setCatChBx('all-<xsl:value-of select="keyword"/>','pref-<xsl:value-of select="keyword"/>')</xsl:attribute>
1403                       </xsl:if>
1404                       <xsl:if test="keyword = /bedeworkadmin/formElements/form/categories/current//category/keyword">
1405                         <xsl:attribute name="checked">checked</xsl:attribute>
1406                       </xsl:if>
1407                       <xsl:value-of select="keyword"/>
1408                     </input><br/>
1409                   </xsl:for-each>
1410                 </td>
1411               </tr>
1412             </table>
1413           </td>
1414         </tr>
1415         <!-- note -->
1416         <tr>
1417           <td colspan="2" style="padding-top: 1em;">
1418             <span class="fieldInfo">
1419               **<strong>If "preferred values" are enabled</strong>
1420               by your administrator, the category, location, and contact lists will
1421               contain only those value you've used previously.  If you don't find the value
1422               you need in one of these lists, use the "all" list adjacent to each
1423               of these fields.  The event you select from the "all" list will be added
1424               to your preferred list from that point on.  <strong>Note: if you don't
1425               find a location or contact at all, you can add a new one from the
1426               <a href="{$setup}">main menu</a>.</strong>
1427               Only administrators can create categories, however.
1428               To make sure you've used the
1429               correct category, please see the
1430               <a href="" target="_blank">Calendar Definitions</a>
1431             </span>
1432           </td>
1433         </tr>
1434
1435         <xsl:if test="/bedeworkadmin/formElements/form/contact/name">
1436           <tr>
1437             <td class="fieldName" colspan="2">
1438               <span class="std-text">
1439                 <span class="bold">or</span> add</span>
1440             </td>
1441           </tr>
1442           <tr>
1443             <td class="fieldName">
1444               Contact (name):
1445             </td>
1446             <td>
1447               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/name/*"/>
1448             </td>
1449           </tr>
1450           <tr>
1451             <td class="fieldName">
1452               Contact Phone Number:
1453             </td>
1454             <td>
1455               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/phone/*"/>
1456               <xsl:text> </xsl:text>
1457               <span class="fieldInfo">(optional)</span>
1458             </td>
1459           </tr>
1460           <tr>
1461             <td class="optional">
1462               Contact's URL:
1463             </td>
1464             <td>
1465               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/link/*"/>
1466               <xsl:text> </xsl:text>
1467               <span class="fieldInfo">(optional)</span>
1468             </td>
1469           </tr>
1470           <tr>
1471             <td class="optional">
1472               Contact Email Address:
1473             </td>
1474             <td>
1475               <xsl:copy-of select="/bedeworkadmin/formElements/form/contact/email/*"/>
1476               <xsl:text> </xsl:text>
1477               <span class="fieldInfo">(optional)</span> test
1478               <div id="contactEmailAlert">&#160;</div> <!-- space for email warning -->
1479             </td>
1480           </tr>
1481         </xsl:if>
1482       </table>
1483
1484       <table border="0" id="submitTable">
1485         <tr>
1486           <xsl:choose>
1487             <xsl:when test="/bedeworkadmin/creating='true'">
1488               <td>
1489                 <input type="submit" name="addEvent" value="Add Event"/>
1490                 <input type="submit" name="cancelled" value="Cancel"/>
1491                 <input type="reset" value="Clear"/>
1492               </td>
1493             </xsl:when>
1494             <xsl:otherwise>
1495               <td>
1496                 <input type="submit" name="updateEvent" value="Update Event"/>
1497                 <input type="submit" name="cancelled" value="Cancel"/>
1498                 <input type="submit" name="copy" value="Duplicate Event"/>
1499               </td>
1500               <td align="right">
1501                 <input type="submit" name="delete" value="Delete Event"/>
1502               </td>
1503             </xsl:otherwise>
1504           </xsl:choose>
1505         </tr>
1506       </table>
1507     </form>
1508   </xsl:template>
1509
1510   <xsl:template name="byDayChkBoxList">
1511     <xsl:param name="name"/>
1512     <xsl:for-each select="/bedeworkadmin/shortdaynames/val">
1513       <xsl:variable name="pos" select="position()"/>
1514       <input type="checkbox">
1515         <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/recurdayvals/val[position() = $pos]"/></xsl:attribute>
1516         <xsl:attribute name="name"><xsl:value-of select="$name"/></xsl:attribute>
1517       </input>
1518       <xsl:value-of select="."/>
1519     </xsl:for-each>
1520   </xsl:template>
1521
1522   <xsl:template name="buildCheckboxList">
1523     <xsl:param name="current"/>
1524     <xsl:param name="end"/>
1525     <xsl:param name="name"/>
1526     <xsl:param name="splitter">10</xsl:param>
1527     <span class="chkBoxListItem">
1528       <input type="checkbox">
1529         <xsl:attribute name="name"><xsl:value-of select="$name"/></xsl:attribute>
1530         <xsl:attribute name="value"><xsl:value-of select="$current"/></xsl:attribute>
1531       </input>
1532       <xsl:value-of select="$current"/>
1533     </span>
1534     <xsl:if test="$current mod $splitter = 0"><br/></xsl:if>
1535     <xsl:if test="$current = $end"><br/></xsl:if>
1536     <xsl:if test="$current &lt; $end">
1537       <xsl:call-template name="buildCheckboxList">
1538         <xsl:with-param name="current"><xsl:value-of select="$current + 1"/></xsl:with-param>
1539         <xsl:with-param name="end"><xsl:value-of select="$end"/></xsl:with-param>
1540         <xsl:with-param name="name"><xsl:value-of select="$name"/></xsl:with-param>
1541       </xsl:call-template>
1542     </xsl:if>
1543   </xsl:template>
1544
1545   <xsl:template name="recurrenceDayPosOptions">
1546     <option value="0">none</option>
1547     <option value="1">the first</option>
1548     <option value="2">the second</option>
1549     <option value="3">the third</option>
1550     <option value="4">the fourth</option>
1551     <option value="5">the fifth</option>
1552     <option value="-1">the last</option>
1553     <option value="">every</option>
1554   </xsl:template>
1555
1556   <xsl:template name="buildRecurFields">
1557     <xsl:param name="current"/>
1558     <xsl:param name="total"/>
1559     <xsl:param name="name"/>
1560     <div class="invisible">
1561       <xsl:attribute name="id"><xsl:value-of select="$name"/>RecurFields<xsl:value-of select="$current"/></xsl:attribute>
1562       and
1563       <select width="12em">
1564         <xsl:attribute name="name">by<xsl:value-of select="$name"/>posPos<xsl:value-of select="$current"/></xsl:attribute>
1565         <xsl:if test="$current != $total">
1566           <xsl:attribute name="onchange">changeClass('<xsl:value-of select="$name"/>RecurFields<xsl:value-of select="$current+1"/>','shown')</xsl:attribute>
1567         </xsl:if>
1568         <xsl:call-template name="recurrenceDayPosOptions"/>
1569       </select>
1570       <xsl:call-template name="byDayChkBoxList"/>
1571     </div>
1572     <xsl:if test="$current &lt; $total">
1573       <xsl:call-template name="buildRecurFields">
1574         <xsl:with-param name="current"><xsl:value-of select="$current+1"/></xsl:with-param>
1575         <xsl:with-param name="total"><xsl:value-of select="$total"/></xsl:with-param>
1576         <xsl:with-param name="name"><xsl:value-of select="$name"/></xsl:with-param>
1577       </xsl:call-template>
1578     </xsl:if>
1579   </xsl:template>
1580
1581   <xsl:template name="clock">
1582     <div id="bwClock">
1583       <!-- Bedework 24-Hour Clock time selection widget
1584            used with resources/bwClock.js and resources/bwClock.css -->
1585       <div id="bwClockClock">
1586         <img id="clockMap" src="{$resourcesRoot}/resources/clockMap.gif" width="368" height="368" border="0" alt="" usemap="#bwClockMap" />
1587       </div>
1588       <div id="bwClockCover">
1589         <!-- this is a special effect div used simply to cover the pixelated edge
1590              where the clock meets the clock box title --></div>
1591       <div id="bwClockBox">
1592         <h2>
1593           Bedework 24-Hour Clock
1594         </h2>
1595         <div id="bwClockDateTypeIndicator">
1596           type
1597         </div>
1598         <div id="bwClockTime">
1599           select time
1600         </div>
1601         <div id="bwClockCloseText">
1602           close
1603         </div>
1604         <div id="bwClockCloseButton">
1605           <a href="javascript:bwClockClose();">X</a>
1606         </div>
1607       </div>
1608       <map name="bwClockMap" id="bwClockMap">
1609         <area shape="rect" alt="close clock" title="close clock" coords="160,167, 200,200" href="javascript:bwClockClose()"/>
1610         <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')" />
1611         <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')" />
1612         <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')" />
1613         <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')" />
1614         <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')" />
1615         <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')" />
1616         <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')" />
1617         <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')" />
1618         <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')" />
1619         <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')" />
1620         <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')" />
1621         <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')" />
1622         <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')" />
1623         <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')" />
1624         <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')" />
1625         <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')" />
1626         <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')" />
1627         <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')" />
1628         <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')" />
1629         <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')" />
1630         <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')" />
1631         <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')" />
1632         <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')" />
1633         <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')" />
1634         <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')" />
1635         <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')" />
1636         <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')" />
1637         <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')" />
1638         <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')" />
1639         <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')" />
1640         <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')" />
1641         <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')" />
1642         <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')" />
1643         <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')" />
1644         <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')" />
1645         <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')" />
1646       </map>
1647     </div>
1648   </xsl:template>
1649
1650   <xsl:template match="event" mode="displayEvent">
1651     <xsl:variable name="calPath" select="calendar/path"/>
1652     <xsl:variable name="guid" select="guid"/>
1653     <xsl:variable name="recurrenceId" select="recurrenceId"/>
1654
1655     <xsl:choose>
1656       <xsl:when test="/bedeworkadmin/page='deleteEventConfirm'">
1657
1658         <h2>Ok to delete this event?</h2>
1659         <p style="width: 400px;">Note: we do not encourage deletion of old but correct events; we prefer to keep
1660            old events for historical reasons.  Please remove only those events
1661            that are truly erroneous.</p>
1662         <p id="confirmButtons">
1663           <form action="{$event-delete}" method="post">
1664             <input type="submit" name="cancelled" value="Cancel"/>
1665             <input type="submit" name="delete" value="Delete"/>
1666             <input type="hidden" name="calPath" value="{$calPath}"/>
1667             <input type="hidden" name="guid" value="{$guid}"/>
1668             <input type="hidden" name="recurrenceId" value="{$recurrenceId}"/>
1669           </form>
1670         </p>
1671       </xsl:when>
1672       <xsl:otherwise>
1673         <h2>Event Information</h2>
1674       </xsl:otherwise>
1675     </xsl:choose>
1676
1677     <table class="eventFormTable">
1678       <tr>
1679         <th>
1680           Title:
1681         </th>
1682         <td>
1683           <strong><xsl:value-of select="summary"/></strong>
1684         </td>
1685       </tr>
1686
1687       <tr>
1688         <th>
1689           When:
1690         </th>
1691         <td>
1692           <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
1693           <xsl:if test="start/allday = 'false'">
1694             <span class="time"><xsl:value-of select="start/time"/></span>
1695           </xsl:if>
1696           <xsl:if test="(end/longdate != start/longdate) or
1697                         ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
1698           <xsl:if test="end/longdate != start/longdate">
1699             <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
1700           </xsl:if>
1701           <xsl:choose>
1702             <xsl:when test="start/allday = 'true'">
1703               <span class="time"><em>(all day)</em></span>
1704             </xsl:when>
1705             <xsl:when test="end/longdate != start/longdate">
1706               <span class="time"><xsl:value-of select="end/time"/></span>
1707             </xsl:when>
1708             <xsl:when test="end/time != start/time">
1709               <span class="time"><xsl:value-of select="end/time"/></span>
1710             </xsl:when>
1711           </xsl:choose>
1712         </td>
1713       </tr>
1714
1715       <tr>
1716         <th>
1717           Calendar:
1718         </th>
1719         <td>
1720           <xsl:value-of select="calendar/path"/>
1721         </td>
1722       </tr>
1723
1724       <!--  Description  -->
1725       <tr>
1726         <th>
1727           Description:
1728         </th>
1729         <td>
1730           <xsl:value-of select="description"/>
1731         </td>
1732       </tr>
1733       <!-- Cost -->
1734       <tr>
1735         <th class="optional">
1736           Price:
1737         </th>
1738         <td>
1739           <xsl:value-of select="cost"/>
1740         </td>
1741       </tr>
1742       <!-- Url -->
1743       <tr>
1744         <th class="optional">
1745           URL:
1746         </th>
1747         <td>
1748           <xsl:variable name="eventLink" select="link"/>
1749           <a href="{$eventLink}">
1750             <xsl:value-of select="link"/>
1751           </a>
1752         </td>
1753       </tr>
1754
1755       <!-- Location -->
1756       <tr>
1757         <th>
1758           Location:
1759         </th>
1760         <td>
1761           <xsl:value-of select="location/address"/><br/>
1762           <xsl:value-of select="location/subaddress"/>
1763         </td>
1764       </tr>
1765
1766       <!-- Contact -->
1767       <tr>
1768         <th>
1769           Contact:
1770         </th>
1771         <td>
1772           <xsl:value-of select="contact/name"/><br/>
1773           <xsl:value-of select="contact/phone"/><br/>
1774           <xsl:variable name="mailto" select="email"/>
1775           <a href="mailto:{$mailto}"><xsl:value-of select="email"/></a>
1776           <xsl:variable name="link" select="link"/>
1777           <a href="mailto:{$link}"><xsl:value-of select="link"/></a>
1778         </td>
1779       </tr>
1780
1781       <!-- Owner -->
1782       <tr>
1783         <th>
1784           Owner:
1785         </th>
1786         <td>
1787           <strong><xsl:value-of select="creator"/></strong>
1788         </td>
1789       </tr>
1790
1791       <!--  Categories  -->
1792       <tr>
1793         <th>
1794           Categories:
1795         </th>
1796         <td>
1797           <xsl:for-each select="categories/category">
1798             <xsl:value-of select="word"/><br/>
1799           </xsl:for-each>
1800         </td>
1801       </tr>
1802
1803     </table>
1804
1805     <p>
1806       <xsl:if test="/bedeworkadmin/canEdit = 'true' or /bedeworkadmin/userInfo/superUser = 'true'">
1807         <input type="button" name="return" value="Edit event" onclick="javascript:location.replace('{$event-fetchForUpdate}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}')"/>
1808       </xsl:if>
1809
1810       <input type="button" name="return" value="Back" onclick="javascript:history.back()"/>
1811     </p>
1812   </xsl:template>
1813
1814   <!--+++++++++++++++ Contacts ++++++++++++++++++++-->
1815   <xsl:template name="contactList">
1816     <h2>Edit Contacts</h2>
1817     <p>
1818       Select the contact you would like to update:
1819       <input type="button" name="return" value="Add new contact" onclick="javascript:location.replace('{$contact-initAdd}')"/>
1820     </p>
1821
1822     <table id="commonListTable">
1823       <tr>
1824         <th>Name</th>
1825         <th>Phone</th>
1826         <th>Email</th>
1827         <th>URL</th>
1828       </tr>
1829
1830       <xsl:for-each select="/bedeworkadmin/contacts/contact">
1831         <tr>
1832           <td>
1833             <xsl:copy-of select="name" />
1834           </td>
1835           <td>
1836             <xsl:value-of select="phone" />
1837           </td>
1838           <td>
1839             <xsl:variable name="email" select="email"/>
1840             <a href="mailto:{$email}">
1841               <xsl:value-of select="email"/>
1842             </a>
1843           </td>
1844           <td>
1845             <xsl:variable name="link" select="link" />
1846             <a href="{$link}" target="linktest">
1847               <xsl:value-of select="link" />
1848             </a>
1849           </td>
1850         </tr>
1851       </xsl:for-each>
1852     </table>
1853   </xsl:template>
1854
1855   <xsl:template name="modContact">
1856     <form action="{$contact-update}" method="post">
1857       <h2>Contact Information</h2>
1858
1859       <table id="eventFormTable">
1860         <tr>
1861           <td class="fieldName">
1862             Contact:
1863           </td>
1864           <td>
1865             <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
1866           </td>
1867         </tr>
1868         <tr>
1869           <td class="fieldName">
1870             Contact Phone Number:
1871           </td>
1872           <td>
1873             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
1874             <span class="fieldInfo"> (optional)</span>
1875           </td>
1876         </tr>
1877         <tr>
1878           <td class="optional">
1879             Contact's URL:
1880           </td>
1881           <td>
1882             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
1883             <span class="fieldInfo"> (optional)</span>
1884           </td>
1885         </tr>
1886         <tr>
1887           <td class="optional">
1888             Contact Email Address:
1889           </td>
1890           <td>
1891             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
1892             <span class="fieldInfo"> (optional)</span>
1893           </td>
1894         </tr>
1895       </table>
1896
1897       <table border="0" id="submitTable">
1898         <tr>
1899           <xsl:choose>
1900             <xsl:when test="/bedeworkadmin/creating='true'">
1901               <td>
1902                 <input type="submit" name="addContact" value="Add Contact"/>
1903                 <input type="submit" name="cancelled" value="Cancel"/>
1904                 <input type="reset" value="Clear"/>
1905               </td>
1906             </xsl:when>
1907             <xsl:otherwise>
1908               <td>
1909                 <input type="submit" name="updateContact" value="Update Contact"/>
1910                 <input type="submit" name="cancelled" value="Cancel"/>
1911                 <input type="reset" value="Reset"/>
1912               </td>
1913               <td align="right">
1914                 <input type="submit" name="delete" value="Delete Contact"/>
1915               </td>
1916             </xsl:otherwise>
1917           </xsl:choose>
1918         </tr>
1919       </table>
1920
1921     </form>
1922   </xsl:template>
1923
1924   <xsl:template name="deleteContactConfirm">
1925     <h2>Ok to delete this contact?</h2>
1926     <p id="confirmButtons">
1927       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
1928     </p>
1929
1930     <table class="eventFormTable">
1931       <tr>
1932         <th>Name</th>
1933         <td>
1934           <xsl:value-of select="/bedeworkadmin/contact/name" />
1935         </td>
1936       </tr>
1937       <tr>
1938         <th>Phone</th>
1939         <td>
1940           <xsl:value-of select="/bedeworkadmin/contact/phone" />
1941         </td>
1942       </tr>
1943       <tr>
1944         <th>Email</th>
1945         <td>
1946           <xsl:value-of select="/bedeworkadmin/contact/email" />
1947         </td>
1948       </tr>
1949       <tr>
1950         <th>URL</th>
1951         <td>
1952           <xsl:value-of select="/bedeworkadmin/contact/link" />
1953         </td>
1954       </tr>
1955     </table>
1956   </xsl:template>
1957
1958    <!--+++++++++++++++ Locations ++++++++++++++++++++-->
1959   <xsl:template name="locationList">
1960     <h2>Edit Locations</h2>
1961     <p>
1962       Select the location that you would like to update:
1963       <input type="button" name="return" value="Add new location" onclick="javascript:location.replace('{$location-initAdd}')"/>
1964     </p>
1965
1966     <table id="commonListTable">
1967       <tr>
1968         <th>Address</th>
1969         <th>Subaddress</th>
1970         <th>URL</th>
1971       </tr>
1972
1973       <xsl:for-each select="/bedeworkadmin/locations/location">
1974         <tr>
1975           <td>
1976             <xsl:copy-of select="address/*"/>
1977           </td>
1978           <td>
1979             <xsl:value-of select="subaddress"/>
1980           </td>
1981           <td>
1982             <xsl:variable name="link" select="link" />
1983             <a href="{$link}" target="linktest">
1984               <xsl:value-of select="link" />
1985             </a>
1986           </td>
1987         </tr>
1988       </xsl:for-each>
1989     </table>
1990   </xsl:template>
1991
1992   <xsl:template name="modLocation">
1993     <xsl:choose>
1994       <xsl:when test="/bedeworkadmin/creating='true'">
1995         <h2>Add Location</h2>
1996       </xsl:when>
1997       <xsl:otherwise>
1998         <h2>Update Location</h2>
1999       </xsl:otherwise>
2000     </xsl:choose>
2001
2002     <form action="{$location-update}" method="post">
2003       <table id="eventFormTable">
2004         <tr>
2005           <td class="fieldName">
2006             Address:
2007           </td>
2008           <td>
2009             <xsl:copy-of select="/bedeworkadmin/formElements/form/address/*"/>
2010           </td>
2011         </tr>
2012         <tr>
2013           <td class="optional">
2014             Subaddress:
2015           </td>
2016           <td>
2017             <xsl:copy-of select="/bedeworkadmin/formElements/form/subaddress/*"/>
2018             <span class="fieldInfo"> (optional)</span>
2019           </td>
2020         </tr>
2021         <tr>
2022           <td class="optional">
2023             Location's URL:
2024           </td>
2025           <td>
2026             <xsl:copy-of select="/bedeworkadmin/formElements/form/link/*"/>
2027             <span class="fieldInfo"> (optional)</span>
2028           </td>
2029         </tr>
2030       </table>
2031
2032       <table border="0" id="submitTable">
2033         <tr>
2034           <xsl:choose>
2035             <xsl:when test="/bedeworkadmin/creating='true'">
2036               <td>
2037                 <input type="submit" name="addLocation" value="Add Location"/>
2038                 <input type="submit" name="cancelled" value="Cancel"/>
2039                 <input type="reset" value="Clear"/>
2040               </td>
2041             </xsl:when>
2042             <xsl:otherwise>
2043               <td>
2044                 <input type="submit" name="updateLocation" value="Update Location"/>
2045                 <input type="submit" name="cancelled" value="Cancel"/>
2046                 <input type="reset" value="Reset"/>
2047               </td>
2048               <td align="right">
2049                 <input type="submit" name="delete" value="Delete Location"/>
2050               </td>
2051             </xsl:otherwise>
2052           </xsl:choose>
2053         </tr>
2054       </table>
2055     </form>
2056   </xsl:template>
2057
2058   <xsl:template name="deleteLocationConfirm">
2059     <h2>Ok to delete this location?</h2>
2060     <p id="confirmButtons">
2061       <xsl:copy-of select="/bedeworkadmin/formElements/*"/>
2062     </p>
2063
2064     <table class="eventFormTable">
2065       <tr>
2066         <td class="fieldName">
2067             Address:
2068           </td>
2069         <td>
2070           <xsl:value-of select="/bedeworkadmin/location/address"/>
2071         </td>
2072       </tr>
2073       <tr>
2074         <td class="optional">
2075             Subaddress:
2076           </td>
2077         <td>
2078           <xsl:value-of select="/bedeworkadmin/location/subaddress"/>
2079         </td>
2080       </tr>
2081       <tr>
2082         <td class="optional">
2083             Location's URL:
2084           </td>
2085         <td>
2086           <xsl:variable name="link" select="/bedeworkadmin/location/link"/>
2087           <a href="{$link}">
2088             <xsl:value-of select="/bedeworkadmin/location/link"/>
2089           </a>
2090         </td>
2091       </tr>
2092     </table>
2093   </xsl:template>
2094
2095   <!--+++++++++++++++ Categories ++++++++++++++++++++-->
2096   <xsl:template name="categoryList">
2097     <h2>Edit Categories</h2>
2098     <p>
2099       Select the category you would like to update:
2100       <input type="button" name="return" value="Add new category" onclick="javascript:location.replace('{$category-initAdd}')"/>
2101     </p>
2102
2103     <table id="commonListTable">
2104       <tr>
2105         <th>Keyword</th>
2106         <th>Description</th>
2107       </tr>
2108
2109       <xsl:for-each select="/bedeworkadmin/categories/category">
2110         <xsl:variable name="categoryKey" select="normalize-space(keyword)"/>
2111         <tr>
2112           <td>
2113             <a href="{$category-fetchForUpdate}&amp;categoryKey={$categoryKey}">
2114               <xsl:value-of select="keyword"/>
2115             </a>
2116           </td>
2117           <td>
2118             <xsl:value-of select="desc"/>
2119           </td>
2120         </tr>
2121       </xsl:for-each>
2122     </table>
2123   </xsl:template>
2124
2125   <xsl:template name="modCategory">
2126     <xsl:choose>
2127       <xsl:when test="/bedeworkadmin/creating='true'">
2128         <h2>Add Category</h2>
2129         <form action="{$category-update}" method="post">
2130           <table id="eventFormTable">
2131             <tr>
2132               <td class="fieldName">
2133                 Keyword:
2134               </td>
2135               <td>
2136                 <input type="text" name="categoryWord.value" value="" size="40"/>
2137               </td>
2138             </tr>
2139             <tr>
2140               <td class="optional">
2141                 Description:
2142               </td>
2143               <td>
2144                 <textarea name="categoryDesc.value" rows="3" cols="60">
2145                 </textarea>
2146               </td>
2147             </tr>
2148           </table>
2149           <table border="0" id="submitTable">
2150             <tr>
2151               <td>
2152                 <input type="submit" name="addCategory" value="Add Category"/>
2153                 <input type="submit" name="cancelled" value="Cancel"/>
2154                 <input type="reset" value="Clear"/>
2155               </td>
2156             </tr>
2157           </table>
2158         </form>
2159       </xsl:when>
2160       <xsl:otherwise>
2161         <h2>Update Category</h2>
2162         <form action="{$category-update}" method="post">
2163           <table id="eventFormTable">
2164             <tr>
2165               <td class="fieldName">
2166             Keyword:
2167             </td>
2168               <td>
2169                 <xsl:variable name="keyword" select="normalize-space(/bedeworkadmin/currentCategory/category/keyword)"/>
2170                 <input type="text" name="categoryWord.value" value="{$keyword}" size="40"/>
2171               </td>
2172             </tr>
2173             <tr>
2174               <td class="optional">
2175             Description:
2176             </td>
2177               <td>
2178                 <textarea name="categoryDesc.value" rows="3" cols="60">
2179                   <xsl:value-of select="normalize-space(/bedeworkadmin/currentCategory/category/desc)"/>
2180                 </textarea>
2181               </td>
2182             </tr>
2183           </table>
2184
2185           <table border="0" id="submitTable">
2186             <tr>
2187               <td>
2188                 <input type="submit" name="updateCategory" value="Update Category"/>
2189                 <input type="submit" name="cancelled" value="Cancel"/>
2190                 <input type="reset" value="Reset"/>
2191               </td>
2192               <td align="right">
2193                 <input type="submit" name="delete" value="Delete Category"/>
2194               </td>
2195             </tr>
2196           </table>
2197         </form>
2198       </xsl:otherwise>
2199     </xsl:choose>
2200
2201
2202   </xsl:template>
2203
2204   <xsl:template name="deleteCategoryConfirm">
2205     <h2>Ok to delete this category?</h2>
2206
2207
2208     <table class="eventFormTable">
2209       <tr>
2210         <td class="fieldName">
2211           Keyword:
2212         </td>
2213         <td>
2214           <xsl:value-of select="/bedeworkadmin/currentCategory/category/keyword"/>
2215         </td>
2216       </tr>
2217       <tr>
2218         <td class="optional">
2219           Description:
2220         </td>
2221         <td>
2222           <xsl:value-of select="/bedeworkadmin/currentCategory/category/desc"/>
2223         </td>
2224       </tr>
2225     </table>
2226
2227     <form action="{$category-delete}" method="post">
2228       <input type="submit" name="updateCategory" value="Yes: Delete Category"/>
2229       <input type="submit" name="cancelled" value="No: Cancel"/>
2230     </form>
2231   </xsl:template>
2232
2233 <!--+++++++++++++++ Calendars ++++++++++++++++++++-->
2234   <xsl:template match="calendars">
2235     <table id="calendarTable">
2236       <tr>
2237         <td class="cals">
2238           <h3>Public calendars</h3>
2239           <ul id="calendarTree">
2240             <xsl:choose>
2241               <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
2242                 <xsl:apply-templates select="calendar" mode="listForDisplay"/>
2243               </xsl:when>
2244               <xsl:otherwise>
2245                 <xsl:apply-templates select="calendar" mode="listForUpdate"/>
2246               </xsl:otherwise>
2247             </xsl:choose>
2248           </ul>
2249         </td>
2250         <td class="calendarContent">
2251           <xsl:choose>
2252             <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='calendarReferenced'">
2253               <xsl:call-template name="calendarList"/>
2254             </xsl:when>
2255             <xsl:when test="/bedeworkadmin/page='calendarDescriptions'">
2256               <xsl:call-template name="calendarDescriptions"/>
2257             </xsl:when>
2258             <xsl:when test="/bedeworkadmin/page='displayCalendar'">
2259               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="displayCalendar"/>
2260             </xsl:when>
2261             <xsl:when test="/bedeworkadmin/page='deleteCalendarConfirm'">
2262               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="deleteCalendarConfirm"/>
2263             </xsl:when>
2264             <xsl:when test="/bedeworkadmin/creating='true'">
2265               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="addCalendar"/>
2266             </xsl:when>
2267             <xsl:otherwise>
2268               <xsl:apply-templates select="/bedeworkadmin/currentCalendar" mode="modCalendar"/>
2269             </xsl:otherwise>
2270           </xsl:choose>
2271         </td>
2272       </tr>
2273     </table>
2274   </xsl:template>
2275
2276   <xsl:template match="calendar" mode="listForUpdate">
2277     <xsl:variable name="calPath" select="encodedPath"/>
2278     <xsl:variable name="itemClass">
2279       <xsl:choose>
2280         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2281         <xsl:otherwise>calendar</xsl:otherwise>
2282       </xsl:choose>
2283     </xsl:variable>
2284     <li class="{$itemClass}">
2285       <a href="{$calendar-fetchForUpdate}&amp;calPath={$calPath}" title="update">
2286         <xsl:value-of select="name"/>
2287       </a>
2288       <xsl:if test="calendarCollection='false'">
2289         <xsl:text> </xsl:text>
2290         <a href="{$calendar-initAdd}&amp;calPath={$calPath}" title="add a calendar or folder">
2291           <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="add a calendar or folder" border="0"/>
2292         </a>
2293       </xsl:if>
2294       <xsl:if test="calendar">
2295         <ul>
2296           <xsl:apply-templates select="calendar" mode="listForUpdate">
2297             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2298         </ul>
2299       </xsl:if>
2300     </li>
2301   </xsl:template>
2302
2303   <xsl:template match="calendar" mode="listForDisplay">
2304     <xsl:variable name="calPath" select="encodedPath"/>
2305     <xsl:variable name="itemClass">
2306       <xsl:choose>
2307         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2308         <xsl:otherwise>calendar</xsl:otherwise>
2309       </xsl:choose>
2310     </xsl:variable>
2311     <li class="{$itemClass}">
2312       <a href="{$calendar-fetchForDisplay}&amp;calPath={$calPath}" title="display">
2313         <xsl:value-of select="name"/>
2314       </a>
2315       <xsl:if test="calendar">
2316         <ul>
2317           <xsl:apply-templates select="calendar" mode="listForDisplay">
2318             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2319         </ul>
2320       </xsl:if>
2321     </li>
2322   </xsl:template>
2323
2324   <xsl:template match="currentCalendar" mode="addCalendar">
2325     <h3>Add Calendar / Folder</h3>
2326     <form name="addCalForm" action="{$calendar-update}">
2327       <table class="eventFormTable">
2328         <tr>
2329           <th>Name:</th>
2330           <td>
2331             <xsl:variable name="curCalName" select="name"/>
2332             <input name="calendar.name" value="{$curCalName}" size="40"/>
2333           </td>
2334         </tr>
2335         <tr>
2336           <th>Summary:</th>
2337           <td>
2338             <xsl:variable name="curCalSummary" select="summary"/>
2339             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
2340           </td>
2341         </tr>
2342         <tr>
2343           <th>Description:</th>
2344           <td>
2345             <textarea name="calendar.description" cols="40" rows="4">
2346               <xsl:value-of select="desc"/>
2347             </textarea>
2348           </td>
2349         </tr>
2350         <tr>
2351           <th>Calendar/Folder:</th>
2352           <td>
2353             <xsl:choose>
2354               <xsl:when test="calendarCollection='true'">
2355                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
2356                 <input type="radio" value="false" name="calendarCollection"/> Folder
2357               </xsl:when>
2358               <xsl:otherwise>
2359                 <input type="radio" value="true" name="calendarCollection"/> Calendar
2360                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
2361               </xsl:otherwise>
2362             </xsl:choose>
2363           </td>
2364         </tr>
2365       </table>
2366
2367       <table border="0" id="submitTable">
2368         <tr>
2369           <td>
2370             <input type="submit" name="addCalendar" value="Add Calendar/Folder"/>
2371             <input type="submit" name="cancelled" value="Cancel"/>
2372             <input type="reset" value="Clear"/>
2373           </td>
2374         </tr>
2375       </table>
2376     </form>
2377     <div id="sharingBox">
2378       <h3>Sharing</h3>
2379       Sharing may be added to a calendar once created.
2380     </div>
2381   </xsl:template>
2382
2383   <xsl:template match="currentCalendar" mode="modCalendar">
2384     <xsl:choose>
2385       <xsl:when test="calendarCollection='true'">
2386         <h3>Modify Calendar</h3>
2387       </xsl:when>
2388       <xsl:otherwise>
2389         <h3>Modify Folder</h3>
2390       </xsl:otherwise>
2391     </xsl:choose>
2392     <form name="modCalForm" action="{$calendar-update}">
2393       <table class="eventFormTable">
2394         <tr>
2395           <th>Path:</th>
2396           <td>
2397             <xsl:value-of select="path"/>
2398           </td>
2399         </tr>
2400         <tr>
2401           <th>Name:</th>
2402           <td>
2403             <xsl:value-of select="name"/>
2404           </td>
2405         </tr>
2406         <tr>
2407           <th>Mailing List ID:</th>
2408           <td>
2409             <xsl:value-of select="mailListId"/>
2410           </td>
2411         </tr>
2412         <tr>
2413           <th>Summary:</th>
2414           <td>
2415             <xsl:variable name="curCalSummary" select="summary"/>
2416             <input type="text" name="calendar.summary" value="{$curCalSummary}" size="40"/>
2417           </td>
2418         </tr>
2419         <tr>
2420           <th>Description:</th>
2421           <td>
2422             <textarea name="calendar.description" cols="40" rows="4">
2423               <xsl:value-of select="desc"/>
2424             </textarea>
2425           </td>
2426         </tr>
2427         <tr>
2428           <th>Calendar/Folder:</th>
2429           <td>
2430             <xsl:choose>
2431               <xsl:when test="calendarCollection='true'">
2432                 <input type="radio" value="true" name="calendarCollection" checked="checked"/> Calendar
2433                 <input type="radio" value="false" name="calendarCollection"/> Folder
2434               </xsl:when>
2435               <xsl:otherwise>
2436                 <input type="radio" value="true" name="calendarCollection"/> Calendar
2437                 <input type="radio" value="false" name="calendarCollection" checked="checked"/> Folder
2438               </xsl:otherwise>
2439             </xsl:choose>
2440           </td>
2441         </tr>
2442       </table>
2443
2444       <table border="0" id="submitTable">
2445         <tr>
2446           <td>
2447             <xsl:choose>
2448               <xsl:when test="calendarCollection='true'">
2449                 <input type="submit" name="updateCalendar" value="Update Calendar"/>
2450               </xsl:when>
2451               <xsl:otherwise>
2452                 <input type="submit" name="updateCalendar" value="Update Folder"/>
2453               </xsl:otherwise>
2454             </xsl:choose>
2455             <input type="submit" name="cancelled" value="Cancel"/>
2456             <input type="reset" value="Reset"/>
2457           </td>
2458           <td align="right">
2459             <xsl:choose>
2460               <xsl:when test="calendarCollection='true'">
2461                 <input type="submit" name="delete" value="Delete Calendar"/>
2462               </xsl:when>
2463               <xsl:otherwise>
2464                 <input type="submit" name="delete" value="Delete Folder"/>
2465               </xsl:otherwise>
2466             </xsl:choose>
2467           </td>
2468         </tr>
2469       </table>
2470     </form>
2471
2472
2473     <div id="sharingBox">
2474       <xsl:variable name="calPath" select="path"/>
2475       <xsl:variable name="encodedCalPath" select="encodedPath"/>
2476       <xsl:if test="currentAccess/current-user-privilege-set/privilege/read-acl or /bedeworkadmin/userInfo/superUser='true'">
2477         <h3>Sharing</h3>
2478         <table class="common" id="sharing">
2479           <tr>
2480             <th class="commonHeader">Who:</th>
2481             <th class="commonHeader">Current access:</th>
2482             <th class="commonHeader">Source:</th>
2483           </tr>
2484           <xsl:for-each select="acl/ace">
2485             <xsl:variable name="who">
2486               <xsl:choose>
2487                 <xsl:when test="invert">
2488                   <xsl:choose>
2489                     <xsl:when test="invert/principal/href"><xsl:value-of select="normalize-space(invert/principal/href)"/></xsl:when>
2490                     <xsl:when test="invert/principal/property"><xsl:value-of select="name(invert/principal/property/*)"/></xsl:when>
2491                     <xsl:otherwise><xsl:value-of select="name(invert/principal/*)"/></xsl:otherwise>
2492                   </xsl:choose>
2493                 </xsl:when>
2494                 <xsl:otherwise>
2495                   <xsl:choose>
2496                     <xsl:when test="principal/href"><xsl:value-of select="normalize-space(principal/href)"/></xsl:when>
2497                     <xsl:when test="principal/property"><xsl:value-of select="name(principal/property/*)"/></xsl:when>
2498                     <xsl:otherwise><xsl:value-of select="name(principal/*)"/></xsl:otherwise>
2499                   </xsl:choose>
2500                 </xsl:otherwise>
2501               </xsl:choose>
2502             </xsl:variable>
2503             <tr>
2504             <th class="thin">
2505                 <xsl:if test="invert">
2506                   Not
2507                 </xsl:if>
2508                 <xsl:choose>
2509                   <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">
2510                     <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
2511                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/>
2512                   </xsl:when>
2513                   <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">
2514                     <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
2515                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/>
2516                   </xsl:when>
2517                   <xsl:when test="invert and $who='owner'">
2518                     <xsl:value-of select="$who"/> (other)
2519                   </xsl:when>
2520                   <xsl:otherwise>
2521                     <xsl:value-of select="$who"/>
2522                   </xsl:otherwise>
2523                 </xsl:choose>
2524               </th>
2525               <td>
2526                 <xsl:for-each select="grant/node()">
2527                   <xsl:value-of select="name(.)"/>&#160;&#160;
2528                 </xsl:for-each>
2529                 <xsl:for-each select="deny/node()">
2530                   <xsl:choose>
2531                     <xsl:when test="name(.)='all'">
2532                       none
2533                     </xsl:when>
2534                     <xsl:otherwise>
2535                       deny-<xsl:value-of select="name(.)"/>
2536                     </xsl:otherwise>
2537                   </xsl:choose>
2538                   &#160;&#160;
2539                 </xsl:for-each>
2540               </td>
2541               <td>
2542                 <xsl:choose>
2543                   <xsl:when test="inherited">
2544                     inherited from:
2545                     <a>
2546                       <xsl:attribute name="href"><xsl:value-of select="$calendar-fetchForUpdate"/>&amp;calPath=<xsl:value-of select="inherited/href"/></xsl:attribute>
2547                       <xsl:value-of select="inherited/href"/>
2548                     </a>
2549                   </xsl:when>
2550                   <xsl:otherwise>
2551                     local:
2552                     <xsl:variable name="whoType">
2553                       <xsl:choose>
2554                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">user</xsl:when>
2555                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">group</xsl:when>
2556                         <xsl:otherwise></xsl:otherwise>
2557                       </xsl:choose>
2558                     </xsl:variable>
2559                     <xsl:variable name="shortWho">
2560                       <xsl:choose>
2561                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/></xsl:when>
2562                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/></xsl:when>
2563                         <xsl:otherwise><xsl:value-of select="$who"/></xsl:otherwise>
2564                       </xsl:choose>
2565                     </xsl:variable>
2566                     <xsl:choose>
2567                       <xsl:when test="invert">
2568                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}&amp;notWho=yes">
2569                           reset to default
2570                         </a>
2571                       </xsl:when>
2572                       <xsl:otherwise>
2573                         <a href="{$calendar-setAccess}&amp;calPath={$encodedCalPath}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}">
2574                           reset to default
2575                         </a>
2576                       </xsl:otherwise>
2577                     </xsl:choose>
2578                   </xsl:otherwise>
2579                 </xsl:choose>
2580               </td>
2581             </tr>
2582           </xsl:for-each>
2583         </table>
2584       </xsl:if>
2585
2586       <xsl:if test="currentAccess/current-user-privilege-set/privilege/write-acl or /bedeworkadmin/userInfo/superUser='true'">
2587         <form name="calendarShareForm" action="{$calendar-setAccess}" id="shareForm" method="post">
2588           <input type="hidden" name="calPath" value="{$calPath}"/>
2589           <table cellspacing="0" id="shareFormTable" class="common">
2590             <tr>
2591               <th colspan="2" class="commonHeader">Set access:</th>
2592             </tr>
2593             <tr class="subhead">
2594               <th>Who:</th>
2595               <th>Rights:</th>
2596             </tr>
2597             <tr>
2598               <td>
2599                 <input type="text" name="who" size="20"/>
2600                 <br/>
2601                 <input type="radio" value="user" name="whoType" checked="checked"/> user
2602                 <input type="radio" value="group" name="whoType"/> group
2603                 <p>OR</p>
2604                 <p>
2605                   <input type="radio" value="auth" name="whoType"/> all authorized users<br/>
2606                   <input type="radio" value="other" name="whoType"/> other users<br/>
2607                   <input type="radio" value="owner" name="whoType"/> owner
2608                 </p>
2609                 <!-- we may never use the invert action ...it is probably
2610                      too confusing, and can be achieved in other ways -->
2611                 <!--
2612                 <p class="padTop">
2613                   <input type="checkbox" value="yes" name="notWho"/> invert (deny)
2614                 </p>-->
2615               </td>
2616               <td>
2617                 <ul id="howList">
2618                   <li>
2619                     <input type="radio" value="A" name="how"/>
2620                     <strong>All</strong> (read, write, delete)</li>
2621                   <li class="padTop">
2622                     <input type="radio" value="R" name="how" checked="checked"/>
2623                     <strong>Read</strong> (content, access, freebusy)
2624                   </li>
2625                   <li>
2626                     <input type="radio" value="f" name="how"/> Read freebusy only
2627                   </li>
2628                   <li class="padTop">
2629                     <input type="radio" value="Rc" name="how"/>
2630                     <strong>Read</strong> and <strong>Write content only</strong>
2631                   </li>
2632                   <li class="padTop">
2633                     <input type="radio" value="W" name="how"/>
2634                     <strong>Write and delete</strong> (content, access, properties)
2635                   </li>
2636                   <li>
2637                     <input type="radio" value="c" name="how"/> Write content only
2638                   </li>
2639                   <li>
2640                     <input type="radio" value="u" name="how"/> Delete only
2641                   </li>
2642                   <li class="padTop">
2643                     <input type="radio" value="N" name="how"/>
2644                     <strong>None</strong>
2645                   </li>
2646                   <!--
2647                   <li class="padTop">
2648                     <input type="radio" value="default" name="how"/>
2649                     <strong>Restore default access</strong>
2650                   </li>-->
2651                 </ul>
2652               </td>
2653             </tr>
2654           </table>
2655           <input type="submit" name="submit" value="Submit"/>
2656         </form>
2657       </xsl:if>
2658     </div>
2659   </xsl:template>
2660
2661   <xsl:template name="calendarList">
2662     <h3>Manage Calendars</h3>
2663     <ul>
2664       <li>Select an item from the calendar list on the left to modify
2665       a calendar or folder.</li>
2666       <li>Select the
2667       <img src="{$resourcesRoot}/resources/calAddIcon.gif" width="13" height="13" alt="true" border="0"/>
2668       icon to add a new calendar or folder to the tree.
2669         <ul>
2670           <li>Folders may only contain calendars and subfolders.</li>
2671           <li>Calendars may only contain events (and other calendar items).</li>
2672           <li>
2673             If a calendar is empty, it may be converted to a folder and vice
2674             versa.  If a calendar or folder are not empty, it may not be
2675             converted.
2676           </li>
2677         </ul>
2678       </li>
2679     </ul>
2680   </xsl:template>
2681
2682   <xsl:template name="calendarDescriptions">
2683     <h2>Calendar Information</h2>
2684     <ul>
2685       <li>Select an item from the calendar tree on the left to view all information
2686       about that calendar or folder.  The tree on the left represents the calendar
2687       heirarchy.</li>
2688     </ul>
2689
2690     <p>
2691       <strong>All Calendar Descriptions:</strong>
2692     </p>
2693     <table id="flatCalendarDescriptions" cellspacing="0">
2694       <tr>
2695         <th>Name</th>
2696         <th>Description</th>
2697       </tr>
2698       <xsl:for-each select="//calendar">
2699         <xsl:variable name="descClass">
2700           <xsl:choose>
2701             <xsl:when test="position() mod 2 = 0">even</xsl:when>
2702             <xsl:otherwise>odd</xsl:otherwise>
2703           </xsl:choose>
2704         </xsl:variable>
2705         <tr class="{$descClass}">
2706           <td>
2707             <xsl:value-of select="name"/>
2708           </td>
2709           <td>
2710             <xsl:value-of select="desc"/>
2711           </td>
2712         </tr>
2713       </xsl:for-each>
2714     </table>
2715   </xsl:template>
2716
2717   <xsl:template match="currentCalendar" mode="displayCalendar">
2718     <h2>Calendar Information</h2>
2719     <table class="eventFormTable">
2720       <tr>
2721         <th>Name:</th>
2722         <td>
2723           <xsl:value-of select="name"/>
2724         </td>
2725       </tr>
2726       <tr>
2727         <th>Path:</th>
2728         <td>
2729           <xsl:value-of select="path"/>
2730         </td>
2731       </tr>
2732       <tr>
2733         <th>Summary:</th>
2734         <td>
2735           <xsl:value-of select="summary"/>
2736         </td>
2737       </tr>
2738       <tr>
2739         <th>Description:</th>
2740         <td>
2741           <xsl:value-of select="desc"/>
2742         </td>
2743       </tr>
2744     </table>
2745   </xsl:template>
2746
2747   <xsl:template match="currentCalendar" mode="deleteCalendarConfirm">
2748     <xsl:choose>
2749       <xsl:when test="calendarCollection='true'">
2750         <h3>Delete Calendar</h3>
2751         <p>
2752           The following calendar will be deleted.  Continue?
2753         </p>
2754       </xsl:when>
2755       <xsl:otherwise>
2756         <h3>Delete Folder</h3>
2757         <p>
2758           The following folder <em>and all its contents</em> will be deleted.
2759           Continue?
2760         </p>
2761       </xsl:otherwise>
2762     </xsl:choose>
2763
2764     <form name="delCalForm" action="{$calendar-delete}">
2765       <table class="eventFormTable">
2766         <tr>
2767           <th>Path:</th>
2768           <td>
2769             <xsl:value-of select="path"/>
2770           </td>
2771         </tr>
2772         <tr>
2773           <th>Name:</th>
2774           <td>
2775             <xsl:value-of select="name"/>
2776           </td>
2777         </tr>
2778         <tr>
2779           <th>Summary:</th>
2780           <td>
2781             <xsl:value-of select="summary"/>
2782           </td>
2783         </tr>
2784         <tr>
2785           <th>Description:</th>
2786           <td>
2787             <xsl:value-of select="desc"/>
2788           </td>
2789         </tr>
2790       </table>
2791
2792       <table border="0" id="submitTable">
2793         <tr>
2794           <td>
2795             <input type="submit" name="cancelled" value="Cancel"/>
2796           </td>
2797           <td align="right">
2798             <xsl:choose>
2799               <xsl:when test="calendarCollection='true'">
2800                 <input type="submit" name="delete" value="Yes: Delete Calendar!"/>
2801               </xsl:when>
2802               <xsl:otherwise>
2803                 <input type="submit" name="delete" value="Yes: Delete Folder!"/>
2804               </xsl:otherwise>
2805             </xsl:choose>
2806           </td>
2807         </tr>
2808       </table>
2809     </form>
2810   </xsl:template>
2811
2812   <!-- the selectCalForEvent listing creates a calendar tree in a pop-up window -->
2813   <xsl:template name="selectCalForEvent">
2814     <div id="calTreeBlock">
2815       <h2>Select a calendar</h2>
2816       <!--<form name="toggleCals" action="{$event-selectCalForEvent}">
2817         <xsl:choose>
2818           <xsl:when test="/bedeworkadmin/appvar[key='showAllCalsForEvent']/value = 'true'">
2819             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" onclick="submit()"/>
2820             show only writable calendars
2821             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" checked="checked" onclick="submit()"/>
2822             show all calendars
2823           </xsl:when>
2824           <xsl:otherwise>
2825             <input type="radio" name="setappvar" value="showAllCalsForEvent(false)" checked="checked" onclick="submit()"/>
2826             show only writable calendars
2827             <input type="radio" name="setappvar" value="showAllCalsForEvent(true)" onclick="submit()"/>
2828             show all calendars
2829           </xsl:otherwise>
2830         </xsl:choose>
2831       </form>-->
2832       <h4>Calendars</h4>
2833       <ul id="calendarTree">
2834         <xsl:apply-templates select="/bedeworkadmin/calendars/calendar" mode="selectCalForEventCalTree"/>
2835       </ul>
2836     </div>
2837   </xsl:template>
2838
2839   <xsl:template match="calendar" mode="selectCalForEventCalTree">
2840     <xsl:variable name="id" select="id"/>
2841     <li>
2842       <xsl:attribute name="class">
2843         <xsl:choose>
2844           <xsl:when test="calendarCollection='false'">folder</xsl:when>
2845           <xsl:otherwise>calendar</xsl:otherwise>
2846         </xsl:choose>
2847       </xsl:attribute>
2848       <xsl:variable name="calPath" select="path"/><!-- not the encodedPath when put in a form - otherwise it gets double encoded -->
2849       <xsl:variable name="calDisplay" select="path"/>
2850       <xsl:choose>
2851         <xsl:when test="currentAccess/current-user-privilege-set/privilege/write-content and (calendarCollection = 'true')">
2852           <a href="javascript:updateEventFormCalendar('{$calPath}','{$calDisplay}')">
2853             <strong>
2854               <xsl:value-of select="name"/>
2855             </strong>
2856           </a>
2857         </xsl:when>
2858         <xsl:otherwise>
2859           <xsl:value-of select="name"/>
2860         </xsl:otherwise>
2861       </xsl:choose>
2862       <xsl:if test="calendar">
2863         <ul>
2864           <xsl:apply-templates select="calendar" mode="selectCalForEventCalTree"/>
2865         </ul>
2866       </xsl:if>
2867     </li>
2868   </xsl:template>
2869
2870   <!--+++++++++++++++ Subscriptions ++++++++++++++++++++-->
2871   <xsl:template match="subscriptions">
2872     <table id="subsTable">
2873       <tr>
2874         <td class="cals">
2875           <h3>Public calendars</h3>
2876           <p class="smaller">
2877             Select a calendar below to add a <em><strong>new</strong>
2878             </em>
2879             internal subscription. <!-- or
2880             <a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">
2881             subscribe to an external calendar</a>.-->
2882           </p>
2883           <ul id="calendarTree">
2884             <xsl:apply-templates select="/bedeworkadmin/subscriptions/subscribe/calendars/calendar" mode="subscribe"/>
2885           </ul>
2886         </td>
2887         <td class="subs">
2888           <xsl:choose>
2889             <xsl:when test="/bedeworkadmin/page='subscriptions'">
2890               <xsl:call-template name="subscriptionList"/>
2891             </xsl:when>
2892             <xsl:when test="/bedeworkadmin/creating='true'">
2893               <xsl:apply-templates select="subscription" mode="addSubscription"/>
2894             </xsl:when>
2895             <xsl:otherwise>
2896               <xsl:apply-templates select="subscription" mode="modSubscription"/>
2897             </xsl:otherwise>
2898           </xsl:choose>
2899         </td>
2900       </tr>
2901     </table>
2902   </xsl:template>
2903
2904   <xsl:template match="calendar" mode="subscribe">
2905     <xsl:variable name="calPath" select="encodedPath"/>
2906     <xsl:variable name="itemClass">
2907       <xsl:choose>
2908         <xsl:when test="calendarCollection='false'">folder</xsl:when>
2909         <xsl:otherwise>calendar</xsl:otherwise>
2910       </xsl:choose>
2911     </xsl:variable>
2912     <li class="{$itemClass}">
2913       <a href="{$subscriptions-initAdd}&amp;calPath={$calPath}">
2914         <xsl:value-of select="name"/>
2915       </a>
2916       <xsl:if test="calendar">
2917         <ul>
2918           <xsl:apply-templates select="calendar" mode="subscribe">
2919             <!--<xsl:sort select="title" order="ascending" case-order="upper-first"/>--></xsl:apply-templates>
2920         </ul>
2921       </xsl:if>
2922     </li>
2923   </xsl:template>
2924
2925   <xsl:template match="subscription" mode="addSubscription">
2926     <h2>Add New Subscription</h2>
2927     <p class="note">*the subsciption name must be unique</p>
2928     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
2929       <table class="eventFormTable">
2930         <tr>
2931           <th>Name*:</th>
2932           <td>
2933             <xsl:variable name="subName" select="name"/>
2934             <input type="text" value="{$subName}" name="subscription.name" size="60"/>
2935           </td>
2936         </tr>
2937         <xsl:if test="internal='false'">
2938           <tr>
2939             <th>Uri:</th>
2940             <td>
2941               <xsl:variable name="subUri" select="uri"/>
2942               <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
2943             </td>
2944           </tr>
2945         </xsl:if>
2946         <tr>
2947           <th>Display:</th>
2948           <td>
2949             <input type="radio" value="true" name="subscription.display"/> yes
2950             <input type="radio" value="false" name="subscription.display" checked="checked"/> no
2951           </td>
2952         </tr>
2953         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
2954           <tr>
2955             <th>Unremovable:</th>
2956             <td>
2957               <input type="radio" value="true" name="unremoveable" size="60"/> true
2958               <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
2959             </td>
2960           </tr>
2961         </xsl:if>
2962         <tr>
2963           <th>Style:</th>
2964           <td>
2965             <xsl:variable name="subStyle" select="style"/>
2966             <input type="text" value="{$subStyle}" name="subscription.style" size="50"/>
2967             <div style="width: 400px">
2968               Enter a css class to style events rendered in the list and grid
2969               views.  Leave blank to render with the default colors, or select from
2970               one of the system-wide choices:
2971               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
2972                 <option value="">default</option>
2973                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
2974                   <xsl:variable name="subColor" select="."/>
2975                   <option value="{$subColor}" class="{$subColor}">
2976                     <xsl:value-of select="@name"/>
2977                   </option>
2978                 </xsl:for-each>
2979               </select>
2980               <p class="note">Note: This class is added alongside the default class used
2981               in the list and grid views.  It does not replace it, so create your
2982               style appropriately.</p>
2983             </div>
2984           </td>
2985         </tr>
2986       </table>
2987       <table border="0" id="submitTable">
2988         <tr>
2989           <td>
2990             <input type="submit" name="addSubscription" value="Add Subscription"/>
2991             <input type="submit" name="cancelled" value="Cancel"/>
2992             <input type="reset" value="Clear"/>
2993           </td>
2994         </tr>
2995       </table>
2996     </form>
2997   </xsl:template>
2998
2999   <xsl:template match="subscription" mode="modSubscription">
3000     <h2>Modify Subscription</h2>
3001     <form name="subscribeForm" action="{$subscriptions-subscribe}" method="post">
3002       <table class="eventFormTable">
3003         <tr>
3004           <th>Name*:</th>
3005           <td>
3006             <xsl:value-of select="name"/>
3007             <xsl:variable name="subName" select="name"/>
3008             <input type="hidden" value="{$subName}" name="name"/>
3009           </td>
3010         </tr>
3011         <xsl:choose>
3012           <xsl:when test="internal='false'">
3013             <tr>
3014               <th>Uri:</th>
3015               <td>
3016                 <xsl:variable name="subUri" select="uri"/>
3017                 <input type="text" value="{$subUri}" name="subscription.uri" size="60"/>
3018               </td>
3019             </tr>
3020           </xsl:when>
3021           <xsl:otherwise>
3022             <tr>
3023               <th>Uri:</th>
3024               <td>
3025                 <xsl:value-of select="uri"/>
3026               </td>
3027             </tr>
3028           </xsl:otherwise>
3029         </xsl:choose>
3030         <tr>
3031           <th>Display:</th>
3032           <td>
3033             <xsl:choose>
3034               <xsl:when test="display='true'">
3035                 <input type="radio" value="true" name="subscription.display" checked="checked"/> yes
3036                 <input type="radio" value="false" name="subscription.display"/> no
3037               </xsl:when>
3038               <xsl:otherwise>
3039                 <input type="radio" value="true" name="subscription.display"/> yes
3040                 <input type="radio" value="false" name="subscription.display" checked="checked"/> no
3041               </xsl:otherwise>
3042             </xsl:choose>
3043           </td>
3044         </tr>
3045         <xsl:if test="/bedeworkadmin/userInfo/superUser='true'">
3046           <tr>
3047             <th>Unremovable:</th>
3048             <td>
3049               <xsl:choose>
3050                 <xsl:when test="unremoveable='true'">
3051                   <input type="radio" value="true" name="unremoveable" size="60" checked="checked"/> true
3052                   <input type="radio" value="false" name="unremoveable" size="60"/> false
3053                 </xsl:when>
3054                 <xsl:otherwise>
3055                   <input type="radio" value="true" name="unremoveable" size="60"/> true
3056                   <input type="radio" value="false" name="unremoveable" size="60" checked="checked"/> false
3057                 </xsl:otherwise>
3058               </xsl:choose>
3059             </td>
3060           </tr>
3061         </xsl:if>
3062         <tr>
3063           <th>Style:</th>
3064           <td>
3065             <xsl:variable name="subStyle" select="style"/>
3066             <input type="text" value="{$subStyle}" name="subscription.style" size="60"/>
3067             <div style="width: 400px">
3068               Enter a css class to style events rendered in the list and grid
3069               views.  Leave blank to render with the default colors, or select from
3070               one of the system-wide choices:
3071               <select name="bwColors" onchange="document.subscribeForm['subscription.style'].value = this.value">
3072                 <option value="">default</option>
3073                 <xsl:for-each select="document('subColors.xml')/subscriptionColors/color">
3074                   <xsl:variable name="subColor" select="."/>
3075                   <option value="{$subColor}" class="{$subColor}">
3076                     <xsl:value-of select="@name"/>
3077                   </option>
3078                 </xsl:for-each>
3079               </select>
3080               <p class="note">Note: This class is added alongside the default class used
3081               in the list and grid views.  It does not replace it, so create your
3082               style appropriately.</p>
3083             </div>
3084           </td>
3085         </tr>
3086       </table>
3087       <table border="0" id="submitTable">
3088         <tr>
3089           <td>
3090             <input type="submit" name="updateSubscription" value="Update Subscription"/>
3091             <input type="submit" name="cancelled" value="Cancel"/>
3092             <input type="reset" value="Reset"/>
3093           </td>
3094           <td align="right">
3095             <input type="submit" name="delete" value="Delete Subscription"/>
3096           </td>
3097         </tr>
3098       </table>
3099     </form>
3100   </xsl:template>
3101
3102   <xsl:template name="subscriptionList">
3103     <h3>Current subscriptions</h3>
3104     <table id="commonListTable">
3105       <tr>
3106         <th>Name</th>
3107         <th>URI</th>
3108         <th>Style</th>
3109         <th>Display</th>
3110         <th>Unremovable</th>
3111         <th>External</th>
3112         <th>Deleted?</th>
3113       </tr>
3114       <xsl:for-each select="subscription">
3115         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3116         <tr>
3117           <td>
3118             <xsl:variable name="subname" select="name"/>
3119             <a href="{$subscriptions-fetchForUpdate}&amp;subname={$subname}">
3120               <xsl:value-of select="name"/>
3121             </a>
3122           </td>
3123           <td>
3124             <xsl:value-of select="uri"/>
3125           </td>
3126           <td>
3127             <xsl:value-of select="style"/>
3128           </td>
3129           <td class="center">
3130             <xsl:if test="display='true'">
3131               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
3132             </xsl:if>
3133           </td>
3134           <td class="center">
3135             <xsl:if test="unremoveable='true'">
3136               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
3137             </xsl:if>
3138           </td>
3139           <td class="center">
3140             <xsl:if test="internal='false'">
3141               <img src="{$resourcesRoot}/resources/greenCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
3142             </xsl:if>
3143           </td>
3144           <td class="center">
3145             <xsl:if test="calendarDeleted='true'">
3146               <img src="{$resourcesRoot}/resources/redCheckIcon.gif" width="13" height="13" alt="true" border="0"/>
3147             </xsl:if>
3148           </td>
3149         </tr>
3150       </xsl:for-each>
3151     </table>
3152     <!--<h4><a href="{$subscriptions-initAdd}&amp;calUri=please enter a calendar uri">Subscribe to a remote calendar</a> (by URI)</h4>-->
3153   </xsl:template>
3154
3155   <!--+++++++++++++++ Views ++++++++++++++++++++-->
3156   <xsl:template match="views" mode="viewList">
3157
3158     <h3>Add a new view</h3>
3159     <form name="addView" action="{$view-addView}" method="post">
3160       <input type="text" name="name" size="60"/>
3161       <input type="submit" value="add view" name="addview"/>
3162     </form>
3163
3164     <h3>Views</h3>
3165     <table id="commonListTable">
3166       <tr>
3167         <th>Name</th>
3168         <th>Included subscriptions</th>
3169       </tr>
3170
3171       <xsl:for-each select="view">
3172         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3173         <tr>
3174           <td>
3175             <xsl:variable name="viewName" select="name"/>
3176             <a href="{$view-fetchForUpdate}&amp;name={$viewName}">
3177               <xsl:value-of select="name"/>
3178             </a>
3179           </td>
3180           <td>
3181             <xsl:for-each select="subscriptions/subscription">
3182               <xsl:value-of select="name"/>
3183               <xsl:if test="position()!=last()">, </xsl:if>
3184             </xsl:for-each>
3185           </td>
3186         </tr>
3187       </xsl:for-each>
3188     </table>
3189   </xsl:template>
3190
3191   <xsl:template name="modView">
3192     <h2>Update View</h2>
3193     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
3194     <h3 class="viewName">
3195       <xsl:value-of select="$viewName"/>
3196     </h3>
3197     <table id="viewsTable">
3198       <tr>
3199         <td class="subs">
3200           <h3>Available Subscriptions:</h3>
3201
3202           <table class="subscriptionsListSubs">
3203             <xsl:for-each select="/bedeworkadmin/subscriptions/subscription">
3204               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3205               <xsl:if test="not(/bedeworkadmin/views/view/subscriptions/subscription/name=name)">
3206                 <tr>
3207                   <td>
3208                     <xsl:value-of select="name"/>
3209                   </td>
3210                   <td class="arrows">
3211                     <xsl:variable name="subAddName" select="name"/>
3212                     <a href="{$view-update}&amp;name={$viewName}&amp;add={$subAddName}">
3213                       <img src="{$resourcesRoot}/resources/arrowRight.gif"
3214                           width="13" height="13" border="0"
3215                           alt="add subscription"/>
3216                     </a>
3217                   </td>
3218                 </tr>
3219               </xsl:if>
3220             </xsl:for-each>
3221           </table>
3222         </td>
3223         <td class="view">
3224           <h3>Active Subscriptions:</h3>
3225           <table class="subscriptionsListView">
3226             <xsl:for-each select="/bedeworkadmin/views/view/subscriptions/subscription">
3227               <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
3228               <tr>
3229                 <td class="arrows">
3230                   <xsl:variable name="subRemoveName" select="name"/>
3231                   <a href="{$view-update}&amp;name={$viewName}&amp;remove={$subRemoveName}">
3232                     <img src="{$resourcesRoot}/resources/arrowLeft.gif"
3233                         width="13" height="13" border="0"
3234                         alt="add subscription"/>
3235                   </a>
3236                 </td>
3237                 <td>
3238                   <xsl:value-of select="name"/>
3239                 </td>
3240               </tr>
3241             </xsl:for-each>
3242           </table>
3243         </td>
3244       </tr>
3245     </table>
3246     <table border="0" id="submitTable">
3247       <tr>
3248         <td>
3249           <input type="button" name="return" value="Return to Views Listing" onclick="javascript:location.replace('{$view-fetch}')"/>
3250         </td>
3251         <td align="right">
3252           <form name="deleteViewForm" action="{$view-fetchForUpdate}" method="post">
3253             <input type="submit" name="deleteButton" value="Delete View"/>
3254             <input type="hidden" name="name" value="{$viewName}"/>
3255             <input type="hidden" name="delete" value="yes"/>
3256           </form>
3257         </td>
3258       </tr>
3259     </table>
3260   </xsl:template>
3261
3262   <xsl:template name="deleteViewConfirm">
3263     <h2>Remove View?</h2>
3264
3265     <xsl:variable name="viewName" select="/bedeworkadmin/views/view/name"/>
3266     <p>The following view will be removed. Continue?</p>
3267
3268     <h3 class="viewName">
3269       <xsl:value-of select="$viewName"/>
3270     </h3>
3271     <form name="removeView" action="{$view-remove}">
3272       <input type="hidden" name="name" value="{$viewName}"/>
3273       <input type="submit" name="delete" value="Yes: Remove View"/>
3274       <input type="submit" name="cancelled" value="No: Cancel"/>
3275     </form>
3276
3277   </xsl:template>
3278
3279   <!--==== UPLOAD ====-->
3280   <xsl:template name="upload">
3281   <!-- The name "eventForm" is referenced by several javascript functions. Do not
3282     change it without modifying includes.js -->
3283     <form name="eventForm" method="post" action="{$event-upload}" id="standardForm" enctype="multipart/form-data">
3284       <h2>Upload iCAL File</h2>
3285       <table class="common" cellspacing="0">
3286         <tr>
3287           <td class="fieldname">
3288             Filename:
3289           </td>
3290           <td align="left">
3291             <input type="file" name="uploadFile" size="60" />
3292           </td>
3293         </tr>
3294         <tr>
3295           <td class="fieldname padMeTop">
3296             Into calendar:
3297           </td>
3298           <td align="left" class="padMeTop">
3299             <input type="hidden" name="newCalPath" value=""/>
3300             <span id="bwEventCalDisplay">
3301               <em>none selected</em>
3302             </span>
3303             <xsl:text> </xsl:text>
3304             [<a href="javascript:launchCalSelectWindow('{$event-selectCalForEvent}')" class="small">change</a>]
3305           </td>
3306         </tr>
3307         <!--<tr>
3308           <td class="fieldname padMeTop">
3309             Effects free/busy:
3310           </td>
3311           <td align="left" class="padMeTop">
3312             <input type="radio" value="" name="transparency" checked="checked"/> accept event's settings<br/>
3313             <input type="radio" value="OPAQUE" name="transparency"/> yes <span class="note">(opaque: event status affects your free/busy)</span><br/>
3314             <input type="radio" value="TRANSPARENT" name="transparency"/> no <span class="note">(transparent: event status does not affect your free/busy)</span><br/>
3315           </td>
3316         </tr>-->
3317         <tr>
3318           <td class="fieldname padMeTop">
3319             Status:
3320           </td>
3321           <td align="left" class="padMeTop">
3322             <input type="radio" value="" name="status" checked="checked"/> accept event's status<br/>
3323             <input type="radio" value="CONFIRMED" name="status"/> confirmed<br/>
3324             <input type="radio" value="TENTATIVE" name="status"/> tentative<br/>
3325             <input type="radio" value="CANCELLED" name="status"/> cancelled<br/>
3326           </td>
3327         </tr>
3328       </table>
3329       <table border="0" id="submitTable">
3330         <tr>
3331           <td>
3332             <input name="submit" type="submit" value="Continue"/>
3333             <input name="cancelled" type="submit" value="Cancel"/>
3334           </td>
3335         </tr>
3336       </table>
3337     </form>
3338   </xsl:template>
3339
3340   <!--+++++++++++++++ System Parameters (preferences) ++++++++++++++++++++-->
3341   <xsl:template name="modSyspars">
3342     <h2>Modify System Preferences/Parameters</h2>
3343     <p>
3344       Do not change unless you know what you're doing.<br/>
3345       Changes to these parameters have wide impact on the system.
3346     </p>
3347     <form name="systemParamsForm" action="{$system-update}" method="post">
3348       <table class="eventFormTable params">
3349         <tr>
3350           <th>System name:</th>
3351           <td>
3352             <xsl:variable name="sysname" select="/bedeworkadmin/system/name"/>
3353             <xsl:value-of select="$sysname"/>
3354             <div class="desc">
3355               Name for this system. Cannot be changed.
3356             </div>
3357           </td>
3358         </tr>
3359         <tr>
3360           <th>Default timezone:</th>
3361           <td>
3362             <xsl:variable name="tzid" select="/bedeworkadmin/system/tzid"/>
3363
3364             <select name="tzid">
3365               <option value="-1">select timezone...</option>
3366               <xsl:for-each select="/bedeworkadmin/timezones/timezone">
3367                 <option>
3368                   <xsl:attribute name="value"><xsl:value-of select="id"/></xsl:attribute>
3369                   <xsl:if test="/bedeworkadmin/system/tzid = id"><xsl:attribute name="selected">selected</xsl:attribute></xsl:if>
3370                   <xsl:value-of select="name"/>
3371                 </option>
3372               </xsl:for-each>
3373             </select>
3374
3375             <div class="desc">
3376               Default timezone id for date/time values. This should normally be your local timezone.
3377             </div>
3378           </td>
3379         </tr>
3380         <tr>
3381           <th>System id:</th>
3382           <td>
3383             <xsl:variable name="systemid" select="/bedeworkadmin/system/systemid"/>
3384             <xsl:value-of select="$systemid"/>
3385             <div class="desc">
3386               System id used when building uids and identifying users. Should not be changed.
3387             </div>
3388           </td>
3389         </tr>
3390         <tr>
3391           <th>Principal Root:</th>
3392           <td>
3393             <xsl:variable name="proot" select="/bedeworkadmin/system/principalRoot"/>
3394             <input value="{$proot}" name="principalRoot" size="0"/>
3395             <div class="desc">
3396               Used in WebDAV and CalDAV access to define root of user and group principal trees.
3397             </div>
3398           </td>
3399         </tr>
3400         <tr>
3401           <th>User Principal Root:</th>
3402           <td>
3403             <xsl:variable name="uproot" select="/bedeworkadmin/system/userPrincipalRoot"/>
3404             <input value="{$uproot}" name="userPrincipalRoot" size="0"/>
3405             <div class="desc">
3406               Used in WebDAV and CalDAV access to define root of user principal subtree.
3407             </div>
3408           </td>
3409         </tr>
3410         <tr>
3411           <th>Group Principal Root:</th>
3412           <td>
3413             <xsl:variable name="gproot" select="/bedeworkadmin/system/groupPrincipalRoot"/>
3414             <input value="{$gproot}" name="groupPrincipalRoot" size="0"/>
3415             <div class="desc">
3416               Used in WebDAV and CalDAV access to define root of group principal subtree.
3417             </div>
3418           </td>
3419         </tr>
3420         <tr>
3421           <th>Public Calendar Root:</th>
3422           <td>
3423             <xsl:variable name="publicCalendarRoot" select="/bedeworkadmin/system/publicCalendarRoot"/>
3424             <xsl:value-of select="$publicCalendarRoot"/>
3425             <div class="desc">
3426               Name for public calendars root directory. Should not be changed.
3427             </div>
3428           </td>
3429         </tr>
3430         <tr>
3431           <th>User Calendar Root:</th>
3432           <td>
3433             <xsl:variable name="userCalendarRoot" select="/bedeworkadmin/system/userCalendarRoot"/>
3434             <xsl:value-of select="$userCalendarRoot"/>
3435             <div class="desc">
3436               Name for user calendars root directory. Should not be changed.
3437             </div>
3438           </td>
3439         </tr>
3440         <tr>
3441           <th>User Calendar Default name:</th>
3442           <td>
3443             <xsl:variable name="userDefaultCalendar" select="/bedeworkadmin/system/userDefaultCalendar"/>
3444             <input value="{$userDefaultCalendar}" name="userDefaultCalendar" />
3445             <div class="desc">
3446               Default name for user calendar. Used when initialising user. Possibly can be changed.
3447             </div>
3448           </td>
3449         </tr>
3450         <tr>
3451           <th>Trash Calendar Default name:</th>
3452           <td>
3453             <xsl:variable name="defaultTrashCalendar" select="/bedeworkadmin/system/defaultTrashCalendar"/>
3454             <input value="{$defaultTrashCalendar}" name="defaultTrashCalendar" />
3455             <div class="desc">
3456               Default name for user trash calendar. Used when initialising user. Possibly can be changed.
3457             </div>
3458           </td>
3459         </tr>
3460         <tr>
3461           <th>User Inbox Default name:</th>
3462           <td>
3463             <xsl:variable name="userInbox" select="/bedeworkadmin/system/userInbox"/>
3464             <input value="{$userInbox}" name="userInbox" />
3465             <div class="desc">
3466               Default name for user inbox. Used when initialising user. Possibly can be changed.
3467             </div>
3468           </td>
3469         </tr>
3470         <tr>
3471           <th>User Outbox Default name:</th>
3472           <td>
3473             <xsl:variable name="userOutbox" select="/bedeworkadmin/system/userOutbox"/>
3474             <input value="{$userOutbox}" name="userOutbox" />
3475             <div class="desc">
3476               Default name for user outbox. Used when initialising user. Possibly can be changed.
3477             </div>
3478           </td>
3479         </tr>
3480         <tr>
3481           <th>User Deleted Calendar Default name:</th>
3482           <td>
3483             <xsl:variable name="deletedCalendar" select="/bedeworkadmin/system/deletedCalendar"/>
3484             <input value="{$deletedCalendar}" name="deletedCalendar" />
3485             <div class="desc">
3486               Default name for user calendar used to hold deleted items. Used when initialising user. Possibly can be changed.
3487             </div>
3488           </td>
3489         </tr>
3490         <tr>
3491           <th>User Busy Calendar Default name:</th>
3492           <td>
3493             <xsl:variable name="busyCalendar" select="/bedeworkadmin/system/busyCalendar"/>
3494             <input value="{$busyCalendar}" name="busyCalendar" />
3495             <div class="desc">
3496               Default name for user busy time calendar. Used when initialising user. Possibly can be changed.
3497             </div>
3498           </td>
3499         </tr>
3500         <tr>
3501           <th>Default user view name:</th>
3502           <td>
3503             <xsl:variable name="defaultViewName" select="/bedeworkadmin/system/defaultUserViewName"/>
3504             <input value="{$defaultViewName}" name="defaultUserViewName" />
3505             <div class="desc">
3506               Name used for default view created when a new user is added
3507             </div>
3508           </td>
3509         </tr>
3510         <tr>
3511           <th>Http connections per user:</th>
3512           <td>
3513             <xsl:variable name="httpPerUser" select="/bedeworkadmin/system/httpConnectionsPerUser"/>
3514             <input value="{$httpPerUser}" name="httpConnectionsPerUser" />
3515             <div class="desc">
3516             </div>
3517           </td>
3518         </tr>
3519         <tr>
3520           <th>Http connections per host:</th>
3521           <td>
3522             <xsl:variable name="httpPerHost" select="/bedeworkadmin/system/httpConnectionsPerHost"/>
3523             <input value="{$httpPerHost}" name="httpConnectionsPerHost" />
3524             <div class="desc">
3525             </div>
3526           </td>
3527         </tr>
3528         <tr>
3529           <th>Total http connections:</th>
3530           <td>
3531             <xsl:variable name="httpTotal" select="/bedeworkadmin/system/httpConnections"/>
3532             <input value="{$httpTotal}" name="httpConnections" />
3533             <div class="desc">
3534             </div>
3535           </td>
3536         </tr>
3537         <tr>
3538           <th>Maximum length of public event description:</th>
3539           <td>
3540             <xsl:variable name="maxPublicDescriptionLength" select="/bedeworkadmin/system/maxPublicDescriptionLength"/>
3541             <input value="{$maxPublicDescriptionLength}" name="maxPublicDescriptionLength" />
3542             <div class="desc">
3543             </div>
3544           </td>
3545         </tr>
3546         <tr>
3547           <th>Maximum length of user event description:</th>
3548           <td>
3549             <xsl:variable name="maxUserDescriptionLength" select="/bedeworkadmin/system/maxUserDescriptionLength"/>
3550             <input value="{$maxUserDescriptionLength}" name="maxUserDescriptionLength" />
3551             <div class="desc">
3552             </div>
3553           </td>
3554         </tr>
3555         <tr>
3556           <th>Maximum size of a user entity:</th>
3557           <td>
3558             <xsl:variable name="maxUserEntitySize" select="/bedeworkadmin/system/maxUserEntitySize"/>
3559             <input value="{$maxUserEntitySize}" name="maxUserEntitySize" />
3560             <div class="desc">
3561             </div>
3562           </td>
3563         </tr>
3564         <tr>
3565           <th>Default user quota:</th>
3566           <td>
3567             <xsl:variable name="defaultUserQuota" select="/bedeworkadmin/system/defaultUserQuota"/>
3568             <input value="{$defaultUserQuota}" name="defaultUserQuota" />
3569             <div class="desc">
3570             </div>
3571           </td>
3572         </tr>
3573         <tr>
3574           <th>Max recurring instances:</th>
3575           <td>
3576             <xsl:variable name="maxInstances" select="/bedeworkadmin/system/maxInstances"/>
3577             <input value="{$maxInstances}" name="maxInstances" />
3578             <div class="desc">
3579               Used to limit recurring events to reasonable numbers of instances.
3580             </div>
3581           </td>
3582         </tr>
3583         <tr>
3584           <th>Max recurring years:</th>
3585           <td>
3586             <xsl:variable name="maxYears" select="/bedeworkadmin/system/maxYears"/>
3587             <input value="{$maxYears}" name="maxYears" />
3588             <div class="desc">
3589               Used to limit recurring events to reasonable period of time.
3590             </div>
3591           </td>
3592         </tr>
3593         <tr>
3594           <th>User authorisation class:</th>
3595           <td>
3596             <xsl:variable name="userauthClass" select="/bedeworkadmin/system/userauthClass"/>
3597             <input value="{$userauthClass}" name="userauthClass" class="wide"/>
3598             <div class="desc">
3599               Class used to determine authorisation (not authentication) for
3600               administrative users. Should probably only be changed on rebuild.
3601             </div>
3602           </td>
3603         </tr>
3604         <tr>
3605           <th>Mailer class:</th>
3606           <td>
3607             <xsl:variable name="mailerClass" select="/bedeworkadmin/system/mailerClass"/>
3608             <input value="{$mailerClass}" name="mailerClass" class="wide"/>
3609             <div class="desc">
3610               Class used to mail events. Should probably only be changed on rebuild.
3611             </div>
3612           </td>
3613         </tr>
3614         <tr>
3615           <th>Admin groups class:</th>
3616           <td>
3617             <xsl:variable name="admingroupsClass" select="/bedeworkadmin/system/admingroupsClass"/>
3618             <input value="{$admingroupsClass}" name="admingroupsClass" class="wide"/>
3619             <div class="desc">
3620               Class used to query and maintain groups for
3621               administrative users. Should probably only be changed on rebuild.
3622             </div>
3623           </td>
3624         </tr>
3625         <tr>
3626           <th>User groups class:</th>
3627           <td>
3628             <xsl:variable name="usergroupsClass" select="/bedeworkadmin/system/usergroupsClass"/>
3629             <input value="{$usergroupsClass}" name="usergroupsClass" class="wide"/>
3630             <div class="desc">
3631               Class used to query and maintain groups for
3632               non-administrative users. Should probably only be changed on rebuild.
3633             </div>
3634           </td>
3635         </tr>
3636         <tr>
3637           <th>Directory browsing disallowed:</th>
3638           <td>
3639             <xsl:variable name="directoryBrowsingDisallowed" select="/bedeworkadmin/system/directoryBrowsingDisallowed"/>
3640             <input value="{$directoryBrowsingDisallowed}" name="directoryBrowsingDisallowed" />
3641             <div class="desc">
3642               True if the server hosting the xsl disallows directory browsing.
3643             </div>
3644           </td>
3645         </tr>
3646         <tr>
3647           <th>Index root:</th>
3648           <td>
3649             <xsl:variable name="indexRoot" select="/bedeworkadmin/system/indexRoot"/>
3650             <input value="{$indexRoot}" name="indexRoot" class="wide"/>
3651             <div class="desc">
3652               Root for the event indexes. Should only be changed if the indexes are moved/copied
3653             </div>
3654           </td>
3655         </tr>
3656       </table>
3657       <table border="0" id="submitTable">
3658         <tr>
3659           <td>
3660             <input type="submit" name="updateSystemParams" value="Update"/>
3661             <input type="submit" name="cancelled" value="Cancel"/>
3662             <input type="reset" value="Reset"/>
3663           </td>
3664         </tr>
3665       </table>
3666     </form>
3667   </xsl:template>
3668
3669   <!--+++++++++++++++ Calendar Suites (calsuite) ++++++++++++++++++++-->
3670   <xsl:template match="calSuites" mode="calSuiteList">
3671     <h2>Manage Calendar Suites</h2>
3672
3673     <h4>Calendar suites:</h4>
3674     <p>
3675       <input type="button" name="return" value="Add calendar suite" onclick="javascript:location.replace('{$calsuite-showAddForm}')"/>
3676     </p>
3677
3678     <ul>
3679       <xsl:for-each select="calSuite">
3680         <li>
3681           <xsl:variable name="name" select="name"/>
3682           <a href="{$calsuite-fetchForUpdate}&amp;name={$name}">
3683             <xsl:value-of select="name"/>
3684           </a>
3685         </li>
3686       </xsl:for-each>
3687     </ul>
3688
3689   </xsl:template>
3690
3691   <xsl:template name="addCalSuite">
3692     <h2>Add Calendar Suite</h2>
3693     <form name="calSuiteForm" action="{$calsuite-add}" method="post">
3694       <table class="eventFormTable">
3695         <tr>
3696           <th>Name:</th>
3697           <td>
3698             <input name="name" size="20"/>
3699           </td>
3700           <td>
3701             Name of your calendar suite
3702           </td>
3703         </tr>
3704         <tr>
3705           <th>Group:</th>
3706           <td>
3707             <input name="groupName" size="20"/>
3708           </td>
3709           <td>
3710             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3711           </td>
3712         </tr>
3713         <tr>
3714           <th>Root calendar:</th>
3715           <td>
3716             <input name="calPath" size="20"/>
3717           </td>
3718           <td>
3719             Path of root calendar (not required if suite only consists of subscriptions and views)
3720           </td>
3721         </tr>
3722       </table>
3723       <table border="0" id="submitTable">
3724         <tr>
3725           <td>
3726             <input type="submit" name="updateCalSuite" value="Add"/>
3727             <input type="submit" name="cancelled" value="Cancel"/>
3728             <input type="reset" value="Reset"/>
3729           </td>
3730         </tr>
3731       </table>
3732     </form>
3733   </xsl:template>
3734
3735   <xsl:template match="calSuite" name="modCalSuite">
3736     <h2>Modify Calendar Suite</h2>
3737     <xsl:variable name="calSuiteName" select="name"/>
3738     <form name="calSuiteForm" action="{$calsuite-update}" method="post">
3739       <table class="eventFormTable">
3740         <tr>
3741           <th>Name:</th>
3742           <td>
3743             <input name="name" value="{$calSuiteName}" size="20"/>
3744           </td>
3745           <td>
3746             Name of your calendar suite
3747           </td>
3748         </tr>
3749         <tr>
3750           <th>Group:</th>
3751           <td>
3752             <xsl:variable name="group" select="group"/>
3753             <input name="groupName" value="{$group}" size="20"/>
3754           </td>
3755           <td>
3756             Name of admin group which contains event administrators and event owner to which preferences for the suite are attached
3757           </td>
3758         </tr>
3759         <tr>
3760           <th>Root calendar:</th>
3761           <td>
3762             <xsl:variable name="calPath" select="calPath"/>
3763             <input name="calPath" value="{$calPath}" size="20"/>
3764           </td>
3765           <td>
3766             Path of root calendar (not required if suite only consists of subscriptions and views)
3767           </td>
3768         </tr>
3769       </table>
3770       <table border="0" id="submitTable">
3771         <tr>
3772           <td>
3773             <input type="submit" name="updateCalSuite" value="Update"/>
3774             <input type="submit" name="cancelled" value="Cancel"/>
3775             <input type="reset" value="Reset"/>
3776           </td>
3777         </tr>
3778       </table>
3779     </form>
3780     <!--<div id="sharingBox">
3781       <h3>Manage suite administrators</h3>
3782       <table class="common">
3783         <tr>
3784           <th class="commonHeader" colspan="2">Current access:</th>
3785         </tr>
3786
3787         <xsl:for-each select="acl/ace">
3788           <tr>
3789             <th class="thin">
3790               <xsl:choose>
3791                 <xsl:when test="invert">
3792                   <em>Deny to
3793                   <xsl:choose>
3794                     <xsl:when test="invert/principal/href">
3795                       <xsl:value-of select="invert/principal/href"/>
3796                       </xsl:when>
3797                       <xsl:when test="invert/principal/property">
3798                         <xsl:value-of select="name(invert/principal/property/*)"/>
3799                       </xsl:when>
3800                       <xsl:otherwise>
3801                         <xsl:value-of select="name(invert/principal/*)"/>
3802                       </xsl:otherwise>
3803                     </xsl:choose>
3804                   </em>
3805                 </xsl:when>
3806                 <xsl:otherwise>
3807                   <xsl:choose>
3808                     <xsl:when test="principal/href">
3809                       <xsl:value-of select="principal/href"/>
3810                     </xsl:when>
3811                     <xsl:when test="principal/property">
3812                       <xsl:value-of select="name(principal/property/*)"/>
3813                     </xsl:when>
3814                     <xsl:otherwise>
3815                       <xsl:value-of select="name(principal/*)"/>
3816                     </xsl:otherwise>
3817                   </xsl:choose>
3818                 </xsl:otherwise>
3819               </xsl:choose>
3820             </th>
3821             <td>
3822               <xsl:for-each select="grant/node()">
3823                 <xsl:value-of select="name(.)"/>&#160;&#160;
3824               </xsl:for-each>
3825             </td>
3826           </tr>
3827         </xsl:for-each>
3828       </table>
3829       <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3830         <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3831         <input type="hidden" name="how" value="RW" />
3832         <p>
3833           Add administrator:<br/>
3834           <input type="text" name="who" size="20"/>
3835           <input type="radio" value="user" name="whoType" checked="checked"/> user
3836           <input type="radio" value="group" name="whoType"/> group
3837         </p>
3838         <input type="submit" name="submit" value="Submit"/>
3839       </form>
3840     </div>-->
3841
3842     <div id="sharingBox">
3843       <xsl:variable name="calPath" select="path"/>
3844       <xsl:variable name="encodedCalPath" select="encodedPath"/>
3845       <xsl:if test="currentAccess/current-user-privilege-set/privilege/read-acl or /bedeworkadmin/userInfo/superUser='true'">
3846         <h3>Manage suite administrators</h3>
3847         <table class="common" id="sharing">
3848           <tr>
3849             <th class="commonHeader">Who:</th>
3850             <th class="commonHeader">Current access:</th>
3851             <th class="commonHeader">Source:</th>
3852           </tr>
3853           <xsl:for-each select="acl/ace">
3854             <xsl:variable name="who">
3855               <xsl:choose>
3856                 <xsl:when test="invert">
3857                   <xsl:choose>
3858                     <xsl:when test="invert/principal/href"><xsl:value-of select="normalize-space(invert/principal/href)"/></xsl:when>
3859                     <xsl:when test="invert/principal/property"><xsl:value-of select="name(invert/principal/property/*)"/></xsl:when>
3860                     <xsl:otherwise><xsl:value-of select="name(invert/principal/*)"/></xsl:otherwise>
3861                   </xsl:choose>
3862                 </xsl:when>
3863                 <xsl:otherwise>
3864                   <xsl:choose>
3865                     <xsl:when test="principal/href"><xsl:value-of select="normalize-space(principal/href)"/></xsl:when>
3866                     <xsl:when test="principal/property"><xsl:value-of select="name(principal/property/*)"/></xsl:when>
3867                     <xsl:otherwise><xsl:value-of select="name(principal/*)"/></xsl:otherwise>
3868                   </xsl:choose>
3869                 </xsl:otherwise>
3870               </xsl:choose>
3871             </xsl:variable>
3872             <tr>
3873             <th class="thin">
3874                 <xsl:if test="invert">
3875                   Not
3876                 </xsl:if>
3877                 <xsl:choose>
3878                   <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">
3879                     <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
3880                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/>
3881                   </xsl:when>
3882                   <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">
3883                     <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
3884                     <xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/>
3885                   </xsl:when>
3886                   <xsl:when test="invert and $who='owner'">
3887                     <xsl:value-of select="$who"/> (other)
3888                   </xsl:when>
3889                   <xsl:otherwise>
3890                     <xsl:value-of select="$who"/>
3891                   </xsl:otherwise>
3892                 </xsl:choose>
3893               </th>
3894               <td>
3895                 <xsl:for-each select="grant/node()">
3896                   <xsl:value-of select="name(.)"/>&#160;&#160;
3897                 </xsl:for-each>
3898                 <xsl:for-each select="deny/node()">
3899                   <xsl:choose>
3900                     <xsl:when test="name(.)='all'">
3901                       none
3902                     </xsl:when>
3903                     <xsl:otherwise>
3904                       deny-<xsl:value-of select="name(.)"/>
3905                     </xsl:otherwise>
3906                   </xsl:choose>
3907                   &#160;&#160;
3908                 </xsl:for-each>
3909               </td>
3910               <td>
3911                 <xsl:choose>
3912                   <xsl:when test="inherited">
3913                     inherited from:
3914                     <a>
3915                       <xsl:attribute name="href"><xsl:value-of select="$calendar-fetchForUpdate"/>&amp;calPath=<xsl:value-of select="inherited/href"/></xsl:attribute>
3916                       <xsl:value-of select="inherited/href"/>
3917                     </a>
3918                   </xsl:when>
3919                   <xsl:otherwise>
3920                     local:
3921                     <xsl:variable name="whoType">
3922                       <xsl:choose>
3923                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)">user</xsl:when>
3924                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)">group</xsl:when>
3925                         <xsl:otherwise></xsl:otherwise>
3926                       </xsl:choose>
3927                     </xsl:variable>
3928                     <xsl:variable name="shortWho">
3929                       <xsl:choose>
3930                         <xsl:when test="contains($who,/bedeworkadmin/syspars/userPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/userPrincipalRoot)),'/')"/></xsl:when>
3931                         <xsl:when test="contains($who,/bedeworkadmin/syspars/groupPrincipalRoot)"><xsl:value-of select="substring-after(substring-after($who,normalize-space(/bedeworkadmin/syspars/groupPrincipalRoot)),'/')"/></xsl:when>
3932                         <xsl:otherwise><xsl:value-of select="$who"/></xsl:otherwise>
3933                       </xsl:choose>
3934                     </xsl:variable>
3935                     <xsl:choose>
3936                       <xsl:when test="invert">
3937                         <a href="{$calsuite-setAccess}&amp;calSuiteName={$calSuiteName}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}&amp;notWho=yes">
3938                           reset to default
3939                         </a>
3940                       </xsl:when>
3941                       <xsl:otherwise>
3942                         <a href="{$calsuite-setAccess}&amp;calSuiteName={$calSuiteName}&amp;how=default&amp;who={$shortWho}&amp;whoType={$whoType}">
3943                           reset to default
3944                         </a>
3945                       </xsl:otherwise>
3946                     </xsl:choose>
3947                   </xsl:otherwise>
3948                 </xsl:choose>
3949               </td>
3950             </tr>
3951           </xsl:for-each>
3952         </table>
3953       </xsl:if>
3954
3955       <xsl:if test="currentAccess/current-user-privilege-set/privilege/write-acl or /bedeworkadmin/userInfo/superUser='true'">
3956         <form name="calsuiteShareForm" action="{$calsuite-setAccess}" id="shareForm" method="post">
3957           <input type="hidden" name="calSuiteName" value="{$calSuiteName}"/>
3958           <table cellspacing="0" id="shareFormTable" class="common">
3959             <tr>
3960               <th colspan="2" class="commonHeader">Set access:</th>
3961             </tr>
3962             <tr class="subhead">
3963               <th>Who:</th>
3964               <th>Rights:</th>
3965             </tr>
3966             <tr>
3967               <td>
3968                 <input type="text" name="who" size="20"/>
3969                 <br/>
3970                 <input type="radio" value="user" name="whoType" checked="checked"/> user
3971                 <input type="radio" value="group" name="whoType"/> group
3972                 <p>OR</p>
3973                 <p>
3974                   <input type="radio" value="auth" name="whoType"/> all authorized users<br/>
3975                   <input type="radio" value="other" name="whoType"/> other users<br/>
3976                   <input type="radio" value="owner" name="whoType"/> owner
3977                 </p>
3978                 <!-- we may never use the invert action ...it is probably
3979                      too confusing, and can be achieved in other ways -->
3980                 <!--
3981                 <p class="padTop">
3982                   <input type="checkbox" value="yes" name="notWho"/> invert (deny)
3983                 </p>-->
3984               </td>
3985               <td>
3986                 <ul id="howList">
3987                   <li>
3988                     <input type="radio" value="A" name="how"/>
3989                     <strong>All</strong> (read, write, delete)</li>
3990                   <li class="padTop">
3991                     <input type="radio" value="R" name="how"/>
3992                     <strong>Read</strong> (content, access, freebusy)
3993                   </li>
3994                   <li>
3995                     <input type="radio" value="f" name="how"/> Read freebusy only
3996                   </li>
3997                   <li class="padTop">
3998                     <input type="radio" value="Rc" name="how" checked="checked"/>
3999                     <strong>Read</strong> and <strong>Write content only</strong>
4000                   </li>
4001                   <li class="padTop">
4002                     <input type="radio" value="W" name="how"/>
4003                     <strong>Write and delete</strong> (content, access, properties)
4004                   </li>
4005                   <li>
4006                     <input type="radio" value="c" name="how"/> Write content only
4007                   </li>
4008                   <li>
4009                     <input type="radio" value="u" name="how"/> Delete only
4010                   </li>
4011                   <li class="padTop">
4012                     <input type="radio" value="N" name="how"/>
4013                     <strong>None</strong>
4014                   </li>
4015                 </ul>
4016               </td>
4017             </tr>
4018           </table>
4019           <input type="submit" name="submit" value="Submit"/>
4020         </form>
4021       </xsl:if>
4022     </div>
4023   </xsl:template>
4024
4025   <xsl:template name="calSuitePrefs">
4026     <h2>Edit Calendar Suite Preferences</h2>
4027     <form name="userPrefsForm" method="post" action="{$calsuite-updatePrefs}">
4028       <table id="eventFormTable">
4029         <tr>
4030           <td class="fieldName">
4031             Calendar Suite:
4032           </td>
4033           <td>
4034             <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
4035           </td>
4036         </tr>
4037         <tr>
4038           <td class="fieldName">
4039             Preferred view:
4040           </td>
4041           <td>
4042             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
4043             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
4044           </td>
4045         </tr>
4046         <tr>
4047           <td class="fieldName">
4048             Preferred view period:
4049           </td>
4050           <td>
4051             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
4052             <select name="viewPeriod">
4053               <!-- picking the selected item could be done with javascript. for
4054                    now, this will do.  -->
4055               <xsl:choose>
4056                 <xsl:when test="$preferredViewPeriod = 'dayView'">
4057                   <option value="dayView" selected="selected">day</option>
4058                 </xsl:when>
4059                 <xsl:otherwise>
4060                   <option value="dayView">day</option>
4061                 </xsl:otherwise>
4062               </xsl:choose>
4063               <xsl:choose>
4064                 <xsl:when test="$preferredViewPeriod = 'todayView'">
4065                   <option value="todayView" selected="selected">today</option>
4066                 </xsl:when>
4067                 <xsl:otherwise>
4068                   <option value="todayView">today</option>
4069                 </xsl:otherwise>
4070               </xsl:choose>
4071               <xsl:choose>
4072                 <xsl:when test="$preferredViewPeriod = 'weekView'">
4073                   <option value="weekView" selected="selected">week</option>
4074                 </xsl:when>
4075                 <xsl:otherwise>
4076                   <option value="weekView">week</option>
4077                 </xsl:otherwise>
4078               </xsl:choose>
4079               <xsl:choose>
4080                 <xsl:when test="$preferredViewPeriod = 'monthView'">
4081                   <option value="monthView" selected="selected">month</option>
4082                 </xsl:when>
4083                 <xsl:otherwise>
4084                   <option value="monthView">month</option>
4085                 </xsl:otherwise>
4086               </xsl:choose>
4087               <xsl:choose>
4088                 <xsl:when test="$preferredViewPeriod = 'yearView'">
4089                   <option value="yearView" selected="selected">year</option>
4090                 </xsl:when>
4091                 <xsl:otherwise>
4092                   <option value="yearView">year</option>
4093                 </xsl:otherwise>
4094               </xsl:choose>
4095             </select>
4096           </td>
4097         </tr>
4098         <tr>
4099           <td class="fieldName">
4100             Skin name:
4101           </td>
4102           <td>
4103             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
4104             <input type="text" name="skin" value="{$skinName}" size="40"/>
4105           </td>
4106         </tr>
4107         <tr>
4108           <td class="fieldName">
4109             Skin style:
4110           </td>
4111           <td>
4112             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
4113             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
4114           </td>
4115         </tr>
4116       </table>
4117       <br />
4118
4119       <input type="submit" name="modPrefs" value="Update"/>
4120       <input type="reset" value="Reset"/>
4121       <input type="submit" name="cancelled" value="Cancel"/>
4122     </form>
4123   </xsl:template>
4124
4125   <!--+++++++++++++++ Timezones ++++++++++++++++++++-->
4126   <xsl:template name="uploadTimezones">
4127     <h2>Upload Timezones</h2>
4128     <form name="peForm" method="post" action="{$timezones-upload}" enctype="multipart/form-data">
4129       <input type="file" name="uploadFile" size="40" value=""/>
4130       <input type="submit" name="doUpload" value="Upload Timezones"/>
4131       <input type="submit" name="cancelled" value="Cancel"/>
4132     </form>
4133   </xsl:template>
4134
4135   <!--+++++++++++++++ Authuser ++++++++++++++++++++-->
4136   <xsl:template name="authUserList">
4137     <h2>Modify Administrators</h2>
4138
4139     <div id="authUserInputForms">
4140       <form name="getUserRolesForm" action="{$authuser-fetchForUpdate}" method="post">
4141         Edit admin roles by userid: <input type="text" name="editAuthUserId" size="20"/>
4142         <input type="submit" value="go" name="submit"/>
4143       </form>
4144     </div>
4145
4146     <table id="commonListTable">
4147       <tr>
4148         <th>UserId</th>
4149         <th>Roles</th>
4150         <th></th>
4151       </tr>
4152
4153       <xsl:for-each select="bedeworkadmin/authUsers/authUser">
4154         <!--<xsl:sort select="account" order="ascending" case-order="upper-first"/>-->
4155         <tr>
4156           <td>
4157             <xsl:value-of select="account"/>
4158           </td>
4159           <td>
4160             <xsl:if test="publicEventUser='true'">
4161               publicEvent; <xsl:text> </xsl:text>
4162             </xsl:if>
4163             <xsl:if test="superUser='true'">
4164               superUser; <xsl:text> </xsl:text>
4165             </xsl:if>
4166             <xsl:if test="alertUser='true'">
4167               alert; <xsl:text> </xsl:text>
4168             </xsl:if>
4169           </td>
4170           <td>
4171             <xsl:variable name="account" select="account"/>
4172             <a href="{$authuser-fetchForUpdate}&amp;editAuthUserId={$account}">
4173               edit
4174             </a>
4175           </td>
4176         </tr>
4177       </xsl:for-each>
4178     </table>
4179   </xsl:template>
4180
4181   <xsl:template name="modAuthUser">
4182     <h2>Update Administrator</h2>
4183     <xsl:variable name="modAuthUserAction" select="/bedeworkadmin/formElements/form/@action"/>
4184     <form action="{$modAuthUserAction}" method="post">
4185       <table id="eventFormTable">
4186         <tr>
4187           <td class="fieldName">
4188             Account:
4189           </td>
4190           <td>
4191             <xsl:value-of select="/bedeworkadmin/formElements/form/account"/>
4192           </td>
4193         </tr>
4194         <tr>
4195           <td class="fieldName">
4196             Alerts:
4197           </td>
4198           <td>
4199             <xsl:copy-of select="/bedeworkadmin/formElements/form/alerts/*"/>
4200           </td>
4201         </tr>
4202         <tr>
4203           <td class="fieldName">
4204             Public Events:
4205           </td>
4206           <td>
4207             <xsl:copy-of select="/bedeworkadmin/formElements/form/publicEvents/*"/>
4208           </td>
4209         </tr>
4210         <tr>
4211           <td class="fieldName">
4212             Super User:
4213           </td>
4214           <td>
4215             <xsl:copy-of select="/bedeworkadmin/formElements/form/superUser/*"/>
4216           </td>
4217         </tr>
4218         <!--<tr>
4219           <td class="optional">
4220             Email:
4221           </td>
4222           <td>
4223             <xsl:copy-of select="/bedeworkadmin/formElements/form/email/*"/>
4224             <span class="fieldInfo"></span>
4225           </td>
4226         </tr>
4227         <tr>
4228           <td class="optional">
4229             Phone:
4230           </td>
4231           <td>
4232             <xsl:copy-of select="/bedeworkadmin/formElements/form/phone/*"/>
4233             <span class="fieldInfo"></span>
4234           </td>
4235         </tr>
4236         <tr>
4237           <td class="optional">
4238             Department:
4239           </td>
4240           <td>
4241             <xsl:copy-of select="/bedeworkadmin/formElements/form/dept/*"/>
4242             <span class="fieldInfo"></span>
4243           </td>
4244         </tr>
4245         <tr>
4246           <td class="optional">
4247             Last name:
4248           </td>
4249           <td>
4250             <xsl:copy-of select="/bedeworkadmin/formElements/form/lastName/*"/>
4251             <span class="fieldInfo"></span>
4252           </td>
4253         </tr>
4254         <tr>
4255           <td class="optional">
4256             First name:
4257           </td>
4258           <td>
4259             <xsl:copy-of select="/bedeworkadmin/formElements/form/firstName/*"/>
4260             <span class="fieldInfo"></span>
4261           </td>
4262         </tr>-->
4263       </table>
4264       <br />
4265
4266       <input type="submit" name="modAuthUser" value="Update"/>
4267       <input type="reset" value="Reset"/>
4268       <input type="submit" name="cancelled" value="Cancel"/>
4269     </form>
4270   </xsl:template>
4271
4272   <!--+++++++++++++++ User Prefs ++++++++++++++++++++-->
4273   <xsl:template name="modPrefs">
4274     <h2>Edit User Preferences</h2>
4275     <form name="userPrefsForm" method="post" action="{$prefs-update}">
4276       <table id="eventFormTable">
4277         <tr>
4278           <td class="fieldName">
4279             User:
4280           </td>
4281           <td>
4282             <xsl:value-of select="/bedeworkadmin/prefs/user"/>
4283             <xsl:variable name="user" select="/bedeworkadmin/prefs/user"/>
4284             <input type="hidden" name="user" value="{$user}"/>
4285           </td>
4286         </tr>
4287         <tr>
4288           <td class="fieldName">
4289             Preferred view:
4290           </td>
4291           <td>
4292             <xsl:variable name="preferredView" select="/bedeworkadmin/prefs/preferredView"/>
4293             <input type="text" name="preferredView" value="{$preferredView}" size="40"/>
4294           </td>
4295         </tr>
4296         <tr>
4297           <td class="fieldName">
4298             Preferred view period:
4299           </td>
4300           <td>
4301             <xsl:variable name="preferredViewPeriod" select="/bedeworkadmin/prefs/preferredViewPeriod"/>
4302             <select name="viewPeriod">
4303               <!-- picking the selected item could be done with javascript. for
4304                    now, this will do.  -->
4305               <xsl:choose>
4306                 <xsl:when test="$preferredViewPeriod = 'dayView'">
4307                   <option value="dayView" selected="selected">day</option>
4308                 </xsl:when>
4309                 <xsl:otherwise>
4310                   <option value="dayView">day</option>
4311                 </xsl:otherwise>
4312               </xsl:choose>
4313               <xsl:choose>
4314                 <xsl:when test="$preferredViewPeriod = 'todayView'">
4315                   <option value="todayView" selected="selected">today</option>
4316                 </xsl:when>
4317                 <xsl:otherwise>
4318                   <option value="todayView">today</option>
4319                 </xsl:otherwise>
4320               </xsl:choose>
4321               <xsl:choose>
4322                 <xsl:when test="$preferredViewPeriod = 'weekView'">
4323                   <option value="weekView" selected="selected">week</option>
4324                 </xsl:when>
4325                 <xsl:otherwise>
4326                   <option value="weekView">week</option>
4327                 </xsl:otherwise>
4328               </xsl:choose>
4329               <xsl:choose>
4330                 <xsl:when test="$preferredViewPeriod = 'monthView'">
4331                   <option value="monthView" selected="selected">month</option>
4332                 </xsl:when>
4333                 <xsl:otherwise>
4334                   <option value="monthView">month</option>
4335                 </xsl:otherwise>
4336               </xsl:choose>
4337               <xsl:choose>
4338                 <xsl:when test="$preferredViewPeriod = 'yearView'">
4339                   <option value="yearView" selected="selected">year</option>
4340                 </xsl:when>
4341                 <xsl:otherwise>
4342                   <option value="yearView">year</option>
4343                 </xsl:otherwise>
4344               </xsl:choose>
4345             </select>
4346           </td>
4347         </tr>
4348         <tr>
4349           <td class="fieldName">
4350             Skin name:
4351           </td>
4352           <td>
4353             <xsl:variable name="skinName" select="/bedeworkadmin/prefs/skinName"/>
4354             <input type="text" name="skin" value="{$skinName}" size="40"/>
4355           </td>
4356         </tr>
4357         <tr>
4358           <td class="fieldName">
4359             Skin style:
4360           </td>
4361           <td>
4362             <xsl:variable name="skinStyle" select="/bedeworkadmin/prefs/skinStyle"/>
4363             <input type="text" name="skinStyle" value="{$skinStyle}" size="40"/>
4364           </td>
4365         </tr>
4366       </table>
4367       <br />
4368
4369       <input type="submit" name="modPrefs" value="Update"/>
4370       <input type="reset" value="Reset"/>
4371       <input type="submit" name="cancelled" value="Cancel"/>
4372     </form>
4373   </xsl:template>
4374
4375   <!--+++++++++++++++ Admin Groups ++++++++++++++++++++-->
4376   <xsl:template name="listAdminGroups">
4377     <h2>Modify Groups</h2>
4378     <form name="adminGroupMembersForm" method="post" action="{$admingroup-initUpdate}">
4379       <xsl:choose>
4380         <xsl:when test="/bedeworkadmin/groups/showMembers='true'">
4381           <input type="radio" name="showAgMembers" value="false" onclick="document.adminGroupMembersForm.submit();"/>
4382           Hide members
4383           <input type="radio" name="showAgMembers" value="true" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
4384           Show members
4385         </xsl:when>
4386         <xsl:otherwise>
4387           <input type="radio" name="showAgMembers" value="false" checked="checked" onclick="document.adminGroupMembersForm.submit();"/>
4388           Hide members
4389           <input type="radio" name="showAgMembers" value="true" onclick="document.adminGroupMembersForm.submit();"/>
4390           Show members
4391         </xsl:otherwise>
4392       </xsl:choose>
4393     </form>
4394
4395     <p>Click on the group name to modify the group owner or description.<br/>
4396     Click "add/remove members" to modify group membership.</p>
4397     <p>
4398       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
4399     </p>
4400     <table id="commonListTable">
4401       <tr>
4402         <th>Name</th>
4403         <th>Description</th>
4404         <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
4405           <th>Members</th>
4406         </xsl:if>
4407         <th></th>
4408       </tr>
4409       <xsl:for-each select="/bedeworkadmin/groups/group">
4410         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
4411         <xsl:variable name="groupName" select="name"/>
4412         <tr>
4413           <td>
4414             <a href="{$admingroup-fetchForUpdate}&amp;adminGroupName={$groupName}">
4415               <xsl:value-of select="name"/>
4416             </a>
4417           </td>
4418           <td>
4419             <xsl:value-of select="desc"/>
4420           </td>
4421           <xsl:if test="/bedeworkadmin/groups/showMembers='true'">
4422             <td>
4423               <xsl:for-each select="members/member/account">
4424                 <xsl:value-of select="."/>&#160;
4425               </xsl:for-each>
4426             </td>
4427           </xsl:if>
4428           <td>
4429             <a href="{$admingroup-fetchForUpdateMembers}&amp;adminGroupName={$groupName}">Add/Remove members</a>
4430           </td>
4431         </tr>
4432       </xsl:for-each>
4433     </table>
4434     <p>
4435       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initAdd}')" value="Add a new group"/>
4436     </p>
4437   </xsl:template>
4438
4439   <xsl:template match="groups" mode="chooseGroup">
4440     <h2>Choose Your Administrative Group</h2>
4441
4442     <table id="commonListTable">
4443
4444       <tr>
4445         <th>Name</th>
4446         <th>Description</th>
4447       </tr>
4448
4449       <xsl:for-each select="group">
4450         <!--<xsl:sort select="name" order="ascending" case-order="upper-first"/>-->
4451         <tr>
4452           <td>
4453             <xsl:variable name="admGroupName" select="name"/>
4454             <a href="{$setup}&amp;adminGroupName={$admGroupName}">
4455               <xsl:copy-of select="name"/>
4456             </a>
4457           </td>
4458           <td>
4459             <xsl:value-of select="desc"/>
4460           </td>
4461         </tr>
4462       </xsl:for-each>
4463     </table>
4464   </xsl:template>
4465
4466   <xsl:template name="modAdminGroup">
4467     <xsl:choose>
4468       <xsl:when test="/bedeworkadmin/creating = 'true'">
4469         <h2>Add Group</h2>
4470       </xsl:when>
4471       <xsl:otherwise>
4472         <h2>Modify Group</h2>
4473       </xsl:otherwise>
4474     </xsl:choose>
4475     <form name="peForm" method="post" action="{$admingroup-update}">
4476       <table id="adminGroupFormTable">
4477         <tr>
4478           <td class="fieldName">
4479             Name:
4480           </td>
4481           <td>
4482             <xsl:choose>
4483               <xsl:when test="/bedeworkadmin/creating = 'true'">
4484                 <xsl:copy-of select="/bedeworkadmin/formElements/form/name/*"/>
4485               </xsl:when>
4486               <xsl:otherwise>
4487                 <xsl:value-of select="/bedeworkadmin/formElements/form/name"/>
4488               </xsl:otherwise>
4489             </xsl:choose>
4490           </td>
4491         </tr>
4492         <tr>
4493           <td class="fieldName">
4494             Description:
4495           </td>
4496           <td>
4497             <xsl:copy-of select="/bedeworkadmin/formElements/form/desc/*"/>
4498           </td>
4499         </tr>
4500         <tr>
4501           <td class="fieldName">
4502             Group owner:
4503           </td>
4504           <td>
4505             <xsl:copy-of select="/bedeworkadmin/formElements/form/groupOwner/*"/>
4506           </td>
4507         </tr>
4508         <tr>
4509           <td class="fieldName">
4510             Events owner:
4511           </td>
4512           <td>
4513             <xsl:copy-of select="/bedeworkadmin/formElements/form/eventsOwner/*"/>
4514           </td>
4515         </tr>
4516       </table>
4517       <table border="0" id="submitTable">
4518         <tr>
4519           <td>
4520             <xsl:choose>
4521               <xsl:when test="/bedeworkadmin/creating = 'true'">
4522                 <input type="submit" name="updateAdminGroup" value="Add Admin Group"/>
4523                 <input type="submit" name="cancelled" value="Cancel"/>
4524                 <input type="reset" value="Clear"/>
4525               </xsl:when>
4526               <xsl:otherwise>
4527                 <input type="submit" name="updateAdminGroup" value="Update Admin Group"/>
4528                 <input type="submit" name="cancelled" value="Cancel"/>
4529                 <input type="reset" value="Reset"/>
4530               </xsl:otherwise>
4531             </xsl:choose>
4532           </td>
4533           <td align="right">
4534             <input type="submit" name="delete" value="Delete"/>
4535           </td>
4536         </tr>
4537       </table>
4538     </form>
4539   </xsl:template>
4540
4541   <xsl:template name="modAdminGroupMembers">
4542     <h2>Update Group Membership</h2>
4543     <p>Enter a userid (for user or group) and click "add" to update group membership.
4544     Click the trash icon to remove a user from the group.</p>
4545
4546     <form name="adminGroupMembersForm" method="post" action="{$admingroup-updateMembers}">
4547       <p>Add member:
4548         <input type="text" name="updGroupMember" size="15"/>
4549         <input type="radio" value="user" name="kind" checked="checked"/>user
4550         <input type="radio" value="group" name="kind"/>group
4551         <input type="submit" name="addGroupMember" value="Add"/>
4552       </p>
4553     </form>
4554     <p>
4555       <input type="button" name="return" onclick="javascript:location.replace('{$admingroup-initUpdate}')" value="Return to Admin Group listing"/>
4556     </p>
4557
4558     <table id="adminGroupFormTable">
4559       <tr>
4560         <td class="fieldName">
4561           Name:
4562         </td>
4563         <td>
4564           <xsl:value-of select="/bedeworkadmin/adminGroup/name"/>
4565         </td>
4566       </tr>
4567       <tr>
4568         <td class="fieldName">
4569           Members:
4570         </td>
4571         <td>
4572           <table id="memberAccountList">
4573             <xsl:for-each select="/bedeworkadmin/adminGroup/members/member">
4574               <xsl:choose>
4575                 <xsl:when test="kind='0'"><!-- kind = user -->
4576                   <tr>
4577                     <td>
4578                       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/>
4579                     </td>
4580                     <td>
4581                       <xsl:value-of select="account"/>
4582                     </td>
4583                     <td>
4584                       <xsl:variable name="acct" select="account"/>
4585                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=user" title="remove">
4586                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
4587                       </a>
4588                     </td>
4589                   </tr>
4590                 </xsl:when>
4591                 <xsl:otherwise><!-- kind = group -->
4592                   <tr>
4593                     <td>
4594                       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
4595                     </td>
4596                     <td>
4597                       <strong>
4598                         <xsl:value-of select="account"/>
4599                       </strong>
4600                     </td>
4601                     <td>
4602                       <xsl:variable name="acct" select="account"/>
4603                       <a href="{$admingroup-updateMembers}&amp;removeGroupMember={$acct}&amp;kind=group" title="remove">
4604                         <img src="{$resourcesRoot}/resources/trashIcon.gif" width="13" height="13" border="0" alt="remove"/>
4605                       </a>
4606                     </td>
4607                   </tr>
4608                 </xsl:otherwise>
4609               </xsl:choose>
4610             </xsl:for-each>
4611           </table>
4612         </td>
4613       </tr>
4614     </table>
4615     <p>
4616       <img src="{$resourcesRoot}/resources/userIcon.gif" width="13" height="13" border="0" alt="user"/> user,
4617       <img src="{$resourcesRoot}/resources/groupIcon.gif" width="13" height="13" border="0" alt="group"/>
4618       <xsl:text> </xsl:text>
4619       <strong>group</strong>
4620     </p>
4621   </xsl:template>
4622
4623   <xsl:template name="deleteAdminGroupConfirm">
4624     <h2>Delete Admin Group?</h2>
4625     <p>The following group will be deleted. Continue?</p>
4626     <p>
4627       <strong>
4628         <xsl:value-of select="/bedeworkadmin/groups/group/name"/>
4629       </strong>:
4630       <xsl:value-of select="/bedeworkadmin/groups/group/desc"/>
4631     </p>
4632     <form name="adminGroupDelete" method="post" action="{$admingroup-delete}">
4633       <input type="submit" name="removeAdminGroupOK" value="Yes: Delete!"/>
4634       <input type="submit" name="cancelled" value="No: Cancel"/>
4635     </form>
4636   </xsl:template>
4637
4638   <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
4639
4640   <xsl:template match="sysStats" mode="showSysStats">
4641     <h2>System Statistics</h2>
4642
4643     <p>
4644       Stats collection:
4645     </p>
4646     <ul>
4647       <li>
4648         <a href="{$stats-update}&amp;enable=yes">enable</a> |
4649         <a href="{$stats-update}&amp;disable=yes">disable</a>
4650       </li>
4651       <li>
4652         <a href="{$stats-update}&amp;fetch=yes">fetch statistics</a>
4653       </li>
4654       <li>
4655         <a href="{$stats-update}&amp;dump=yes">dump stats to log</a>
4656       </li>
4657     </ul>
4658     <table id="statsTable" cellpadding="0">
4659       <xsl:for-each select="*">
4660         <xsl:choose>
4661           <xsl:when test="name(.) = 'header'">
4662             <tr>
4663               <th colspan="2">
4664                 <xsl:value-of select="."/>
4665               </th>
4666             </tr>
4667           </xsl:when>
4668           <xsl:otherwise>
4669             <tr>
4670               <td class="label">
4671                 <xsl:value-of select="label"/>
4672               </td>
4673               <td class="value">
4674                 <xsl:value-of select="value"/>
4675               </td>
4676             </tr>
4677           </xsl:otherwise>
4678         </xsl:choose>
4679       </xsl:for-each>
4680     </table>
4681   </xsl:template>
4682
4683   <!--==== SEARCH RESULT ====-->
4684   <xsl:template name="searchResult">
4685     <h2 class="bwStatusConfirmed">
4686       <div id="searchFilter">
4687         <form name="searchForm" method="post" action="{$search}">
4688           Search:
4689           <input type="text" name="query" size="15">
4690             <xsl:attribute name="value"><xsl:value-of select="/bedeworkadmin/searchResults/query"/></xsl:attribute>
4691           </input>
4692           <input type="submit" name="submit" value="go"/>
4693           Limit:
4694           <xsl:choose>
4695             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'beforeToday'">
4696               <input type="radio" name="searchLimits" value="fromToday"/>today forward
4697               <input type="radio" name="searchLimits" value="beforeToday" checked="checked"/>past dates
4698               <input type="radio" name="searchLimits" value="none"/>all dates
4699             </xsl:when>
4700             <xsl:when test="/bedeworkadmin/searchResults/searchLimits = 'none'">
4701               <input type="radio" name="searchLimits" value="fromToday"/>today forward
4702               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
4703               <input type="radio" name="searchLimits" value="none" checked="checked"/>all dates
4704             </xsl:when>
4705             <xsl:otherwise>
4706               <input type="radio" name="searchLimits" value="fromToday" checked="checked"/>today forward
4707               <input type="radio" name="searchLimits" value="beforeToday"/>past dates
4708               <input type="radio" name="searchLimits" value="none"/>all dates
4709             </xsl:otherwise>
4710           </xsl:choose>
4711         </form>
4712       </div>
4713       Search Result
4714     </h2>
4715     <table id="searchTable" cellpadding="0" cellspacing="0">
4716       <tr>
4717         <th colspan="5">
4718           <xsl:if test="/bedeworkadmin/searchResults/numPages &gt; 1">
4719             <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
4720             <div id="searchPageForm">
4721               page:
4722               <xsl:if test="/bedeworkadmin/searchResults/curPage != 1">
4723                 <xsl:variable name="prevPage" select="number($curPage) - 1"/>
4724                 &lt;<a href="{$search-next}&amp;pageNum={$prevPage}">prev</a>
4725               </xsl:if>
4726               <xsl:text> </xsl:text>
4727
4728               <xsl:call-template name="searchResultPageNav">
4729                 <xsl:with-param name="page">
4730                   <xsl:choose>
4731                     <xsl:when test="number($curPage) - 10 &lt; 1">1</xsl:when>
4732                     <xsl:otherwise><xsl:value-of select="number($curPage) - 6"/></xsl:otherwise>
4733                   </xsl:choose>
4734                 </xsl:with-param>
4735               </xsl:call-template>
4736
4737               <xsl:text> </xsl:text>
4738               <xsl:choose>
4739                 <xsl:when test="$curPage != /bedeworkadmin/searchResults/numPages">
4740                   <xsl:variable name="nextPage" select="number($curPage) + 1"/>
4741                   <a href="{$search-next}&amp;pageNum={$nextPage}">next</a>&gt;
4742                 </xsl:when>
4743                 <xsl:otherwise>
4744                   <span class="hidden">next&gt;</span><!-- occupy the space to keep the navigation from moving around -->
4745                 </xsl:otherwise>
4746               </xsl:choose>
4747             </div>
4748           </xsl:if>
4749           <xsl:value-of select="/bedeworkadmin/searchResults/resultSize"/>
4750           result<xsl:if test="/bedeworkadmin/searchResults/resultSize != 1">s</xsl:if> returned
4751           for <em><xsl:value-of select="/bedeworkadmin/searchResults/query"/></em>
4752         </th>
4753       </tr>
4754       <xsl:if test="/bedeworkadmin/searchResults/searchResult">
4755         <tr class="fieldNames">
4756           <td>
4757             relevance
4758           </td>
4759           <td>
4760             summary
4761           </td>
4762           <td>
4763             date &amp; time
4764           </td>
4765           <td>
4766             calendar
4767           </td>
4768           <td>
4769             location
4770           </td>
4771         </tr>
4772       </xsl:if>
4773       <xsl:for-each select="/bedeworkadmin/searchResults/searchResult">
4774         <xsl:variable name="subscriptionId" select="event/subscription/id"/>
4775         <xsl:variable name="calPath" select="event/calendar/encodedPath"/>
4776         <xsl:variable name="guid" select="event/guid"/>
4777         <xsl:variable name="recurrenceId" select="event/recurrenceId"/>
4778         <tr>
4779           <td class="relevance">
4780             <xsl:value-of select="ceiling(number(score)*100)"/>%
4781             <img src="{$resourcesRoot}/images/spacer.gif" height="4" class="searchRelevance">
4782               <xsl:attribute name="width"><xsl:value-of select="ceiling((number(score)*100) div 1.5)"/></xsl:attribute>
4783             </img>
4784           </td>
4785           <td>
4786             <a href="{$event-fetchForDisplay}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
4787               <xsl:value-of select="event/summary"/>
4788             </a>
4789           </td>
4790           <td>
4791             <xsl:value-of select="event/start/longdate"/>
4792             <xsl:text> </xsl:text>
4793             <xsl:value-of select="event/start/time"/>
4794             <xsl:choose>
4795               <xsl:when test="event/start/longdate != event/end/longdate">
4796                 - <xsl:value-of select="event/start/longdate"/>
4797                 <xsl:text> </xsl:text>
4798                 <xsl:value-of select="event/end/time"/>
4799               </xsl:when>
4800               <xsl:when test="event/start/time != event/end/time">
4801                 - <xsl:value-of select="event/end/time"/>
4802               </xsl:when>
4803             </xsl:choose>
4804           </td>
4805           <td>
4806             <xsl:value-of select="event/calendar/name"/>
4807           </td>
4808           <td>
4809             <xsl:value-of select="event/location/address"/>
4810           </td>
4811         </tr>
4812       </xsl:for-each>
4813     </table>
4814   </xsl:template>
4815
4816   <xsl:template name="searchResultPageNav">
4817     <xsl:param name="page">1</xsl:param>
4818     <xsl:variable name="curPage" select="/bedeworkadmin/searchResults/curPage"/>
4819     <xsl:variable name="numPages" select="/bedeworkadmin/searchResults/numPages"/>
4820     <xsl:variable name="endPage">
4821       <xsl:choose>
4822         <xsl:when test="number($curPage) + 6 &gt; number($numPages)"><xsl:value-of select="$numPages"/></xsl:when>
4823         <xsl:otherwise><xsl:value-of select="number($curPage) + 6"/></xsl:otherwise>
4824       </xsl:choose>
4825     </xsl:variable>
4826     <xsl:choose>
4827       <xsl:when test="$page = $curPage">
4828         <xsl:value-of select="$page"/>
4829       </xsl:when>
4830       <xsl:otherwise>
4831         <a href="{$search-next}&amp;pageNum={$page}">
4832           <xsl:value-of select="$page"/>
4833         </a>
4834       </xsl:otherwise>
4835     </xsl:choose>
4836     <xsl:text> </xsl:text>
4837     <xsl:if test="$page &lt; $endPage">
4838        <xsl:call-template name="searchResultPageNav">
4839          <xsl:with-param name="page" select="number($page)+1"/>
4840       </xsl:call-template>
4841     </xsl:if>
4842   </xsl:template>
4843
4844   <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
4845
4846   <xsl:template name="header">
4847     <div id="header">
4848       <a href="{$urlPrefix}">
4849         <img id="logo"
4850             alt="logo"
4851             src="{$resourcesRoot}/resources/bedeworkAdminLogo.gif"
4852             width="217"
4853             height="40"
4854             border="0"/>
4855       </a>
4856       <!-- set the page heading: -->
4857       <h1>
4858         <xsl:choose>
4859           <xsl:when test="/bedeworkadmin/page='modEvent' or /bedeworkadmin/page='eventList' or /bedeworkadmin/page='displayEvent'">
4860             Manage Events
4861           </xsl:when>
4862           <xsl:when test="/bedeworkadmin/page='contactList' or /bedeworkadmin/page='modContact' or /bedeworkadmin/page='deleteContactConfirm'">
4863             Manage Contacts
4864           </xsl:when>
4865           <xsl:when test="/bedeworkadmin/page='locationList' or /bedeworkadmin/page='modLocation' or /bedeworkadmin/page='deleteLocationConfirm'">
4866             Manage Locations
4867           </xsl:when>
4868           <xsl:when test="/bedeworkadmin/page='calendarList' or /bedeworkadmin/page='modCalendar' or /bedeworkadmin/page='calendarReferenced' or /bedeworkadmin/page='deleteCalendarConfirm'">
4869             Manage Calendars
4870           </xsl:when>
4871           <xsl:when test="/bedeworkadmin/page='calendarDescriptions' or /bedeworkadmin/page='displayCalendar'">
4872             Public Calendars
4873           </xsl:when>
4874           <xsl:when test="/bedeworkadmin/page='subscriptions' or /bedeworkadmin/page='modSubscription'">
4875             Manage Subscriptions
4876           </xsl:when>
4877           <xsl:when test="/bedeworkadmin/page='views' or /bedeworkadmin/page='modView'">
4878             Manage Views
4879           </xsl:when>
4880           <xsl:when test="/bedeworkadmin/page='modSyspars'">
4881             Manage System Preferences
4882           </xsl:when>
4883           <xsl:when test="/bedeworkadmin/page='authUserList' or /bedeworkadmin/page='modAuthUser'">
4884             Manage Public Events Administrators
4885           </xsl:when>
4886           <xsl:when test="/bedeworkadmin/page='chooseGroup'">
4887             Choose Administrative Group
4888           </xsl:when>
4889           <xsl:when test="/bedeworkadmin/page='adminGroupList' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroup' or /bedeworkadmin/page='modAdminGroupMembers'">
4890             Manage Administrative Groups
4891           </xsl:when>
4892           <xsl:when test="/bedeworkadmin/page='noGroup'">
4893             No Administrative Group
4894           </xsl:when>
4895           <xsl:when test="/bedeworkadmin/page='uploadTimezones'">
4896             Manage Time Zones
4897           </xsl:when>
4898           <xsl:when test="/bedeworkadmin/page='noAccess'">
4899             Access Denied
4900           </xsl:when>
4901           <xsl:when test="/bedeworkadmin/page='error'">
4902             Error
4903           </xsl:when>
4904           <xsl:otherwise>
4905             Bedework Calendar Administration
4906           </xsl:otherwise>
4907         </xsl:choose>
4908       </h1>
4909
4910       <xsl:if test="/bedeworkadmin/message">
4911         <div id="messages">
4912           <p>
4913             <xsl:apply-templates select="/bedeworkadmin/message"/>
4914           </p>
4915         </div>
4916       </xsl:if>
4917       <xsl:if test="/bedeworkadmin/error">
4918         <div id="errors">
4919           <p>
4920             <xsl:apply-templates select="/bedeworkadmin/error"/>
4921           </p>
4922         </div>
4923       </xsl:if>
4924
4925     </div>
4926     <table id="statusBarTable">
4927       <tr>
4928         <td class="leftCell">
4929           <a href="{$setup}">Main Menu</a> |
4930           <a href="{$publicCal}" target="calendar">Launch Calendar</a> |
4931           <a href="{$logout}">Log Out</a>
4932         </td>
4933         <xsl:if test="/bedeworkadmin/userInfo/user">
4934           <td class="rightCell">
4935             <xsl:if test="/bedeworkadmin/currentCalSuite/name">
4936               Calendar Suite:
4937               <span class="status">
4938                 <xsl:value-of select="/bedeworkadmin/currentCalSuite/name"/>
4939               </span>
4940               &#160;
4941             </xsl:if>
4942             Logged in as:
4943             <span class="status">
4944               <xsl:value-of select="/bedeworkadmin/userInfo/user"/>
4945             </span>
4946             &#160;
4947             <xsl:if test="/bedeworkadmin/userInfo/group">
4948               Group:
4949               <span class="status">
4950                 <xsl:value-of select="/bedeworkadmin/userInfo/group"/>
4951               </span>
4952             </xsl:if>
4953           </td>
4954         </xsl:if>
4955       </tr>
4956     </table>
4957     <div id="titleBar">
4958       CALENDAR of EVENTS
4959     </div>
4960   </xsl:template>
4961
4962   <!--==== FOOTER ====-->
4963   <xsl:template name="footer">
4964     <div id="footer">
4965       <a href="http://www.bedework.org/">Bedework Website</a> |
4966       <!-- Enable the following two items when debugging skins only -->
4967       <a href="?noxslt=yes">show XML</a> |
4968       <a href="?refreshXslt=yes">refresh XSLT</a>
4969     </div>
4970   </xsl:template>
4971 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.