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

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

update UI for access control on calendar suites

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