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

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

user and admin web clients:

- correctly set recurrence until date

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