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

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

admin client: edit event form categories once again correctly set

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