[Bedework-commit] r609 - in trunk/calendar3: bldfiles common/src/edu/rpi/sss/util/jsp config/configs deployment deployment/dumprestore/shellscr deployment/publiccaldav/webapp deployment/termination/webapp deployment/usercaldav/webapp deployment/webadmin/webapp deployment/webconfig/webapp deployment/webpublic deployment/webpublic/uportal2 deployment/webpublic/uportal2/resources deployment/webpublic/uportal2/resources/demoskins deployment/webpublic/uportal2/resources/demoskins/default deployment/webpublic/uportal2/resources/demoskins/default/PDA deployment/webpublic/uportal2/resources/demoskins/default/default deployment/webpublic/uportal2/resources/demoskins/images deployment/webpublic/uportal2/resources/demoskins/images/soecal deployment/webpublic/uportal2/resources/demoskins/images/videocal deployment/webpublic/webapp deployment/webuser/webapp docs webcommon/src/org/bedework/webcommon

svnadmin at bedework.org svnadmin at bedework.org
Tue Jun 20 09:42:17 EDT 2006


Author: douglm
Date: 2006-06-20 09:42:12 -0400 (Tue, 20 Jun 2006)
New Revision: 609

Added:
   trunk/calendar3/deployment/webpublic/uportal2/
   trunk/calendar3/deployment/webpublic/uportal2/build.xml
   trunk/calendar3/deployment/webpublic/uportal2/pluto-portlet.tld
   trunk/calendar3/deployment/webpublic/uportal2/portlet.xml
   trunk/calendar3/deployment/webpublic/uportal2/resources/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/default.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/ical.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/vcal.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/xsltdir.properties
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/blue.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/cleanXml.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/common.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/default.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/errors.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/green.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/ical.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/jsToday.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/print.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/red.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/rss.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/vcal.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.css
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.xsl
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/xsltdir.properties
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/xsltdir.properties
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon-small.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/addref.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedework.ico
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo2.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/calIcon-sm.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/catIcon.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-left.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-right.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-left.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-right.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-left.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-right.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeBedeworkLogo.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeTitleBg.jpg
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/spacer.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-left.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-right.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-refresh.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-on.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon_small.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-print-icon.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-on.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-on.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-space.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-on.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-off.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-on.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-left.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-right.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-space.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/tentativeLines.gif
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/videocal/
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/videocal/calBackground1.jpg
   trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/xsltdir.properties
   trunk/calendar3/deployment/webpublic/uportal2/struts-portlet-config.xml
   trunk/calendar3/deployment/webpublic/uportal2/struts-portlet.tld
Modified:
   trunk/calendar3/bldfiles/buildwar.xml
   trunk/calendar3/common/src/edu/rpi/sss/util/jsp/UtilAbstractAction.java
   trunk/calendar3/config/configs/democal.options.xml
   trunk/calendar3/config/configs/democal.properties
   trunk/calendar3/deployment/build.xml
   trunk/calendar3/deployment/dumprestore/shellscr/build.xml
   trunk/calendar3/deployment/publiccaldav/webapp/build.xml
   trunk/calendar3/deployment/termination/webapp/build.xml
   trunk/calendar3/deployment/usercaldav/webapp/build.xml
   trunk/calendar3/deployment/webadmin/webapp/build.xml
   trunk/calendar3/deployment/webconfig/webapp/build.xml
   trunk/calendar3/deployment/webpublic/webapp/build.xml
   trunk/calendar3/deployment/webuser/webapp/build.xml
   trunk/calendar3/docs/BedeworkDeploymentManual.odt
   trunk/calendar3/webcommon/src/org/bedework/webcommon/BwAbstractAction.java
   trunk/calendar3/webcommon/src/org/bedework/webcommon/ConfigBase.java
Log:
More uportal integration

When running as a portlet will now suffix the approot with "_" + protletPlatform.

Allows us to have a separate set of stylesheets for portlet mode as against stand-alone mode.

Committed a copy of the current set of standalone stylesheets ready for customization.

Also made more run-time properties available via the options object.


Modified: trunk/calendar3/bldfiles/buildwar.xml
===================================================================
--- trunk/calendar3/bldfiles/buildwar.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/bldfiles/buildwar.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -43,6 +43,7 @@
   <target name="init" depends="init.common,init.uportal2,init.j2ee,init.standalone" />
 
   <target name="init.common">
+    <!--
     <condition property="org.bedework.build.for.jetspeed2">
       <equals arg1="jetspeed2" arg2="${propval.app.portal.platform}"/>
     </condition>
@@ -54,6 +55,7 @@
     <condition property="org.bedework.build.for.jboss">
       <equals arg1="jboss" arg2="${org.bedework.global.j2ee.platform}"/>
     </condition>
+    -->
 
     <!-- Destinations - where we build an unwrapped war -->
     <property name="app.dest.war"
@@ -151,6 +153,9 @@
       <filter token="APP-DESCRIPTION"
               value="${propval.app.description}" />
 
+      <filter token="PORTAL-PLATFORM"
+              value="${propval.app.portal.platform}"/>
+
       <filter token="SERVLET-CLASS"
               value="${propval.app.servlet.class}"/>
 
@@ -177,6 +182,8 @@
               value="${propval.app.default.contenttype}" />
       <filter token="NOXSLT"
               value="${propval.app.noxslt}" />
+      <filter token="APPLICATION-ROOT"
+              value="${propval.app.root}" />
 
       <filter token="APP-GUESTMODE"
               value="${propval.app.guestmode}" />
@@ -216,7 +223,12 @@
           file="${org.bedework.config.properties}" />
 
     <copy tofile="${app.dest.properties}/options.xml"
-          file="${org.bedework.config.options}" />
+          file="${org.bedework.config.options}" >
+      <filterset>
+        <filter token="RPI-DEBUG" value="${app.debug.val}"/>
+      </filterset>
+      <filterset refid="property.filters" />
+    </copy>
 
     <!-- Make a modified copy of the web.xml file -->
     <copy tofile="${app.dest.web.xml}"

Modified: trunk/calendar3/common/src/edu/rpi/sss/util/jsp/UtilAbstractAction.java
===================================================================
--- trunk/calendar3/common/src/edu/rpi/sss/util/jsp/UtilAbstractAction.java	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/common/src/edu/rpi/sss/util/jsp/UtilAbstractAction.java	2006-06-20 13:42:12 UTC (rev 609)
@@ -182,7 +182,7 @@
 
   private boolean noActionErrors = false;
 
-  private boolean isPortlet;
+  protected boolean isPortlet;
 
   /** This is the routine which does the work.
    *

Modified: trunk/calendar3/config/configs/democal.options.xml
===================================================================
--- trunk/calendar3/config/configs/democal.options.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/config/configs/democal.options.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -85,6 +85,9 @@
           <minIncrement>5</minIncrement>
 
           <logPrefix>PubEventsAdmin</logPrefix>
+
+          <appRoot>@APPLICATION-ROOT@</appRoot>
+          <portalPlatform>@PORTAL-PLATFORM@</portalPlatform>
         </CalAdmin>
 
         <!-- ==================================================================
@@ -106,6 +109,9 @@
 
           <logPrefix>PubEvents</logPrefix>
 
+          <appRoot>@APPLICATION-ROOT@</appRoot>
+          <portalPlatform>@PORTAL-PLATFORM@</portalPlatform>
+
           <refreshAction>setup.do</refreshAction>
           <refreshInterval>300</refreshInterval>
 
@@ -131,6 +137,9 @@
 
           <logPrefix>SoEDept</logPrefix>
 
+          <appRoot>@APPLICATION-ROOT@</appRoot>
+          <portalPlatform>@PORTAL-PLATFORM@</portalPlatform>
+
           <refreshAction>setup.do</refreshAction>
           <refreshInterval>300</refreshInterval>
 
@@ -156,6 +165,9 @@
 
           <logPrefix>PersonalCalendar</logPrefix>
 
+          <appRoot>@APPLICATION-ROOT@</appRoot>
+          <portalPlatform>@PORTAL-PLATFORM@</portalPlatform>
+
           <refreshAction>setup.do</refreshAction>
           <refreshInterval>300</refreshInterval>
         </UserCal>

Modified: trunk/calendar3/config/configs/democal.properties
===================================================================
--- trunk/calendar3/config/configs/democal.properties	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/config/configs/democal.properties	2006-06-20 13:42:12 UTC (rev 609)
@@ -98,6 +98,8 @@
 org.bedework.app.Events.version=3.1
 org.bedework.app.Events.default.contenttype=text/xml
 org.bedework.app.Events.web.xml=guest/web.xml
+#org.bedework.app.Events.portal.platform=uportal2
+#org.bedework.app.Events.portlet.name=PublicCal
 
 org.bedework.app.Events.war.name=cal
 org.bedework.app.Events.ear.name=cal

Modified: trunk/calendar3/deployment/build.xml
===================================================================
--- trunk/calendar3/deployment/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -242,6 +242,22 @@
       <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/>
     </propertyset>
 
+    <!--
+    <property name="${propval.app.portal.platform}" value="" />
+
+    <condition property="org.bedework.build.for.jetspeed2">
+      <equals arg1="jetspeed2" arg2="${propval.app.portal.platform}"/>
+    </condition>
+
+    <condition property="org.bedework.build.for.uportal2">
+      <equals arg1="uportal2" arg2="${propval.app.portal.platform}"/>
+    </condition>
+
+    <condition property="org.bedework.build.for.jboss">
+      <equals arg1="jboss" arg2="${org.bedework.global.j2ee.platform}"/>
+    </condition>
+    -->
+
     <property name="org.bedework.deploy.type.dir"
               location="${org.bedework.deployment.base}/termination" />
 
@@ -285,6 +301,22 @@
       <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/>
     </propertyset>
 
+    <!--
+    <property name="${propval.app.portal.platform}" value="" />
+
+    <condition property="org.bedework.build.for.jetspeed2">
+      <equals arg1="jetspeed2" arg2="${propval.app.portal.platform}"/>
+    </condition>
+
+    <condition property="org.bedework.build.for.uportal2">
+      <equals arg1="uportal2" arg2="${propval.app.portal.platform}"/>
+    </condition>
+
+    <condition property="org.bedework.build.for.jboss">
+      <equals arg1="jboss" arg2="${org.bedework.global.j2ee.platform}"/>
+    </condition>
+    -->
+
     <property name="org.bedework.deploy.type.dir"
               location="${org.bedework.deployment.base}/${org.bedework.deploy.type}" />
 

Modified: trunk/calendar3/deployment/dumprestore/shellscr/build.xml
===================================================================
--- trunk/calendar3/deployment/dumprestore/shellscr/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/dumprestore/shellscr/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwdumpres.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init" >
     <dirname property="this.dir" file="${ant.file}"/>
 

Modified: trunk/calendar3/deployment/publiccaldav/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/publiccaldav/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/publiccaldav/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwpubcaldav.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init" >
     <!-- and define some properties based on those -->
     <property name="app.war.file"

Modified: trunk/calendar3/deployment/termination/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/termination/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/termination/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwpubcaldav.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init">
   </target>
 

Modified: trunk/calendar3/deployment/usercaldav/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/usercaldav/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/usercaldav/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwusercaldav.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init" >
     <!-- and define some properties based on those -->
     <property name="app.war.file"

Modified: trunk/calendar3/deployment/webadmin/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/webadmin/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/webadmin/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwadmin.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init">
     <!-- and define some properties based on those -->
     <property name="app.war.file"

Modified: trunk/calendar3/deployment/webconfig/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/webconfig/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/webconfig/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwconfig.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init" >
     <!-- and define some properties based on those -->
     <property name="app.war.file"

Added: trunk/calendar3/deployment/webpublic/uportal2/build.xml
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/build.xml	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+
+<!-- ===================================================================
+     uportal2 portlet deployer
+     =================================================================== -->
+
+<project name="bwpublic.uportal2.deploy" default="deploy" >
+  <target name="init">
+    <!-- and define some properties based on those -->
+    <property name="app.war.file"
+              location="${dist.home}/${propval.app.war.name}.war" />
+
+    <dirname property="this.dir" file="${ant.file}"/>
+
+    <property name="app.sou.dir" location="${org.bedework.webclient.base}" />
+
+    <!-- Flag as struts -->
+    <property name="org.bedework.strutsapp" value="true" />
+
+    <!-- Properties that differ from the personal client -->
+    <property name="app.web.xml"
+              value="${app.sou.dir}/war/WEB-INF/publicweb.xml" />
+
+    <!-- This should be in the config stuff -->
+    <property name="propval.directory.browsing.disallowed"
+              value="${app.directory.browsing.disallowed}" />
+
+    <property name="propval.app.guestmode" value="true" />
+
+    <property name="app.resources.dir"
+              location="${this.dir}/resources" />
+  </target>
+
+  <!-- =================================================================
+       The "deploy" target first builds a configured component then copies
+       all required files to the appropriate servlet container directories.
+
+       Currently this only works for the quickstart distribution.
+       For example, it does not handle deploying into jboss and copying
+       resource files (images, stylesheets) to external locations.
+       ================================================================= -->
+
+  <target name="deploy" depends="init,build.configured" >
+    <!-- Copy the resources into the server -->
+    <echo message="###################${app.resources.dir}/${propval.app.skinset.name}" />
+    <delete dir="${org.bedework.appserver.dir}/${propval.app.resources.dir}_${propval.app.portal.platform}" />
+    <copy todir="${org.bedework.appserver.dir}/${propval.app.resources.dir}_${propval.app.portal.platform}">
+      <fileset dir="${app.resources.dir}/${propval.app.skinset.name}" />
+    </copy>
+  </target>
+
+  <target name="build.configured" depends="init" >
+  </target>
+</project>
+

Added: trunk/calendar3/deployment/webpublic/uportal2/pluto-portlet.tld
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/pluto-portlet.tld	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/pluto-portlet.tld	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib PUBLIC
+  "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
+  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<taglib>
+    <tlibversion>1.0</tlibversion>
+    <jspversion>1.1</jspversion>
+    <shortname>portlet</shortname>
+    <uri>http://java.sun.com/portlet</uri>
+    <tag>
+        <name>defineObjects</name>
+        <tagclass>org.apache.pluto.tags.DefineObjectsTag</tagclass>
+        <teiclass>org.apache.pluto.tags.DefineObjectsTag$TEI</teiclass>
+        <bodycontent>empty</bodycontent>
+    </tag>
+    <tag>
+        <name>param</name>
+        <tagclass>org.apache.pluto.tags.ParamTag</tagclass>
+        <bodycontent>empty</bodycontent>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+    <tag>
+        <name>actionURL</name>
+        <tagclass>org.apache.pluto.tags.ActionURLTag</tagclass>
+        <teiclass>org.apache.pluto.tags.BasicURLTag$TEI</teiclass>
+        <bodycontent>JSP</bodycontent>
+        <attribute>
+            <name>windowState</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>portletMode</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>secure</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+    <tag>
+        <name>renderURL</name>
+        <tagclass>org.apache.pluto.tags.RenderURLTag</tagclass>
+        <teiclass>org.apache.pluto.tags.BasicURLTag$TEI</teiclass>
+        <bodycontent>JSP</bodycontent>
+        <attribute>
+            <name>windowState</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>portletMode</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>secure</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+        <attribute>
+            <name>var</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+    </tag>
+    <tag>
+        <name>namespace</name>
+        <tagclass>org.apache.pluto.tags.NamespaceTag</tagclass>
+        <bodycontent>empty</bodycontent>
+    </tag>
+</taglib>
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/portlet.xml
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/portlet.xml	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/portlet.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Based on jpetstore example application with contributions from:
+
+  Author: Xavier Lawrence @ jahia . com
+  Author: Mike Douglass    douglm at rpi.edu
+-->
+<portlet-app id="calApp" version="1.0">
+  <portlet id="PublicEventsPortlet">
+    <portlet-name>PublicCal</portlet-name>
+    <display-name>Public Events Display</display-name>
+    <portlet-class>org.apache.portals.bridges.struts.StrutsPortlet</portlet-class>
+    <init-param>
+      <name>ServletContextProvider</name>
+      <value>ca.mun.portal.strutsbridge.PortalServletContextProvider</value>
+    </init-param>
+    <init-param>
+      <name>ViewPage</name>
+      <value>/initialise.rdo</value>
+    </init-param>
+    <description>
+        The Bedework application displays public events.
+    </description>
+    <expiration-cache>-1</expiration-cache>
+    <supports>
+      <mime-type>text/html</mime-type>
+      <portlet-mode>VIEW</portlet-mode>
+      <!--<portlet-mode>HELP</portlet-mode>-->
+    </supports>
+    <portlet-info>
+      <title>PublicCal</title>
+      <short-title>PublicCal</short-title>
+      <keywords>Struts, Bedework, Calendar, Public, Events</keywords>
+    </portlet-info>
+  </portlet>
+</portlet-app>
+

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/default.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/default.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/default.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="html"
+  indent="yes"
+  media-type="text/html"
+  doctype-public="-//W3C//DTD HTML 3.2 Final//EN"
+  standalone="yes"
+/>
+  <!-- ============================ -->
+  <!-- PDA STYLESHEET               -->
+  <!-- designed for Palm Treo 600   -->
+  <!-- ============================ -->
+
+  <!-- DEFINE GLOBAL CONSTANTS -->
+  <!-- URL of html resources (images, css, other html); by default this is
+       set to the application root -->
+  <xsl:variable name="resourcesRoot" select="/ucalendar/approot"/>
+
+  <!-- URL of the XSL template directory -->
+  <!-- The approot is an appropriate place to put
+       included stylesheets and xml fragments. These are generally
+       referenced relatively (like errors.xsl and messages.xsl above);
+       this variable is here for your convenience if you choose to
+       reference it explicitly.  It is not used in this stylesheet, however,
+       and can be safely removed if you so choose. -->
+  <xsl:variable name="appRoot" select="/ucalendar/approot"/>
+
+  <!-- URL of the web application - includes web context -->
+  <xsl:variable name="urlPrefix" select="/ucalendar/urlprefix"/>
+
+  <xsl:variable name="prevdate" select="/ucalendar/previousdate"/>
+  <xsl:variable name="nextdate" select="/ucalendar/nextdate"/>
+  <xsl:variable name="curdate" select="/ucalendar/currentdate"/>
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/">
+    <html lang="en">
+      <head>
+        <title>Calendar of Events</title>
+      </head>
+      <body>
+        <xsl:call-template name="headBar"/>
+        <!-- <xsl:call-template name="alerts"/> -->
+        <xsl:choose>
+          <xsl:when test="/ucalendar/page='event'">
+            <!-- show an event -->
+            <xsl:apply-templates select="/ucalendar/event"/>
+          </xsl:when>
+          <xsl:when test="/ucalendar/page='calendars'">
+            <!-- show a list of all calendars -->
+            <xsl:apply-templates select="/ucalendar/calendars"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <!-- otherwise, show the eventsCalendar -->
+            <!-- main eventCalendar content -->
+            <xsl:call-template name="listView"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- <xsl:if test="/ucalendar/periodname!='Year' and /ucalendar/periodname!='Day'">
+          <p align="center">
+            <xsl:call-template name="searchBar"/>
+            <xsl:call-template name="navigation"/>
+          </p>
+        </xsl:if>-->
+        <!-- footer -->
+        <xsl:call-template name="footer"/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+    <table id="eventTable" cellpadding="0" cellspacing="0">
+      <tr>
+        <th align="left" valign="top">Event:</th>
+        <th align="left" valign="top">
+          <xsl:choose>
+            <xsl:when test="link != ''">
+              <xsl:variable name="link" select="link"/>
+              <a href="{$link}">
+                <xsl:value-of select="summary"/>
+              </a>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="summary"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </th>
+      </tr>
+      <tr>
+        <td valign="top">When:</td>
+        <td valign="top">
+          <!-- was using abbrev dayname: substring(start/dayname,1,3) -->
+          <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
+          <span class="time"><xsl:value-of select="start/time"/></span>
+          <xsl:if test="end/time != '' or end/longdate != start/longdate"> - </xsl:if>
+          <xsl:if test="end/longdate != start/longdate"><xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text></xsl:if>
+          <xsl:if test="end/time != ''"><span class="time"><xsl:value-of select="end/time"/></span></xsl:if>
+        </td>
+      </tr>
+      <tr>
+        <td valign="top">Where:</td>
+        <td valign="top">
+          <xsl:choose>
+            <xsl:when test="location/link=''">
+              <xsl:value-of select="location/address"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:variable name="locationLink" select="location/link"/>
+              <a href="{$locationLink}">
+                <xsl:value-of select="location/address"/>
+              </a>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:if test="location/subaddress!=''">
+            <br/><xsl:value-of select="location/subaddress"/>
+          </xsl:if>
+        </td>
+      </tr>
+      <tr>
+        <td valign="top">Desc:</td>
+        <td valign="top">
+          <xsl:value-of select="description"/>
+        </td>
+      </tr>
+       <xsl:if test="cost!=''">
+        <tr>
+          <td valign="top">Cost:</td>
+          <td colspan="2" valign="top"><xsl:value-of select="cost"/></td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="link != ''">
+        <tr>
+          <td valign="top">See:</td>
+          <td valign="top">
+            <xsl:variable name="link" select="link"/>
+            <a href="{$link}"><xsl:value-of select="link"/></a>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="sponsor/name!='none'">
+        <tr>
+          <td valign="top">Contact:</td>
+          <td valign="top">
+            <xsl:choose>
+              <xsl:when test="sponsor/link=''">
+                <xsl:value-of select="sponsor/name"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:variable name="sponsorLink" select="sponsor/link"/>
+                <a href="{$sponsorLink}">
+                  <xsl:value-of select="sponsor/name"/>
+                </a>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="sponsor/phone!=''">
+              <br /><xsl:value-of select="sponsor/phone"/>
+            </xsl:if>
+          </td>
+        </tr>
+      </xsl:if>
+    </table>
+    <p align="center">
+      <xsl:variable name="id" select="id"/>
+      <xsl:variable name="vcalName" select="concat($id,'.vcs')"/>
+      <b>
+        <a href="{$urlPrefix}/eventView.do?eventId={$id}&amp;nocache=no&amp;skinName=vcal&amp;contentType=text/calendar&amp;contentName={$vcalName}" title="Download event as vCal">
+          Download this Event
+        </a>
+      </b>
+    </p>
+  </xsl:template>
+
+  <!--==== LIST VIEW  (for day, week, and month) ====-->
+  <xsl:template name="listView">
+    <xsl:choose>
+      <xsl:when test="count(/ucalendar/eventscalendar/year/month/week/day/event)=0">
+        There are no events posted
+        <xsl:choose>
+          <xsl:when test="/ucalendar/periodname='Day'">
+            today<xsl:if test="/ucalendar/title!=''"> for <strong><xsl:value-of select="/ucalendar/title"/></strong></xsl:if><xsl:if test="/ucalendar/search!=''"> for search term <strong>"<xsl:value-of select="/ucalendar/search"/>"</strong></xsl:if>.
+          </xsl:when>
+          <xsl:when test="/ucalendar/periodname='Month'">
+            this month<xsl:if test="/ucalendar/title!=''"> for <strong><xsl:value-of select="/ucalendar/title"/></strong></xsl:if><xsl:if test="/ucalendar/search!=''"> for search term <strong>"<xsl:value-of select="/ucalendar/search"/>"</strong></xsl:if>.
+          </xsl:when>
+          <xsl:otherwise>
+            this week<xsl:if test="/ucalendar/title!=''"> for <strong><xsl:value-of select="/ucalendar/title"/></strong></xsl:if><xsl:if test="/ucalendar/search!=''"> for search term <strong>"<xsl:value-of select="/ucalendar/search"/>"</strong></xsl:if>.
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:for-each select="/ucalendar/eventscalendar/year/month/week/day[count(event)!=0]">
+          <xsl:if test="/ucalendar/periodname='Week' or /ucalendar/periodname='Month' or /ucalendar/periodname=''">
+            <h3>
+              <xsl:variable name="date" select="date"/>
+              <a href="{$urlPrefix}/setView.do?viewType=dayView&amp;date={$date}">
+                <xsl:value-of select="name"/>, <xsl:value-of select="longdate"/>
+              </a>
+            </h3>
+          </xsl:if>
+          <xsl:for-each select="event">
+            <xsl:variable name="id" select="id"/>
+            <dl>
+              <dt>
+                <xsl:choose>
+                  <xsl:when test="start/time!=''">
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">
+                    <xsl:choose>
+                      <xsl:when test="parent::day/shortdate != start/shortdate">
+                        <span class="littleArrow">&#171;</span>&#160;
+                        <xsl:value-of select="start/month"/>/<xsl:value-of select="start/day"/>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <xsl:value-of select="start/time"/>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">
+                      All day
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+                <xsl:choose>
+                  <xsl:when test="end/time!=''">
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">-</a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    &#160;
+                  </xsl:otherwise>
+                </xsl:choose>
+                <xsl:choose>
+                  <xsl:when  test="end/time!=''">
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">
+                    <xsl:choose>
+                      <xsl:when test="parent::day/shortdate != end/shortdate">
+                        <xsl:value-of select="end/month"/>/<xsl:value-of select="end/day"/>
+                        &#160;<span class="littleArrow">&#187;</span>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <xsl:value-of select="end/time"/>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    &#160;
+                  </xsl:otherwise>
+                </xsl:choose>
+              </dt>
+              <dd>
+                <xsl:choose>
+                  <xsl:when test="/ucalendar/appvar[key='summaryMode']/value='details'">
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">
+                      <strong><xsl:value-of select="summary"/>: </strong>
+                      <xsl:value-of select="description"/>&#160;
+                      <em>
+                        <xsl:value-of select="location/address"/>
+                        <xsl:if test="location/subaddress != ''">
+                          , <xsl:value-of select="location/subaddress"/>
+                        </xsl:if>.&#160;
+                        <xsl:if test="cost!=''">
+                          <xsl:value-of select="cost"/>.&#160;
+                        </xsl:if>
+                        <xsl:if test="sponsor/name!='none'">
+                          Contact: <xsl:value-of select="sponsor/name"/>
+                        </xsl:if>
+                      </em>
+                    </a>
+                    <xsl:if test="link != ''">
+                      <xsl:variable name="link" select="link"/>
+                      <a href="{$link}" class="moreLink"><xsl:value-of select="link"/></a>
+                    </xsl:if>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$urlPrefix}/eventView.do?eventId={$id}">
+                      <xsl:value-of select="summary"/>, <xsl:value-of select="location/address"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </dd>
+            </dl>
+          </xsl:for-each>
+        </xsl:for-each>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!--==== CALENDARS PAGE ====-->
+  <xsl:template match="calendars">
+    <xsl:variable name="topLevelCalCount" select="count(/ucalendar/calendars/calendar)"/>
+    <p><b>All Calendars</b><br />
+    Select a calendar from the list below to see only that calendar's events.</p>
+    <xsl:apply-templates select="calendar"/>
+  </xsl:template>
+
+  <xsl:template match="calendar">
+    <xsl:variable name="id" select="id"/>
+    <h2><a href="{$urlPrefix}/selectCalendar.do?calId={$id}"><xsl:value-of select="title"/></a></h2>
+    <ul>
+      <xsl:for-each select="calendar">
+        <xsl:sort select="title" order="ascending" case-order="upper-first"/>
+        <xsl:variable name="id" select="id"/>
+        <li><a href="{$urlPrefix}/selectCalendar.do?calId={$id}"><xsl:value-of select="title"/></a></li>
+      </xsl:for-each>
+    </ul>
+  </xsl:template>
+
+  <!--==== BLOCK (named) TEMPLATES and NAVIGATION  ====-->
+  <!-- these templates are separated out for convenience and to simplify the default template -->
+
+  <xsl:template name="headBar">
+    <p align="center">
+      <b>Rensselaer Events Calendar</b><br />
+      <xsl:if test="/ucalendar/page!='calendars' and /ucalendar/page!='event'">
+        <a href="{$urlPrefix}/setView.do?date={$prevdate}"><img src="{$resourcesRoot}/images/rensselaer/std-arrow-left.gif" alt="previous" width="13" height="16" class="prevImg" border="0"/></a>
+        <xsl:text> </xsl:text>
+        <xsl:choose>
+          <xsl:when test="/ucalendar/periodname='Day'">
+            <xsl:value-of select="substring(/ucalendar/eventscalendar/year/month/week/day/name,1,3)"/>, <xsl:value-of select="/ucalendar/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/ucalendar/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/ucalendar/eventscalendar/year/value"/>
+          </xsl:when>
+          <xsl:when test="/ucalendar/periodname='Week' or /ucalendar/periodname=''">
+            Week of <xsl:value-of select="/ucalendar/eventscalendar/year/month/shortname"/>&#160;<xsl:value-of select="/ucalendar/eventscalendar/year/month/week/day/value"/>, <xsl:value-of select="/ucalendar/eventscalendar/year/value"/>
+          </xsl:when>
+          <xsl:when test="/ucalendar/periodname='Month'">
+            <xsl:value-of select="/ucalendar/eventscalendar/year/month/longname"/>, <xsl:value-of select="/ucalendar/eventscalendar/year/value"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="/ucalendar/eventscalendar/year/value"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <xsl:text> </xsl:text>
+        <a href="{$urlPrefix}/setView.do?date={$nextdate}"><img src="{$resourcesRoot}/images/rensselaer/std-arrow-right.gif" alt="next" width="13" height="16" class="nextImg" border="0"/></a><br />
+      </xsl:if>
+      <xsl:choose>
+        <xsl:when test="/ucalendar/page='eventscalendar'">
+          <xsl:choose>
+            <xsl:when test="/ucalendar/periodname='Day'">
+              day
+            </xsl:when>
+            <xsl:otherwise>
+              <a href="{$urlPrefix}/setView.do?viewType=dayView&amp;date={$curdate}">day</a>
+            </xsl:otherwise>
+          </xsl:choose> |
+          <xsl:choose>
+            <xsl:when test="/ucalendar/periodname='Week' or /ucalendar/periodname=''">
+              week
+             </xsl:when>
+            <xsl:otherwise>
+              <a href="{$urlPrefix}/setView.do?viewType=weekView&amp;date={$curdate}">week</a>
+             </xsl:otherwise>
+          </xsl:choose> |
+          <xsl:choose>
+            <xsl:when test="/ucalendar/periodname='Month'">
+              month
+            </xsl:when>
+            <xsl:otherwise>
+              <a href="{$urlPrefix}/setView.do?viewType=monthView&amp;date={$curdate}">month</a>
+            </xsl:otherwise>
+          </xsl:choose> |
+        </xsl:when>
+        <xsl:otherwise>
+          <a href="{$urlPrefix}/setView.do?viewType=dayView&amp;date={$curdate}">day</a> |
+          <a href="{$urlPrefix}/setView.do?viewType=weekView&amp;date={$curdate}">week</a> |
+          <a href="{$urlPrefix}/setView.do?viewType=monthView&amp;date={$curdate}">month</a> |
+        </xsl:otherwise>
+      </xsl:choose>
+      <a href="{$urlPrefix}/setView.do?viewType=todayView&amp;date={$curdate}">
+        today
+      </a><br />
+      <xsl:choose>
+         <xsl:when test="/ucalendar/title!=''">
+           Calendar: <xsl:value-of select="/ucalendar/title"/><xsl:text> </xsl:text>
+           [<a href="{$urlPrefix}/selectCalendar.do?calId=">clear</a>]
+         </xsl:when>
+         <xsl:when test="/ucalendar/search!=''">
+           Current search: <xsl:value-of select="/ucalendar/search"/><xsl:text> </xsl:text>
+           [<a href="{$urlPrefix}/selectCalendar.do?calId=">clear</a>]
+         </xsl:when>
+         <xsl:otherwise>
+           Current calendar: All [<a href="{$urlPrefix}/showCals.do">select</a>]
+         </xsl:otherwise>
+      </xsl:choose>
+    </p>
+  </xsl:template>
+
+  <xsl:template name="alerts">
+    <table id="alertsTable">
+      <tr>
+        <td>
+          I'm an alert
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- <xsl:template name="searchBar">
+    <form name="calForm" method="post" action="{$urlPrefix}/selectCalendar.do">Search: <input type="text" name="searchString" size="30" value=""/><input type="submit" value="go"/></form>
+  </xsl:template> -->
+
+  <xsl:template name="dateSelect">
+    <form name="calForm" method="get" action="{$urlPrefix}/setView.do">
+      <table border="0" cellpadding="0" cellspacing="0">
+        <tr>
+          <xsl:if test="/ucalendar/periodname!='Year'">
+            <td>
+              <select name="viewStartDate.month">
+                <xsl:for-each select="/ucalendar/monthvalues/val">
+                  <xsl:variable name="temp" select="."/>
+                  <xsl:variable name="pos" select="position()"/>
+                  <xsl:choose>
+                    <xsl:when test="/ucalendar/monthvalues[start=$temp]">
+                      <option value="{$temp}" selected="selected">
+                        <xsl:value-of select="/ucalendar/monthlabels/val[position()=$pos]"/>
+                      </option>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <option value="{$temp}">
+                        <xsl:value-of select="/ucalendar/monthlabels/val[position()=$pos]"/>
+                      </option>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </xsl:for-each>
+              </select>
+            </td>
+            <xsl:if test="/ucalendar/periodname!='Month'">
+              <td>
+                <select name="viewStartDate.day">
+                  <xsl:for-each select="/ucalendar/dayvalues/val">
+                    <xsl:variable name="temp" select="."/>
+                    <xsl:variable name="pos" select="position()"/>
+                    <xsl:choose>
+                      <xsl:when test="/ucalendar/dayvalues[start=$temp]">
+                        <option value="{$temp}" selected="selected">
+                          <xsl:value-of select="/ucalendar/daylabels/val[position()=$pos]"/>
+                        </option>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <option value="{$temp}">
+                          <xsl:value-of select="/ucalendar/daylabels/val[position()=$pos]"/>
+                        </option>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                  </xsl:for-each>
+                </select>
+              </td>
+            </xsl:if>
+          </xsl:if>
+          <td>
+            <xsl:variable name="temp" select="/ucalendar/yearvalues/start"/>
+            <input type="text" name="viewStartDate.year" maxlength="4" size="4" value="{$temp}"/>
+          </td>
+          <td>
+            <input name="submit" type="submit" value="go"/>
+          </td>
+        </tr>
+      </table>
+    </form>
+  </xsl:template>
+
+  <xsl:template name="footer">
+    <p align="center">
+      <a href="http://www.rpi.edu/pda/">Return to the Portable Rensselaer</a><br />
+      <small>Maintained by C&amp;CT, DotCIO<br />Rensselaer Polytechnic Institute</small>
+    </p>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/ical.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/ical.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/ical.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="text"
+  indent="no"
+  media-type="text/calendar"
+/>
+
+<xsl:strip-space elements="*"/>
+  <!-- ================= -->
+  <!--  iCAL STYLESHEET  -->
+  <!-- ================= -->
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/"><xsl:apply-templates select="/ucalendar//event"/></xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+BEGIN:VCALENDAR
+BEGIN:VEVENT
+ORGANIZER:<xsl:value-of select="sponsor/name"/>
+MAILTO:<xsl:value-of select="sponsor/email"/>
+DTSTART:<xsl:value-of select="start/fourdigityear"/><xsl:value-of select="start/twodigitmonth"/><xsl:value-of select="start/twodigitday"/>T<xsl:value-of select="start/twodigithour24"/><xsl:value-of select="start/twodigitminute"/>00
+DTEND:<xsl:value-of select="end/fourdigityear"/><xsl:value-of select="end/twodigitmonth"/><xsl:value-of select="end/twodigitday"/>T<xsl:choose><xsl:when test="start/time='' and end/time=''">235959</xsl:when><xsl:when test="(end/longdate = start/longdate) and (end/twodigithour24 &lt; start/twodigithour24)"><xsl:value-of select="start/twodigithour24"/><xsl:value-of select="end/twodigitminute"/>00</xsl:when><xsl:otherwise><xsl:value-of select="end/twodigithour24"/><xsl:value-of select="end/twodigitminute"/>00</xsl:otherwise></xsl:choose>
+LOCATION:<xsl:value-of select="location/address"/>
+TRANSP:OPAQUE
+SEQUENCE:0
+UID:<xsl:value-of select="startdate"/><xsl:value-of select="starttime"/>_<xsl:value-of select="id"/>@<xsl:value-of select="/ucalendar/urlprefix"/>
+DESCRIPTION:<xsl:value-of select="normalize-space(description)"/><xsl:if test="cost!=''">\nCost: <xsl:value-of select="cost"/></xsl:if><xsl:if test="sponsor/name!=''">\nSponsor: <xsl:value-of select="sponsor/name"/></xsl:if><xsl:if test="sponsor/phone!=''">\nSponsor phone: <xsl:value-of select="sponsor/phone"/></xsl:if>\n
+SUMMARY:<xsl:value-of select="summary"/>
+PRIORITY:5
+CLASS:PUBLIC
+END:VEVENT
+END:VCALENDAR
+
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/vcal.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/vcal.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/vcal.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="text"
+  indent="no"
+  media-type="text/x-vCalendar"
+  standalone="yes"
+/>
+
+<xsl:strip-space elements="*"/>
+<!-- ================= -->
+<!--  vCAL STYLESHEET  -->
+<!-- ================= -->
+<xsl:template match="/">BEGIN:VCALENDAR<xsl:apply-templates select="/ucalendar//event"/>END:VCALENDAR</xsl:template>
+<xsl:template match="event">
+BEGIN:VEVENT
+ORGANIZER:<xsl:value-of select="sponsor/name"/>
+MAILTO:<xsl:value-of select="sponsor/email"/>
+DTSTART:<xsl:value-of select="start/fourdigityear"/><xsl:value-of select="start/twodigitmonth"/><xsl:value-of select="start/twodigitday"/>T<xsl:value-of select="start/twodigithour24"/><xsl:value-of select="start/twodigitminute"/>00
+DTEND:<xsl:value-of select="end/fourdigityear"/><xsl:value-of select="end/twodigitmonth"/><xsl:value-of select="end/twodigitday"/>T<xsl:choose><xsl:when test="start/time='' and end/time=''">235959</xsl:when><xsl:when test="(end/longdate = start/longdate) and (end/twodigithour24 &lt; start/twodigithour24)"><xsl:value-of select="start/twodigithour24"/><xsl:value-of select="end/twodigitminute"/>00</xsl:when><xsl:otherwise><xsl:value-of select="end/twodigithour24"/><xsl:value-of select="end/twodigitminute"/>00</xsl:otherwise></xsl:choose>
+LOCATION:<xsl:value-of select="location/address"/>
+TRANSP:OPAQUE
+SEQUENCE:0
+UID:<xsl:value-of select="startdate"/><xsl:value-of select="starttime"/>_<xsl:value-of select="id"/>@<xsl:value-of select="/ucalendar/urlprefix"/>
+DESCRIPTION:<xsl:value-of select="normalize-space(description)"/><xsl:if test="cost!=''">\nCost: <xsl:value-of select="cost"/></xsl:if><xsl:if test="sponsor/name!=''">\nSponsor: <xsl:value-of select="sponsor/name"/></xsl:if><xsl:if test="sponsor/phone!=''">\nSponsor phone: <xsl:value-of select="sponsor/phone"/></xsl:if>\n
+SUMMARY:<xsl:value-of select="summary"/>
+PRIORITY:5
+CLASS:PUBLIC
+CATEGORIES:<xsl:choose><xsl:when test="/ucalendar/title!=''">edu.rpi.maincalendar.<xsl:value-of select="/ucalendar/title"/></xsl:when><xsl:otherwise>edu.rpi.maincalendar</xsl:otherwise></xsl:choose>
+END:VEVENT
+</xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/PDA/xsltdir.properties
===================================================================

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/blue.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/blue.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/blue.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,845 @@
+body {
+  font-family : Arial, Helvetica, sans-serif;
+  font-size: 100%; /* needed for IE */
+  background-color : white;
+  color : black;
+  padding: 0.75em 1em 0em 1em;
+  min-width: 700px;
+}
+#logoTable {
+  padding: 0em;
+  margin: 0em;
+}
+#logoTable img {
+  display: inline;
+  padding: 0 0 1px 5px;
+}
+#logoTable #logoCell {
+  white-space: nowrap;
+  font-weight: bold;
+  font-size: 2em;
+}
+#logoTable #schoolLinksCell {
+  vertical-align: bottom;
+  text-align: right;
+  font-size: 0.8em;
+  white-space : nowrap;
+  padding: 0 2px 2px 0;
+}
+#logoTable #schoolLinksCell h2 {
+  margin: 0 0 2px 0;
+  padding: 0;
+  font-size: 2em;
+  color: #444;
+  background-color: transparent;
+  border: none;
+}
+#logoTable #schoolLinksCell a:link,
+#logoTable #schoolLinksCell a:visited,
+#logoTable #schoolLinksCell a:active {
+  background-color: transparent;
+  color: #999;
+  text-decoration: none;
+}
+#logoTable #schoolLinksCell a:hover {
+  background-color: #eee;
+  color: #333;
+  text-decoration: none;
+}
+#curDateRangeTable {
+  width: 100%;
+  height: 26px;
+  background: #2c5f89 url(../../images/curDateRangeBlue.gif) repeat-x bottom;
+  color : #eee;
+  margin: 0em;
+  font-weight : bold;
+  text-align : center;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+#curDateRangeTable td {
+  padding-top: 5px;
+  padding-bottom: 1px;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+#curDateRangeTable td.sideBarOpenCloseIcon {
+  background: url(../../images/curDateRangeBlue-left.gif) no-repeat top left;
+  color: inherit;
+  width: 200px;
+}
+#curDateRangeTable td.date {
+  font-weight : bold;
+  text-align : center;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint {
+  background: url(../../images/curDateRangeBlue-right.gif) no-repeat top right;
+  color: inherit;
+  width: 200px;
+  font-weight : bold;
+  text-align : right;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint img {
+  position: relative;
+  top: 3px;
+}
+#curDateRangeTable td.rssPrint a:link,
+#curDateRangeTable td.rssPrint a:active,
+#curDateRangeTable td.rssPrint a:visited {
+  font-size: 10px;
+  color: #eee;
+  background-color: transparent;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 0;
+  text-decoration: none;
+  margin-right: 0.5em;
+  position: relative;
+  top: -3px;
+}
+#curDateRangeTable td.rssPrint a:hover {
+  color: #663;
+  background-color: #fff;
+}
+#curDateRangeTable td.rssPrint a.rss:link,
+#curDateRangeTable td.rssPrint a.rss:active,
+#curDateRangeTable td.rssPrint a.rss:visited {
+  font-size: 10px;
+  font-weight: bold;
+  color: #444;
+  background-color: #ddd;
+  font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+  padding: 0px 1px 0px 1px;
+  text-decoration: none;
+  margin-right: 0.5em;
+  margin-left: 2px;
+  position: relative;
+  top: -3px;
+  border: solid 1px #666;
+}
+#curDateRangeTable td.rssPrint a.rss:hover {
+  color: #900;
+  background-color: #fff;
+}
+#searchBarTable {
+  margin: 0px;
+  padding: 0em;
+  background-color : #eee;
+  color: black;
+  font-size: 0.9em;
+}
+#searchBarTable .leftCell {
+  margin: 0px;
+  padding: 0em;
+  border-left: 3px solid #aaa;
+  padding: 0.1em 0 0 0.5em;
+  white-space: nowrap;
+}
+#searchBarTable .leftCell .link {
+  font-size: 0.8em;
+  padding-left: 1em;
+  color: #999;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a {
+  color: #888;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+#searchBarTable .rightCell {
+  margin: 0px;
+  padding: 0em;
+  text-align: right;
+  border-right: 3px solid #aaa;
+  padding: 0.1em 0.1em 0em 0em;
+  white-space: nowrap;
+}
+#searchBarTable form {
+  display: inline;
+  margin: 0px 0px 1px 0px;
+  padding: 0em;
+}
+#tabsTable {
+  margin: 0em;
+  padding: 4px 0px 0px 0px;
+  text-align: center;
+  background-color: #333;
+  color: #eee;
+}
+#tabsTable .centerCell  a {
+  text-decoration: none;
+  color: #eee;
+}
+#tabsTable .centerCell  img {
+  margin-right: 1px;
+}
+#tabsTable .rightCell {
+  background : url(../../images/demo/std-tab-space.gif);
+  padding-right: 0.5em;
+}
+#navigationBarTable {
+  font-size: 0.8em;
+  margin: 0em;
+  padding: 0em;
+  vertical-align: top;
+  border-left : 2px solid #aaa;
+  border-right : 2px solid #aaa;
+  border-bottom: 1px solid Gray;
+}
+#navigationBarTable a {
+  text-decoration: none;
+  white-space: nowrap;
+}
+#navigationBarTable td {
+  vertical-align: top;
+}
+#navigationBarTable form {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable table {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable td.todayButton {
+  padding: 1em 1em 0 1em;
+}
+#navigationBarTable td.gotoForm {
+  padding: 1em 0.5em 0 0;
+}
+#navigationBarTable td.leftCell {
+  text-align: left;
+  white-space: nowrap;
+  padding-left: 0.5em;
+  font-size: 1.3em;
+  font-weight: bold;
+  padding: 0.75em 0em 0.75em 1em;
+  width: 100%;
+  vertical-align: middle;
+}
+#navigationBarTable td.leftCell .prevImg {
+  margin: 0 0.2em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.leftCell .nextImg {
+  margin: 0 0.75em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.rightCell {
+  text-align: right;
+  padding: 1em 0.5em 0em 0em;
+}
+#navigationBarTable td.rightCell select {
+  padding-right: 0em;
+  margin: 0em;
+  width: 10em;
+}
+#searchBarTable .calLinks {
+  white-space: nowrap;
+}
+#eventTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#eventTable td.fieldname {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 0.5em;
+  background-color: #eee;
+  /*background-color: #EDF5F9;*/
+  color: black;
+}
+#eventTable td.fieldval {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 1em;
+}
+#eventTable th.icalIcon {
+  margin: 0em;
+  vertical-align: middle;
+  text-align: right;
+  padding: 0.5em 1em 0.2em 0.5em;
+  white-space: nowrap;
+	font-size: 0.9em;
+	font-weight: normal;
+}
+#eventTable th.icalIcon a {
+  text-decoration: none;
+}
+#eventTable th.icalIcon img {
+  vertical-align: middle;
+	padding-left: 1em;
+}
+#eventTable th.fieldname {
+  text-align: left;
+  padding: 1em 0.5em 1em 0.5em;
+  background-color: #eee;
+  /*background-color: #EDF5F9;*/
+  color: black;
+}
+#eventTable th.fieldval {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 1em;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#calPageTable {
+  width: 100%;
+  font-size: 100%;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#calPageTable td {
+  width: 50%;
+  vertical-align: top;
+  padding: 0.5em 2em 1em 3em;
+}
+#calPageTable th {
+  font-size: 1.2em;
+  background-color: #ccc;
+  color: black;
+  font-weight: bold;
+}
+#calPageTable td.leftCell {
+  border-right : thin dashed #999;
+}
+#calPageTable h2 {
+  font-size: 1.2em;
+}
+#calPageTable td.infoCell {
+  background-color: #eee;
+  color: black;
+  text-align: center;
+}
+#dayCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#dayCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#dayCalendarTable .dateRange {
+  text-align: left;
+  background-color: #D3E4F0;
+  color: black;
+  white-space: nowrap;
+}
+#dayCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#dayCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#weekCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#weekCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#weekCalendarTable .dateRange {
+  text-align: left;
+  background-color: #D3E4F0;
+  color: black;
+  white-space: nowrap;
+}
+#weekCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#weekCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#monthCalendarTable {
+  width: 100%;
+  font-size: 0.8em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#monthCalendarTable th.dayHeading {
+  width: 14%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: #2c5f89;
+  color: #eee;
+  border: 1px solid black;
+}
+#monthCalendarTable td {
+  width: 14%;
+  height: 60px;
+  vertical-align: top;
+  text-align: left;
+  padding: 0em;
+  border: 1px solid #aaa;
+  background-color: white;
+  color: black;
+}
+#monthCalendarTable td.filler {
+  border: none;
+  background-color: #eee;
+  color: black;
+  /*border: 1px solid #aaa;*/
+}
+/*#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : disc;
+  margin: 0em 0em 0em 1em;
+  padding-left: 0.75em;
+  padding-right: 0.1em;
+  color: #999;
+}*/
+#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : none;
+  margin: 0em;
+  padding: 0.3em 0em 0em 0em;
+}
+#monthCalendarTable ul li {
+  margin: 0em;
+  padding: 0em;
+  display: inline;
+}
+#monthCalendarTable a.eventLinkA:link,
+#monthCalendarTable a.eventLinkA:visited,
+#monthCalendarTable a.eventLinkA:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #A3C8D9;
+  color: black;
+}
+#monthCalendarTable a.eventLinkB:link,
+#monthCalendarTable a.eventLinkB:visited,
+#monthCalendarTable a.eventLinkB:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #DEECF2;
+  color: black;
+}
+#monthCalendarTable a.eventCancelled:link,
+#monthCalendarTable a.eventCancelled:visited,
+#monthCalendarTable a.eventCancelled:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #ccc;
+  color: black;
+}
+#monthCalendarTable a.eventTentative:link,
+#monthCalendarTable a.eventTentative:visited,
+#monthCalendarTable a.eventTentative:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  border-bottom: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#monthCalendarTable a.holiday:link,
+#monthCalendarTable a.holiday:visited,
+#monthCalendarTable a.holiday:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fff;
+  color: black;
+  /*border-top: 1px solid black;
+  border-bottom: 1px solid black;*/
+}
+#monthCalendarTable a.eventLinkA:hover,
+#monthCalendarTable a.eventLinkB:hover,
+#monthCalendarTable a.eventCancelled:hover,
+#monthCalendarTable a.eventTentative:hover,
+#monthCalendarTable a.holiday:hover  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  color: black;
+  background-color: #ddd;
+}
+#monthCalendarTable a.dayLink {
+  text-decoration: none;
+  color: black;
+  background-color: transparent;
+}
+#monthCalendarTable a:hover.dayLink {
+  text-decoration: none;
+  color: #eee;
+  background-color: black;
+}
+#monthCalendarTable a:hover {
+  /* required for eventTip to hover correctly;
+     apply only to the hover pseudo class, or
+     the other anchors nearby will cover the eventTip in IE */
+  position: relative;
+}
+#monthCalendarTable a span.eventTip,
+#monthCalendarTable a span.eventTipReverse {
+  display: none;
+}
+#monthCalendarTable a:hover span.eventTip {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: 12em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+}
+#monthCalendarTable a:hover span.eventTipReverse {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: -21em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+}
+#monthCalendarTable a:hover span.eventTipStatusCancelled {
+  display: block;
+  color: white;
+  background-color: #333;
+  padding: 2px;
+  margin-bottom: 6px;
+  text-align: center;
+}
+#monthCalendarTable a:hover span.eventTipStatusTentative {
+  display: block;
+  color: black;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  padding: 2px;
+  margin-bottom: 6px;
+  border: 1px solid #ccc;
+  text-align: center;
+}
+a.gridAdd {
+  display: block;
+  float: right;
+  font-size: 0.8em;
+  text-decoration: none;
+  margin-right: 2px;
+}
+#yearCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0em;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#yearCalendarTable td {
+  padding: 1em 0em 0em 0em;
+  margin: 0em;
+  vertical-align: top;
+  text-align: center;
+  width: 33%;
+}
+#yearCalendarTable table.yearViewMonthTable {
+  margin: 0em  1em 0.5em 1em;
+  border: 1px solid #ddd;
+}
+#yearCalendarTable table.yearViewMonthTable td {
+  text-align: center;
+  padding: 0.2em;
+  width: 12.5%;
+}
+#yearCalendarTable table.yearViewMonthTable th {
+  font-weight: bold;
+  background-color: #f5f5f5;
+  color: black;
+  padding: 0.2em;
+}
+#yearCalendarTable table.yearViewMonthTable td.monthName {
+  font-weight: bold;
+  text-align: center;
+  background-color: #EDF5F9;
+  color: black;
+  white-space: nowrap;
+  border-bottom: 1px solid #999;
+}
+#yearCalendarTable table.yearViewMonthTable td.weekCell {
+  font-weight: bold;
+  font-size: 0.8em;
+  background-color: #f5f5f5;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td  a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.weekCell a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.monthName a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td a:hover  {
+  text-decoration: none;
+  background-color: #FFC;
+  color: black;
+  border: 1px solid black;
+  padding: 0;
+}
+#listTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#listTable td {
+  padding: 0.5em;
+  margin: 0em;
+  border-bottom: 1px solid #bbb;
+}
+#listTable td a {
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRangeCrossDay {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #eee;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEarlyMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #C0D4DD;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #F0F9FF;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeAfternoon {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #DEECF2;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEvening {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #A3C8D9;
+  color: black;
+  white-space: nowrap;
+}
+#listTable span.littleArrow {
+  font-size: 1.4em;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: white;
+  color: black;
+  width: 100%;
+}
+#listTable td.bwStatusCancelled {
+  background-color: #ddd;
+  color: black;
+}
+#listTable td.bwStatusTentative {
+  background: white url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#listTable td.description a {
+  display: block;
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.description a.moreLink {
+  display: inline;
+  background-color: transparent;
+  color: #009;
+  text-decoration: underline;
+}
+#listTable td.description:hover {
+  background-color: #f5f5f5;
+  color: black;
+}
+#listTable td.dateRow {
+  text-align: left;
+  background-color: #B1D4E3;
+  color: #333;
+  font-size: 0.8em;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0em;
+}
+#listTable td.dateRow a {
+  display: block;
+  color: #333;
+  background-color: transparent;
+  font-weight: bold;
+  text-decoration : none;
+}
+#listTable td.icons {
+  color: black;
+  background-color: #ddd;
+  white-space: nowrap;
+}
+#listTable td.icons img.addref {
+  margin-right: 0.5em;
+}
+#calPageTable ul.calendarTree li {
+  font-weight: bold;
+}
+#calPageTable ul.calendarTree li ul li {
+  font-weight: normal;
+}
+#calPageTable ul.calendarTree li.folder {
+  list-style-image: url(../../images/demo/catIcon.gif);
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+}
+#calPageTable ul.calendarTree li.calendar {
+  list-style-image: url(../../images/demo/calIcon-sm.gif);
+}
+.noEventsCell {
+  padding: 1em;
+}
+#footer {
+  font-size: 0.75em;
+  text-align : center;
+  margin-top: 0em;
+  padding: 1em;
+  color: #333;
+  background-color: #eee;
+  border-bottom: 2px solid #999;
+  border-left: 2px solid #999;
+  border-right: 2px solid #999;
+  white-space: nowrap;
+}
+#footer a {
+  color: #333;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#skinSelectorTable {
+  width: 100%;
+  padding-top: 0.5em;
+  font-size: 0.7em;
+  color: #333;
+  background-color: inherit;
+}
+#skinSelectorTable td {
+  vertical-align: top;
+}
+#skinSelectorTable td.rightCell {
+  text-align: right;
+}
+#skinSelectorTable td.leftCell {
+  text-align: left;
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.leftCell  a {
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.rightCell form {
+  display: inline;
+  margin: 0em;
+  padding: 0em;
+}
+#skinSelectorTable td.rightCell select {
+  font-size: 0.9em;
+  color: #333;
+  background-color: #eee;
+}
+#featureHighlight {
+  color: #dd0;
+  font-style: italic;
+}
+/*   LINKS    */
+a:link, a:active, a:visited {
+  color: #2c5f89;
+  background-color: transparent;
+}
+a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+.center {
+  text-align: center;
+}
+.left {
+  text-align: left;
+}
+.right {
+  text-align: right;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/cleanXml.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/cleanXml.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/cleanXml.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="xml"
+  indent="yes"
+  omit-xml-declaration="no"
+  media-type="text/xml"
+  standalone="yes"
+/>
+
+<!-- =========================================================
+
+              DEMONSTRATION CALENDAR STYLESHEET
+
+     a simple stylesheet to provide a proper xml declaration
+     and clean xml for use on other systems.  This is slightly
+     more expensive than simply turning off the transform with
+     noxslt=yes, but it may play better with some systems.
+
+===============================================================  -->
+
+  <xsl:template match="/">
+    <xsl:copy-of select="."/>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/common.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/common.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/common.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,66 @@
+/* Generic selectors*/
+h2 {
+  margin: 0em;
+  padding: 0.2em 0.2em 0.2em 0.5em;
+  font-size: 1.3em;
+  border-bottom: 1px solid #ccc;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+h2 a:link,
+h2 a:active,
+h2 a:visited,
+h2 a:hover {
+  color: black;
+  background-color: inherit;
+  text-decoration: none;
+}
+h2.bwStatusConfirmed {
+  background-color: #eee;
+  color: black;
+}
+h2.bwStatusCancelled {
+  background-color: #eee;
+  color: black;
+}
+h2.bwStatusTentative {
+  background: #eee url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+/* Header IDs and classes */
+#errors {
+  margin: 0;
+  padding: 1em;
+  background-color: #333;
+  color: #ff9;
+  font-weight: bold;
+}
+#tabsTable .centerCell {
+  text-align: left;
+  background : url(../../images/demo/std-tab-space.gif);
+  font-size: 0.8em;
+  white-space: nowrap;
+  width: 100%;
+  padding: 0 1em;
+}
+#stats {
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 1em;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#statsTable {
+  margin: 1em 0 0 4em;
+  width: 300px;
+}
+#statsTable th {
+  padding: 0.5em;
+  background-color: #eee;
+  color: black;
+}
+#statsTable td.label {
+  text-align: right;
+  padding-right: 2em;
+}

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/default.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/default.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/default.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,1187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="html"
+  indent="yes"
+  media-type="text/html"
+  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+  doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+  standalone="yes"
+/>
+
+<!-- =========================================================
+
+              DEMONSTRATION CALENDAR STYLESHEET
+
+     This stylesheet is devoid of school branding.  It is a good
+     starting point for development of a customized calendar.
+
+     For detailed instructions on how to work with the XSLT
+     stylesheets included with this distribution, please see the
+     Bedework Design Guide at
+     http://www.bedework.org/bedework/update.do?artcenterkey=24
+
+===============================================================  -->
+<!-- **********************************************************************
+    Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+  <!-- ================================= -->
+  <!--  DEMO PUBLIC CALENDAR STYLESHEET  -->
+  <!-- ================================= -->
+
+  <!-- DEFINE INCLUDES -->
+  <xsl:include href="errors.xsl"/>
+
+  <!-- DEFINE GLOBAL CONSTANTS -->
+
+  <!-- URL of the XSL template directory -->
+  <!-- The approot is an appropriate place to put
+       included stylesheets and xml fragments. These are generally
+       referenced relatively (like errors.xsl and messages.xsl above);
+       this variable is here for your convenience if you choose to
+       reference it explicitly.  It is not used in this stylesheet, however,
+       and can be safely removed if you so choose. -->
+  <xsl:variable name="appRoot" select="/bedework/approot"/>
+
+  <!-- URL of html resources (images, css, other html); by default this is
+       set to the application root -->
+  <xsl:variable name="resourcesRoot" select="/bedework/approot"/>
+
+  <!-- Properly encoded prefixes to the application actions; use these to build
+       urls; allows the application to be used without cookies or within a portal. -->
+  <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
+  <xsl:variable name="setSelection" select="/bedework/urlPrefixes/setSelection"/>
+  <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/fetchPublicCalendars"/>
+  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/setViewPeriod"/>
+  <xsl:variable name="eventView" select="/bedework/urlPrefixes/eventView"/>
+  <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/addEventRef"/>
+  <xsl:variable name="export" select="/bedework/urlPrefixes/export"/>
+  <xsl:variable name="mailEvent" select="/bedework/urlPrefixes/mailEvent"/>
+  <xsl:variable name="showPage" select="/bedework/urlPrefixes/showPage"/>
+  <xsl:variable name="stats" select="/bedework/urlPrefixes/stats"/>
+
+  <!-- Other generally useful global variables -->
+  <xsl:variable name="privateCal">/ucal</xsl:variable>
+  <xsl:variable name="prevdate" select="/bedework/previousdate"/>
+  <xsl:variable name="nextdate" select="/bedework/nextdate"/>
+  <xsl:variable name="curdate" select="/bedework/currentdate/date"/>
+
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/">
+    <html lang="en">
+      <head>
+        <title>Bedework Events Calendar</title>
+        <link rel="stylesheet" type="text/css" href="{$resourcesRoot}/default/default/common.css" />
+        <link rel="stylesheet" type="text/css" media="print" href="{$resourcesRoot}/default/default/print.css" />
+        <xsl:choose>
+          <xsl:when test="/bedework/appvar[key='style']/value='red'">
+            <link rel="stylesheet" href="{$resourcesRoot}/default/default/red.css"/>
+          </xsl:when>
+          <xsl:when test="/bedework/appvar[key='style']/value='green'">
+            <link rel="stylesheet" href="{$resourcesRoot}/default/default/green.css"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <link rel="stylesheet" href="{$resourcesRoot}/default/default/blue.css"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <link rel="icon" type="image/ico" href="{$resourcesRoot}/images/bedework.ico" />
+      </head>
+      <body>
+        <xsl:call-template name="headBar"/>
+        <xsl:if test="/bedework/error">
+          <div id="errors">
+            <xsl:apply-templates select="/bedework/error"/>
+          </div>
+        </xsl:if>
+        <xsl:call-template name="tabs"/>
+        <xsl:call-template name="navigation"/>
+        <xsl:choose>
+          <xsl:when test="/bedework/page='event'">
+            <!-- show an event -->
+            <xsl:apply-templates select="/bedework/event"/>
+          </xsl:when>
+          <xsl:when test="/bedework/page='showSysStats'">
+            <!-- show system stats -->
+            <xsl:call-template name="stats"/>
+          </xsl:when>
+          <xsl:when test="/bedework/page='calendarList'">
+            <!-- show a list of all calendars -->
+            <xsl:apply-templates select="/bedework/calendars"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <!-- otherwise, show the eventsCalendar -->
+            <xsl:if test="/bedework/periodname!='Year'">
+              <xsl:call-template name="searchBar"/>
+            </xsl:if>
+            <!-- main eventCalendar content -->
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Day'">
+                <xsl:call-template name="listView"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='weekViewMode']/value='list'">
+                    <xsl:call-template name="listView"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:call-template name="weekView"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Month'">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='monthViewMode']/value='list'">
+                    <xsl:call-template name="listView"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:call-template name="monthView"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:call-template name="yearView"/>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- footer -->
+        <xsl:call-template name="footer"/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
+  <!-- these templates are separated out for convenience and to simplify the default template -->
+
+  <xsl:template name="headBar">
+    <table width="100%" border="0" cellpadding="0" cellspacing="0" id="logoTable">
+      <tr>
+        <td colspan="3" id="logoCell"><a href="http://www.bedework.org/"><img src="{$resourcesRoot}/images/bedeworkLogo.gif" width="292" height="75" border="0" alt="Bedework"/></a></td>
+        <td colspan="2" id="schoolLinksCell">
+          <h2>Public Calendar</h2>
+          <a href="{$privateCal}">Personal Calendar</a> |
+          <a href="http://www.yourschoolhere.edu">School Home</a> |
+          <a href="http://www.bedework.org/">Other Link</a> |
+          <a href="http://helpdesk.rpi.edu/update.do?catcenterkey=51">
+            Example Calendar Help
+          </a>
+        </td>
+      </tr>
+    </table>
+    <table id="curDateRangeTable"  cellspacing="0">
+      <td class="sideBarOpenCloseIcon">
+        &#160;
+        <!--
+        we may choose to implement calendar selection in the public calendar
+        using a sidebar; leave this comment here for now.
+        <xsl:choose>
+          <xsl:when test="/bedework/appvar[key='sidebar']/value='closed'">
+            <a href="?setappvar=sidebar(opened)">
+              <img alt="open sidebar" src="{$resourcesRoot}/resources/sideBarArrowOpen.gif" width="21" height="16" border="0" align="left"/>
+            </a>
+          </xsl:when>
+          <xsl:otherwise>
+            <a href="?setappvar=sidebar(closed)">
+              <img alt="close sidebar" src="{$resourcesRoot}/resources/sideBarArrowClose.gif" width="21" height="16" border="0" align="left"/>
+            </a>
+          </xsl:otherwise>
+        </xsl:choose>-->
+      </td>
+      <td class="date">
+        <xsl:choose>
+          <xsl:when test="/bedework/page='event'">
+            Event Information
+          </xsl:when>
+          <xsl:when test="/bedework/page='showSysStats' or
+                          /bedework/page='calendars'">
+            &#160;
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="/bedework/firstday/longdate"/>
+            <xsl:if test="/bedework/periodname!='Day'">
+              -
+              <xsl:value-of select="/bedework/lastday/longdate"/>
+            </xsl:if>
+          </xsl:otherwise>
+        </xsl:choose>
+      </td>
+      <td class="rssPrint">
+        <a href="javascript:window.print()" title="print this view">
+          <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
+        </a>
+        <a class="rss" href="{$setSelection}?setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+      </td>
+    </table>
+  </xsl:template>
+
+  <xsl:template name="tabs">
+    <xsl:choose>
+      <xsl:when test="/bedework/page='eventscalendar'">
+        <table border="0" cellpadding="0" cellspacing="0" id="tabsTable">
+          <tr>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Day'">
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-on.gif" width="91" height="20" border="0" alt="DAY"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-off.gif" width="91" height="20" border="0" alt="DAY"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+                  <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-on.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+                 </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-off.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+                 </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Month'">
+                  <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-on.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-off.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Year'">
+                  <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-on.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-off.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td class="centerCell">
+              &#160;<!--<img src="{$resourcesRoot}/images/std-button-today.gif" width="46" height="17" border="0" alt="TODAY"/>-->
+            </td>
+            <td class="rightCell">
+              &#160;
+            </td>
+          </tr>
+        </table>
+      </xsl:when>
+      <xsl:otherwise>
+        <table border="0" cellpadding="0" cellspacing="0" id="tabsTable">
+          <tr>
+            <td>
+              <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-off.gif" width="91" height="20" border="0" alt="DAY"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-off.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-off.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-off.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+            </td>
+            <td class="centerCell">
+              &#160;<!--<img src="{$resourcesRoot}/images/std-button-today.gif" width="46" height="17" border="0" alt="TODAY"/>-->
+            </td>
+            <td class="rightCell">
+              &#160;
+            </td>
+          </tr>
+        </table>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template name="navigation">
+    <table border="0" cellpadding="0" cellspacing="0" id="navigationBarTable">
+      <tr>
+        <td class="leftCell">
+          <a id="prevViewPeriod" href="{$setViewPeriod}?date={$prevdate}"><img src="{$resourcesRoot}/images/std-arrow-left.gif" alt="previous" width="13" height="16" class="prevImg" border="0"/></a>
+          <a id="nextViewPeriod" href="{$setViewPeriod}?date={$nextdate}"><img src="{$resourcesRoot}/images/std-arrow-right.gif" alt="next" width="13" height="16" class="nextImg" border="0"/></a>
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Year'">
+              <xsl:value-of select="substring(/bedework/firstday/date,1,4)"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Month'">
+              <xsl:value-of select="/bedework/firstday/monthname"/>, <xsl:value-of select="substring(/bedework/firstday/date,1,4)"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Week'">
+              Week of <xsl:value-of select="substring-after(/bedework/firstday/longdate,', ')"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="/bedework/firstday/longdate"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </td>
+        <td class="todayButton">
+          <a href="{$setViewPeriod}?viewType=todayView&amp;date={$curdate}">
+            <img src="{$resourcesRoot}/images/std-button-today-off.gif" width="54" height="22" border="0" alt="Go to Today" align="left"/>
+          </a>
+        </td>
+        <td align="right" class="gotoForm">
+          <form name="calForm" method="get" action="{$setViewPeriod}">
+             <table border="0" cellpadding="0" cellspacing="0">
+              <tr>
+                <xsl:if test="/bedework/periodname!='Year'">
+                  <td>
+                    <select name="viewStartDate.month">
+                      <xsl:for-each select="/bedework/monthvalues/val">
+                        <xsl:variable name="temp" select="."/>
+                        <xsl:variable name="pos" select="position()"/>
+                        <xsl:choose>
+                          <xsl:when test="/bedework/monthvalues[start=$temp]">
+                            <option value="{$temp}" selected="selected">
+                              <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                            </option>
+                          </xsl:when>
+                          <xsl:otherwise>
+                            <option value="{$temp}">
+                              <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                            </option>
+                          </xsl:otherwise>
+                        </xsl:choose>
+                      </xsl:for-each>
+                    </select>
+                  </td>
+                  <xsl:if test="/bedework/periodname!='Month'">
+                    <td>
+                      <select name="viewStartDate.day">
+                        <xsl:for-each select="/bedework/dayvalues/val">
+                          <xsl:variable name="temp" select="."/>
+                          <xsl:variable name="pos" select="position()"/>
+                          <xsl:choose>
+                            <xsl:when test="/bedework/dayvalues[start=$temp]">
+                              <option value="{$temp}" selected="selected">
+                                <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                              </option>
+                            </xsl:when>
+                            <xsl:otherwise>
+                              <option value="{$temp}">
+                                <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                              </option>
+                            </xsl:otherwise>
+                          </xsl:choose>
+                        </xsl:for-each>
+                      </select>
+                    </td>
+                  </xsl:if>
+                </xsl:if>
+                <td>
+                  <xsl:variable name="temp" select="/bedework/yearvalues/start"/>
+                  <input type="text" name="viewStartDate.year" maxlength="4" size="4" value="{$temp}"/>
+                </td>
+                <td>
+                  <input name="submit" type="submit" value="go"/>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </td>
+        <td class="rightCell">
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <xsl:template name="searchBar">
+    <table width="100%" border="0" cellpadding="0" cellspacing="0" id="searchBarTable">
+       <tr>
+         <td class="leftCell">
+           <xsl:choose>
+             <xsl:when test="/bedework/selectionState/selectionType = 'calendar'">
+               Calendar: <xsl:value-of select="/bedework/selectionState/subscriptions/subscription/calendar/name"/>
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'search'">
+               Current search: <xsl:value-of select="/bedework/search"/>
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'subscription'">
+               Subscription: (not implemented yet)
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'filter'">
+               Filter: (not implemented yet)
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:otherwise><!-- view -->
+               View:
+               <form name="selectViewForm" method="get" action="{$setSelection}">
+                <select name="viewName" onChange="submit()" >
+                  <xsl:for-each select="/bedework/views/view">
+                    <xsl:variable name="name" select="name"/>
+                    <xsl:choose>
+                      <xsl:when test="name=/bedework/selectionState/view/name">
+                        <option value="{$name}" selected="selected"><xsl:value-of select="name"/></option>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <option value="{$name}"><xsl:value-of select="name"/></option>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                  </xsl:for-each>
+                </select>
+              </form>
+              <span class="calLinks"><a href="{$setSelection}">default view</a> | <a href="{$fetchPublicCalendars}">available calendars</a></span>
+             </xsl:otherwise>
+           </xsl:choose>
+         </td>
+         <td class="rightCell">
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Day'">
+                <img src="{$resourcesRoot}/images/std-button-listview-off.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Year'">
+                <img src="{$resourcesRoot}/images/std-button-calview-off.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Month'">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='monthViewMode']/value='list'">
+                    <a href="{$setup}?setappvar=monthViewMode(cal)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-calview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=monthViewMode(list)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-listview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='weekViewMode']/value='list'">
+                    <a href="{$setup}?setappvar=weekViewMode(cal)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-calview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=weekViewMode(list)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-listview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Year' or
+                              (/bedework/periodname='Month' and
+                              (/bedework/appvar[key='monthViewMode']/value='cal' or
+                               not(/bedework/appvar[key='monthViewMode']))) or
+                              (/bedework/periodname='Week' and
+                              (/bedework/appvar[key='weekViewMode']/value='cal' or
+                               not(/bedework/appvar[key='weekViewMode'])))">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                    <img src="{$resourcesRoot}/images/std-button-summary-off.gif" width="62" height="21" border="0" alt="only summaries of events supported in this view"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <img src="{$resourcesRoot}/images/std-button-details-off.gif" width="62" height="21" border="0" alt="only summaries of events supported in this view"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                    <a href="{$setup}?setappvar=summaryMode(summary)" title="toggle summary/detailed view">
+                      <img src="{$resourcesRoot}/images/std-button-summary.gif" width="62" height="21" border="0" alt="toggle summary/detailed view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=summaryMode(details)" title="toggle summary/detailed view">
+                      <img src="{$resourcesRoot}/images/std-button-details.gif" width="62" height="21" border="0" alt="toggle summary/detailed view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:otherwise>
+            </xsl:choose>
+            <a href="setup.do"><img src="{$resourcesRoot}/images/std-button-refresh.gif" width="70" height="21" border="0" alt="refresh view"/></a>
+          </td>
+       </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+    <xsl:variable name="statusClass">
+      <xsl:choose>
+        <xsl:when test="status='CANCELLED'">bwStatusCancelled</xsl:when>
+        <xsl:when test="status='TENTATIVE'">bwStatusTentative</xsl:when>
+        <xsl:otherwise>bwStatusConfirmed</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <h2 class="{$statusClass}">
+      <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
+      <xsl:choose>
+        <xsl:when test="link != ''">
+          <xsl:variable name="link" select="link"/>
+          <a href="{$link}">
+            <xsl:value-of select="summary"/>
+          </a>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="summary"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </h2>
+    <table id="eventTable" cellpadding="0" cellspacing="0">
+      <tr>
+        <td class="fieldname">When:</td>
+        <td class="fieldval">
+          <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
+          <xsl:if test="start/allday = 'false'">
+            <span class="time"><xsl:value-of select="start/time"/></span>
+          </xsl:if>
+          <xsl:if test="(end/longdate != start/longdate) or
+                        ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
+          <xsl:if test="end/longdate != start/longdate">
+            <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
+          </xsl:if>
+          <xsl:choose>
+            <xsl:when test="start/allday = 'true'">
+              <span class="time"><em>(all day)</em></span>
+            </xsl:when>
+            <xsl:when test="end/longdate != start/longdate">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+            <xsl:when test="end/time != start/time">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+          </xsl:choose>
+        </td>
+        <th class="icalIcon" rowspan="2">
+          <div id="eventIcons">
+            <xsl:variable name="id" select="id"/>
+            <xsl:variable name="subscriptionId" select="subscription/id"/>
+            <xsl:variable name="calPath" select="calendar/encodedPath"/>
+            <xsl:variable name="guid" select="guid"/>
+            <xsl:variable name="recurrenceId" select="recurrenceId"/>
+            <a href="{$privateCal}/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
+              <img class="addref" src="{$resourcesRoot}/images/add2mycal-icon.gif" width="20" height="26" border="0" alt="Add event to MyCalendar"/>
+            add to my calendar</a>
+            <xsl:variable name="eventIcalName" select="concat($id,'.ics')"/>
+            <a href="{$export}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
+              <img src="{$resourcesRoot}/images/std-ical_icon.gif" width="20" height="26" border="0" alt="Download this event"/>
+             download</a>
+          </div>
+        </th>
+      </tr>
+      <tr>
+        <td class="fieldname">Where:</td>
+        <td class="fieldval">
+          <xsl:choose>
+            <xsl:when test="location/link=''">
+              <xsl:value-of select="location/address"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:variable name="locationLink" select="location/link"/>
+              <a href="{$locationLink}">
+                <xsl:value-of select="location/address"/>
+              </a>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:if test="location/subaddress!=''">
+            <br/><xsl:value-of select="location/subaddress"/>
+          </xsl:if>
+        </td>
+      </tr>
+      <tr>
+        <td class="fieldname">Description:</td>
+        <td colspan="2" class="fieldval description">
+          <xsl:call-template name="replace">
+            <xsl:with-param name="string" select="description"/>
+            <xsl:with-param name="pattern" select="'&#xA;'"/>
+            <xsl:with-param name="replacement"><br/></xsl:with-param>
+          </xsl:call-template>
+        </td>
+      </tr>
+      <xsl:if test="status !='' and status != 'CONFIRMED'">
+        <tr>
+          <td class="fieldname">Status:</td>
+          <td class="fieldval">
+            <xsl:value-of select="status"/>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="cost!=''">
+        <tr>
+          <td class="fieldname">Cost:</td>
+          <td colspan="2" class="fieldval"><xsl:value-of select="cost"/></td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="link != ''">
+        <tr>
+          <td class="fieldname">See:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:variable name="link" select="link"/>
+            <a href="{$link}"><xsl:value-of select="link"/></a>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="sponsor/name!='none'">
+        <tr>
+          <td class="fieldname">Contact:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:choose>
+              <xsl:when test="sponsor/link=''">
+                <xsl:value-of select="sponsor/name"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:variable name="sponsorLink" select="sponsor/link"/>
+                <a href="{$sponsorLink}">
+                  <xsl:value-of select="sponsor/name"/>
+                </a>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="sponsor/phone!=''">
+              <br /><xsl:value-of select="sponsor/phone"/>
+            </xsl:if>
+            <!-- If you want to display email addresses, uncomment the
+                 following 8 lines. -->
+            <!-- <xsl:if test="sponsor/email!=''">
+              <br />
+              <xsl:variable name="email" select="sponsor/email"/>
+              <xsl:variable name="subject" select="summary"/>
+              <a href="mailto:{$email}?subject={$subject}">
+                <xsl:value-of select="sponsor/email"/>
+              </a>
+            </xsl:if> -->
+          </td>
+        </tr>
+      </xsl:if>
+      <tr>
+        <td class="fieldname">Calendar:</td>
+        <td class="fieldval">
+          <xsl:variable name="calUrl" select="calendar/path"/>
+          <a href="{$setSelection}?calUrl={$calUrl}">
+            <xsl:value-of select="calendar/name"/>
+          </a>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== LIST VIEW  (for day, week, and month) ====-->
+  <xsl:template name="listView">
+    <table id="listTable" border="0" cellpadding="0" cellspacing="0">
+      <xsl:choose>
+        <xsl:when test="not(/bedework/eventscalendar/year/month/week/day/event)">
+          <tr>
+            <td class="noEventsCell">
+              No events to display.
+            </td>
+          </tr>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:for-each select="/bedework/eventscalendar/year/month/week/day[event]">
+            <xsl:if test="/bedework/periodname='Week' or /bedework/periodname='Month' or /bedework/periodname=''">
+              <tr>
+                <td colspan="5" class="dateRow">
+                   <xsl:variable name="date" select="date"/>
+                   <a href="{$setViewPeriod}?viewType=dayView&amp;date={$date}">
+                     <xsl:value-of select="name"/>, <xsl:value-of select="longdate"/>
+                   </a>
+                </td>
+              </tr>
+            </xsl:if>
+            <xsl:for-each select="event">
+              <xsl:variable name="id" select="id"/>
+              <xsl:variable name="subscriptionId" select="subscription/id"/>
+              <xsl:variable name="calPath" select="calendar/encodedPath"/>
+              <xsl:variable name="guid" select="guid"/>
+              <xsl:variable name="recurrenceId" select="recurrenceId"/>
+              <tr>
+                <xsl:variable name="dateRangeStyle">
+                  <xsl:choose>
+                    <xsl:when test="start/shortdate = parent::day/shortdate">
+                      <xsl:choose>
+                        <xsl:when test="start/allday = 'true'">dateRangeCrossDay</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 6">dateRangeEarlyMorning</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 12">dateRangeMorning</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 18">dateRangeAfternoon</xsl:when>
+                        <xsl:otherwise>dateRangeEvening</xsl:otherwise>
+                      </xsl:choose>
+                    </xsl:when>
+                    <xsl:otherwise>dateRangeCrossDay</xsl:otherwise>
+                  </xsl:choose>
+                </xsl:variable>
+                <xsl:choose>
+                  <xsl:when test="start/allday = 'true' and
+                                  start/shortdate = end/shortdate">
+                    <td class="{$dateRangeStyle} center" colspan="3">
+                      all day
+                    </td>
+                  </xsl:when>
+                  <xsl:when test="start/shortdate = end/shortdate and
+                                  start/time = end/time">
+                    <td class="{$dateRangeStyle} center" colspan="3">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <xsl:value-of select="start/time"/>
+                      </a>
+                    </td>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <td class="{$dateRangeStyle} right">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                      <xsl:choose>
+                        <xsl:when test="start/allday = 'true' and
+                                        parent::day/shortdate = start/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != start/shortdate">
+                          <span class="littleArrow">&#171;</span>&#160;
+                          <xsl:value-of select="start/month"/>/<xsl:value-of select="start/day"/>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="start/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                      </a>
+                    </td>
+                    <td class="{$dateRangeStyle} center">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">-</a>
+                    </td>
+                    <td class="{$dateRangeStyle} left">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                      <xsl:choose>
+                        <xsl:when test="end/allday = 'true' and
+                                        parent::day/shortdate = end/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != end/shortdate">
+                          <xsl:value-of select="end/month"/>/<xsl:value-of select="end/day"/>
+                          &#160;<span class="littleArrow">&#187;</span>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="end/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                      </a>
+                    </td>
+                  </xsl:otherwise>
+                </xsl:choose>
+                <xsl:variable name="descriptionClass">
+                  <xsl:choose>
+                    <xsl:when test="status='CANCELLED'">description bwStatusCancelled</xsl:when>
+                    <xsl:when test="status='TENTATIVE'">description bwStatusTentative</xsl:when>
+                    <xsl:otherwise>description</xsl:otherwise>
+                  </xsl:choose>
+                </xsl:variable>
+                <td class="{$descriptionClass}">
+                  <xsl:if test="status='CANCELLED'"><strong>CANCELLED: </strong></xsl:if>
+                  <xsl:choose>
+                    <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <strong>
+                          <xsl:value-of select="summary"/>:
+                        </strong>
+                        <xsl:value-of select="description"/>&#160;
+                        <em>
+                          <xsl:value-of select="location/address"/>
+                          <xsl:if test="location/subaddress != ''">
+                            , <xsl:value-of select="location/subaddress"/>
+                          </xsl:if>.&#160;
+                          <xsl:if test="cost!=''">
+                            <xsl:value-of select="cost"/>.&#160;
+                          </xsl:if>
+                          <xsl:if test="sponsor/name!='none'">
+                            Contact: <xsl:value-of select="sponsor/name"/>
+                          </xsl:if>
+                        </em>
+                      </a>
+                      <xsl:if test="link != ''">
+                        <xsl:variable name="link" select="link"/>
+                        <a href="{$link}" class="moreLink"><xsl:value-of select="link"/></a>
+                      </xsl:if>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <xsl:value-of select="summary"/>
+                        <xsl:if test="location/address != ''">, <xsl:value-of select="location/address"/></xsl:if>
+                      </a>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </td>
+                <td class="icons">
+                  <variable name="confId" select="/bedework/confirmationid"/>
+                  <a href="{$privateCal}/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
+                    <img class="addref" src="{$resourcesRoot}/images/add2mycal-icon-small.gif" width="12" height="16" border="0" alt="Add event to MyCalendar"/>
+                  </a>
+                  <xsl:variable name="eventIcalName" select="concat($id,'.ics')"/>
+                  <a href="{$export}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
+                    <img src="{$resourcesRoot}/images/std-ical_icon_small.gif" width="12" height="16" border="0" alt="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars"/>
+                  </a>
+                </td>
+              </tr>
+            </xsl:for-each>
+          </xsl:for-each>
+        </xsl:otherwise>
+      </xsl:choose>
+    </table>
+  </xsl:template>
+
+  <!--==== WEEK CALENDAR VIEW ====-->
+  <xsl:template name="weekView">
+    <table id="monthCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:for-each select="/bedework/daynames/val">
+          <th class="dayHeading"><xsl:value-of select="."/></th>
+        </xsl:for-each>
+      </tr>
+      <tr>
+        <xsl:for-each select="/bedework/eventscalendar/year/month/week/day">
+          <xsl:variable name="dayPos" select="position()"/>
+          <xsl:if test="filler='false'">
+            <td>
+              <xsl:variable name="dayDate" select="date"/>
+              <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}" class="dayLink">
+                <xsl:value-of select="value"/>
+              </a>
+              <ul>
+                <xsl:apply-templates select="event" mode="calendarLayout">
+                  <xsl:with-param name="dayPos" select="$dayPos"/>
+                </xsl:apply-templates>
+              </ul>
+            </td>
+          </xsl:if>
+        </xsl:for-each>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== MONTH CALENDAR VIEW ====-->
+  <xsl:template name="monthView">
+    <table id="monthCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:for-each select="/bedework/daynames/val">
+          <th class="dayHeading"><xsl:value-of select="."/></th>
+        </xsl:for-each>
+      </tr>
+      <xsl:for-each select="/bedework/eventscalendar/year/month/week">
+        <tr>
+          <xsl:for-each select="day">
+            <xsl:variable name="dayPos" select="position()"/>
+            <xsl:choose>
+              <xsl:when test="filler='true'">
+                <td class="filler">&#160;</td>
+              </xsl:when>
+              <xsl:otherwise>
+                <td>
+                  <xsl:variable name="dayDate" select="date"/>
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}" class="dayLink">
+                    <xsl:value-of select="value"/>
+                  </a>
+                  <ul>
+                    <xsl:apply-templates select="event" mode="calendarLayout">
+                      <xsl:with-param name="dayPos" select="$dayPos"/>
+                    </xsl:apply-templates>
+                  </ul>
+                </td>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:for-each>
+        </tr>
+      </xsl:for-each>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="event" mode="calendarLayout">
+    <xsl:param name="dayPos"/>
+    <xsl:variable name="subscriptionId" select="subscription/id"/>
+    <xsl:variable name="calPath" select="calendar/encodedPath"/>
+    <xsl:variable name="guid" select="guid"/>
+    <xsl:variable name="recurrenceId" select="recurrenceId"/>
+    <xsl:variable name="eventClass">
+      <xsl:choose>
+        <!-- Special styles for the month grid -->
+        <xsl:when test="status='CANCELLED'">eventCancelled</xsl:when>
+        <xsl:when test="status='TENTATIVE'">eventTentative</xsl:when>
+        <xsl:when test="calendar/name='Holidays'">holiday</xsl:when>
+        <!-- Alternating colors for all standard events -->
+        <xsl:when test="position() mod 2 = 1">eventLinkA</xsl:when>
+        <xsl:otherwise>eventLinkB</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <li>
+      <a href="{$eventView}&amp;subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" class="{$eventClass}">
+        <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
+        <xsl:value-of select="summary"/>
+        <xsl:variable name="eventTipClass">
+          <xsl:choose>
+            <xsl:when test="$dayPos &gt; 5">eventTipReverse</xsl:when>
+            <xsl:otherwise>eventTip</xsl:otherwise>
+          </xsl:choose>
+        </xsl:variable>
+        <span class="{$eventTipClass}">
+          <xsl:if test="status='CANCELLED'"><span class="eventTipStatusCancelled">CANCELLED</span></xsl:if>
+          <xsl:if test="status='TENTATIVE'"><span class="eventTipStatusTentative">TENTATIVE</span></xsl:if>
+          <strong><xsl:value-of select="summary"/></strong><br/>
+          Time:
+          <xsl:choose>
+            <xsl:when test="start/allday = 'false'">
+              <xsl:value-of select="start/time"/>
+              <xsl:if test="start/time != end/time">
+                - <xsl:value-of select="end/time"/>
+              </xsl:if>
+            </xsl:when>
+            <xsl:otherwise>
+              all day
+            </xsl:otherwise>
+          </xsl:choose><br/>
+          <xsl:if test="location/address">
+            Location: <xsl:value-of select="location/address"/><br/>
+          </xsl:if>
+          Calendar: <xsl:value-of select="calendar/name"/>
+        </span>
+      </a>
+    </li>
+  </xsl:template>
+
+  <!--==== YEAR VIEW ====-->
+  <xsl:template name="yearView">
+    <table id="yearCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[position() &lt;= 3]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[(position() &gt; 3) and (position() &lt;= 6)]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[(position() &gt; 6) and (position() &lt;= 9)]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[position() &gt; 9]"/>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- year view month tables -->
+  <xsl:template match="month">
+    <td>
+      <table class="yearViewMonthTable" border="0" cellpadding="0" cellspacing="0">
+        <tr>
+          <td colspan="8" class="monthName">
+            <xsl:variable name="firstDayOfMonth" select="week/day/date"/>
+            <a href="{$setViewPeriod}?viewType=monthView&amp;date={$firstDayOfMonth}">
+              <xsl:value-of select="longname"/>
+            </a>
+          </td>
+        </tr>
+        <tr>
+          <th>&#160;</th>
+          <xsl:for-each select="/bedework/shortdaynames/val">
+            <th><xsl:value-of select="."/></th>
+          </xsl:for-each>
+        </tr>
+        <xsl:for-each select="week">
+          <tr>
+            <td class="weekCell">
+              <xsl:variable name="firstDayOfWeek" select="day/date"/>
+              <a href="{$setViewPeriod}?viewType=weekView&amp;date={$firstDayOfWeek}">
+                <xsl:value-of select="value"/>
+              </a>
+            </td>
+            <xsl:for-each select="day">
+              <xsl:choose>
+                <xsl:when test="filler='true'">
+                  <td class="filler">&#160;</td>
+                </xsl:when>
+                <xsl:otherwise>
+                  <td>
+                    <xsl:variable name="dayDate" select="date"/>
+                    <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}">
+                      <xsl:value-of select="value"/>
+                    </a>
+                  </td>
+                </xsl:otherwise>
+              </xsl:choose>
+            </xsl:for-each>
+          </tr>
+        </xsl:for-each>
+      </table>
+    </td>
+  </xsl:template>
+
+  <!--==== CALENDARS PAGE ====-->
+  <xsl:template match="calendars">
+    <xsl:variable name="topLevelCalCount" select="count(calendar/calendar)"/>
+    <table id="calPageTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <th colspan="2">
+          All Calendars
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" class="infoCell">
+          Select a calendar from the list below to see only that calendar's events.
+        </td>
+      </tr>
+      <tr>
+        <td class="leftCell">
+          <ul class="calendarTree">
+            <xsl:apply-templates select="calendar/calendar[position() &lt;= ceiling($topLevelCalCount div 2)]" mode="calTree"/>
+          </ul>
+        </td>
+        <td>
+          <ul class="calendarTree">
+            <xsl:apply-templates select="calendar/calendar[position() &gt; ceiling($topLevelCalCount div 2)]" mode="calTree"/>
+          </ul>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="calendar" mode="calTree">
+    <xsl:variable name="itemClass">
+      <xsl:choose>
+        <xsl:when test="calendarCollection='false'">folder</xsl:when>
+        <xsl:otherwise>calendar</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="url" select="path"/>
+    <li class="{$itemClass}">
+      <a href="{$setSelection}?calUrl={$url}"><xsl:value-of select="name"/></a>
+      <xsl:if test="calendar">
+        <ul>
+          <xsl:apply-templates select="calendar" mode="calTree"/>
+        </ul>
+      </xsl:if>
+    </li>
+  </xsl:template>
+
+  <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
+  <xsl:template name="stats">
+    <div id="stats">
+      <h2>System Statistics</h2>
+
+      <p>
+        Stats collection:
+      </p>
+      <ul>
+        <li>
+          <a href="{$stats}&amp;enable=yes">enable</a> |
+          <a href="{$stats}&amp;disable=yes">disable</a>
+        </li>
+        <li><a href="{$stats}&amp;fetch=yes">fetch statistics</a></li>
+        <li><a href="{$stats}&amp;dump=yes">dump stats to log</a></li>
+      </ul>
+      <table id="statsTable" cellpadding="0">
+        <xsl:for-each select="/bedework/sysStats/*">
+          <xsl:choose>
+            <xsl:when test="name(.) = 'header'">
+              <tr>
+                <th colspan="2">
+                  <xsl:value-of select="."/>
+                </th>
+              </tr>
+            </xsl:when>
+            <xsl:otherwise>
+              <tr>
+                <td class="label">
+                  <xsl:value-of select="label"/>
+                </td>
+                <td class="value">
+                  <xsl:value-of select="value"/>
+                </td>
+              </tr>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:for-each>
+      </table>
+    </div>
+  </xsl:template>
+
+  <!--==== UTILITY TEMPLATES ====-->
+
+  <!-- search and replace template taken from
+       http://www.biglist.com/lists/xsl-list/archives/200211/msg00337.html -->
+  <xsl:template name="replace">
+    <xsl:param name="string" select="''"/>
+    <xsl:param name="pattern" select="''"/>
+    <xsl:param name="replacement" select="''"/>
+    <xsl:choose>
+      <xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
+        <xsl:value-of select="substring-before($string, $pattern)"/>
+        <xsl:copy-of select="$replacement"/>
+        <xsl:call-template name="replace">
+          <xsl:with-param name="string" select="substring-after($string, $pattern)"/>
+          <xsl:with-param name="pattern" select="$pattern"/>
+          <xsl:with-param name="replacement" select="$replacement"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$string"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!--==== FOOTER ====-->
+
+  <xsl:template name="footer">
+    <div id="footer">
+      Demonstration calendar; place footer information here.
+    </div>
+    <table id="skinSelectorTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <td class="leftCell">
+          Based on the <a href="http://www.bedework.org/">Bedework Calendar</a> |
+          <a href="?noxslt=yes">show XML</a> |
+          <a href="?refreshXslt=yes">refresh XSLT</a>
+        </td>
+        <td class="rightCell">
+          <form name="styleSelectForm" method="get" action="{$setup}">
+            <select name="setappvar" onChange="submit()">
+              <option>example styles:</option>
+              <option value="style(green)">green</option>
+              <option value="style(red)">red</option>
+              <option value="style(blue)">blue</option>
+            </select>
+          </form>
+          <form name="skinSelectForm" method="get" action="{$setup}">
+            <input type="hidden" name="setappvar" value="summaryMode(details)"/>
+            <select name="skinPicker" onchange="window.location = this.value">
+              <option>example skins:</option>
+              <option value="{$setViewPeriod}?viewType=weekView&amp;skinName=rss&amp;setappvar=summaryMode(details)">rss feed</option>
+              <option value="{$setViewPeriod}?viewType=todayView&amp;skinName=jsToday&amp;contentType=text/javascript&amp;contentName=bedework.js">javascript feed</option>
+              <option value="{$setViewPeriod}?viewType=todayView&amp;skinName=videocal">video feed</option>
+              <option value="{$setup}?skinName=default">reset to calendar default</option>
+            </select>
+          </form>
+          <form name="skinSelectForm" method="get" action="">
+            <select name="sitePicker" onchange="window.location = this.value">
+              <option>production examples:</option>
+              <option value="http://events.dal.ca/">Dalhousie</option>
+              <option value="http://events.rpi.edu">Rensselaer</option>
+              <option value="http://myuw.washington.edu/cal/">Washington</option>
+            </select>
+          </form>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/errors.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/errors.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/errors.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="error">
+    <xsl:choose>
+      <xsl:when test="id='edu.rpi.sss.util.error.exc'">
+          An exception occurred:<br/>
+          <em><xsl:value-of select="param"/></em>
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.nosuchevent'">
+          Event does not exist:<br/><em><xsl:value-of select="param"/></em>
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.baddate'">
+          The date you have entered is out of range.
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.noaccess'">
+          You have insufficient access to make that request
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.missingsubscriptionid'">
+          The request cannot be processed: missing subscription ID.
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.unknowncalendar'">
+          Unknown calendar
+      </xsl:when>
+      <xsl:when test="id='org.bedework.client.error.unknownview'">
+          Unknown view
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="id"/> = <xsl:value-of select="param"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+</xsl:stylesheet>
+

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/green.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/green.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/green.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,845 @@
+body {
+  font-family : Arial, Helvetica, sans-serif;
+  font-size: 100%; /* needed for IE */
+  background-color : white;
+  color : black;
+  padding: 0.75em 1em 0em 1em;
+  min-width: 700px;
+}
+/* Generic selector (overides to common.css) */
+h2 {
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+/* end generic selectors */
+#logoTable {
+  padding: 0em;
+  margin: 0em;
+}
+#logoTable img {
+  display: inline;
+  padding: 0 0 1px 5px;
+}
+#logoTable #logoCell {
+  white-space: nowrap;
+  font-weight: bold;
+  font-size: 2em;
+}
+#logoTable #schoolLinksCell {
+  vertical-align: bottom;
+  text-align: right;
+  font-size: 0.8em;
+  white-space : nowrap;
+  padding: 0 2px 2px 0;
+}
+#logoTable #schoolLinksCell h2 {
+  margin: 0 0 2px 0;
+  padding: 0;
+  font-size: 2em;
+  color: #444;
+  background-color: transparent;
+  border: none;
+}
+#logoTable #schoolLinksCell a:link,
+#logoTable #schoolLinksCell a:visited,
+#logoTable #schoolLinksCell a:active {
+  background-color: transparent;
+  color: #999;
+  text-decoration: none;
+}
+#logoTable #schoolLinksCell a:hover {
+  background-color: #eee;
+  color: #333;
+  text-decoration: none;
+}
+#titleBar {
+  display: none;
+}
+#curDateRangeTable {
+  width: 100%;
+  height: 26px;
+  background: #2c5f89 url(../../images/curDateRangeGreen.gif) repeat-x bottom;
+  color : #eee;
+  margin: 0em;
+  font-weight : bold;
+  text-align : center;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+#curDateRangeTable td {
+  padding-top: 5px;
+  padding-bottom: 1px;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+#curDateRangeTable td.sideBarOpenCloseIcon {
+  background: url(../../images/curDateRangeGreen-left.gif) no-repeat top left;
+  color: inherit;
+  width: 200px;
+}
+#curDateRangeTable td.date {
+  font-weight : bold;
+  text-align : center;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint {
+  background: url(../../images/curDateRangeGreen-right.gif) no-repeat top right;
+  color: inherit;
+  width: 200px;
+  font-weight : bold;
+  text-align : right;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint img {
+  position: relative;
+  top: 3px;
+}
+#curDateRangeTable td.rssPrint a:link,
+#curDateRangeTable td.rssPrint a:active,
+#curDateRangeTable td.rssPrint a:visited {
+  font-size: 10px;
+  color: #eee;
+  background-color: transparent;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 0;
+  text-decoration: none;
+  margin-right: 0.5em;
+  position: relative;
+  top: -3px;
+}
+#curDateRangeTable td.rssPrint a:hover {
+  color: #663;
+  background-color: #fff;
+}
+#curDateRangeTable td.rssPrint a.rss:link,
+#curDateRangeTable td.rssPrint a.rss:active,
+#curDateRangeTable td.rssPrint a.rss:visited {
+  font-size: 10px;
+  font-weight: bold;
+  color: #444;
+  background-color: #ddd;
+  font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+  padding: 0px 1px 0px 1px;
+  text-decoration: none;
+  margin-right: 0.5em;
+  margin-left: 2px;
+  position: relative;
+  top: -3px;
+  border: solid 1px #666;
+}
+#curDateRangeTable td.rssPrint a.rss:hover {
+  color: #900;
+  background-color: #fff;
+}
+#searchBarTable {
+  margin: 0px;
+  padding: 0em;
+  background-color : #eee;
+  color: black;
+  font-size: 0.9em;
+}
+#searchBarTable .leftCell {
+  margin: 0px;
+  padding: 0em;
+  border-left: 3px solid #333;
+  padding: 0.1em 0 0 0.5em;
+  white-space: nowrap;
+}
+#searchBarTable .leftCell .link {
+  font-size: 0.8em;
+  padding-left: 1em;
+  color: #999;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a {
+  color: #888;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+#searchBarTable .rightCell {
+  margin: 0px;
+  padding: 0em;
+  text-align: right;
+  border-right: 3px solid #333;
+  padding: 0.1em 0.1em 0em 0em;
+  white-space: nowrap;
+}
+#searchBarTable form {
+  display: inline;
+  margin: 0px 0px 1px 0px;
+  padding: 0em;
+}
+#tabsTable {
+  margin: 0em;
+  padding: 4px 0px 0px 0px;
+  text-align: center;
+  background-color: #333;
+  color: #eee;
+}
+#tabsTable .centerCell  a {
+  text-decoration: none;
+  color: #eee;
+}
+#tabsTable .centerCell  img {
+  margin-right: 1px;
+}
+#tabsTable .rightCell {
+  background : url(../../images/demo/std-tab-space.gif);
+  padding-right: 0.5em;
+}
+#navigationBarTable {
+  font-size: 0.8em;
+  margin: 0em;
+  padding: 0em;
+  vertical-align: top;
+  border-left : 2px solid #333;
+  border-right : 2px solid #333;
+  border-bottom: 1px solid Gray;
+}
+#navigationBarTable a {
+  text-decoration: none;
+  white-space: nowrap;
+}
+#navigationBarTable td {
+  vertical-align: top;
+}
+#navigationBarTable form {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable table {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable td.todayButton {
+  padding: 1em 1em 0 1em;
+}
+#navigationBarTable td.gotoForm {
+  padding: 1em 0.5em 0 0;
+}
+#navigationBarTable td.leftCell {
+    text-align: left;
+  white-space: nowrap;
+  padding-left: 0.5em;
+  font-size: 1.3em;
+  font-weight: bold;
+  padding: 0.75em 0em 0.75em 1em;
+  width: 100%;
+  vertical-align: middle;
+}
+#navigationBarTable td.leftCell .prevImg {
+  margin: 0 0.2em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.leftCell .nextImg {
+  margin: 0 0.75em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.rightCell {
+  text-align: right;
+  padding: 1em 0.5em 0em 0em;
+}
+#navigationBarTable td.rightCell select {
+  padding-right: 0em;
+  margin: 0em;
+  width: 10em;
+}
+#searchBarTable .calLinks {
+  white-space: nowrap;
+}
+#eventTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#eventTable td.fieldval {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 1em;
+}
+#eventTable td.fieldname {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 0.5em;
+  color: black;
+  background-color: #eee;
+}
+#eventTable th.fieldval {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 1em;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#eventTable th.fieldname {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 0.5em;
+  background-color: #eee;
+  color: black;
+}
+#eventTable th.icalIcon {
+  margin: 0em;
+  vertical-align: middle;
+  text-align: right;
+  padding: 0.5em 1em 0.2em 0.5em;
+  white-space: nowrap;
+	font-size: 0.9em;
+	font-weight: normal;
+}
+#eventTable th.icalIcon a {
+  text-decoration: none;
+}
+#eventTable th.icalIcon img {
+  vertical-align: middle;
+	padding-left: 1em;
+}
+#calPageTable {
+  width: 100%;
+  font-size: 100%;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#calPageTable td {
+  width: 50%;
+  vertical-align: top;
+  padding: 0.5em 2em 1em 3em;
+}
+#calPageTable th {
+  font-size: 1.2em;
+  background-color: #ccc;
+  color: black;
+  font-weight: bold;
+}
+#calPageTable td.leftCell {
+  border-right : thin dashed #999;
+}
+#calPageTable h2 {
+  font-size: 1.2em;
+}
+#calPageTable td.infoCell {
+  background-color: #eee;
+  color: black;
+  text-align: center;
+}
+#dayCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#dayCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#dayCalendarTable .dateRange {
+  text-align: left;
+  background-color: #dadfaf;
+  color: black;
+  white-space: nowrap;
+}
+#dayCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#dayCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#weekCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#weekCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#weekCalendarTable .dateRange {
+  text-align: left;
+  background-color: #dfd;
+  color: black;
+  white-space: nowrap;
+}
+#weekCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#weekCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#monthCalendarTable {
+  width: 100%;
+  font-size: 0.8em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#monthCalendarTable th.dayHeading {
+  width: 14%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: #363;
+  color: #eee;
+  border: 1px solid black;
+}
+#monthCalendarTable td {
+  width: 14%;
+  height: 60px;
+  vertical-align: top;
+  text-align: left;
+  padding: 0em;
+  border: 1px solid #aaa;
+  background-color: white;
+  color: black;
+}
+#monthCalendarTable td.filler {
+  border: none;
+  background-color: #eee;
+  color: black;
+}
+#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : none;
+  margin: 0em;
+  padding: 0.3em 0em 0em 0em;
+}
+#monthCalendarTable ul li {
+  margin: 0em;
+  padding: 0em;
+  display: inline;
+}
+#monthCalendarTable a.eventLinkA:link,
+#monthCalendarTable a.eventLinkA:visited,
+#monthCalendarTable a.eventLinkA:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #dadfaf;
+  color: black;
+}
+#monthCalendarTable a.eventLinkB:link,
+#monthCalendarTable a.eventLinkB:visited,
+#monthCalendarTable a.eventLinkB:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #edf2bd;
+  color: black;
+}
+#monthCalendarTable a.eventCancelled:link,
+#monthCalendarTable a.eventCancelled:visited,
+#monthCalendarTable a.eventCancelled:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #ccc;
+  color: black;
+}
+#monthCalendarTable a.eventTentative:link,
+#monthCalendarTable a.eventTentative:visited,
+#monthCalendarTable a.eventTentative:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  border-bottom: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#monthCalendarTable a.holiday:link,
+#monthCalendarTable a.holiday:visited,
+#monthCalendarTable a.holiday:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fff;
+  color: black;
+  /*border-top: 1px solid black;
+  border-bottom: 1px solid black;*/
+}
+#monthCalendarTable a.eventLinkA:hover,
+#monthCalendarTable a.eventLinkB:hover,
+#monthCalendarTable a.eventCancelled:hover,
+#monthCalendarTable a.eventTentative:hover,
+#monthCalendarTable a.holiday:hover   {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  color: black;
+  background-color: #ffc;
+}
+#monthCalendarTable a.dayLink {
+  text-decoration: none;
+  color: black;
+  background-color: transparent;
+}
+#monthCalendarTable a:hover.dayLink {
+  text-decoration: none;
+  color: #eee;
+  background-color: black;
+}
+#monthCalendarTable a:hover {
+  /* required for eventTip to hover correctly;
+     apply only to the hover pseudo class, or
+     the other anchors nearby will cover the eventTip in IE */
+  position: relative;
+}
+#monthCalendarTable a span.eventTip,
+#monthCalendarTable a span.eventTipReverse {
+  display: none;
+}
+#monthCalendarTable a:hover span.eventTip {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: 12em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+  /*opacity: .80;
+  filter: alpha(opacity=80);*/
+}
+#monthCalendarTable a:hover span.eventTipReverse {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: -21em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+  /*opacity: .80;
+  filter: alpha(opacity=80);*/
+}
+#monthCalendarTable a:hover span.eventTipStatusCancelled {
+  display: block;
+  color: white;
+  background-color: #333;
+  padding: 2px;
+  margin-bottom: 6px;
+  text-align: center;
+}
+#monthCalendarTable a:hover span.eventTipStatusTentative {
+  display: block;
+  color: black;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  padding: 2px;
+  margin-bottom: 6px;
+  border: 1px solid #ccc;
+  text-align: center;
+}
+a.gridAdd {
+  display: block;
+  float: right;
+  font-size: 0.8em;
+  text-decoration: none;
+  margin-right: 2px;
+}
+#yearCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0em;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#yearCalendarTable td {
+  padding: 1em 0em 0em 0em;
+  margin: 0em;
+  vertical-align: top;
+  text-align: center;
+  width: 33%;
+}
+#yearCalendarTable table.yearViewMonthTable {
+  margin: 0em  1em 0.5em 1em;
+  border: 1px solid #666;
+}
+#yearCalendarTable table.yearViewMonthTable td {
+  text-align: center;
+  padding: 0.2em;
+  width: 12.5%;
+}
+#yearCalendarTable table.yearViewMonthTable th {
+  font-weight: bold;
+  background-color: #f5f5f5;
+  color: black;
+  padding: 0.2em;
+}
+#yearCalendarTable table.yearViewMonthTable td.monthName {
+  font-weight: bold;
+  text-align: center;
+  background-color: #666;
+  color: #eee;
+  white-space: nowrap;
+  border-bottom: 1px solid #999;
+}
+#yearCalendarTable table.yearViewMonthTable td.weekCell {
+  font-weight: bold;
+  font-size: 0.8em;
+  background-color: #f5f5f5;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td  a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.weekCell a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.monthName a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: #eee;
+}
+#yearCalendarTable  table.yearViewMonthTable td a:hover  {
+  text-decoration: none;
+  background-color: #ffc;
+  color: black;
+  border: 1px solid black;
+  padding: 0;
+}
+#listTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#listTable td {
+  padding: 0.5em;
+  margin: 0em;
+  border-bottom: 1px solid #bbb;
+}
+#listTable td a {
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRangeCrossDay {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #ddd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEarlyMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #d4d5c9;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #edf2bd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeAfternoon {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #dadfaf;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEvening {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #cacf9f;
+  color: black;
+  white-space: nowrap;
+}
+#listTable span.littleArrow {
+  font-size: 1.4em;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: white;
+  color: black;
+  width: 100%;
+}
+#listTable td.bwStatusCancelled {
+  background-color: #ddd;
+  color: black;
+}
+#listTable td.bwStatusTentative {
+  background: white url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#listTable td.description a {
+  display: block;
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.description a.moreLink {
+  display: inline;
+  background-color: transparent;
+  color: #900;
+  text-decoration: underline;
+}
+#listTable td.description:hover {
+  background-color: #eee;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRow {
+  text-align: left;
+  background-color: #888;
+  color: #eee;
+  font-size: 0.8em;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0em;
+}
+#listTable td.dateRow a {
+  display: block;
+  color: #fff;
+  background-color: transparent;
+  font-weight: bold;
+  text-decoration : none;
+}
+#listTable td.icons {
+  color: black;
+  background-color: #ddd;
+  white-space: nowrap;
+}
+#listTable td.icons img.addref {
+  margin-right: 0.5em;
+}
+#calPageTable ul.calendarTree li {
+  font-weight: bold;
+}
+#calPageTable ul.calendarTree li ul li {
+  font-weight: normal;
+}
+#calPageTable ul.calendarTree li.folder {
+  list-style-image: url(../../images/demo/catIcon.gif);
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+}
+#calPageTable ul.calendarTree li.calendar {
+  list-style-image: url(../../images/demo/calIcon-sm.gif);
+}
+.noEventsCell {
+  padding: 1em;
+}
+#footer {
+  font-size: 0.75em;
+  text-align : center;
+  margin-top: 0em;
+  padding: 1em;
+  color: #333;
+  background-color: #eee;
+  border-bottom: 2px solid #333;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+  white-space: nowrap;
+}
+#footer a {
+  color: #333;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#skinSelectorTable {
+  width: 100%;
+  padding-top: 0.5em;
+  font-size: 0.7em;
+  color: #333;
+  background-color: inherit;
+}
+#skinSelectorTable td {
+  vertical-align: top;
+}
+#skinSelectorTable td.rightCell {
+  text-align: right;
+}
+#skinSelectorTable td.leftCell {
+  text-align: left;
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.leftCell  a {
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.rightCell form {
+  display: inline;
+  margin: 0em;
+  padding: 0em;
+}
+#skinSelectorTable td.rightCell select {
+  font-size: 0.9em;
+  color: #333;
+  background-color: #eee;
+}
+/*   LINKS    */
+a:link, a:active, a:visited {
+  color: #060;
+  background-color: transparent;
+}
+a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+span.time {
+  text-transform : lowercase;
+}
+#featureHighlight {
+  color: #dd0;
+  font-style: italic;
+}
+.center {
+  text-align: center;
+}
+.left {
+  text-align: left;
+}
+.right {
+  text-align: right;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/ical.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/ical.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/ical.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="text"
+  indent="no"
+  media-type="text/calendar"
+  standalone="yes"
+/>
+
+<xsl:strip-space elements="*"/>
+<!-- ================= -->
+<!--  iCAL STYLESHEET  -->
+<!-- ================= -->
+<xsl:template match="/"><xsl:value-of select="/bedework/vcalendar"/></xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/jsToday.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/jsToday.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/jsToday.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html" omit-xml-declaration="yes" indent="no" media-type="text/javascript" standalone="yes"/>
+
+  <!-- usage: call the javascript feed from an html file by embedding the
+       following script tag:
+       <script src="http://yourservername/cal/setViewPeriod.do?viewType=todayView&skinName=jsToday&contentType=text/javascript&contentName=bedework.js" type="text/javascript"></script>
+
+       e.g.
+       <script src="http://localhost:8080/cal/setViewPeriod.do?viewType=todayView&skinName=jsToday&contentType=text/javascript&contentName=bedework.js" type="text/javascript"></script>
+
+       You should uncomment the code below that reads "Today's Events" and throw
+       away the following line.  You should modify this stylesheet if you intend
+       to display more than a single day's events.
+  -->
+
+  <!-- **********************************************************************
+    Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+  <xsl:variable name="urlprefix" select="/bedework/urlprefix"/>
+  <xsl:template match="/">
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;h3&gt;');</xsl:text>
+      <!--<xsl:text disable-output-escaping="yes">document.writeln("Today's Events");</xsl:text>-->
+      <xsl:text disable-output-escaping="yes">document.writeln("This Period's Events");</xsl:text>
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;/h3&gt;');</xsl:text>
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;ul class="eventFeed"&gt;');</xsl:text>
+    <xsl:choose>
+      <xsl:when test="/bedework/eventscalendar/year/month/week/day/event">
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month/week/day/event"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text disable-output-escaping="yes">document.writeln('&lt;li&gt;');</xsl:text>
+        <xsl:text disable-output-escaping="yes">document.writeln('There are no events posted today');</xsl:text>
+        <xsl:text disable-output-escaping="yes">document.writeln('&lt;/li&gt;');</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;/ul&gt;');</xsl:text>
+  </xsl:template>
+  <xsl:template match="event">
+    <xsl:variable name="aposStrippedSummary">
+      <xsl:call-template name="replace">
+        <xsl:with-param name="string" select="summary"/>
+        <xsl:with-param name="pattern" select='"&apos;"'/>
+        <xsl:with-param name="replacement" select='"\&apos;"'/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="strippedSummary" select='translate($aposStrippedSummary,"&#xA;"," ")'/>
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;li&gt;');</xsl:text>
+    <xsl:text disable-output-escaping="yes">document.writeln('    &lt;a href="</xsl:text><xsl:value-of select="$urlprefix"/><xsl:text disable-output-escaping="yes">/eventView.do?subid=</xsl:text><xsl:value-of select="subscription/id"/><xsl:text disable-output-escaping="yes">&amp;guid=</xsl:text><xsl:value-of select="guid"/><xsl:text disable-output-escaping="yes">&amp;recurrenceId=</xsl:text><xsl:value-of select="recurrenceId"/><xsl:text disable-output-escaping="yes">&amp;calPath=</xsl:text><xsl:value-of select="calendar/encodedPath"/><xsl:text disable-output-escaping="yes">&amp;skinName=default" target="_top"&gt;</xsl:text><xsl:value-of select="$strippedSummary" disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes">&lt;/a&gt;');</xsl:text>
+    <xsl:text disable-output-escaping="yes">document.writeln('&lt;/li&gt;');</xsl:text>
+  </xsl:template>
+  <xsl:template name="replace">
+    <xsl:param name="string" select="''"/>
+    <xsl:param name="pattern" select="''"/>
+    <xsl:param name="replacement" select="''"/>
+    <xsl:choose>
+      <xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
+        <xsl:value-of select="substring-before($string, $pattern)"/>
+        <xsl:copy-of select="$replacement"/>
+        <xsl:call-template name="replace">
+          <xsl:with-param name="string" select="substring-after($string, $pattern)"/>
+          <xsl:with-param name="pattern" select="$pattern"/>
+          <xsl:with-param name="replacement" select="$replacement"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$string"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/print.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/print.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/print.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,401 @@
+body {
+  font-family : Arial, Helvetica, sans-serif;
+  background-color : white;
+  color : black;
+  padding: 0.75em 1em 0em 1em;
+  margin: 0in;
+  font-size: 10pt;
+}
+tr {
+  page-break-inside: avoid;
+}
+td {
+  page-break-inside: avoid;
+}
+#logoTable {
+  display: none;
+}
+#titleBar {
+  background-color: #eee;
+  color: black;
+  display: block;
+  text-align: center;
+  font-size: 0.7em;
+  margin: 0em;
+  padding: 0em;
+  letter-spacing : 0.1em;
+}
+#dateBarTable td {
+  background-color: #eee;
+  color : black;
+  padding-top: 2px;
+  padding-bottom: 1em;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+  border-bottom: 1px solid #333;
+  margin: 0em;
+  font-weight : bold;
+  text-align : center;
+  white-space: nowrap;
+}
+#dateBarTable td.imgCell {
+  display: none;
+}
+#searchBarTable {
+  display: none;
+}
+#tabsTable {
+  display: none;
+}
+#navigationBarTable {
+  display: none;
+}
+#eventTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #333;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#eventTable td {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 0.5em;
+}
+#eventTable td.icalIcon {
+  display: none;
+}
+#eventTable th {
+  text-align: left;
+  padding: 1em 0.5em 1em 0.5em;
+  background-color: #666;
+  color: #eee;
+}
+#eventTable th.fieldval {
+  width: 100%;
+}
+#calPageTable {
+  width: 100%;
+  font-size: 100%;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#calPageTable td {
+  width: 50%;
+  vertical-align: top;
+  padding: 0.5em 2em 1em 3em;
+}
+#calPageTable th {
+  font-size: 1.2em;
+  background-color: #ccc;
+  color: black;
+  font-weight: bold;
+}
+#calPageTable td.leftCell {
+  border-right : thin dashed #999;
+}
+#calPageTable h2 {
+  font-size: 1.2em;
+}
+#calPageTable td.infoCell {
+  background-color: #eee;
+  color: black;
+  text-align: center;
+}
+#dayCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#dayCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#dayCalendarTable .dateRange {
+  text-align: left;
+  background-color: #fee;
+  color: black;
+  white-space: nowrap;
+}
+#dayCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#dayCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#weekCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#weekCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#weekCalendarTable .dateRange {
+  text-align: left;
+  background-color: #fdd;
+  color: black;
+  white-space: nowrap;
+}
+#weekCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#weekCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#monthCalendarTable {
+  width: 100%;
+  font-size: 0.8em;
+  margin: 0px;
+  padding: 0px;
+  /*border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;*/
+}
+#monthCalendarTable th.dayHeading {
+  width: 14%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: #666;
+  color: #eee;
+  border: 1px solid black;
+}
+#monthCalendarTable td {
+  width: 14%;
+  height: 60px;
+  vertical-align: top;
+  text-align: left;
+  padding: 0em;
+  border: 1px solid #333;
+  background-color: white;
+  color: black;
+}
+#monthCalendarTable td.filler {
+  border: none;
+  background-color: #eee;
+  color: black;
+  /*border: 1px solid #aaa;*/
+}
+#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : none;
+  margin: 0em;
+  padding: 0.3em 0em 0em 0em;
+}
+#monthCalendarTable ul li {
+  margin: 0em;
+  padding: 0em;
+  display: block;
+  border-top: 1px solid #666;
+}
+#monthCalendarTable ul  li:first-child {
+  border-top: none;
+}
+
+#monthCalendarTable span.eventLinkA  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fcc;
+  color: black;
+  border-bottom: 1px solid #666;
+}
+#monthCalendarTable span.eventLinkB  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fee;
+  color: black;
+}
+#yearCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0em;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#yearCalendarTable td {
+  padding: 1em 0em 0em 0em;
+  margin: 0em;
+  vertical-align: top;
+  text-align: center;
+  width: 33%;
+}
+#yearCalendarTable table.yearViewMonthTable {
+  margin: 0em  1em 0.5em 1em;
+  border: 1px solid #666;
+}
+#yearCalendarTable table.yearViewMonthTable td {
+  text-align: center;
+  padding: 0.2em;
+  width: 12.5%;
+}
+#yearCalendarTable table.yearViewMonthTable th {
+  font-weight: bold;
+  background-color: #f5f5f5;
+  color: black;
+  padding: 0.2em;
+}
+#yearCalendarTable table.yearViewMonthTable td.monthName {
+  font-weight: bold;
+  text-align: center;
+  background-color: #666;
+  color: #eee;
+  white-space: nowrap;
+  border-bottom: 1px solid #999;
+}
+#yearCalendarTable table.yearViewMonthTable td.weekCell {
+  font-weight: bold;
+  font-size: 0.8em;
+  background-color: #f5f5f5;
+  color: black;
+}
+#listTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#listTable td {
+  padding: 0.5em;
+  margin: 0em;
+  border-bottom: 1px solid #bbb;
+}
+#listTable td.dateRangeCrossDay {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #ddd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEarlyMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #dcc3c3;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fee;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeAfternoon {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fdd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEvening {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fcc;
+  color: black;
+  white-space: nowrap;
+}
+#listTable span.littleArrow {
+  font-size: 1.4em;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#listTable td.dateRow {
+  text-align: left;
+  background-color: #888;
+  color: #eee;
+  font-size: 0.8em;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0em;
+}
+#listTable td.icons {
+  display: none;
+}
+.noEventsCell {
+  padding: 1em;
+}
+#footer {
+  font-size: 0.8em;
+  text-align : center;
+  margin-top: 0em;
+  padding: 1em;
+  color: #333;
+  background-color: #eee;
+  border-bottom: 2px solid #333;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#skinSelectorTable {
+  display: none;
+  width: 100%;
+  padding-top: 0.5em;
+  font-size: 0.7em;
+  color: #333;
+  background-color: inherit;
+}
+#skinSelectorTable td {
+  vertical-align: top;
+}
+#skinSelectorTable td.rightCell {
+  text-align: right;
+}
+#skinSelectorTable td.leftCell {
+  text-align: left;
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.rightCell form {
+  display: inline;
+  margin: 0em;
+  padding: 0em;
+}
+#skinSelectorTable td.rightCell select {
+  font-size: 0.9em;
+  color: #333;
+  background-color: #eee;
+}
+a.submitPublicEvent {
+  display: none;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/red.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/red.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/red.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,850 @@
+body {
+  font-family : Arial, Helvetica, sans-serif;
+  font-size: 100%; /* needed for IE */
+  background-color : white;
+  color : black;
+  padding: 0.75em 1em 0em 1em;
+  min-width: 700px;
+}
+/* Generic selector (overides to common.css) */
+h2 {
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+/* end generic selectors */
+#logoTable {
+  padding: 0em;
+  margin: 0em;
+}
+#logoTable img {
+  display: inline;
+  padding: 0 0 1px 5px;
+}
+#logoTable #logoCell {
+  white-space: nowrap;
+  font-weight: bold;
+  font-size: 2em;
+}
+#logoTable #schoolLinksCell {
+  vertical-align: bottom;
+  text-align: right;
+  font-size: 0.8em;
+  white-space : nowrap;
+  padding: 0 2px 2px 0;
+}
+#logoTable #schoolLinksCell h2 {
+  margin: 0 0 2px 0;
+  padding: 0;
+  font-size: 2em;
+  color: #444;
+  background-color: transparent;
+  border: none;
+}
+#logoTable #schoolLinksCell a:link,
+#logoTable #schoolLinksCell a:visited,
+#logoTable #schoolLinksCell a:active {
+  background-color: transparent;
+  color: #999;
+  text-decoration: none;
+}
+#logoTable #schoolLinksCell a:hover {
+  background-color: #eee;
+  color: #333;
+  text-decoration: none;
+}
+#titleBar {
+  display: none;
+}
+#curDateRangeTable {
+  width: 100%;
+  height: 26px;
+  background: #2c5f89 url(../../images/curDateRangeRed.gif) repeat-x bottom;
+  color : #eee;
+  margin: 0em;
+  font-weight : bold;
+  text-align : center;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+#curDateRangeTable td {
+  padding-top: 5px;
+  padding-bottom: 1px;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+#curDateRangeTable td.sideBarOpenCloseIcon {
+  background: url(../../images/curDateRangeRed-left.gif) no-repeat top left;
+  color: inherit;
+  width: 200px;
+}
+#curDateRangeTable td.date {
+  font-weight : bold;
+  text-align : center;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint {
+  background: url(../../images/curDateRangeRed-right.gif) no-repeat top right;
+  color: inherit;
+  width: 200px;
+  font-weight : bold;
+  text-align : right;
+  white-space: nowrap;
+}
+#curDateRangeTable td.rssPrint img {
+  position: relative;
+  top: 3px;
+}
+#curDateRangeTable td.rssPrint a:link,
+#curDateRangeTable td.rssPrint a:active,
+#curDateRangeTable td.rssPrint a:visited {
+  font-size: 10px;
+  color: #eee;
+  background-color: transparent;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 0;
+  text-decoration: none;
+  margin-right: 0.5em;
+  position: relative;
+  top: -3px;
+}
+#curDateRangeTable td.rssPrint a:hover {
+  color: #663;
+  background-color: #fff;
+}
+#curDateRangeTable td.rssPrint a.rss:link,
+#curDateRangeTable td.rssPrint a.rss:active,
+#curDateRangeTable td.rssPrint a.rss:visited {
+  font-size: 10px;
+  font-weight: bold;
+  color: #444;
+  background-color: #ddd;
+  font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+  padding: 0px 1px 0px 1px;
+  text-decoration: none;
+  margin-right: 0.5em;
+  margin-left: 2px;
+  position: relative;
+  top: -3px;
+  border: solid 1px #666;
+}
+#curDateRangeTable td.rssPrint a.rss:hover {
+  color: #900;
+  background-color: #fff;
+}
+#searchBarTable {
+  margin: 0px;
+  padding: 0em;
+  background-color : #eee;
+  color: black;
+  font-size: 0.9em;
+}
+#searchBarTable .leftCell {
+  margin: 0px;
+  padding: 0em;
+  border-left: 3px solid #333;
+  padding: 0.1em 0 0 0.5em;
+  white-space: nowrap;
+}
+#searchBarTable .leftCell .link {
+  font-size: 0.8em;
+  padding-left: 1em;
+  color: #999;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a {
+  color: #888;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+#searchBarTable .rightCell {
+  margin: 0px;
+  padding: 0em;
+  text-align: right;
+  border-right: 3px solid #333;
+  padding: 0.1em 0.1em 0em 0em;
+  white-space: nowrap;
+}
+#searchBarTable form {
+  display: inline;
+  margin: 0px 0px 1px 0px;
+  padding: 0em;
+}
+#tabsTable {
+  margin: 0em;
+  padding: 4px 0px 0px 0px;
+  text-align: center;
+  background-color: #333;
+  color: #eee;
+}
+#tabsTable .centerCell  a {
+  text-decoration: none;
+  color: #eee;
+}
+#tabsTable .centerCell  img {
+  margin-right: 1px;
+}
+#tabsTable .rightCell {
+  background : url(../../images/demo/std-tab-space.gif);
+  padding-right: 0.5em;
+}
+#navigationBarTable {
+  font-size: 0.8em;
+  margin: 0em;
+  padding: 0em;
+  vertical-align: top;
+  border-left : 2px solid #333;
+  border-right : 2px solid #333;
+  border-bottom: 1px solid Gray;
+}
+#navigationBarTable a {
+  text-decoration: none;
+  white-space: nowrap;
+}
+#navigationBarTable td {
+  vertical-align: top;
+}
+#navigationBarTable form {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable table {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable td.todayButton {
+  padding: 1em 1em 0 1em;
+}
+#navigationBarTable td.gotoForm {
+  padding: 1em 0.5em 0 0;
+}
+#navigationBarTable td.leftCell {
+    text-align: left;
+  white-space: nowrap;
+  padding-left: 0.5em;
+  font-size: 1.3em;
+  font-weight: bold;
+  padding: 0.75em 0em 0.75em 1em;
+  width: 100%;
+  vertical-align: middle;
+}
+#navigationBarTable td.leftCell .prevImg {
+  margin: 0;
+  vertical-align: top;
+}
+#navigationBarTable td.leftCell .prevImg {
+  margin: 0 0.2em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.leftCell .nextImg {
+  margin: 0 0.75em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.rightCell select {
+  padding-right: 0em;
+  margin: 0em;
+  width: 10em;
+}
+#searchBarTable .calLinks {
+  white-space: nowrap;
+}
+#eventTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#eventTable td.fieldval {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 1em;
+}
+#eventTable td.fieldname {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 0.5em;
+  color: black;
+  background-color: #eee;
+}
+#eventTable th.fieldval {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 1em;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#eventTable th.fieldname {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 0.5em;
+  background-color: #eee;
+  color: black;
+}
+#eventTable th.icalIcon {
+  margin: 0em;
+  vertical-align: middle;
+  text-align: right;
+  padding: 0.5em 1em 0.2em 0.5em;
+  white-space: nowrap;
+	font-size: 0.9em;
+	font-weight: normal;
+}
+#eventTable th.icalIcon a {
+  text-decoration: none;
+}
+#eventTable th.icalIcon img {
+  vertical-align: middle;
+	padding-left: 1em;
+}
+#calPageTable {
+  width: 100%;
+  font-size: 100%;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#calPageTable td {
+  width: 50%;
+  vertical-align: top;
+  padding: 0.5em 2em 1em 3em;
+}
+#calPageTable th {
+  font-size: 1.2em;
+  background-color: #ccc;
+  color: black;
+  font-weight: bold;
+}
+#calPageTable td.leftCell {
+  border-right : thin dashed #999;
+}
+#calPageTable h2 {
+  font-size: 1.2em;
+}
+#calPageTable td.infoCell {
+  background-color: #eee;
+  color: black;
+  text-align: center;
+}
+#dayCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#dayCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#dayCalendarTable .dateRange {
+  text-align: left;
+  background-color: #fee;
+  color: black;
+  white-space: nowrap;
+}
+#dayCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#dayCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#weekCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#weekCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#weekCalendarTable .dateRange {
+  text-align: left;
+  background-color: #fdd;
+  color: black;
+  white-space: nowrap;
+}
+#weekCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#weekCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#monthCalendarTable {
+  width: 100%;
+  font-size: 0.8em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#monthCalendarTable th.dayHeading {
+  width: 14%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: #900;
+  color: #eee;
+  border: 1px solid black;
+}
+#monthCalendarTable td {
+  width: 14%;
+  height: 60px;
+  vertical-align: top;
+  text-align: left;
+  padding: 0em;
+  border: 1px solid #aaa;
+  background-color: white;
+  color: black;
+}
+#monthCalendarTable td.filler {
+  border: none;
+  background-color: #eee;
+  color: black;
+}
+#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : none;
+  margin: 0em;
+  padding: 0.3em 0em 0em 0em;
+}
+#monthCalendarTable ul li {
+  margin: 0em;
+  padding: 0em;
+  display: inline;
+}
+#monthCalendarTable a.eventLinkA:link,
+#monthCalendarTable a.eventLinkA:visited,
+#monthCalendarTable a.eventLinkA:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fcc;
+  color: black;
+}
+#monthCalendarTable a.eventLinkB:link,
+#monthCalendarTable a.eventLinkB:visited,
+#monthCalendarTable a.eventLinkB:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fee;
+  color: black;
+}
+#monthCalendarTable a.eventCancelled:link,
+#monthCalendarTable a.eventCancelled:visited,
+#monthCalendarTable a.eventCancelled:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #ccc;
+  color: black;
+}
+#monthCalendarTable a.eventTentative:link,
+#monthCalendarTable a.eventTentative:visited,
+#monthCalendarTable a.eventTentative:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  border-bottom: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#monthCalendarTable a.holiday:link,
+#monthCalendarTable a.holiday:visited,
+#monthCalendarTable a.holiday:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fff;
+  color: black;
+  /*border-top: 1px solid black;
+  border-bottom: 1px solid black;*/
+}
+#monthCalendarTable a.eventLinkA:hover,
+#monthCalendarTable a.eventLinkB:hover,
+#monthCalendarTable a.eventCancelled:hover,
+#monthCalendarTable a.eventTentative:hover,
+#monthCalendarTable a.holiday:hover   {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  color: black;
+  background-color: #ffe;
+}
+#monthCalendarTable a.dayLink {
+  text-decoration: none;
+  color: black;
+  background-color: transparent;
+}
+#monthCalendarTable a:hover.dayLink {
+  text-decoration: none;
+  color: #eee;
+  background-color: black;
+}
+#monthCalendarTable a:hover {
+  /* required for eventTip to hover correctly;
+     apply only to the hover pseudo class, or
+     the other anchors nearby will cover the eventTip in IE */
+  position: relative;
+}
+#monthCalendarTable a span.eventTip,
+#monthCalendarTable a span.eventTipReverse {
+  display: none;
+}
+#monthCalendarTable a:hover span.eventTip {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: 12em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+  /*opacity: .80;
+  filter: alpha(opacity=80);*/
+}
+#monthCalendarTable a:hover span.eventTipReverse {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: -21em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+  /*opacity: .80;
+  filter: alpha(opacity=80);*/
+}
+
+#monthCalendarTable a:hover span.eventTipStatusCancelled {
+  display: block;
+  color: white;
+  background-color: #333;
+  padding: 2px;
+  margin-bottom: 6px;
+  text-align: center;
+}
+#monthCalendarTable a:hover span.eventTipStatusTentative {
+  display: block;
+  color: black;
+  background: #eee url('../../images/tentativeLines.gif') top;
+  padding: 2px;
+  margin-bottom: 6px;
+  border: 1px solid #ccc;
+  text-align: center;
+}
+a.gridAdd {
+  display: block;
+  float: right;
+  font-size: 0.8em;
+  text-decoration: none;
+  margin-right: 2px;
+}
+#yearCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0em;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#yearCalendarTable td {
+  padding: 1em 0em 0em 0em;
+  margin: 0em;
+  vertical-align: top;
+  text-align: center;
+  width: 33%;
+}
+#yearCalendarTable table.yearViewMonthTable {
+  margin: 0em  1em 0.5em 1em;
+  border: 1px solid #666;
+}
+#yearCalendarTable table.yearViewMonthTable td {
+  text-align: center;
+  padding: 0.2em;
+  width: 12.5%;
+}
+#yearCalendarTable table.yearViewMonthTable th {
+  font-weight: bold;
+  background-color: #f5f5f5;
+  color: black;
+  padding: 0.2em;
+}
+#yearCalendarTable table.yearViewMonthTable td.monthName {
+  font-weight: bold;
+  text-align: center;
+  background-color: #666;
+  color: #eee;
+  white-space: nowrap;
+  border-bottom: 1px solid #999;
+}
+#yearCalendarTable table.yearViewMonthTable td.weekCell {
+  font-weight: bold;
+  font-size: 0.8em;
+  background-color: #f5f5f5;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td  a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.weekCell a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.monthName a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: #eee;
+}
+#yearCalendarTable  table.yearViewMonthTable td a:hover  {
+  text-decoration: none;
+  background-color: #FFC;
+  color: black;
+  border: 1px solid black;
+  padding: 0;
+}
+#listTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#listTable td {
+  padding: 0.5em;
+  margin: 0em;
+  border-bottom: 1px solid #bbb;
+}
+#listTable td a {
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRangeCrossDay {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #ddd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEarlyMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #dcc3c3;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fee;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeAfternoon {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fdd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEvening {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #fcc;
+  color: black;
+  white-space: nowrap;
+}
+#listTable span.littleArrow {
+  font-size: 1.4em;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: white;
+  color: black;
+  width: 100%;
+}
+#listTable td.bwStatusCancelled {
+  background-color: #ddd;
+  color: black;
+}
+#listTable td.bwStatusTentative {
+  background: white url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#listTable td.description a {
+  display: block;
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.description a.moreLink {
+  display: inline;
+  background-color: transparent;
+  color: #900;
+  text-decoration: underline;
+}
+#listTable td.description:hover {
+  background-color: #eee;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRow {
+  text-align: left;
+  background-color: #888;
+  color: #eee;
+  font-size: 0.8em;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0em;
+}
+#listTable td.dateRow a {
+  display: block;
+  color: #fff;
+  background-color: transparent;
+  font-weight: bold;
+  text-decoration : none;
+}
+#listTable td.icons {
+  color: black;
+  background-color: #ddd;
+  white-space: nowrap;
+}
+#listTable td.icons img.addref {
+  margin-right: 0.5em;
+}
+#calPageTable ul.calendarTree li {
+  font-weight: bold;
+}
+#calPageTable ul.calendarTree li ul li {
+  font-weight: normal;
+}
+#calPageTable ul.calendarTree li.folder {
+  list-style-image: url(../../images/demo/catIcon.gif);
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+}
+#calPageTable ul.calendarTree li.calendar {
+  list-style-image: url(../../images/demo/calIcon-sm.gif);
+}
+.noEventsCell {
+  padding: 1em;
+}
+#footer {
+  font-size: 0.75em;
+  text-align : center;
+  margin-top: 0em;
+  padding: 1em;
+  color: #333;
+  background-color: #eee;
+  border-bottom: 2px solid #333;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+  white-space: nowrap;
+}
+#footer a {
+  color: #333;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#skinSelectorTable {
+  width: 100%;
+  padding-top: 0.5em;
+  font-size: 0.7em;
+  color: #333;
+  background-color: inherit;
+}
+#skinSelectorTable td {
+  vertical-align: top;
+}
+#skinSelectorTable td.rightCell {
+  text-align: right;
+}
+#skinSelectorTable td.leftCell {
+  text-align: left;
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.leftCell  a {
+  color: #999;
+  background-color: inherit;
+}
+#skinSelectorTable td.rightCell form {
+  display: inline;
+  margin: 0em;
+  padding: 0em;
+}
+#skinSelectorTable td.rightCell select {
+  font-size: 0.9em;
+  color: #333;
+  background-color: #eee;
+}
+/*   LINKS    */
+a:link, a:active {
+  color: #900;
+  background-color: transparent;
+}
+a:visited {
+  color: #600;
+  background-color: transparent;
+}
+a:hover {
+  color: #b33;
+  background-color: transparent;
+}
+span.time {
+  text-transform : lowercase;
+}
+#featureHighlight {
+  color: #dd0;
+  font-style: italic;
+}
+.center {
+  text-align: center;
+}
+.left {
+  text-align: left;
+}
+.right {
+  text-align: right;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/rss.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/rss.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/rss.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output
+    method="xml"
+    omit-xml-declaration="no"
+    indent="yes"
+    doctype-public="'-//Netscape Communications//DTD RSS 0.91//EN' 'http://my.netscape.com/public/formats/rss-0.91.dtd'"
+    media-type="text/xml"
+    encoding="ISO-8859-1"
+   />
+   <xsl:template match="/">
+     <rss version="2.0">
+      <channel>
+        <title>Bedework Events Calendar</title>
+        <link><xsl:value-of select="/bedework/urlprefix"/></link>
+        <description>My Site's Events</description>
+        <language>en-US</language>
+        <copyright>Copyright <xsl:value-of select="substring(/bedework/currentdate,1,4)"/>, Your Institution Here</copyright>
+        <managingEditor>editor at mysite.edu, Editor Name</managingEditor>
+        <xsl:apply-templates select="/bedework//event"/>
+      </channel>
+    </rss>
+  </xsl:template>
+  <xsl:template match="event">
+    <item>
+      <title><xsl:value-of select="summary"/> - <xsl:value-of select="substring(start/monthname,1,3)"/><xsl:text> </xsl:text><xsl:value-of select="start/day"/></title>
+      <link><xsl:value-of select="/bedework/urlprefix"/>/eventView.do?subid=<xsl:value-of select="subscription/id"/>&amp;calPath=<xsl:value-of select="calendar/encodedPath"/>&amp;guid=<xsl:value-of select="guid"/>&amp;recurrenceId=<xsl:value-of select="recurrenceId"/></link>
+      <pubDate><xsl:value-of select="substring(start/dayname,1,3)"/>,
+               <xsl:value-of select="start/twodigitday"/><xsl:text> </xsl:text>
+               <xsl:value-of select="substring(start/monthname,1,3)"/><xsl:text> </xsl:text>
+               <xsl:value-of select="start/fourdigityear"/><xsl:text> </xsl:text>
+               <xsl:value-of select="start/twodigithour24"/>:<xsl:value-of select="start/twodigitminute"/>:00 EST</pubDate>
+      <description>
+        <xsl:value-of select="substring(start/dayname,1,3)"/>,
+        <xsl:value-of select="start/longdate"/>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="start/time"/>
+        <xsl:if test="end/time != ''"> - </xsl:if>
+        <xsl:if test="end/dayname != start/dayname"><xsl:value-of select="substring(end/dayname,1,3)"/>, </xsl:if>
+        <xsl:if test="end/longdate != start/longdate"><xsl:value-of select="end/longdate"/>,</xsl:if>
+        <xsl:if test="end/time != ''"><xsl:value-of select="end/time"/></xsl:if>
+        <xsl:text> </xsl:text>
+        <xsl:value-of select="location/address"/>.
+        <xsl:if test="cost!=''"><xsl:value-of select="cost"/>. </xsl:if>
+        <xsl:value-of select="description"/>
+      </description>
+    </item>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,893 @@
+body {
+  font-family : Arial, Helvetica, sans-serif;
+  font-size: 100%; /* needed for IE */
+  background-color : #666;
+  color : black;
+  padding: 0 1em 0em 1em;
+  margin: 0;
+}
+#headBar {
+  position: relative;
+  background: #663 url(../../images/soecal/soeTitleBg.jpg);
+  color: #eee;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+  height: 106px;
+  padding: 12px;
+  margin: 0;
+  text-align: right;
+}
+#headBar img {
+  display: inline;
+  padding: 0 10px 20px 0;
+}
+#headBar h1 {
+  margin: 0;
+  padding: 84px 0 0 0;
+  font-size: 1em;
+  letter-spacing: 1px;
+  font-weight: normal;
+  color: #eee;
+  background-color: transparent;
+}
+#headBar #bedeworkLogo {
+  position: absolute;
+  top: 18px;
+  right: 0;
+}
+#headBar #schoolLinks {
+  font-size: 0.8em;
+  white-space : nowrap;
+  padding: 110px 0 0 0;
+  margin: 0;
+}
+#headBar #schoolLinks li {
+  display: inline;
+  list-style: none;
+  padding: 0 0 0 1.5em;
+}
+#headBar #schoolLinks a:link,
+#headBar #schoolLinks a:visited,
+#headBar #schoolLinks a:active {
+  background-color: transparent;
+  color: #ddd;
+  text-decoration: none;
+}
+#headBar #schoolLinks a:hover {
+  background-color: transparent;
+  color: #fff;
+  text-decoration: none;
+}
+#curDateRangeTable {
+  width: 100%;
+  height: 26px;
+  background: #663;
+  color : #eee;
+  margin: 0em;
+  font-weight : bold;
+  text-align : center;
+  vertical-align: middle;
+  white-space: nowrap;
+}
+#curDateRangeTable td {
+  padding-top: 5px;
+  padding-bottom: 1px;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+#curDateRangeTable td.sideBarOpenCloseIcon {
+  width: 200px;
+}
+#curDateRangeTable td.date {
+  font-weight : bold;
+  text-align : center;
+  white-space: nowrap;
+}
+#searchBarTable {
+  margin: 0px;
+  padding: 0em;
+  background-color : #eee;
+  color: black;
+  font-size: 0.9em;
+}
+#searchBarTable .leftCell {
+  margin: 0px;
+  padding: 0em;
+  border-left: 2px solid #333;
+  padding: 0.1em 0 0 0.5em;
+  white-space: nowrap;
+}
+#searchBarTable .leftCell .link {
+  font-size: 0.8em;
+  padding-left: 1em;
+  color: #999;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a {
+  color: #888;
+  background-color: transparent;
+}
+#searchBarTable .leftCell a:hover {
+  color: #b00;
+  background-color: transparent;
+}
+#searchBarTable .rightCell {
+  margin: 0px;
+  padding: 0em;
+  text-align: right;
+  border-right: 2px solid #333;
+  padding: 0.1em 0.1em 0em 0em;
+  white-space: nowrap;
+}
+#searchBarTable form {
+  display: inline;
+  margin: 0px 0px 1px 0px;
+  padding: 0em;
+}
+#tabsTable {
+  margin: 0em;
+  padding: 4px 0px 0px 0px;
+  text-align: center;
+  background-color: #333;
+  color: #eee;
+  border-left: 1px solid #333;
+}
+#tabsTable td.rssPrint {
+  background : url(../../images/demo/std-tab-space.gif);
+  padding-right: 0.5em;
+  width: 100%;
+  font-weight : bold;
+  text-align : right;
+  white-space: nowrap;
+}
+#tabsTable td.rssPrint img {
+  position: relative;
+  top: 3px;
+}
+#tabsTable td.rssPrint a:link,
+#tabsTable td.rssPrint a:active,
+#tabsTable td.rssPrint a:visited {
+  font-size: 10px;
+  color: #eee;
+  background-color: transparent;
+  font-family: Arial, Helvetica, sans-serif;
+  padding: 0;
+  text-decoration: none;
+  margin-right: 0.5em;
+  position: relative;
+  top: -3px;
+}
+#tabsTable td.rssPrint a:hover {
+  color: #663;
+  background-color: #fff;
+}
+#tabsTable td.rssPrint a.rss:link,
+#tabsTable td.rssPrint a.rss:active,
+#tabsTable td.rssPrint a.rss:visited {
+  font-size: 10px;
+  font-weight: bold;
+  color: #444;
+  background-color: #ddd;
+  font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
+  padding: 0px 1px 0px 1px;
+  text-decoration: none;
+  margin-right: 0.5em;
+  margin-left: 2px;
+  position: relative;
+  top: -3px;
+  border: solid 1px #666;
+}
+#tabsTable td.rssPrint a.rss:hover {
+  color: #900;
+  background-color: #fff;
+}
+#navigationBarTable {
+  font-size: 0.8em;
+  margin: 0em;
+  padding: 0em;
+  vertical-align: top;
+  color: black;
+  background: white;
+  border-left : 2px solid #333;
+  border-right : 2px solid #333;
+  border-bottom: 1px solid Gray;
+}
+#navigationBarTable a {
+  text-decoration: none;
+  white-space: nowrap;
+}
+#navigationBarTable td {
+  vertical-align: top;
+}
+#navigationBarTable form {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable table {
+  display: inline;
+  margin-bottom: 0em;
+}
+#navigationBarTable td.todayButton {
+  padding: 1em 1em 0 1em;
+}
+#navigationBarTable td.gotoForm {
+  padding: 1em 0.5em 0 0;
+}
+#navigationBarTable td.leftCell {
+  text-align: left;
+  white-space: nowrap;
+  padding-left: 0.5em;
+  font-size: 1.3em;
+  font-weight: bold;
+  padding: 0.75em 0em 0.75em 1em;
+  width: 100%;
+  vertical-align: middle;
+}
+#navigationBarTable td.leftCell .prevImg {
+  margin: 0 0.2em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.leftCell .nextImg {
+  margin: 0 0.75em 0 0;
+  vertical-align: top;
+}
+#navigationBarTable td.rightCell {
+  text-align: right;
+  padding: 1em 0.5em 0em 0em;
+}
+#navigationBarTable td.rightCell select {
+  padding-right: 0em;
+  margin: 0em;
+  width: 10em;
+}
+#searchBarTable .calLinks {
+  white-space: nowrap;
+}
+#eventTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#eventTable td.fieldname {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 0.5em;
+  background-color: #eee;
+  /*background-color: #EDF5F9;*/
+  color: black;
+}
+#eventTable td.fieldval {
+  margin: 0em;
+  vertical-align: top;
+  padding: 0.5em 0.5em 0.2em 1em;
+}
+#eventTable th.fieldval {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 1em;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#eventTable th.icalIcon {
+  margin: 0em;
+  vertical-align: middle;
+  text-align: right;
+  padding: 0.5em 1em 0.2em 0.5em;
+  white-space: nowrap;
+	font-size: 0.9em;
+	font-weight: normal;
+}
+#eventTable th.icalIcon a {
+  text-decoration: none;
+}
+#eventTable th.icalIcon img {
+  vertical-align: middle;
+	padding-left: 1em;
+}
+#eventTable th.fieldname {
+  text-align: left;
+  padding: 1em 0.5em 1em 0.5em;
+  background-color: #eee;
+  /*background-color: #EDF5F9;*/
+  color: black;
+}
+#eventTable th.fieldval {
+  text-align: left;
+  padding: 1em 0.5em 0.5em 1em;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#calPageTable {
+  width: 100%;
+  font-size: 100%;
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#calPageTable td {
+  width: 50%;
+  vertical-align: top;
+  padding: 0.5em 2em 1em 3em;
+}
+#calPageTable th {
+  font-size: 1.2em;
+  background-color: #ccc;
+  color: black;
+  font-weight: bold;
+}
+#calPageTable td.leftCell {
+  border-right : thin dashed #999;
+}
+#calPageTable h2 {
+  font-size: 1.2em;
+}
+#calPageTable td.infoCell {
+  background-color: #ddd;
+  color: black;
+  text-align: center;
+}
+#dayCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#dayCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#dayCalendarTable .dateRange {
+  text-align: left;
+  background-color: #f0eee5;
+  color: black;
+  white-space: nowrap;
+}
+#dayCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#dayCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#weekCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#weekCalendarTable td {
+  padding: 0.4em;
+  margin: 0em;
+}
+#weekCalendarTable .dateRange {
+  text-align: left;
+  background-color: #e2decc;
+  color: black;
+  white-space: nowrap;
+}
+#weekCalendarTable .description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#weekCalendarTable .more {
+  text-align: center;
+  background-color: #eee;
+  color: black;
+  font-size: 0.8em;
+}
+#monthCalendarTable {
+  width: 100%;
+  font-size: 0.8em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#monthCalendarTable th.dayHeading {
+  width: 14%;
+  text-align: center;
+  vertical-align: middle;
+  background-color: #663;
+  color: #eee;
+  border: 1px solid black;
+}
+#monthCalendarTable td {
+  width: 14%;
+  height: 60px;
+  vertical-align: top;
+  text-align: left;
+  padding: 0em;
+  border: 1px solid #aaa;
+  background-color: white;
+  color: black;
+}
+#monthCalendarTable td.filler {
+  border: none;
+  background-color: #eee;
+  color: black;
+}
+#monthCalendarTable ul {
+  font-size: 0.8em;
+  list-style : none;
+  margin: 0em;
+  padding: 0.3em 0em 0em 0em;
+}
+#monthCalendarTable ul li {
+  margin: 0em;
+  padding: 0em;
+  display: inline;
+}
+#monthCalendarTable a.eventLinkA:link,
+#monthCalendarTable a.eventLinkA:visited,
+#monthCalendarTable a.eventLinkA:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #d1cbb3;
+  color: black;
+}
+#monthCalendarTable a.eventLinkB:link,
+#monthCalendarTable a.eventLinkB:visited,
+#monthCalendarTable a.eventLinkB:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #f0eee5;
+  color: black;
+}
+#monthCalendarTable a.eventCancelled:link,
+#monthCalendarTable a.eventCancelled:visited,
+#monthCalendarTable a.eventCancelled:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #ccc;
+  color: black;
+}
+#monthCalendarTable a.eventTentative:link,
+#monthCalendarTable a.eventTentative:visited,
+#monthCalendarTable a.eventTentative:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  border-bottom: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  background: #f0eee5 url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#monthCalendarTable a.holiday:link,
+#monthCalendarTable a.holiday:visited,
+#monthCalendarTable a.holiday:active  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  background-color: #fff;
+  color: black;
+  /*border-top: 1px solid black;
+  border-bottom: 1px solid black;*/
+}
+#monthCalendarTable a.eventLinkA:hover,
+#monthCalendarTable a.eventLinkB:hover,
+#monthCalendarTable a.eventCancelled:hover,
+#monthCalendarTable a.eventTentative:hover,
+#monthCalendarTable a.holiday:hover  {
+  display: block;
+  padding: 0.1em 0.2em 0.1em 0.2em;
+  text-decoration: none;
+  color: black;
+  background-color: #ffe;
+}
+#monthCalendarTable a.dayLink {
+  text-decoration: none;
+  color: black;
+  background-color: transparent;
+}
+#monthCalendarTable a:hover.dayLink {
+  text-decoration: none;
+  color: #eee;
+  background-color: black;
+}
+#monthCalendarTable a:hover {
+  /* required for eventTip to hover correctly;
+     apply only to the hover pseudo class, or
+     the other anchors nearby will cover the eventTip in IE */
+  position: relative;
+}
+#monthCalendarTable a span.eventTip,
+#monthCalendarTable a span.eventTipReverse {
+  display: none;
+}
+#monthCalendarTable a:hover span.eventTip {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: 12em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+}
+#monthCalendarTable a:hover span.eventTipReverse {
+  display: block;
+  position: absolute;
+  width: 20em;
+  top: 1em;
+  left: -21em;
+  background-color: #ffe;
+  color: black;
+  padding: 4px;
+  border: 1px solid #333;
+}
+#monthCalendarTable a:hover span.eventTipStatus {
+  display: block;
+  color: white;
+  background-color: #333;
+  padding: 2px;
+  margin-bottom: 6px;
+  text-align: center;
+}
+a.gridAdd {
+  display: block;
+  float: right;
+  font-size: 0.8em;
+  text-decoration: none;
+  margin-right: 2px;
+}
+#yearCalendarTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0em;
+  color: black;
+  background: white;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+}
+#yearCalendarTable td {
+  padding: 1em 0em 0em 0em;
+  margin: 0em;
+  vertical-align: top;
+  text-align: center;
+  width: 33%;
+}
+#yearCalendarTable table.yearViewMonthTable {
+  margin: 0em  1em 0.5em 1em;
+  border: 1px solid #666;
+}
+#yearCalendarTable table.yearViewMonthTable td {
+  text-align: center;
+  padding: 0.2em;
+  width: 12.5%;
+}
+#yearCalendarTable table.yearViewMonthTable th {
+  font-weight: bold;
+  background-color: #f5f5f5;
+  color: black;
+  padding: 0.2em;
+}
+#yearCalendarTable table.yearViewMonthTable td.monthName {
+  font-weight: bold;
+  text-align: center;
+  background-color: #d1cbb3;
+  color: #eee;
+  white-space: nowrap;
+  border-bottom: 1px solid #999;
+}
+#yearCalendarTable table.yearViewMonthTable td.weekCell {
+  font-weight: bold;
+  font-size: 0.8em;
+  background-color: #f5f5f5;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td  a  {
+  text-decoration: none;
+  background-color: inherit;
+  border: 1px solid #dlcbb3;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.weekCell a  {
+  text-decoration: none;
+  background-color: inherit;
+  border: 1px solid #f5f5f5;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td.monthName a  {
+  text-decoration: none;
+  background-color: inherit;
+  padding: 1px;
+  color: black;
+}
+#yearCalendarTable  table.yearViewMonthTable td a:hover  {
+  text-decoration: none;
+  background-color: #FFC;
+  color: black;
+  border: 1px solid black;
+  padding: 0;
+}
+#listTable {
+  width: 100%;
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 0px;
+  border-top: 1px solid #666;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+  color: black;
+  background: white;
+}
+#listTable td {
+  padding: 0.5em;
+  margin: 0em;
+  border-bottom: 1px solid #bbb;
+}
+#listTable td a {
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRangeCrossDay {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #ddd;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEarlyMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #cbd1de;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeMorning {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #f0eee5;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeAfternoon {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #e2decc;
+  color: black;
+  white-space: nowrap;
+}
+#listTable td.dateRangeEvening {
+  font-size: 0.9em;
+  text-transform: lowercase;
+  background-color: #d1cbb3;
+  color: black;
+  white-space: nowrap;
+}
+#listTable span.littleArrow {
+  font-size: 1.4em;
+}
+#listTable td.description {
+  text-align: left;
+  background-color: #fff;
+  color: black;
+  width: 100%;
+}
+#listTable td.bwStatusCancelled {
+  background-color: #ddd;
+  color: black;
+}
+#listTable td.bwStatusTentative {
+  background: white url('../../images/tentativeLines.gif') top;
+  color: black;
+}
+#listTable td.description a {
+  display: block;
+  background-color: transparent;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.description a.moreLink {
+  display: inline;
+  background-color: transparent;
+  color: #663;
+  text-decoration: underline;
+}
+#listTable td.description:hover {
+  background-color: #eee;
+  color: black;
+  text-decoration: none;
+}
+#listTable td.dateRow {
+  text-align: left;
+  background-color: #888;
+  color: #eee;
+  font-size: 0.8em;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  margin: 0em;
+}
+#listTable td.dateRow a {
+  display: block;
+  color: #fff;
+  background-color: transparent;
+  font-weight: bold;
+  text-decoration : none;
+}
+#listTable td.icons {
+  color: black;
+  background-color: #ddd;
+  white-space: nowrap;
+}
+#listTable td.icons img.addref {
+  margin-right: 0.5em;
+}
+#calPageTable {
+  background: white;
+  color: black;
+}
+#calPageTable ul.calendarTree li {
+  font-weight: bold;
+}
+#calPageTable ul.calendarTree li ul li {
+  font-weight: normal;
+}
+#calPageTable ul.calendarTree li.folder {
+  list-style-image: url(../../images/demo/catIcon.gif);
+  padding-top: 0.25em;
+  padding-bottom: 0.25em;
+}
+#calPageTable ul.calendarTree li.calendar {
+  list-style-image: url(../../images/demo/calIcon-sm.gif);
+}
+.noEventsCell {
+  padding: 1em;
+}
+#footer {
+  font-size: 0.75em;
+  text-align : center;
+  margin-top: 0em;
+  padding: 1em;
+  color: #333;
+  background-color: #eee;
+  border-bottom: 2px solid #333;
+  border-left: 2px solid #333;
+  border-right: 2px solid #333;
+  white-space: nowrap;
+}
+#footer a {
+  color: #333;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#subFoot {
+  width: 100%;
+  padding-top: 0.5em;
+  font-size: 0.7em;
+  color: #bbb;
+  background-color: inherit;
+}
+#subFoot a {
+  color: #bbb;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#subFoot a:hover {
+  color: #eee;
+  background-color: transparent;
+  text-decoration: underline;
+}
+#featureHighlight {
+  color: #dd0;
+  font-style: italic;
+}
+/*   LINKS    */
+a:link, a:active {
+  color: #552;
+  background-color: transparent;
+}
+a:visited {
+  color: #600;
+  background-color: transparent;
+}
+a:hover {
+  color: red;
+  background-color: transparent;
+}
+/* Generic selectors*/
+.center {
+  text-align: center;
+}
+.left {
+  text-align: left;
+}
+.right {
+  text-align: right;
+}
+h2 {
+  margin: 0em;
+  padding: 0.2em 0.2em 0.2em 0.5em;
+  font-size: 1.3em;
+  border-bottom: 1px solid #ccc;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+h2 a:link,
+h2 a:active,
+h2 a:visited,
+h2 a:hover {
+  color: black;
+  background-color: inherit;
+  text-decoration: none;
+}
+h2.bwStatusConfirmed {
+  background-color: #eee;
+  color: black;
+}
+h2.bwStatusCancelled {
+  background-color: #eee;
+  color: black;
+}
+h2.bwStatusTentative {
+  background: #eee url('../../images/tentativeLines.gif') top;
+}
+/* Header IDs and classes */
+#errors {
+  margin: 0;
+  padding: 1em;
+  background-color: #333;
+  color: #ff9;
+  font-weight: bold;
+}
+#tabsTable .centerCell {
+  text-align: left;
+  background : url(../../images/demo/std-tab-space.gif);
+  font-size: 0.8em;
+  white-space: nowrap;
+  width: 100%;
+  padding: 0 1em;
+}
+#stats {
+  font-size: 0.9em;
+  margin: 0px;
+  padding: 1em;
+  border-bottom: 2px solid #aaa;
+  border-left: 2px solid #aaa;
+  border-right: 2px solid #aaa;
+}
+#statsTable {
+  margin: 1em 0 0 4em;
+  width: 300px;
+}
+#statsTable th {
+  padding: 0.5em;
+  background-color: #eee;
+  color: black;
+}
+#statsTable td.label {
+  text-align: right;
+  padding-right: 2em;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/soe.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,1161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="html"
+  indent="yes"
+  media-type="text/html"
+  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+  doctype-system="http://www.w3.org/TR/html4/loose.dtd"
+  standalone="yes"
+/>
+
+<!-- =========================================================
+
+        DEMONSTRATION "DEPARTMENTAL" CALENDAR STYLESHEET
+
+     This stylesheet is for the "soe" (School of Engineering)
+     calendar suite; it is an example of a departmental skin.
+
+     This skin, along with the preferences for the Calendar
+     Suite owner differ from the main public skin (default.xsl) in the
+     following ways:
+       - different header, title, and footer
+       - default view = Month
+       - default layout = list view (rather than calendar grid)
+       - different color scheme
+
+     Otherwise, for the sake of demonstration, we've left most of the
+     functionality of the public client in place.
+
+     For detailed instructions on how to work with the XSLT
+     stylesheets included with this distribution, please see the
+		 Bedework Design Guide at
+     http://www.bedework.org/bedework/update.do?artcenterkey=24
+
+===============================================================  -->
+
+<!-- **********************************************************************
+  Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+  Redistribution and use of this distribution in source and binary forms,
+  with or without modification, are permitted provided that:
+     The above copyright notice and this permission notice appear in all
+      copies and supporting documentation;
+
+      The name, identifiers, and trademarks of Rensselaer Polytechnic
+      Institute are not used in advertising or publicity without the
+      express prior written permission of Rensselaer Polytechnic Institute;
+
+  DISCLAIMER: The software is distributed" AS IS" without any express or
+  implied warranty, including but not limited to, any implied warranties
+  of merchantability or fitness for a particular purpose or any warrant)'
+  of non-infringement of any current or pending patent rights. The authors
+  of the software make no representations about the suitability of this
+  software for any particular purpose. The entire risk as to the quality
+  and performance of the software is with the user. Should the software
+  prove defective, the user assumes the cost of all necessary servicing,
+  repair or correction. In particular, neither Rensselaer Polytechnic
+  Institute, nor the authors of the software are liable for any indirect,
+  special, consequential, or incidental damages related to the software,
+  to the maximum extent the law permits. -->
+
+  <!-- ================================= -->
+  <!--  DEMO PUBLIC CALENDAR STYLESHEET  -->
+  <!-- ================================= -->
+
+  <!-- DEFINE INCLUDES -->
+  <xsl:include href="errors.xsl"/>
+
+  <!-- DEFINE GLOBAL CONSTANTS -->
+
+  <!-- URL of the XSL template directory -->
+  <!-- The approot is an appropriate place to put
+       included stylesheets and xml fragments. These are generally
+       referenced relatively (like errors.xsl and messages.xsl above);
+       this variable is here for your convenience if you choose to
+       reference it explicitly.  It is not used in this stylesheet, however,
+       and can be safely removed if you so choose. -->
+  <xsl:variable name="appRoot" select="/bedework/approot"/>
+
+  <!-- URL of html resources (images, css, other html); by default this is
+       set to the application root -->
+  <xsl:variable name="resourcesRoot" select="/bedework/approot"/>
+
+  <!-- Properly encoded prefixes to the application actions; use these to build
+       urls; allows the application to be used without cookies or within a portal. -->
+  <xsl:variable name="setup" select="/bedework/urlPrefixes/setup"/>
+  <xsl:variable name="setSelection" select="/bedework/urlPrefixes/setSelection"/>
+  <xsl:variable name="fetchPublicCalendars" select="/bedework/urlPrefixes/fetchPublicCalendars"/>
+  <xsl:variable name="setViewPeriod" select="/bedework/urlPrefixes/setViewPeriod"/>
+  <xsl:variable name="eventView" select="/bedework/urlPrefixes/eventView"/>
+  <xsl:variable name="addEventRef" select="/bedework/urlPrefixes/addEventRef"/>
+  <xsl:variable name="export" select="/bedework/urlPrefixes/export"/>
+  <xsl:variable name="mailEvent" select="/bedework/urlPrefixes/mailEvent"/>
+  <xsl:variable name="showPage" select="/bedework/urlPrefixes/showPage"/>
+  <xsl:variable name="stats" select="/bedework/urlPrefixes/stats"/>
+
+  <!-- Other generally useful global variables -->
+  <xsl:variable name="privateCal">/ucal</xsl:variable>
+  <xsl:variable name="prevdate" select="/bedework/previousdate"/>
+  <xsl:variable name="nextdate" select="/bedework/nextdate"/>
+  <xsl:variable name="curdate" select="/bedework/currentdate/date"/>
+  <xsl:variable name="skin">default</xsl:variable>
+
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/">
+    <html lang="en">
+      <head>
+        <title>School of Engineering: Example Bedework Departmental Calendar Suite</title>
+        <link rel="stylesheet" type="text/css" href="{$resourcesRoot}/default/default/soe.css" />
+        <link rel="icon" type="image/ico" href="{$resourcesRoot}/images/bedework.ico" />
+      </head>
+      <body>
+        <xsl:call-template name="headBar"/>
+        <xsl:if test="/bedework/error">
+          <div id="errors">
+            <xsl:apply-templates select="/bedework/error"/>
+          </div>
+        </xsl:if>
+        <xsl:call-template name="tabs"/>
+        <xsl:call-template name="navigation"/>
+        <xsl:choose>
+          <xsl:when test="/bedework/page='event'">
+            <!-- show an event -->
+            <xsl:apply-templates select="/bedework/event"/>
+          </xsl:when>
+          <xsl:when test="/bedework/page='showSysStats'">
+            <!-- show system stats -->
+            <xsl:call-template name="stats"/>
+          </xsl:when>
+          <xsl:when test="/bedework/page='calendarList'">
+            <!-- show a list of all calendars -->
+            <xsl:apply-templates select="/bedework/calendars"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <!-- otherwise, show the eventsCalendar -->
+            <xsl:if test="/bedework/periodname!='Year'">
+              <xsl:call-template name="searchBar"/>
+            </xsl:if>
+            <!-- main eventCalendar content -->
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Day'">
+                <xsl:call-template name="listView"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='weekViewMode']/value='cal'">
+                    <xsl:call-template name="weekView"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:call-template name="listView"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Month'">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='monthViewMode']/value='list'">
+                    <xsl:call-template name="listView"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:call-template name="monthView"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:call-template name="yearView"/>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- footer -->
+        <xsl:call-template name="footer"/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!--==== HEADER TEMPLATES and NAVIGATION  ====-->
+  <!-- these templates are separated out for convenience and to simplify the default template -->
+
+  <xsl:template name="headBar">
+    <div id="headBar">
+      <div id="bedeworkLogo">
+        <a href="http://www.bedework.org/">
+          <img src="{$resourcesRoot}/images/soecal/soeBedeworkLogo.gif" width="296" height="69" border="0" alt="Bedework" align="right"/>
+        </a>
+      </div>
+      <h1>Example Departmental Calendar Suite</h1>
+      <!--<ul id="schoolLinks">
+        <li><a href="{$privateCal}">Personal Calendar</a></li>
+        <li><a href="http://www.yourschoolhere.edu">School Home</a></li>
+        <li><a href="http://www.bedework.org/">Other Link</a></li>
+        <li>
+          <a href="http://helpdesk.rpi.edu/update.do?catcenterkey=51">
+            Example Calendar Help
+          </a>
+        </li>
+      </ul> -->
+    </div>
+    <!--  Turn off the date range table for this departmental view -->
+    <!--<table id="curDateRangeTable"  cellspacing="0">
+      <td class="sideBarOpenCloseIcon">
+        &#160; -->
+        <!--
+        we may choose to implement calendar selection in the public calendar
+        using a sidebar; leave this comment here for now.
+        <xsl:choose>
+          <xsl:when test="/bedework/appvar[key='sidebar']/value='closed'">
+            <a href="?setappvar=sidebar(opened)">
+              <img alt="open sidebar" src="{$resourcesRoot}/resources/sideBarArrowOpen.gif" width="21" height="16" border="0" align="left"/>
+            </a>
+          </xsl:when>
+          <xsl:otherwise>
+            <a href="?setappvar=sidebar(closed)">
+              <img alt="close sidebar" src="{$resourcesRoot}/resources/sideBarArrowClose.gif" width="21" height="16" border="0" align="left"/>
+            </a>
+          </xsl:otherwise>
+        </xsl:choose>-->
+      <!-- </td>
+      <td class="date">
+        <xsl:choose>
+          <xsl:when test="/bedework/page='event'">
+            Event Information
+          </xsl:when>
+          <xsl:when test="/bedework/page='showSysStats' or
+                          /bedework/page='calendars'">
+            &#160;
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="/bedework/firstday/longdate"/>
+            <xsl:if test="/bedework/periodname!='Day'">
+              -
+              <xsl:value-of select="/bedework/lastday/longdate"/>
+            </xsl:if>
+          </xsl:otherwise>
+        </xsl:choose>
+      </td>
+      <td class="rssPrint">
+        <a href="javascript:window.print()" title="print this view">
+          <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
+        </a>
+        <a class="rss" href="{$setSelection}?setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+      </td>
+    </table>-->
+  </xsl:template>
+
+  <xsl:template name="tabs">
+    <xsl:choose>
+      <xsl:when test="/bedework/page='eventscalendar'">
+        <table border="0" cellpadding="0" cellspacing="0" id="tabsTable">
+          <tr>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Day'">
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-on.gif" width="91" height="20" border="0" alt="DAY"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-off.gif" width="91" height="20" border="0" alt="DAY"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Week' or /bedework/periodname=''">
+                  <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-on.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+                 </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-off.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+                 </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Month'">
+                  <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-on.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-off.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td>
+              <xsl:choose>
+                <xsl:when test="/bedework/periodname='Year'">
+                  <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-on.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+                </xsl:when>
+                <xsl:otherwise>
+                  <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-off.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+                </xsl:otherwise>
+              </xsl:choose>
+            </td>
+            <td class="rssPrint">
+              <a href="javascript:window.print()" title="print this view">
+                <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
+              </a>
+              <a class="rss" href="{$setSelection}?setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+            </td>
+          </tr>
+        </table>
+      </xsl:when>
+      <xsl:otherwise>
+        <table border="0" cellpadding="0" cellspacing="0" id="tabsTable">
+          <tr>
+            <td>
+              <a href="{$setViewPeriod}?viewType=dayView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-day-off.gif" width="91" height="20" border="0" alt="DAY"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=weekView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-week-off.gif" width="92" height="20" border="0" alt="WEEK"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=monthView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-month-off.gif" width="90" height="20" border="0" alt="MONTH"/></a>
+            </td>
+            <td>
+              <a href="{$setViewPeriod}?viewType=yearView&amp;date={$curdate}"><img src="{$resourcesRoot}/images/std-tab-year-off.gif" width="92" height="20" border="0" alt="YEAR"/></a>
+            </td>
+            <td class="rssPrint">
+              <a href="javascript:window.print()" title="print this view">
+                <img alt="print this view" src="{$resourcesRoot}/images/std-print-icon.gif" width="20" height="14" border="0"/> print
+              </a>
+              <a class="rss" href="{$setSelection}?setappvar=summaryMode(details)&amp;skinName=rss" title="RSS feed">RSS</a>
+            </td>
+          </tr>
+        </table>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template name="navigation">
+    <table border="0" cellpadding="0" cellspacing="0" id="navigationBarTable">
+      <tr>
+        <td class="leftCell">
+          <a id="prevViewPeriod" href="{$setViewPeriod}?date={$prevdate}"><img src="{$resourcesRoot}/images/std-arrow-left.gif" alt="previous" width="13" height="16" class="prevImg" border="0"/></a>
+          <a id="nextViewPeriod" href="{$setViewPeriod}?date={$nextdate}"><img src="{$resourcesRoot}/images/std-arrow-right.gif" alt="next" width="13" height="16" class="nextImg" border="0"/></a>
+          <xsl:choose>
+            <xsl:when test="/bedework/periodname='Year'">
+              <xsl:value-of select="substring(/bedework/firstday/date,1,4)"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Month'">
+              <xsl:value-of select="/bedework/firstday/monthname"/>, <xsl:value-of select="substring(/bedework/firstday/date,1,4)"/>
+            </xsl:when>
+            <xsl:when test="/bedework/periodname='Week'">
+              Week of <xsl:value-of select="substring-after(/bedework/firstday/longdate,', ')"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="/bedework/firstday/longdate"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </td>
+        <td class="todayButton">
+          <a href="{$setViewPeriod}?viewType=todayView&amp;date={$curdate}">
+            <img src="{$resourcesRoot}/images/std-button-today-off.gif" width="54" height="22" border="0" alt="Go to Today" align="left"/>
+          </a>
+        </td>
+        <td align="right" class="gotoForm">
+          <form name="calForm" method="get" action="{$setViewPeriod}">
+             <table border="0" cellpadding="0" cellspacing="0">
+              <tr>
+                <xsl:if test="/bedework/periodname!='Year'">
+                  <td>
+                    <select name="viewStartDate.month">
+                      <xsl:for-each select="/bedework/monthvalues/val">
+                        <xsl:variable name="temp" select="."/>
+                        <xsl:variable name="pos" select="position()"/>
+                        <xsl:choose>
+                          <xsl:when test="/bedework/monthvalues[start=$temp]">
+                            <option value="{$temp}" selected="selected">
+                              <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                            </option>
+                          </xsl:when>
+                          <xsl:otherwise>
+                            <option value="{$temp}">
+                              <xsl:value-of select="/bedework/monthlabels/val[position()=$pos]"/>
+                            </option>
+                          </xsl:otherwise>
+                        </xsl:choose>
+                      </xsl:for-each>
+                    </select>
+                  </td>
+                  <xsl:if test="/bedework/periodname!='Month'">
+                    <td>
+                      <select name="viewStartDate.day">
+                        <xsl:for-each select="/bedework/dayvalues/val">
+                          <xsl:variable name="temp" select="."/>
+                          <xsl:variable name="pos" select="position()"/>
+                          <xsl:choose>
+                            <xsl:when test="/bedework/dayvalues[start=$temp]">
+                              <option value="{$temp}" selected="selected">
+                                <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                              </option>
+                            </xsl:when>
+                            <xsl:otherwise>
+                              <option value="{$temp}">
+                                <xsl:value-of select="/bedework/daylabels/val[position()=$pos]"/>
+                              </option>
+                            </xsl:otherwise>
+                          </xsl:choose>
+                        </xsl:for-each>
+                      </select>
+                    </td>
+                  </xsl:if>
+                </xsl:if>
+                <td>
+                  <xsl:variable name="temp" select="/bedework/yearvalues/start"/>
+                  <input type="text" name="viewStartDate.year" maxlength="4" size="4" value="{$temp}"/>
+                </td>
+                <td>
+                  <input name="submit" type="submit" value="go"/>
+                </td>
+              </tr>
+            </table>
+          </form>
+        </td>
+        <td class="rightCell">
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <xsl:template name="searchBar">
+    <table width="100%" border="0" cellpadding="0" cellspacing="0" id="searchBarTable">
+       <tr>
+         <td class="leftCell">
+           <xsl:choose>
+             <xsl:when test="/bedework/selectionState/selectionType = 'calendar'">
+               Calendar: <xsl:value-of select="/bedework/selectionState/subscriptions/subscription/calendar/name"/>
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'search'">
+               Current search: <xsl:value-of select="/bedework/search"/>
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'subscription'">
+               Subscription: (not implemented yet)
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:when test="/bedework/selectionState/selectionType = 'filter'">
+               Filter: (not implemented yet)
+               <span class="link">[<a href="{$setSelection}">default view</a>]</span>
+             </xsl:when>
+             <xsl:otherwise><!-- view -->
+               View:
+               <form name="selectViewForm" method="get" action="{$setSelection}">
+                <select name="viewName" onChange="submit()" >
+                  <xsl:for-each select="/bedework/views/view">
+                    <xsl:variable name="name" select="name"/>
+                    <xsl:choose>
+                      <xsl:when test="name=/bedework/selectionState/view/name">
+                        <option value="{$name}" selected="selected"><xsl:value-of select="name"/></option>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <option value="{$name}"><xsl:value-of select="name"/></option>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                  </xsl:for-each>
+                </select>
+              </form>
+              <span class="calLinks"><a href="{$setSelection}">default view</a> | <a href="{$fetchPublicCalendars}">available calendars</a></span>
+             </xsl:otherwise>
+           </xsl:choose>
+         </td>
+         <td class="rightCell">
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Day'">
+                <img src="{$resourcesRoot}/images/std-button-listview-off.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Year'">
+                <img src="{$resourcesRoot}/images/std-button-calview-off.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+              </xsl:when>
+              <xsl:when test="/bedework/periodname='Month'">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='monthViewMode']/value='list'">
+                    <a href="{$setup}?setappvar=monthViewMode(cal)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-calview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=monthViewMode(list)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-listview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='weekViewMode']/value='cal'">
+                    <a href="{$setup}?setappvar=weekViewMode(list)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-listview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=weekViewMode(cal)" title="toggle list/calendar view">
+                      <img src="{$resourcesRoot}/images/std-button-calview.gif" width="46" height="21" border="0" alt="toggle list/calendar view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:choose>
+              <xsl:when test="/bedework/periodname='Year' or
+                              (/bedework/periodname='Month' and
+                              (/bedework/appvar[key='monthViewMode']/value='cal' or
+                               not(/bedework/appvar[key='monthViewMode']))) or
+                              (/bedework/periodname='Week' and
+                              (/bedework/appvar[key='weekViewMode']/value='cal' or
+                               not(/bedework/appvar[key='weekViewMode'])))">
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                    <img src="{$resourcesRoot}/images/std-button-summary-off.gif" width="62" height="21" border="0" alt="only summaries of events supported in this view"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <img src="{$resourcesRoot}/images/std-button-details-off.gif" width="62" height="21" border="0" alt="only summaries of events supported in this view"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:choose>
+                  <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                    <a href="{$setup}?setappvar=summaryMode(summary)" title="toggle summary/detailed view">
+                      <img src="{$resourcesRoot}/images/std-button-summary.gif" width="62" height="21" border="0" alt="toggle summary/detailed view"/>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <a href="{$setup}?setappvar=summaryMode(details)" title="toggle summary/detailed view">
+                      <img src="{$resourcesRoot}/images/std-button-details.gif" width="62" height="21" border="0" alt="toggle summary/detailed view"/>
+                    </a>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:otherwise>
+            </xsl:choose>
+            <a href="setup.do"><img src="{$resourcesRoot}/images/std-button-refresh.gif" width="70" height="21" border="0" alt="refresh view"/></a>
+          </td>
+       </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+    <xsl:variable name="statusClass">
+      <xsl:choose>
+        <xsl:when test="status='CANCELLED'">bwStatusCancelled</xsl:when>
+        <xsl:when test="status='TENTATIVE'">bwStatusTentative</xsl:when>
+        <xsl:otherwise>bwStatusConfirmed</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <h2 class="{$statusClass}">
+      <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
+      <xsl:choose>
+        <xsl:when test="link != ''">
+          <xsl:variable name="link" select="link"/>
+          <a href="{$link}">
+            <xsl:value-of select="summary"/>
+          </a>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="summary"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </h2>
+    <table id="eventTable" cellpadding="0" cellspacing="0">
+      <tr>
+        <td class="fieldname">When:</td>
+        <td class="fieldval">
+          <xsl:value-of select="start/dayname"/>, <xsl:value-of select="start/longdate"/><xsl:text> </xsl:text>
+          <xsl:if test="start/allday = 'false'">
+            <span class="time"><xsl:value-of select="start/time"/></span>
+          </xsl:if>
+          <xsl:if test="(end/longdate != start/longdate) or
+                        ((end/longdate = start/longdate) and (end/time != start/time))"> - </xsl:if>
+          <xsl:if test="end/longdate != start/longdate">
+            <xsl:value-of select="substring(end/dayname,1,3)"/>, <xsl:value-of select="end/longdate"/><xsl:text> </xsl:text>
+          </xsl:if>
+          <xsl:choose>
+            <xsl:when test="start/allday = 'true'">
+              <span class="time"><em>(all day)</em></span>
+            </xsl:when>
+            <xsl:when test="end/longdate != start/longdate">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+            <xsl:when test="end/time != start/time">
+              <span class="time"><xsl:value-of select="end/time"/></span>
+            </xsl:when>
+          </xsl:choose>
+        </td>
+        <th class="icalIcon" rowspan="2">
+          <div id="eventIcons">
+						<xsl:variable name="id" select="id"/>
+						<xsl:variable name="subscriptionId" select="subscription/id"/>
+						<xsl:variable name="calPath" select="calendar/encodedPath"/>
+						<xsl:variable name="guid" select="guid"/>
+						<xsl:variable name="recurrenceId" select="recurrenceId"/>
+						<a href="{$privateCal}/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
+							<img class="addref" src="{$resourcesRoot}/images/add2mycal-icon.gif" width="20" height="26" border="0" alt="Add event to MyCalendar"/>
+						add to my calendar</a>
+						<xsl:variable name="eventIcalName" select="concat($id,'.ics')"/>
+						<a href="{$export}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
+							<img src="{$resourcesRoot}/images/std-ical_icon.gif" width="20" height="26" border="0" alt="Download this event"/>
+						 download</a>
+					</div>
+        </th>
+      </tr>
+      <tr>
+        <td class="fieldname">Where:</td>
+        <td class="fieldval">
+          <xsl:choose>
+            <xsl:when test="location/link=''">
+              <xsl:value-of select="location/address"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:variable name="locationLink" select="location/link"/>
+              <a href="{$locationLink}">
+                <xsl:value-of select="location/address"/>
+              </a>
+            </xsl:otherwise>
+          </xsl:choose>
+          <xsl:if test="location/subaddress!=''">
+            <br/><xsl:value-of select="location/subaddress"/>
+          </xsl:if>
+        </td>
+      </tr>
+      <tr>
+        <td class="fieldname">Description:</td>
+        <td colspan="2" class="fieldval description">
+          <xsl:call-template name="replace">
+            <xsl:with-param name="string" select="description"/>
+            <xsl:with-param name="pattern" select="'&#xA;'"/>
+            <xsl:with-param name="replacement"><br/></xsl:with-param>
+          </xsl:call-template>
+        </td>
+      </tr>
+      <xsl:if test="status !='' and status != 'CONFIRMED'">
+        <tr>
+          <td class="fieldname">Status:</td>
+          <td class="fieldval">
+            <xsl:value-of select="status"/>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="cost!=''">
+        <tr>
+          <td class="fieldname">Cost:</td>
+          <td colspan="2" class="fieldval"><xsl:value-of select="cost"/></td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="link != ''">
+        <tr>
+          <td class="fieldname">See:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:variable name="link" select="link"/>
+            <a href="{$link}"><xsl:value-of select="link"/></a>
+          </td>
+        </tr>
+      </xsl:if>
+      <xsl:if test="sponsor/name!='none'">
+        <tr>
+          <td class="fieldname">Contact:</td>
+          <td colspan="2" class="fieldval">
+            <xsl:choose>
+              <xsl:when test="sponsor/link=''">
+                <xsl:value-of select="sponsor/name"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:variable name="sponsorLink" select="sponsor/link"/>
+                <a href="{$sponsorLink}">
+                  <xsl:value-of select="sponsor/name"/>
+                </a>
+              </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="sponsor/phone!=''">
+              <br /><xsl:value-of select="sponsor/phone"/>
+            </xsl:if>
+            <!-- If you want to display email addresses, uncomment the
+                 following 8 lines. -->
+            <!-- <xsl:if test="sponsor/email!=''">
+              <br />
+              <xsl:variable name="email" select="sponsor/email"/>
+              <xsl:variable name="subject" select="summary"/>
+              <a href="mailto:{$email}?subject={$subject}">
+                <xsl:value-of select="sponsor/email"/>
+              </a>
+            </xsl:if> -->
+          </td>
+        </tr>
+      </xsl:if>
+      <tr>
+        <td class="fieldname">Calendar:</td>
+        <td class="fieldval">
+          <xsl:variable name="calUrl" select="calendar/path"/>
+          <a href="{$setSelection}?calUrl={$calUrl}">
+            <xsl:value-of select="calendar/name"/>
+          </a>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== LIST VIEW  (for day, week, and month) ====-->
+  <xsl:template name="listView">
+    <table id="listTable" border="0" cellpadding="0" cellspacing="0">
+      <xsl:choose>
+        <xsl:when test="not(/bedework/eventscalendar/year/month/week/day/event)">
+          <tr>
+            <td class="noEventsCell">
+              No events to display.
+            </td>
+          </tr>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:for-each select="/bedework/eventscalendar/year/month/week/day[event]">
+            <xsl:if test="/bedework/periodname='Week' or /bedework/periodname='Month' or /bedework/periodname=''">
+              <tr>
+                <td colspan="5" class="dateRow">
+                   <xsl:variable name="date" select="date"/>
+                   <a href="{$setViewPeriod}?viewType=dayView&amp;date={$date}">
+                     <xsl:value-of select="name"/>, <xsl:value-of select="longdate"/>
+                   </a>
+                </td>
+              </tr>
+            </xsl:if>
+            <xsl:for-each select="event">
+              <xsl:variable name="id" select="id"/>
+              <xsl:variable name="subscriptionId" select="subscription/id"/>
+              <xsl:variable name="calPath" select="calendar/encodedPath"/>
+              <xsl:variable name="guid" select="guid"/>
+              <xsl:variable name="recurrenceId" select="recurrenceId"/>
+              <tr>
+                <xsl:variable name="dateRangeStyle">
+                  <xsl:choose>
+                    <xsl:when test="start/shortdate = parent::day/shortdate">
+                      <xsl:choose>
+                        <xsl:when test="start/allday = 'true'">dateRangeCrossDay</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 6">dateRangeEarlyMorning</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 12">dateRangeMorning</xsl:when>
+                        <xsl:when test="start/hour24 &lt; 18">dateRangeAfternoon</xsl:when>
+                        <xsl:otherwise>dateRangeEvening</xsl:otherwise>
+                      </xsl:choose>
+                    </xsl:when>
+                    <xsl:otherwise>dateRangeCrossDay</xsl:otherwise>
+                  </xsl:choose>
+                </xsl:variable>
+                <xsl:choose>
+                  <xsl:when test="start/allday = 'true' and
+                                  start/shortdate = end/shortdate">
+                    <td class="{$dateRangeStyle} center" colspan="3">
+                      all day
+                    </td>
+                  </xsl:when>
+                  <xsl:when test="start/shortdate = end/shortdate and
+                                  start/time = end/time">
+                    <td class="{$dateRangeStyle} center" colspan="3">
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <xsl:value-of select="start/time"/>
+                      </a>
+                    </td>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <td class="{$dateRangeStyle} right">
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                      <xsl:choose>
+                        <xsl:when test="start/allday = 'true' and
+                                        parent::day/shortdate = start/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != start/shortdate">
+                          <span class="littleArrow">&#171;</span>&#160;
+                          <xsl:value-of select="start/month"/>/<xsl:value-of select="start/day"/>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="start/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                      </a>
+                    </td>
+                    <td class="{$dateRangeStyle} center">
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">-</a>
+                    </td>
+                    <td class="{$dateRangeStyle} left">
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                      <xsl:choose>
+                        <xsl:when test="end/allday = 'true' and
+                                        parent::day/shortdate = end/shortdate">
+                          today
+                        </xsl:when>
+                        <xsl:when test="parent::day/shortdate != end/shortdate">
+                          <xsl:value-of select="end/month"/>/<xsl:value-of select="end/day"/>
+                          &#160;<span class="littleArrow">&#187;</span>
+                        </xsl:when>
+                        <xsl:otherwise>
+                          <xsl:value-of select="end/time"/>
+                        </xsl:otherwise>
+                      </xsl:choose>
+                      </a>
+                    </td>
+                  </xsl:otherwise>
+                </xsl:choose>
+                <xsl:variable name="descriptionClass">
+                  <xsl:choose>
+                    <xsl:when test="status='CANCELLED'">description bwStatusCancelled</xsl:when>
+                    <xsl:when test="status='TENTATIVE'">description bwStatusTentative</xsl:when>
+                    <xsl:otherwise>description</xsl:otherwise>
+                  </xsl:choose>
+                </xsl:variable>
+                <td class="{$descriptionClass}">
+                  <xsl:if test="status='CANCELLED'"><strong>CANCELLED: </strong></xsl:if>
+                  <xsl:choose>
+                    <xsl:when test="/bedework/appvar[key='summaryMode']/value='details'">
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <strong>
+                          <xsl:value-of select="summary"/>:
+                        </strong>
+                        <xsl:value-of select="description"/>&#160;
+                        <em>
+                          <xsl:value-of select="location/address"/>
+                          <xsl:if test="location/subaddress != ''">
+                            , <xsl:value-of select="location/subaddress"/>
+                          </xsl:if>.&#160;
+                          <xsl:if test="cost!=''">
+                            <xsl:value-of select="cost"/>.&#160;
+                          </xsl:if>
+                          <xsl:if test="sponsor/name!='none'">
+                            Contact: <xsl:value-of select="sponsor/name"/>
+                          </xsl:if>
+                        </em>
+                      </a>
+                      <xsl:if test="link != ''">
+                        <xsl:variable name="link" select="link"/>
+                        <a href="{$link}" class="moreLink"><xsl:value-of select="link"/></a>
+                      </xsl:if>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}">
+                        <xsl:value-of select="summary"/>
+                        <xsl:if test="location/address != ''">, <xsl:value-of select="location/address"/></xsl:if>
+                      </a>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </td>
+                <td class="icons">
+                  <variable name="confId" select="/bedework/confirmationid"/>
+                  <a href="{$privateCal}/addEventRef.do?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" title="Add event to MyCalendar" target="myCalendar">
+                    <img class="addref" src="{$resourcesRoot}/images/add2mycal-icon-small.gif" width="12" height="16" border="0" alt="Add event to MyCalendar"/>
+                  </a>
+                  <xsl:variable name="eventIcalName" select="concat($id,'.ics')"/>
+                  <a href="{$export}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}&amp;nocache=no&amp;skinName=ical&amp;contentType=text/calendar&amp;contentName={$eventIcalName}" title="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars">
+                    <img src="{$resourcesRoot}/images/std-ical_icon_small.gif" width="12" height="16" border="0" alt="Download event as ical - for Outlook, PDAs, iCal, and other desktop calendars"/>
+                  </a>
+                </td>
+              </tr>
+            </xsl:for-each>
+          </xsl:for-each>
+        </xsl:otherwise>
+      </xsl:choose>
+    </table>
+  </xsl:template>
+
+  <!--==== WEEK CALENDAR VIEW ====-->
+  <xsl:template name="weekView">
+    <table id="monthCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:for-each select="/bedework/daynames/val">
+          <th class="dayHeading"><xsl:value-of select="."/></th>
+        </xsl:for-each>
+      </tr>
+      <tr>
+        <xsl:for-each select="/bedework/eventscalendar/year/month/week/day">
+          <xsl:variable name="dayPos" select="position()"/>
+          <xsl:if test="filler='false'">
+            <td>
+              <xsl:variable name="dayDate" select="date"/>
+              <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}" class="dayLink">
+                <xsl:value-of select="value"/>
+              </a>
+              <ul>
+                <xsl:apply-templates select="event" mode="calendarLayout">
+                  <xsl:with-param name="dayPos" select="$dayPos"/>
+                </xsl:apply-templates>
+              </ul>
+            </td>
+          </xsl:if>
+        </xsl:for-each>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!--==== MONTH CALENDAR VIEW ====-->
+  <xsl:template name="monthView">
+    <table id="monthCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:for-each select="/bedework/daynames/val">
+          <th class="dayHeading"><xsl:value-of select="."/></th>
+        </xsl:for-each>
+      </tr>
+      <xsl:for-each select="/bedework/eventscalendar/year/month/week">
+        <tr>
+          <xsl:for-each select="day">
+            <xsl:variable name="dayPos" select="position()"/>
+            <xsl:choose>
+              <xsl:when test="filler='true'">
+                <td class="filler">&#160;</td>
+              </xsl:when>
+              <xsl:otherwise>
+                <td>
+                  <xsl:variable name="dayDate" select="date"/>
+                  <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}" class="dayLink">
+                    <xsl:value-of select="value"/>
+                  </a>
+                  <ul>
+                    <xsl:apply-templates select="event" mode="calendarLayout">
+                      <xsl:with-param name="dayPos" select="$dayPos"/>
+                    </xsl:apply-templates>
+                  </ul>
+                </td>
+              </xsl:otherwise>
+            </xsl:choose>
+          </xsl:for-each>
+        </tr>
+      </xsl:for-each>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="event" mode="calendarLayout">
+    <xsl:param name="dayPos"/>
+    <xsl:variable name="subscriptionId" select="subscription/id"/>
+    <xsl:variable name="calPath" select="calendar/encodedPath"/>
+    <xsl:variable name="guid" select="guid"/>
+    <xsl:variable name="recurrenceId" select="recurrenceId"/>
+    <xsl:variable name="eventClass">
+      <xsl:choose>
+        <!-- Special styles for the month grid -->
+        <xsl:when test="status='CANCELLED'">eventCancelled</xsl:when>
+        <xsl:when test="status='TENTATIVE'">eventTentative</xsl:when>
+        <xsl:when test="calendar/name='Holidays'">holiday</xsl:when>
+        <!-- Alternating colors for all standard events -->
+        <xsl:when test="position() mod 2 = 1">eventLinkA</xsl:when>
+        <xsl:otherwise>eventLinkB</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <li>
+      <a href="{$eventView}?subid={$subscriptionId}&amp;calPath={$calPath}&amp;guid={$guid}&amp;recurrenceId={$recurrenceId}" class="{$eventClass}">
+        <xsl:if test="status='CANCELLED'">CANCELLED: </xsl:if>
+        <xsl:value-of select="summary"/>
+        <xsl:variable name="eventTipClass">
+          <xsl:choose>
+            <xsl:when test="$dayPos &gt; 5">eventTipReverse</xsl:when>
+            <xsl:otherwise>eventTip</xsl:otherwise>
+          </xsl:choose>
+        </xsl:variable>
+        <span class="{$eventTipClass}">
+          <xsl:if test="status='CANCELLED'"><span class="eventTipStatusCancelled">CANCELLED</span></xsl:if>
+          <xsl:if test="status='TENTATIVE'"><span class="eventTipStatusTentative">TENTATIVE</span></xsl:if>
+          <strong><xsl:value-of select="summary"/></strong><br/>
+          Time:
+          <xsl:choose>
+            <xsl:when test="start/allday = 'false'">
+              <xsl:value-of select="start/time"/>
+              <xsl:if test="start/time != end/time">
+                - <xsl:value-of select="end/time"/>
+              </xsl:if>
+            </xsl:when>
+            <xsl:otherwise>
+              all day
+            </xsl:otherwise>
+          </xsl:choose><br/>
+          <xsl:if test="location/address">
+            Location: <xsl:value-of select="location/address"/><br/>
+          </xsl:if>
+          Calendar: <xsl:value-of select="calendar/name"/>
+        </span>
+      </a>
+    </li>
+  </xsl:template>
+
+  <!--==== YEAR VIEW ====-->
+  <xsl:template name="yearView">
+    <table id="yearCalendarTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[position() &lt;= 3]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[(position() &gt; 3) and (position() &lt;= 6)]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[(position() &gt; 6) and (position() &lt;= 9)]"/>
+      </tr>
+      <tr>
+        <xsl:apply-templates select="/bedework/eventscalendar/year/month[position() &gt; 9]"/>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- year view month tables -->
+  <xsl:template match="month">
+    <td>
+      <table class="yearViewMonthTable" border="0" cellpadding="0" cellspacing="0">
+        <tr>
+          <td colspan="8" class="monthName">
+            <xsl:variable name="firstDayOfMonth" select="week/day/date"/>
+            <a href="{$setViewPeriod}?viewType=monthView&amp;date={$firstDayOfMonth}">
+              <xsl:value-of select="longname"/>
+            </a>
+          </td>
+        </tr>
+        <tr>
+          <th>&#160;</th>
+          <xsl:for-each select="/bedework/shortdaynames/val">
+            <th><xsl:value-of select="."/></th>
+          </xsl:for-each>
+        </tr>
+        <xsl:for-each select="week">
+          <tr>
+            <td class="weekCell">
+              <xsl:variable name="firstDayOfWeek" select="day/date"/>
+              <a href="{$setViewPeriod}?viewType=weekView&amp;date={$firstDayOfWeek}">
+                <xsl:value-of select="value"/>
+              </a>
+            </td>
+            <xsl:for-each select="day">
+              <xsl:choose>
+                <xsl:when test="filler='true'">
+                  <td class="filler">&#160;</td>
+                </xsl:when>
+                <xsl:otherwise>
+                  <td>
+                    <xsl:variable name="dayDate" select="date"/>
+                    <a href="{$setViewPeriod}?viewType=dayView&amp;date={$dayDate}">
+                      <xsl:value-of select="value"/>
+                    </a>
+                  </td>
+                </xsl:otherwise>
+              </xsl:choose>
+            </xsl:for-each>
+          </tr>
+        </xsl:for-each>
+      </table>
+    </td>
+  </xsl:template>
+
+  <!--==== CALENDARS PAGE ====-->
+  <xsl:template match="calendars">
+    <xsl:variable name="topLevelCalCount" select="count(calendar/calendar)"/>
+    <table id="calPageTable" border="0" cellpadding="0" cellspacing="0">
+      <tr>
+        <th colspan="2">
+          All Calendars
+        </th>
+      </tr>
+      <tr>
+        <td colspan="2" class="infoCell">
+          Select a calendar from the list below to see only that calendar's events.
+        </td>
+      </tr>
+      <tr>
+        <td class="leftCell">
+          <ul class="calendarTree">
+            <xsl:apply-templates select="calendar/calendar[position() &lt;= ceiling($topLevelCalCount div 2)]" mode="calTree"/>
+          </ul>
+        </td>
+        <td>
+          <ul class="calendarTree">
+            <xsl:apply-templates select="calendar/calendar[position() &gt; ceiling($topLevelCalCount div 2)]" mode="calTree"/>
+          </ul>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="calendar" mode="calTree">
+    <xsl:variable name="itemClass">
+      <xsl:choose>
+        <xsl:when test="calendarCollection='false'">folder</xsl:when>
+        <xsl:otherwise>calendar</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="url" select="path"/>
+    <li class="{$itemClass}">
+      <a href="{$setSelection}?calUrl={$url}"><xsl:value-of select="name"/></a>
+      <xsl:if test="calendar">
+        <ul>
+          <xsl:apply-templates select="calendar" mode="calTree"/>
+        </ul>
+      </xsl:if>
+    </li>
+  </xsl:template>
+
+  <!--+++++++++++++++ System Stats ++++++++++++++++++++-->
+  <xsl:template name="stats">
+    <div id="stats">
+      <h2>System Statistics</h2>
+
+      <p>
+        Stats collection:
+      </p>
+      <ul>
+        <li>
+          <a href="{$stats}&amp;enable=yes">enable</a> |
+          <a href="{$stats}&amp;disable=yes">disable</a>
+        </li>
+        <li><a href="{$stats}&amp;fetch=yes">fetch statistics</a></li>
+        <li><a href="{$stats}&amp;dump=yes">dump stats to log</a></li>
+      </ul>
+      <table id="statsTable" cellpadding="0">
+        <xsl:for-each select="/bedework/sysStats/*">
+          <xsl:choose>
+            <xsl:when test="name(.) = 'header'">
+              <tr>
+                <th colspan="2">
+                  <xsl:value-of select="."/>
+                </th>
+              </tr>
+            </xsl:when>
+            <xsl:otherwise>
+              <tr>
+                <td class="label">
+                  <xsl:value-of select="label"/>
+                </td>
+                <td class="value">
+                  <xsl:value-of select="value"/>
+                </td>
+              </tr>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:for-each>
+      </table>
+    </div>
+  </xsl:template>
+
+  <!--==== UTILITY TEMPLATES ====-->
+
+  <!-- search and replace template taken from
+       http://www.biglist.com/lists/xsl-list/archives/200211/msg00337.html -->
+  <xsl:template name="replace">
+    <xsl:param name="string" select="''"/>
+    <xsl:param name="pattern" select="''"/>
+    <xsl:param name="replacement" select="''"/>
+    <xsl:choose>
+      <xsl:when test="$pattern != '' and $string != '' and contains($string, $pattern)">
+        <xsl:value-of select="substring-before($string, $pattern)"/>
+        <xsl:copy-of select="$replacement"/>
+        <xsl:call-template name="replace">
+          <xsl:with-param name="string" select="substring-after($string, $pattern)"/>
+          <xsl:with-param name="pattern" select="$pattern"/>
+          <xsl:with-param name="replacement" select="$replacement"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$string"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!--==== FOOTER ====-->
+
+  <xsl:template name="footer">
+    <div id="footer">
+      Demonstration calendar; place footer information here.
+    </div>
+    <div id="subFoot">
+      Based on the <a href="http://www.bedework.org/">Bedework Calendar</a> |
+      <a href="?noxslt=yes">show XML</a> |
+      <a href="?refreshXslt=yes">refresh XSLT</a>
+    </div>
+  </xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/vcal.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/vcal.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/vcal.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output
+  method="text"
+  indent="no"
+  media-type="text/x-vCalendar"
+  standalone="yes"
+/>
+
+<xsl:strip-space elements="*"/>
+<!-- ================= -->
+<!--  vCAL STYLESHEET  -->
+<!-- ================= -->
+<xsl:template match="/"><xsl:value-of select="/bedework/vcalendar"/></xsl:template>
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.css
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.css	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.css	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,102 @@
+/* Font sizes are set in pixels because the screen resolution is 800x600
+   Two overscan modes were viewed when creating the styles: this sheet 
+   accomodates a larger overscan mode.  videocal.css is for a
+   smaller overscan mode.*/
+
+body {
+  margin: 0;
+  padding: 0;
+  font-family: Arial, Helvetica, sans-serif;
+  color: #eee;
+  background : #116 url(../../images/videocal/calBackground1.jpg) no-repeat;
+}
+h1 {
+  font-size: 38px; /* 38 was optimal */
+  color: #ee3;
+  background-color: transparent;
+  margin: 0;
+  padding-top: 0.5em;
+  padding-left: 60px;
+  padding-bottom: 0;
+  padding-right: 50px;
+}
+h2#calTitle {
+  width: 100%;
+  background-color: black;
+  color: #666;
+  margin: 0;
+  height: 28px;
+  padding: 20px 0 0 0; /* 20px top */
+  font-size: 20px;
+  text-align: center;
+}
+h2#dayTitle {
+  width: 100%;
+  background-color: #004;
+  color: #ccc;
+  margin: 0;
+  padding: 0.2em 0 0.2em 0;
+  font-size: 28px; /* 28 px */
+  text-align: center;
+}
+#time {
+  color: #eee;
+  background-color: transparent;
+  margin: 0;
+  padding-top: 0.5em;
+  padding-left: 90px;
+  padding-bottom: 0;
+  padding-right: 90px;
+  font-size: 28px;
+  font-weight: bold;
+}
+#location {
+  color: #e99;
+  background-color: transparent;
+  margin: 0;
+  padding: 0 90px 0 90px;
+  font-size: 24px;
+  font-weight: bold;
+}
+#description {
+  color: #aaa;
+  background-color: transparent;
+  margin: 0;
+  padding-top: 1em;
+  padding-left: 60px;
+  padding-bottom: 0;
+  padding-right: 55px;
+  font-size: 25px;
+  font-weight: bold;
+}
+#calPlug {
+  text-align: center;
+  vertical-align: middle;
+  font-weight: bold;
+}
+#calPlug h1 {
+  margin-top: 120px;
+  font-size: 52px;
+  color: #eee;
+  background-color : transparent;
+}
+#calPlug h2 {
+  font-size: 42px;
+  color: #ee3;
+  background-color : transparent;
+}
+#getBack {
+  text-align: center;
+  color: #eee;
+  background-color : transparent;
+}
+#getBack a {
+  color: #eee;
+  background-color : transparent;
+}
+#info {
+  width: 400px;
+  margin: 1em auto;
+  color: #eee;
+  background-color : transparent;
+}
\ No newline at end of file

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.xsl
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.xsl	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/videocal.xsl	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="html" indent="yes" media-type="text/html" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" standalone="yes"/>
+  <!-- ======================= -->
+  <!--  VIDEO FEED STYLESHEET  -->
+  <!-- ======================= -->
+
+  <!-- Run your browser full screen at 800 x 600 and feed this to video.
+       There are better approaches to this, but it's an interesting example. -->
+
+
+  <!-- **********************************************************************
+    Copyright 2006 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits. -->
+
+  <!-- DEFINE GLOBAL CONSTANTS -->
+  <xsl:variable name="appRoot" select="/bedework/approot"/>
+  <xsl:variable name="urlPrefix" select="/bedework/urlprefix"/>
+  <xsl:variable name="prevDate" select="/bedework/previousdate"/>
+  <xsl:variable name="nextDate" select="/bedework/nextdate"/>
+  <xsl:variable name="curDate" select="/bedework/currentdate/date"/>
+
+  <!-- Duration of each slide in seconds; set this to your preference -->
+  <xsl:variable name="slideDuration">10</xsl:variable>
+
+  <!-- Number of consecutive days to iterate over; set this to your preference -->
+  <xsl:variable name="dayCount">5</xsl:variable>
+
+  <!-- Skin name -->
+  <xsl:variable name="skinName">videocal</xsl:variable>
+
+  <!-- Position of the current day to be displayed -->
+  <xsl:variable name="day">
+    <xsl:choose>
+      <xsl:when test="/bedework/appvar[key='day']">
+        <xsl:choose>
+          <xsl:when test="/bedework/appvar[key='day']/value > $dayCount">1</xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="/bedework/appvar[key='day']/value"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>1</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- Position of the next day (add 1)-->
+  <xsl:variable name="nextDay" select="number($day)+1"/>
+
+  <!-- Event count for the current day -->
+  <xsl:variable name="eventCount" select="count(/bedework/eventscalendar/year/month/week/day[date=$curDate]/event)"/>
+
+  <!-- Position of the current event being displayed -->
+  <xsl:variable name="event">
+    <xsl:choose>
+      <xsl:when test="/bedework/appvar[key='event']">
+        <xsl:choose>
+          <xsl:when test="/bedework/appvar[key='event']/value > $eventCount">1</xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="/bedework/appvar[key='event']/value"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>1</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <!-- Position of the next event (add 1)-->
+  <xsl:variable name="nextEvent" select="number($event)+1"/>
+
+  <!-- MAIN TEMPLATE -->
+  <xsl:template match="/">
+    <html lang="en">
+      <head>
+        <title>Event Calendar Video Feed</title>
+        <link rel="stylesheet" href="{$appRoot}/default/default/videocal.css"/>
+        <meta name="robots" content="noindex,nofollow"/>
+        <script language="JavaScript">
+          function today() {
+            var now = new Date();
+            var today;
+            today = now.getFullYear().toString();
+            if (now.getMonth() &lt; 9) {
+              today += "0";
+            }
+            today += (now.getMonth() + 1).toString();
+            today += now.getDate().toString();
+            return today;
+          }
+        </script>
+        <xsl:choose>
+          <xsl:when test="/bedework/periodname!='Day'">
+            <!-- we're starting up on the wrong view; go to today and begin with the first event;
+                 the title slide will display during this switch. -->
+            <meta http-equiv="refresh" content="{$slideDuration};url={$urlPrefix}/setViewPeriod.do?viewType=todayView&amp;setappvar=event(1)&amp;setappvar=day(1)&amp;skinNameSticky={$skinName}&amp;setappvar=summaryMode(details)"/>
+          </xsl:when>
+          <xsl:when test="($nextDay > $dayCount) and ($nextEvent > $eventCount)">
+            <!-- passed the last day, and all events have been displayed,
+                 so start over: go to today, set day=1 and *event=0* to allow
+                 for the title slide "calPlug" -->
+            <meta http-equiv="refresh" content="{$slideDuration};url={$urlPrefix}/setViewPeriod.do?viewType=todayView&amp;setappvar=event(0)&amp;setappvar=day(1)&amp;skinNameSticky={$skinName}&amp;setappvar=summaryMode(details)"/>
+          </xsl:when>
+          <xsl:when test="$nextEvent > $eventCount">
+            <!-- passed the last event for the day; go to the next day and set event=1 -->
+            <meta http-equiv="refresh" content="{$slideDuration};url={$urlPrefix}/setViewPeriod.do?date={$nextDate}&amp;viewType=dayView&amp;setappvar=event(1)&amp;setappvar=day({$nextDay})&amp;skinNameSticky={$skinName}&amp;setappvar=summaryMode(details)"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <!-- otherwise, go to the next event on the same day -->
+            <meta http-equiv="refresh" content="{$slideDuration};url={$urlPrefix}/setup.do?viewType=dayView&amp;setappvar=event({$nextEvent})&amp;setappvar=day({$day})&amp;skinNameSticky={$skinName}&amp;setappvar=summaryMode(details)"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </head>
+      <body>
+        <xsl:choose>
+          <xsl:when test="($eventCount = 0) or ($event = 0) or (/bedework/periodname!='Day')">
+            <div id="calPlug">
+              <h1>
+                Bedework Calendar of Events
+                Video Feed
+              </h1>
+              <h2>http://www.bedework.org</h2>
+            </div>
+          </xsl:when>
+          <xsl:otherwise>
+            <h2 id="calTitle">
+              BEDEWORK CALENDAR OF EVENTS
+            </h2>
+            <h2 id="dayTitle">
+              <xsl:value-of select="/bedework/firstday/longdate"/><!--
+              <br/>Events: <xsl:value-of select="$event"/> of <xsl:value-of select="$eventCount"/>
+              <br/>Days: <xsl:value-of select="$day"/> of <xsl:value-of select="$dayCount"/> -->
+            </h2>
+            <xsl:apply-templates select="/bedework/eventscalendar/year/month/week/day[date=$curDate]/event[position()=$event]"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- remove the following two divs if used for video -->
+        <div id="getBack">
+          (<a href="setup.do?skinNameSticky=default">restore normal calendar</a>)
+        </div>
+        <div id="info">
+          This stylesheet will rotate through five days of events at ten
+          second intervals.  It is intended as a video feed running full screen
+          at 800x600px.  It's settings
+          can be set from the top of
+          the videocal.xsl stylesheet.
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!--==== SINGLE EVENT ====-->
+  <xsl:template match="event">
+    <h1>
+      <xsl:value-of select="summary"/>
+    </h1>
+    <xsl:if test="(start/allday = 'false')">
+      <div id="time">
+        <!-- this logic needs to be updated for new event model -->
+        <xsl:choose>
+          <xsl:when test="start/time=''">
+            <xsl:value-of select="start/shortdate"/>
+          </xsl:when>
+          <xsl:when test="start/date != /bedework/firstday">
+            <xsl:value-of select="start/shortdate"/>
+            <xsl:value-of select="start/time"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="start/time"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        -
+        <xsl:if test="end/longdate != start/longdate">
+          <xsl:value-of select="end/shortdate"/>
+          <xsl:text> </xsl:text>
+        </xsl:if>
+        <xsl:value-of select="end/time"/>
+      </div>
+    </xsl:if>
+    <xsl:if test="location/address!='Campus-wide'">
+      <div id="location">
+        <xsl:value-of select="location/address"/>
+      </div>
+    </xsl:if>
+    <div id="description">
+      <xsl:value-of select="description"/>
+    </div>
+  </xsl:template>
+
+</xsl:stylesheet>

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/default/xsltdir.properties
===================================================================

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/default/xsltdir.properties
===================================================================

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon-small.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon-small.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/add2mycal-icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/addref.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/addref.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedework.ico
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedework.ico
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo2.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/bedeworkLogo2.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/calIcon-sm.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/calIcon-sm.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/catIcon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/catIcon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-left.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-left.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-right.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue-right.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeBlue.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-left.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-left.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-right.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen-right.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeGreen.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-left.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-left.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-right.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed-right.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/curDateRangeRed.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeBedeworkLogo.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeBedeworkLogo.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeTitleBg.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/soecal/soeTitleBg.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/spacer.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/spacer.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-left.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-left.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-right.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-arrow-right.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-calview.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-details.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-listview.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-refresh.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-refresh.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-summary.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-on.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today-on.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-button-today.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon_small.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-ical_icon_small.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-print-icon.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-print-icon.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-on.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-day-on.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-on.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-month-on.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-space.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-space.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-on.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-week-on.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-off.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-off.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-on.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-tab-year-on.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-left.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-left.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-right.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-right.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-space.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title-space.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/std-title.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/tentativeLines.gif
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/tentativeLines.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/videocal/calBackground1.jpg
===================================================================
(Binary files differ)


Property changes on: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/images/videocal/calBackground1.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/calendar3/deployment/webpublic/uportal2/resources/demoskins/xsltdir.properties
===================================================================

Added: trunk/calendar3/deployment/webpublic/uportal2/struts-portlet-config.xml
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/struts-portlet-config.xml	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/struts-portlet-config.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<config>
+  <render-context>
+    <attribute name="errors"/>
+    <attribute name="message"/>
+  </render-context>
+  <portlet-url-type>
+    <render path="/initialise"/>
+    <render path="/showMain"/>
+    <render path="/showMsgErr"/>
+    <render path="/showPage"/>
+    <render path="/showEventMore"/>
+    <render path="/showAddEvent"/>
+    <render path="/showEditEvent"/>
+    <render path="/event/showCalsForEvent"/>
+    <render path="/event/showAddEventRef"/>
+    <render path="/showExportData"/>
+    <render path="/initUpload"/>
+    <render path="/showManageLocations"/>
+    <render path="/showEditLocation"/>
+    <render path="/freeBusy/showFreeBusy"/>
+    <render path="/showPublicCals"/>
+    <render path="/showCals"/>
+    <render path="/calendar/showCalendar"/>
+    <render path="/calendar/showModForm"/>
+    <render path="/calendar/showUpdateList"/>
+    <render path="/calendar/showDeleteConfirm"/>
+    <render path="/calendar/showReferenced"/>
+    <render path="/calendar/showDescriptionList"/>
+    <render path="/subs/showSubs"/>
+    <render path="/subs/showModForm"/>
+    <render path="/subs/showAddByUriForm"/>
+    <render path="/prefs/showModForm"/>
+    <render path="/showEmailOptions"/>
+    <render path="/showAlarmOptions"/>
+    <render path="/showStats"/>
+
+    <action path="/setup"/>
+    <action path="/setSelection"/>
+    <action path="/setViewPeriod"/>
+    <action path="/eventView"/>
+    <action path="/initEvent"/>
+    <action path="/addEventUsingPage"/>
+    <action path="/addEvent"/>
+    <action path="/editEvent"/>
+    <action path="/event/setAccess"/>
+    <action path="/event/selectCalForEvent"/>
+    <action path="/addEventRef"/>
+    <action path="/event/addEventRefComplete"/>
+    <action path="/delEvent"/>
+    <action path="/export"/>
+    <action path="/upload"/>
+    <action path="/manageLocations"/>
+    <action path="/addLocation"/>
+    <action path="/editLoc"/>
+    <action path="/delLocation"/>
+    <action path="/freeBusy/getFreeBusy"/>
+    <action path="/freeBusy/setAccess"/>
+    <action path="/fetchPublicCalendars"/>
+    <action path="/fetchCalendars"/>
+    <action path="/calendar/fetchForDisplay"/>
+    <action path="/calendar/initAdd"/>
+    <action path="/calendar/fetchForUpdate"/>
+    <action path="/calendar/update"/>
+    <action path="/calendar/setAccess"/>
+    <action path="/calendar/delete"/>
+    <action path="/subs/fetch"/>
+    <action path="/subs/initAdd"/>
+    <action path="/subs/fetchForUpdate"/>
+    <action path="/subs/subscribe"/>
+    <action path="/subs/subscribeByUri"/>
+    <action path="/subs/unsubscribe"/>
+    <action path="/addView"/>
+    <action path="/removeView"/>
+    <action path="/prefs/fetchForUpdate"/>
+    <action path="/prefs/update"/>
+    <action path="/initMailEvent"/>
+    <action path="/mailEvent"/>
+    <action path="/initEventAlarm"/>
+    <action path="/setAlarm"/>
+    <action path="/stats"/>
+  </portlet-url-type>
+</config>
+

Added: trunk/calendar3/deployment/webpublic/uportal2/struts-portlet.tld
===================================================================
--- trunk/calendar3/deployment/webpublic/uportal2/struts-portlet.tld	                        (rev 0)
+++ trunk/calendar3/deployment/webpublic/uportal2/struts-portlet.tld	2006-06-20 13:42:12 UTC (rev 609)
@@ -0,0 +1,813 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+<!--
+Copyright 2004 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+  $Id: struts-portlet.tld 188237 2005-01-21 16:28:13Z ate $
+-->
+<taglib>
+<tlibversion>1.2</tlibversion>
+<jspversion>1.1</jspversion>
+<shortname>html</shortname>
+<uri>http://portals.apache.org/bridges/struts/tags-portlet</uri>
+<tag>
+<name>form</name>
+<tagclass>org.apache.portals.bridges.struts.taglib.FormTag</tagclass>
+<bodycontent>JSP</bodycontent>
+<attribute>
+<name>action</name>
+<required>true</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>acceptCharset</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>enctype</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>focus</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>focusIndex</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>method</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onreset</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onsubmit</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>readonly</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scriptLanguage</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>target</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>image</name>
+<tagclass>org.apache.portals.bridges.struts.taglib.ImageTag</tagclass>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>align</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>border</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>disabled</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onchange</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>pageKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>src</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>srcKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>value</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>img</name>
+<tagclass>org.apache.portals.bridges.struts.taglib.ImgTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>align</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>alt</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>altKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>border</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>contextRelative</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>height</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>hspace</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>imageName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>ismap</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>locale</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>lowsrc</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>pageKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>action</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>module</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>src</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>srcKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>useLocalEncoding</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>usemap</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>vspace</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>width</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>link</name>
+<tagclass>org.apache.portals.bridges.struts.taglib.LinkTag</tagclass>
+<attribute>
+<name>actionURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>renderURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>resourceURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>accesskey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>action</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>module</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexed</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>indexId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>bundle</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>linkName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onblur</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>ondblclick</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onfocus</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeydown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeypress</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onkeyup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousedown</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmousemove</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseout</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseover</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>onmouseup</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>style</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleClass</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>styleId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>tabindex</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>target</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>title</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>titleKey</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>useLocalEncoding</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+<tag>
+<name>rewrite</name>
+<tagclass>ca.mun.portal.strutsbridge.taglib.CalRewriteTag</tagclass>
+<bodycontent>empty</bodycontent>
+<attribute>
+<name>actionURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>renderURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>resourceURL</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>action</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>module</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>anchor</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>forward</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>href</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>name</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>page</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramId</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramName</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramProperty</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>paramScope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>property</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>scope</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>transaction</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+<attribute>
+<name>useLocalEncoding</name>
+<required>false</required>
+<rtexprvalue>true</rtexprvalue>
+</attribute>
+</tag>
+</taglib>

Modified: trunk/calendar3/deployment/webpublic/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/webpublic/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/webpublic/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwpublic.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init">
     <!-- and define some properties based on those -->
     <property name="app.war.file"
@@ -58,8 +60,15 @@
 
     <!-- Delete expanded version -->
     <delete dir="${org.bedework.appserver.dir}/${propval.app.deploy.dir}/${propval.app.context.root}" />
+
+    <antcall target="deploy.uportal2" inheritRefs="true" />
   </target>
 
+  <target name="deploy.uportal2" if="org.bedework.build.for.uportal2" >
+    <ant antfile="${org.bedework.deploy.type.dir}/${propval.app.portal.platform}/build.xml"
+         inheritrefs="true" target="deploy" />
+  </target>
+
   <target name="build.configured" depends="init" >
     <!-- ===============================================================
          Libraries for this application

Modified: trunk/calendar3/deployment/webuser/webapp/build.xml
===================================================================
--- trunk/calendar3/deployment/webuser/webapp/build.xml	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/deployment/webuser/webapp/build.xml	2006-06-20 13:42:12 UTC (rev 609)
@@ -5,6 +5,8 @@
      =================================================================== -->
 
 <project name="bwpersonal.deploy" default="deploy" >
+  <import file="${org.bedework.deployment.base}/deployprops.xml" />
+
   <target name="init" >
     <!-- and define some properties based on those -->
     <property name="app.war.file"

Modified: trunk/calendar3/docs/BedeworkDeploymentManual.odt
===================================================================
(Binary files differ)

Modified: trunk/calendar3/webcommon/src/org/bedework/webcommon/BwAbstractAction.java
===================================================================
--- trunk/calendar3/webcommon/src/org/bedework/webcommon/BwAbstractAction.java	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/webcommon/src/org/bedework/webcommon/BwAbstractAction.java	2006-06-20 13:42:12 UTC (rev 609)
@@ -1311,9 +1311,16 @@
 
       form.assignNewSession(true);
 
-      CalEnv env = getEnv(request, form);
-      String appRoot = env.getAppProperty("root");
+      String appRoot = form.retrieveConfig().getAppRoot();
 
+      /* If we're running as a portlet change the app root to point to a
+       * portlet specific directory.
+       */
+      String portalPlatform = form.retrieveConfig().getPortalPlatform();
+      if (isPortlet && (portalPlatform != null)) {
+        appRoot += "." + portalPlatform;
+      }
+
       /** The actual session class used is possibly site dependent
        */
       s = new BwSessionImpl(form.getCurrentUser(), appRoot, appName,

Modified: trunk/calendar3/webcommon/src/org/bedework/webcommon/ConfigBase.java
===================================================================
--- trunk/calendar3/webcommon/src/org/bedework/webcommon/ConfigBase.java	2006-06-19 17:42:34 UTC (rev 608)
+++ trunk/calendar3/webcommon/src/org/bedework/webcommon/ConfigBase.java	2006-06-20 13:42:12 UTC (rev 609)
@@ -95,6 +95,10 @@
 
   private String logPrefix;
 
+  private String appRoot;
+
+  private String portalPlatform;
+
   private String refreshAction;
 
   private int refreshInterval;
@@ -234,9 +238,39 @@
     return logPrefix;
   }
 
+  /** Where the xslt and resources are based.
+   *
+   * @param val
+   */
+  public void setAppRoot(String val) {
+    appRoot = val;
+  }
+
   /**
+   * @return String
+   */
+  public String getAppRoot() {
+    return appRoot;
+  }
+
+  /** Define the name of the portal platform.
+   *
    * @param val
    */
+  public void setPortalPlatform(String val) {
+    portalPlatform = val;
+  }
+
+  /**
+   * @return String
+   */
+  public String getPortalPlatform() {
+    return portalPlatform;
+  }
+
+  /**
+   * @param val
+   */
   public void setRefreshAction(String val) {
     refreshAction = val;
   }



More information about the Bedework-commit mailing list