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

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

admin client: add 24/12 hour preference to system params (incomplete)

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