You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/09/01 11:10:38 UTC

svn commit: r265679 [7/12] - in /cocoon/blocks/portal-sample/trunk: ./ WEB-INF/ WEB-INF/xconf/ conf/ java/ java/org/ java/org/apache/ java/org/apache/cocoon/ java/org/apache/cocoon/portal/ java/org/apache/cocoon/portal/coplets/ java/org/apache/cocoon/p...

Added: cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap (added)
+++ cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap Thu Sep  1 02:08:10 2005
@@ -0,0 +1,339 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2005 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.
+-->
+<!-- SVN $Id$ -->
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+  <!-- ========================= Components ================================ -->
+
+  <map:components>
+    <map:generators default="file">
+      <map:generator name="portal" src="org.apache.cocoon.portal.generation.PortalGenerator"/>
+    </map:generators>
+    <map:transformers default="xslt">
+      <map:transformer name="portal-coplet" 
+                       src="org.apache.cocoon.portal.transformation.CopletTransformer" 
+                       logger="sitemap.transformer.portal" />
+      <map:transformer name="htmlroot" src="org.apache.cocoon.portal.transformation.HTMLRootTransformer"
+        logger="sitemap.transformer.htmlroot" />
+      <map:transformer name="rss" src="org.apache.cocoon.portal.transformation.RSSTransformer"
+        logger="sitemap.transformer.rss" />
+      <map:transformer name="portal-proxy" src="org.apache.cocoon.portal.transformation.ProxyTransformer"
+        logger="sitemap.transformer.portal.proxy">
+        <parameter name="envelope-tag" value="div"/>
+      </map:transformer>
+      <map:transformer name="portal-new-eventlink" src="org.apache.cocoon.portal.transformation.NewEventLinkTransformer"
+        logger="sitemap.transformer.portal.eventlink" />
+      <map:transformer name="portal-html-eventlink" src="org.apache.cocoon.portal.transformation.HTMLEventLinkTransformer"
+        logger="sitemap.transformer.portal.eventlink.html"/>
+      <map:transformer name="portal-html-linktoeventlink" src="org.apache.cocoon.portal.transformation.LinkTransformer"
+        logger="sitemap.transformer.portal.eventlink" />
+    </map:transformers>
+    <map:readers default="resource">
+      <map:reader name="portal-proxy" src="org.apache.cocoon.portal.reading.ProxyReader"
+        logger="sitemap.reader.portal.proxy" />
+    </map:readers>
+    <map:serializers default="html">
+      <map:serializer name="html-include"
+        logger="sitemap.serializer.html"
+        mime-type="text/html"
+        pool-max="32"
+        src="org.apache.cocoon.portal.serialization.IncludingHTMLSerializer">
+        <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
+        <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
+      </map:serializer>
+    </map:serializers>
+    <map:matchers default="wildcard"/>
+    <map:selectors default="browser"/>
+    <map:actions>
+      <map:action name="portal-set-object-model"
+                  src="org.apache.cocoon.acting.SetterAction"/>
+      <map:action name="portal-set-data"
+                  src="org.apache.cocoon.portal.acting.CopletSetDataAction"/>
+      <map:action name="portal-save-profile"
+                  src="org.apache.cocoon.portal.acting.SaveAction"/>
+      <map:action src="org.apache.cocoon.portal.acting.BookmarkAction" name="portal-bookmark">
+        <parameter name="src" value="resources/bookmarks.xml"/>
+      </map:action>
+      <map:action name="portal-prepare"
+                  src="org.apache.cocoon.portal.acting.PreparePortalAction"/>
+      <map:action name="portal-urlhelper"
+                  src="org.apache.cocoon.portal.acting.URLAction"/>
+
+      <map:action name="cowarp-is-logged-in"
+                  src="org.osoco.cowarp.acting.LoggedInAction"/>
+      <map:action name="cowarp-login"
+                  src="org.osoco.cowarp.acting.LoginAction"/>
+      <map:action name="cowarp-logout"
+                  src="org.osoco.cowarp.acting.LogoutAction"/>
+    </map:actions>
+  </map:components>
+
+  <!-- =========================== Views =================================== -->
+
+  <map:views>
+    <map:view name="content" from-label="content">
+      <map:serialize type="xml"/>
+    </map:view>
+  </map:views>
+
+
+  <!-- =========================== Pipelines ================================= -->
+
+  <map:pipelines>
+    <map:component-configurations>
+      <!-- select skin to use -->
+      <map:global-variables>
+		<skin>common</skin>
+    	<mainTitle>Cocoon Portal</mainTitle>
+	    <toolsTitle>Cocoon Portal Tools</toolsTitle>
+      </map:global-variables>
+
+    </map:component-configurations>
+
+  <map:pipeline>
+    <!-- This action sets the portal name for the current request and
+         initializes the portal service. So this should be the first
+         task for every request!
+    -->
+    <map:act type="portal-prepare">
+      <map:parameter name="portal-name" value="portal"/>
+    </map:act>
+  </map:pipeline>
+  
+    <!-- The internal pipelines for loading and saving -->
+    <map:pipeline internal-only="true">
+      <map:match pattern="sunrise-authuser">
+        <map:generate src="resources/sunrise-user.xml"/>
+        <map:transform src="styles/authenticate.xsl">
+          <map:parameter name="use-request-parameters" value="true"/>
+        </map:transform>
+        <map:serialize type="xml"/>
+      </map:match>
+
+      <map:match pattern="load-global-profile">
+        <map:generate src="profiles/{request-param:profile}/{request-param:portal}.xml"/>
+        <map:serialize type="xml"/>
+      </map:match>
+
+      <map:match pattern="load-role-profile">
+        <map:generate src="profiles/{request-param:profile}/{request-param:portal}-role-{request-param:role}.xml"/>
+        <map:serialize type="xml"/>
+      </map:match>
+
+      <map:match pattern="load-user-profile">
+        <map:generate src="profiles/{request-param:profile}/{request-param:portal}-user-{request-param:user}.xml"/>
+        <map:serialize type="xml"/>
+      </map:match>
+
+      <map:match pattern="save-user-profile">
+        <map:generate src="resources/save-user-profile.xml"/>
+				<map:transform src="styles/save-user-profile.xsl">
+					<map:parameter name="profiles" value="context://samples/blocks/portal/profiles/"/>
+				</map:transform>
+        <map:transform type="session"/>
+        <map:transform type="write-source"/>
+        <map:serialize type="xml"/>
+      </map:match>
+    </map:pipeline>
+
+    <!-- Now the accessible pipelines -->
+    <map:pipeline>
+
+      <!-- images -->
+      <map:match pattern="proxy-**">
+        <map:read type="portal-proxy"/>
+      </map:match>
+      <!--  WSRP Resources -->
+      <map:match pattern="wsrprsc">
+        <map:read src="{request-param:wsrp-url}"/>
+      </map:match>
+      <map:match pattern="images/*.gif">
+        <map:read mime-type="image/gif" src="{portal-skin:skin.basepath}/images/{1}.gif"/>
+      </map:match>
+      <map:match pattern="images/*.jpg">
+        <map:read mime-type="image/jpg" src="{portal-skin:skin.basepath}/images/{1}.jpg"/>
+      </map:match>
+
+      <!-- Cascading Stylesheets -->
+      <map:match pattern="css/*.css">
+        <map:read mime-type="text/css" src="{portal-skin:skin.basepath}/css/{1}.css"/>
+      </map:match>
+
+      <map:match pattern="">
+        <map:redirect-to uri="portal"/>
+      </map:match>
+
+      <map:match pattern="coplets/**">
+        <map:mount check-reload="yes" src="coplets/" uri-prefix="coplets"/>
+      </map:match>
+
+      <map:match pattern="portlets/**">
+        <map:mount check-reload="yes" src="portlets/" uri-prefix="portlets"/>
+      </map:match>
+
+      <!-- Do an auto login as anonymous -->
+      <map:act type="cowarp-is-logged-in">
+        <map:parameter name="application" value="portal"/>
+        <map:parameter name="negate-result" value="true"/>
+
+        <map:act type="cowarp-login">
+          <map:parameter name="application" value="portal"/>
+
+          <map:parameter name="name" value="anonymous"/>
+          <map:parameter name="password" value="anonymous"/>
+        </map:act>
+      </map:act>
+
+      <!-- Test pipeline for portal engine -->
+      <map:match pattern="portal">
+        <map:act type="cowarp-is-logged-in">
+          <map:parameter name="application" value="portal"/>
+
+          <map:generate type="portal" label="content"/>
+          <map:transform src="{portal-skin:skin.basepath}/styles/portal-page.xsl">
+            <map:parameter name="user" value="{ID}"/>
+            <map:parameter name="title" value="{global:mainTitle}"/>
+            <map:parameter name="base" value="{portalpath:relative}"/>
+          </map:transform>
+          <map:transform type="cinclude"/>
+          <map:transform type="portal-coplet"/>
+          <map:transform type="portal-new-eventlink"/>
+          <map:transform type="encodeURL"/>
+          <!--
+          <map:transform type="htmlroot" />
+          -->
+          <!-- If you don't need JSR-168 support, you can use the html serializer instead -->
+          <map:serialize type="html-include"/>
+        </map:act>
+      </map:match>
+
+      <!-- Test pipeline for bookmark -->
+      <map:match pattern="bookmark">
+        <map:act type="cowarp-is-logged-in">
+          <map:parameter name="application" value="portal"/>
+
+          <map:act type="portal-bookmark">
+            <map:redirect-to uri="portal?{uri}"/>
+          </map:act>
+        </map:act>
+      </map:match>
+
+      <map:match pattern="portalxml">
+        <map:act type="cowarp-is-logged-in">
+          <map:parameter name="application" value="portal"/>
+
+            <map:generate type="portal" label="content"/>
+          <map:serialize type="xml"/>
+        </map:act>
+      </map:match>
+
+      <!-- Authenticate a user -->
+      <map:match pattern="auth">
+        <!-- Check if we are logged in:
+        - if we are anonymous, then logout
+        - if we are any other use, redirect to loggedin
+        -->
+          <map:act type="cowarp-is-logged-in">
+            <map:parameter name="application" value="portal"/>
+
+            <map:select type="parameter" >
+              <map:parameter name="parameter-selector-test" value="{ID}"/>
+              <map:when test="anonymous">
+                <map:act type="cowarp-logout">
+                  <map:parameter name="application" value="portal"/>
+                </map:act>
+              </map:when>
+              <map:otherwise>
+                <map:redirect-to uri="loggedin"/>
+              </map:otherwise>
+            </map:select>
+          </map:act>
+
+        <!-- Start the authentication process -->
+        <map:act type="cowarp-login">
+          <map:parameter name="application" value="portal"/>
+          <map:parameter name="name" value="{request-param:name}"/>
+          <map:parameter name="password" value="{request-param:password}"/>
+
+          <!-- Authentication succeeded -->
+          <map:redirect-to uri="{request-param:resource}"/>
+
+        </map:act>
+        <!-- Authentication failed -->
+        <map:generate src="resources/login-error.xml"/>
+        <map:transform src="{portal-skin:skin.basepath}/styles/portal-page.xsl">
+          <map:parameter name="user" value="anonymous"/>
+        </map:transform>
+        <map:transform type="encodeURL"/>
+        <map:serialize/>
+      </map:match>
+
+      <map:match pattern="loggedin">
+        <map:act type="cowarp-is-logged-in">
+          <map:parameter name="application" value="portal"/>
+
+          <map:generate src="resources/logged-in.xml"/>
+          <map:transform src="{portal-skin:skin.basepath}/styles/portal-page.xsl"/>
+          <map:transform type="encodeURL"/>
+          <map:serialize/>
+        </map:act>
+        <map:redirect-to uri="login"/>
+      </map:match>
+
+      <map:match pattern="logout">
+        <map:act type="cowarp-is-logged-in">
+          <map:parameter name="application" value="portal"/>
+<!--
+            <map:act type="portal-save-profile"/>
+-->
+          <map:act type="cowarp-logout">
+		    <map:parameter name="application" value="portal"/>
+	      </map:act>
+        </map:act>
+        <!-- TODO logout page -->
+        <map:redirect-to uri="login"/>
+      </map:match>
+      
+      	<!-- ==== P O R T A L   T O O L S ==== -->
+	
+	<!-- mount sitemap of the portal tools -->
+	<map:match pattern="tools/**"> 
+		<map:act type="cowarp-is-logged-in">
+			<map:parameter name="application" value="portal"/> 
+			
+			<map:mount uri-prefix="tools" check-reload="no" src="tools/sitemap.xmap"/>
+		</map:act>
+	</map:match>
+	
+    <!-- portal tools image reader -->
+	<map:match pattern="toolImages/*/*.jpg">
+		<map:read mime-type="image/jpg" src="tools/skins/{1}/images/{2}.jpg"/>
+	</map:match>
+	<map:match pattern="userImages/*.jpg">
+		<map:read mime-type="image/jpg" src="tools/plugins/userManagement/userImages/{1}.jpg"/>
+	</map:match>
+
+      <!-- Everything else redirect to the portal -->
+      <map:match pattern="**">
+        <map:redirect-to uri="portal"/>
+      </map:match>
+    </map:pipeline>
+
+  </map:pipelines>
+</map:sitemap>
+
+<!-- end of file -->

Propchange: cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/sitemap.xmap
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css Thu Sep  1 02:08:10 2005
@@ -0,0 +1,92 @@
+/*
+* Copyright 1999-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.
+*/
+#forms_calendarDiv {
+    position: absolute;
+    visibility: hidden;
+    background-color: white;
+    layer-background-color: white;
+}
+
+.forms_cpYearNavigation, .forms_cpMonthNavigation {
+    background-color:#C0C0C0;
+    text-align:center;
+    vertical-align:center;
+    text-decoration:none;
+    color:#000000;
+    font-weight:bold;
+}
+  
+.forms_cpDayColumnHeader, .forms_cpYearNavigation, .forms_cpMonthNavigation, .forms_cpCurrentMonthDate, .forms_cpCurrentMonthDateDisabled, .forms_cpOtherMonthDate, .forms_cpOtherMonthDateDisabled, .forms_cpCurrentDate, .forms_cpCurrentDateDisabled, .forms_cpTodayText, .forms_cpTodayTextDisabled, .forms_cpText {
+    font-family:arial;
+    font-size:8pt;
+}
+  
+TD.forms_cpDayColumnHeader {
+    text-align:right;
+    border:solid thin #C0C0C0;
+    border-width:0 0 19 0;
+}
+  
+.forms_cpCurrentMonthDate, .forms_cpOtherMonthDate, .forms_cpCurrentDate  {
+    text-align:right;
+    text-decoration:none;
+}
+  
+.forms_cpCurrentMonthDateDisabled, .forms_cpOtherMonthDateDisabled, .forms_cpCurrentDateDisabled {
+    color:#D0D0D0;
+    text-align:right;
+    text-decoration:line-through;
+}
+  
+.forms_cpCurrentMonthDate, .forms_cpCurrentDate {
+    color:#000000;
+}
+  
+.forms_cpOtherMonthDate {
+    color:#808080;
+}
+  
+TD.forms_cpCurrentDate {
+    color:white; background-color: #C0C0C0;
+    border-width:1;
+    border:solid thin #800000;
+}
+  
+TD.forms_cpCurrentDateDisabled {
+    border-width:1;
+    border:solid thin #FFAAAA;
+}
+  
+TD.forms_cpTodayText, TD.forms_cpTodayTextDisabled {
+    border:solid thin #C0C0C0;
+    border-width:1 0 0 0;
+}
+  
+A.forms_cpTodayText, SPAN.forms_cpTodayTextDisabled {
+    height:20px;
+}
+  
+A.forms_cpTodayText {
+    color:black;
+}
+  
+.forms_cpTodayTextDisabled {
+    color:#D0D0D0;
+}
+  
+.forms_cpBorder {
+    border:solid thin #808080;
+}

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms-calendar.css
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css Thu Sep  1 02:08:10 2005
@@ -0,0 +1,75 @@
+/*
+* Copyright 1999-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.
+*/
+.forms-tab {
+    background-color: white;
+    border: 1px solid black;
+    border-bottom-width: 0px;
+    padding: 2px 1em 2px 1em;
+    margin-right: 5px;
+    position: relative;
+    text-decoration: none;
+    top: -1px;
+    z-index: 1;
+    cursor: pointer;
+}
+
+.forms-tab.forms-activeTab {
+    font-weight: bold;
+    padding-top: 5px;
+    cursor: default;
+    z-index: 3;
+}
+
+.forms-tabContent {
+    background-color: white;
+    border: 1px solid black;
+    padding: 1em;
+    position: relative;
+    z-index: 2;
+}
+
+.forms-validation-message, a.forms-validation-message:link {
+    color: red;
+    font-weight: bold;
+}
+
+.forms-validation-errors {
+}
+
+.forms-validation-error {
+}
+
+.forms-field-required {
+	color:blue;
+    font-weight: bold;
+}
+
+.forms-help {
+    border-style: dotted;
+    border-width: 1px;
+    padding: 5px;
+    background-color:#FFFFC0; /* light yellow */
+    width: 200px; /* otherwise IE does a weird layout */
+    z-index:1000; /* must be higher than forms-tabContent */
+}
+
+.forms-doubleList select {
+    width: 150px;
+}
+
+.forms-doubleList input {
+    width: 40px;
+}

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/forms.css
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css Thu Sep  1 02:08:10 2005
@@ -0,0 +1,21 @@
+/*
+* Copyright 1999-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.
+*/
+body { background-color: #FFFFFF; margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif;	font-size : 100%;}
+
+.tab { font-size : 85%; border: 0 }
+.tab a:link {   text-decoration : none; color: #000066;  }
+.tab a:visited { text-decoration : none; color: #2A4A6D }
+.tab a:hover { color: #0000FF; }

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/page.css
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css Thu Sep  1 02:08:10 2005
@@ -0,0 +1,65 @@
+/*
+* Copyright 2005 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.
+*/
+<!-- all css-specification of an (wsrp-)portlet -->
+
+<!-- Fonts -->
+portlet-font                { font-size:10pt;}
+portlet-font-dim            { }
+
+<!-- Messages -->
+portlet-msg-status          { }
+portlet-msg-info            { } 
+portlet-msg-error           { }
+portlet-msg-alert           { }
+portlet-msg-success         { }
+
+<!-- Sections -->
+portlet-section-header      { }
+portlet-section-body        { }
+portlet-section-alternate   { }
+portlet-section-selected    { }
+portlet-section-subheader   { }
+portlet-section-footer      { }
+portlet-section-text        { }
+
+<!-- Tables -->
+portlet-table-header        { }
+portlet-table-body          { }
+portlet-table-alternate     { }
+portlet-table-selected      { }
+portlet-table-subheader     { }
+portlet-table-footer        { }
+portlet-table-text          { }
+
+<!-- Forms -->
+portlet-form-label          { }
+portlet-form-input-field    { }
+portlet-form-button         { }
+portlet-icon-label          { }
+portlet-dlg-icon-label      { }
+portlet-form-field-label    { }
+portlet-form-field          { }
+
+<!-- Menus -->
+portlet-menu                { }
+portlet-menu-item           { }
+portlet-menu-item-selected  { }
+portlet-menu-item-hover     { }
+portlet-menu-item-hover-selected { }
+portlet-menu-cascade-item   { }
+portlet-menu-cascade-item-selected { }
+portlet-menu-description    { }
+portlet-menu-caption        { }
\ No newline at end of file

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/css/wsrp.css
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/basket.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/basket.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/basket.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/cal.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/cal.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/cal.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/customize.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/customize.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/customize.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/delete.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/delete.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/delete.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/edit.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/edit.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/edit.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/help.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/help.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/help.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/maximize.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/maximize.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/maximize.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/minimize.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/minimize.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/minimize.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/show.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/show.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/show.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/space.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/space.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/space.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/thumb.jpg
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/thumb.jpg?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/thumb.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/view.gif
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/view.gif?rev=265679&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/images/view.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js Thu Sep  1 02:08:10 2005
@@ -0,0 +1,186 @@
+/*
+* Copyright 1999-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.
+*/
+/**
+ * Runtime JavaScript library for Cocoon forms.
+ *
+ * @author <a href="http://www.apache.org/~sylvain/">Sylvain Wallez</a>
+ * @version CVS $Id$
+ */
+
+// Handlers that are to be called in the document's "onload" event
+var forms_onloadHandlers = new Array();
+
+function forms_onload() {
+    for (var i = 0; i < forms_onloadHandlers.length; i++) {
+        forms_onloadHandlers[i].forms_onload();
+    }
+    // Clear it (we no more need them)
+    forms_onloadHandlers = null;
+}
+
+// Handlers that are to be called in form's "onsubmit" event
+//FIXME: this single var implies only one form per page, and needs to be
+//       visited if we decide to support several forms per page.
+var forms_onsubmitHandlers = new Array();
+
+function forms_onsubmit() {
+    if (forms_onsubmitHandlers == null) {
+        alert("onsubmit called twice!");
+    }
+
+    for (var i = 0; i < forms_onsubmitHandlers.length; i++) {
+        forms_onsubmitHandlers[i].forms_onsubmit();
+    }
+    // clear it
+    forms_onsubmitHandlers = null;
+}
+
+/**
+ * Submit the form containing an element, also storing in the hidden
+ * 'forms_submit_id' field the name of the element which triggered the submit.
+ */
+function forms_submitForm(element, name) {
+    if (name == undefined) {
+        name = element.name;
+    }
+    
+    var form = forms_getForm(element);
+    if (form == null) {
+        alert("Cannot find form for " + element);
+    } else {
+        form["forms_submit_id"].value = name;
+        // FIXME: programmatically submitting the form doesn't trigger onsubmit ? (both in IE and Moz)
+        forms_onsubmit();
+        form.submit();
+    }
+}
+
+/**
+ * Crawl the parents of an element up to finding a form.
+ */
+function forms_getForm(element) {
+    while(element != null && element.tagName != "FORM") {
+        element = element.parentNode;
+    }
+    return element;
+}
+
+/**
+ * Move a named element as an immediate child of the <body> element.
+ * This is required for help popups inside <wi:group> tabs. The reason is that CSS positioning
+ * properties ("left" and "top") on a block with a "position: absolute" are actually relative to
+ * the nearest ancestor that has a position of "absolute", "relative" or "fixed".
+ * See http://www.w3.org/TR/CSS21/visudet.html#containing-block-details $4
+ */
+
+function forms_moveInBody(element) {
+    element.parentNode.removeChild(element);
+    document.body.appendChild(element);
+}
+
+/**
+ * Create a popup window for a named element.
+ *
+ * @param id the ID of the element to make a popup with.
+ */
+function forms_createPopupWindow(id) {
+    var result = new PopupWindow(id);
+    result.autoHide();
+    // add to onload handlers
+    result.forms_id = id;
+    result.forms_onload = function() {
+        forms_moveInBody(document.getElementById(this.forms_id));
+    }
+    forms_onloadHandlers.push(result);
+    return result;
+}
+
+
+function forms_createOptionTransfer(id, submitOnChange) {
+    var result = new OptionTransfer(id + ".unselected", id);
+    result.setAutoSort(true);
+    // add to onload handlers
+    result.forms_id = id;
+    result.forms_onload = function() {
+        var form = forms_getForm(document.getElementById(this.forms_id));
+        this.init(form);
+        sortSelect(this.left);
+        sortSelect(this.right);
+    }
+    result.submitOnChange = submitOnChange;
+    result.forms_transferLeft = function() {
+        this.transferLeft();
+        if (this.submitOnChange) {
+            forms_submitForm(document.getElementById(this.forms_id));
+        }
+    }
+    result.forms_transferRight = function() {
+        this.transferRight();
+        if (this.submitOnChange) {
+            forms_submitForm(document.getElementById(this.forms_id));
+        }
+    }
+    result.forms_transferAllLeft = function() {
+        this.transferAllLeft();
+        if (this.submitOnChange) {
+            forms_submitForm(document.getElementById(this.forms_id));
+        }
+    };
+    result.forms_transferAllRight = function() {
+        this.transferAllRight();
+        if (this.submitOnChange) {
+            forms_submitForm(document.getElementById(this.forms_id));
+        }
+    };
+    forms_onloadHandlers.push(result);
+    
+    // add to onsubmit handlers
+    result.forms_onsubmit = function() {
+        // Select all options in the "selected" list to that
+        // its values are sent.
+        selectAllOptions(this.right);
+    }
+    forms_onsubmitHandlers.push(result);
+    return result;
+}
+
+
+/**
+ * Show a tab in a <wi:group>
+ *
+ * @param tabgroup (string) name of the <wi:group>
+ * @param idx (integer) index of the selected tab
+ * @param length (integer) total number of tabs
+ * @param state (string, optional) name of the input storing the tabgroup state
+ */
+function forms_showTab(tabgroup, idx, length, state) {
+    for (var i = 0; i < length; i++) {
+        // Change tab status (selected/unselected)
+        var tab = document.getElementById(tabgroup + "_tab_" + i);
+        if (tab != null) {
+            tab.className = (i == idx) ? 'forms-tab forms-activeTab': 'forms-tab';
+        }
+        // Change tab content visibilty
+        var tabitems = document.getElementById(tabgroup + "_items_" + i);
+        if (tabitems != null) {
+            tabitems.style.display = (i == idx) ? '' : 'none';
+        }
+    }
+    // Change state value
+    if (state.length > 0) {
+        document.forms[0][state].value = idx;
+    }
+}
\ No newline at end of file

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/forms-lib.js
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js Thu Sep  1 02:08:10 2005
@@ -0,0 +1,124 @@
+// ===================================================================
+// Author: Matt Kruse <ma...@mattkruse.com>
+// WWW: http://www.mattkruse.com/
+//
+// NOTICE: You may use this code for any purpose, commercial or
+// private, without any further permission from the author. You may
+// remove this notice from your final code if you wish, however it is
+// appreciated by the author if at least my web site address is kept.
+//
+// You may *NOT* re-distribute this code in any way except through its
+// use. That means, you can include it in your product, or your web
+// site, or any other form where the code is actually being used. You
+// may not put the plain javascript up on your site for download or
+// include it in your javascript libraries for download. 
+// If you wish to share this code with others, please just point them
+// to the URL instead.
+// Please DO NOT link directly to my .js files from your site. Copy
+// the files to your server and use them there. Thank you.
+// ===================================================================
+
+/* SOURCE FILE: selectbox.js */
+function selectUnselectMatchingOptions(obj,regex,which,only){if(window.RegExp){if(which == "select"){var selected1=true;var selected2=false;}else if(which == "unselect"){var selected1=false;var selected2=true;}else{return;}var re = new RegExp(regex);for(var i=0;i<obj.options.length;i++){if(re.test(obj.options[i].text)){obj.options[i].selected = selected1;}else{if(only == true){obj.options[i].selected = selected2;}}}}}
+function selectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",false);}
+function selectOnlyMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"select",true);}
+function unSelectMatchingOptions(obj,regex){selectUnselectMatchingOptions(obj,regex,"unselect",false);}
+function sortSelect(obj){var o = new Array();if(obj.options==null){return;}for(var i=0;i<obj.options.length;i++){o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;}if(o.length==0){return;}o = o.sort(
+function(a,b){if((a.text+"") <(b.text+"")){return -1;}if((a.text+"") >(b.text+"")){return 1;}return 0;});for(var i=0;i<o.length;i++){obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);}}
+function selectAllOptions(obj){for(var i=0;i<obj.options.length;i++){obj.options[i].selected = true;}}
+function moveSelectedOptions(from,to){if(arguments.length>3){var regex = arguments[3];if(regex != ""){unSelectMatchingOptions(from,regex);}}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}for(var i=(from.options.length-1);i>=0;i--){var o = from.options[i];if(o.selected){from.options[i] = null;}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(from);sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
+function copySelectedOptions(from,to){var options = new Object();for(var i=0;i<to.options.length;i++){options[to.options[i].text] = true;}for(var i=0;i<from.options.length;i++){var o = from.options[i];if(o.selected){if(options[o.text] == null || options[o.text] == "undefined"){to.options[to.options.length] = new Option( o.text, o.value, false, false);}}}if((arguments.length<3) ||(arguments[2]==true)){sortSelect(to);}from.selectedIndex = -1;to.selectedIndex = -1;}
+function moveAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){moveSelectedOptions(from,to);}else if(arguments.length==3){moveSelectedOptions(from,to,arguments[2]);}else if(arguments.length==4){moveSelectedOptions(from,to,arguments[2],arguments[3]);}}
+function copyAllOptions(from,to){selectAllOptions(from);if(arguments.length==2){copySelectedOptions(from,to);}else if(arguments.length==3){copySelectedOptions(from,to,arguments[2]);}}
+function swapOptions(obj,i,j){var o = obj.options;var i_selected = o[i].selected;var j_selected = o[j].selected;var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);o[i] = temp2;o[j] = temp;o[i].selected = j_selected;o[j].selected = i_selected;}
+function moveOptionUp(obj){var selectedCount=0;for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){selectedCount++;}}if(selectedCount!=1){return;}var i = obj.selectedIndex;if(i == 0){return;}swapOptions(obj,i,i-1);obj.options[i-1].selected = true;}
+function moveOptionDown(obj){var selectedCount=0;for(i=0;i<obj.options.length;i++){if(obj.options[i].selected){selectedCount++;}}if(selectedCount != 1){return;}var i = obj.selectedIndex;if(i ==(obj.options.length-1)){return;}swapOptions(obj,i,i+1);obj.options[i+1].selected = true;}
+function removeSelectedOptions(from){for(var i=(from.options.length-1);i>=0;i--){var o=from.options[i];if(o.selected){from.options[i] = null;}}from.selectedIndex = -1;}
+
+
+/* SOURCE FILE: OptionTransfer.js */
+
+function OT_transferLeft(){moveSelectedOptions(this.right,this.left,this.autoSort);this.update();}
+function OT_transferRight(){moveSelectedOptions(this.left,this.right,this.autoSort);this.update();}
+function OT_transferAllLeft(){moveAllOptions(this.right,this.left,this.autoSort);this.update();}
+function OT_transferAllRight(){moveAllOptions(this.left,this.right,this.autoSort);this.update();}
+function OT_saveRemovedLeftOptions(f){this.removedLeftField = f;}
+function OT_saveRemovedRightOptions(f){this.removedRightField = f;}
+function OT_saveAddedLeftOptions(f){this.addedLeftField = f;}
+function OT_saveAddedRightOptions(f){this.addedRightField = f;}
+function OT_saveNewLeftOptions(f){this.newLeftField = f;}
+function OT_saveNewRightOptions(f){this.newRightField = f;}
+function OT_update(){var removedLeft = new Object();var removedRight = new Object();var addedLeft = new Object();var addedRight = new Object();var newLeft = new Object();var newRight = new Object();for(var i=0;i<this.left.options.length;i++){var o=this.left.options[i];newLeft[o.value]=1;if(typeof(this.originalLeftValues[o.value])=="undefined"){addedLeft[o.value]=1;removedRight[o.value]=1;}}for(var i=0;i<this.right.options.length;i++){var o=this.right.options[i];newRight[o.value]=1;if(typeof(this.originalRightValues[o.value])=="undefined"){addedRight[o.value]=1;removedLeft[o.value]=1;}}if(this.removedLeftField!=null){this.removedLeftField.value = OT_join(removedLeft,this.delimiter);}if(this.removedRightField!=null){this.removedRightField.value = OT_join(removedRight,this.delimiter);}if(this.addedLeftField!=null){this.addedLeftField.value = OT_join(addedLeft,this.delimiter);}if(this.addedRightField!=null){this.addedRightField.value = OT_join(addedRight,this.delimiter);}if(this.newLeftField!=null){this.newLeftField.value = OT_join(newLeft,this.delimiter);}if(this.newRightField!=null){this.newRightField.value = OT_join(newRight,this.delimiter);}}
+function OT_join(o,delimiter){var val;var str="";for(val in o){if(str.length>0){str=str+delimiter;}str=str+val;}return str;}
+function OT_setDelimiter(val){this.delimiter=val;}
+function OT_setAutoSort(val){this.autoSort=val;}
+function OT_init(theform){this.form = theform;if(!theform[this.left]){alert("OptionTransfer init(): Left select list does not exist in form!");return false;}if(!theform[this.right]){alert("OptionTransfer init(): Right select list does not exist in form!");return false;}this.left=theform[this.left];this.right=theform[this.right];for(var i=0;i<this.left.options.length;i++){this.originalLeftValues[this.left.options[i].value]=1;}for(var i=0;i<this.right.options.length;i++){this.originalRightValues[this.right.options[i].value]=1;}if(this.removedLeftField!=null){this.removedLeftField=theform[this.removedLeftField];}if(this.removedRightField!=null){this.removedRightField=theform[this.removedRightField];}if(this.addedLeftField!=null){this.addedLeftField=theform[this.addedLeftField];}if(this.addedRightField!=null){this.addedRightField=theform[this.addedRightField];}if(this.newLeftField!=null){this.newLeftField=theform[this.newLeftField];}if(this.newRightField!=null){this.newRightField=theform[this.newRightField];}this.update();}
+function OptionTransfer(l,r){this.form = null;this.left=l;this.right=r;this.autoSort=true;this.delimiter=",";this.originalLeftValues = new Object();this.originalRightValues = new Object();this.removedLeftField = null;this.removedRightField = null;this.addedLeftField = null;this.addedRightField = null;this.newLeftField = null;this.newRightField = null;this.transferLeft=OT_transferLeft;this.transferRight=OT_transferRight;this.transferAllLeft=OT_transferAllLeft;this.transferAllRight=OT_transferAllRight;this.saveRemovedLeftOptions=OT_saveRemovedLeftOptions;this.saveRemovedRightOptions=OT_saveRemovedRightOptions;this.saveAddedLeftOptions=OT_saveAddedLeftOptions;this.saveAddedRightOptions=OT_saveAddedRightOptions;this.saveNewLeftOptions=OT_saveNewLeftOptions;this.saveNewRightOptions=OT_saveNewRightOptions;this.setDelimiter=OT_setDelimiter;this.setAutoSort=OT_setAutoSort;this.init=OT_init;this.update=OT_update;}
+
+/* SOURCE FILE: date.js */
+var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
+function LZ(x){return(x<0||x>9?"":"0")+x}
+function isDate(val,format){var date=getDateFromFormat(val,format);if(date==0){return false;}return true;}
+function compareDates(date1,dateformat1,date2,dateformat2){var d1=getDateFromFormat(date1,dateformat1);var d2=getDateFromFormat(date2,dateformat2);if(d1==0 || d2==0){return -1;}else if(d1 > d2){return 1;}return 0;}
+function formatDate(date,format){format=format+"";var result="";var i_format=0;var c="";var token="";var y=date.getYear()+"";var M=date.getMonth()+1;var d=date.getDate();var E=date.getDay();var H=date.getHours();var m=date.getMinutes();var s=date.getSeconds();var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=new Object();if(y.length < 4){y=""+(y-0+1900);}value["y"]=""+y;value["yyyy"]=y;value["yy"]=y.substring(2,4);value["M"]=M;value["MM"]=LZ(M);value["MMM"]=MONTH_NAMES[M-1];value["NNN"]=MONTH_NAMES[M+11];value["d"]=d;value["dd"]=LZ(d);value["E"]=DAY_NAMES[E+7];value["EE"]=DAY_NAMES[E];value["H"]=H;value["HH"]=LZ(H);if(H==0){value["h"]=12;}else if(H>12){value["h"]=H-12;}else{value["h"]=H;}value["hh"]=LZ(value["h"]);if(H>11){value["K"]=H-12;}else{value["K"]=H;}value["k"]=H+1;value["KK"]=LZ(value["K"]);value["kk"]=LZ(value["k"]);if(H > 11){value["a"]="PM";}else{value["a"]="AM";}value["m"]=m;value["mm"]=LZ(m);value["s"]=s;value["ss"]=LZ(s);while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(value[token] != null){result=result + value[token];}else{result=result + token;}}return result;}
+function _isInteger(val){var digits="1234567890";for(var i=0;i < val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;}
+function _getInt(str,i,minlength,maxlength){for(var x=maxlength;x>=minlength;x--){var token=str.substring(i,i+x);if(token.length < minlength){return null;}if(_isInteger(token)){return token;}}return null;}
+function getDateFromFormat(val,format){val=val+"";format=format+"";var i_val=0;var i_format=0;var c="";var token="";var token2="";var x,y;var now=new Date();var year=now.getYear();var month=now.getMonth()+1;var date=1;var hh=now.getHours();var mm=now.getMinutes();var ss=now.getSeconds();var ampm="";while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(token=="yyyy" || token=="yy" || token=="y"){if(token=="yyyy"){x=4;y=4;}if(token=="yy"){x=2;y=2;}if(token=="y"){x=2;y=4;}year=_getInt(val,i_val,x,y);if(year==null){return 0;}i_val += year.length;if(year.length==2){if(year > 70){year=1900+(year-0);}else{year=2000+(year-0);}}}else if(token=="MMM"||token=="NNN"){month=0;for(var i=0;i<MONTH_NAMES.length;i++){var month_name=MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){if(token=="MMM"||(token=="NNN"&&i>11)){month=i+1;if(month>12){month -= 12;}i_val += month_name.length;break;}}}if((month < 1)||(month>12)){return 0;}}else if(token=="EE"||token=="E"){for(var i=0;i<DAY_NAMES.length;i++){var day_name=DAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val += day_name.length;break;}}}else if(token=="MM"||token=="M"){month=_getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return 0;}i_val+=month.length;}else if(token=="dd"||token=="d"){date=_getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return 0;}i_val+=date.length;}else if(token=="hh"||token=="h"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>12)){return 0;}i_val+=hh.length;}else if(token=="HH"||token=="H"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>23)){return 0;}i_val+=hh.length;}else if(token=="KK"||token=="K"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>11)){return 0;}i_val+=hh.length;}else if(token=="kk"||token=="k"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>24)){return 0;}i_val+=hh.length;hh--;}else if(token=="mm"||token=="m"){mm=_getInt(val,i_val,token.length,2);if(mm==null||(mm<0)||(mm>59)){return 0;}i_val+=mm.length;}else if(token=="ss"||token=="s"){ss=_getInt(val,i_val,token.length,2);if(ss==null||(ss<0)||(ss>59)){return 0;}i_val+=ss.length;}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am"){ampm="AM";}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){ampm="PM";}else{return 0;}i_val+=2;}else{if(val.substring(i_val,i_val+token.length)!=token){return 0;}else{i_val+=token.length;}}}if(i_val != val.length){return 0;}if(month==2){if( ((year%4==0)&&(year%100 != 0) ) ||(year%400==0) ){if(date > 29){return 0;}}else{if(date > 28){return 0;}}}if((month==4)||(month==6)||(month==9)||(month==11)){if(date > 30){return 0;}}if(hh<12 && ampm=="PM"){hh=hh-0+12;}else if(hh>11 && ampm=="AM"){hh-=12;}var newdate=new Date(year,month-1,date,hh,mm,ss);return newdate.getTime();}
+function parseDate(val){var preferEuro=(arguments.length==2)?arguments[1]:false;generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');var d=null;for(var i=0;i<checkList.length;i++){var l=window[checkList[i]];for(var j=0;j<l.length;j++){d=getDateFromFormat(val,l[j]);if(d!=0){return new Date(d);}}}return null;}
+
+/* SOURCE FILE: AnchorPosition.js */
+function getAnchorPosition(anchorname){var useWindow=false;var coordinates=new Object();var x=0,y=0;var use_gebi=false, use_css=false, use_layers=false;if(document.getElementById){use_gebi=true;}else if(document.all){use_css=true;}else if(document.layers){use_layers=true;}if(use_gebi && document.all){x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if(use_gebi){var o=document.getElementById(anchorname);x=AnchorPosition_getPageOffsetLeft(o);y=AnchorPosition_getPageOffsetTop(o);}else if(use_css){x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if(use_layers){var found=0;for(var i=0;i<document.anchors.length;i++){if(document.anchors[i].name==anchorname){found=1;break;}}if(found==0){coordinates.x=0;coordinates.y=0;return coordinates;}x=document.anchors[i].x;y=document.anchors[i].y;}else{coordinates.x=0;coordinates.y=0;return coordinates;}coordinates.x=x;coordinates.y=y;return coordinates;}
+function getAnchorWindowPosition(anchorname){var coordinates=getAnchorPosition(anchorname);var x=0;var y=0;if(document.getElementById){if(isNaN(window.screenX)){x=coordinates.x-document.body.scrollLeft+window.screenLeft;y=coordinates.y-document.body.scrollTop+window.screenTop;}else{x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}}else if(document.all){x=coordinates.x-document.body.scrollLeft+window.screenLeft;y=coordinates.y-document.body.scrollTop+window.screenTop;}else if(document.layers){x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}coordinates.x=x;coordinates.y=y;return coordinates;}
+function AnchorPosition_getPageOffsetLeft(el){var ol=el.offsetLeft;while((el=el.offsetParent) != null){ol += el.offsetLeft;}return ol;}
+function AnchorPosition_getWindowOffsetLeft(el){return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;}
+function AnchorPosition_getPageOffsetTop(el){var ot=el.offsetTop;while((el=el.offsetParent) != null){ot += el.offsetTop;}return ot;}
+function AnchorPosition_getWindowOffsetTop(el){return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;}
+
+/* SOURCE FILE: PopupWindow.js */
+function PopupWindow_getXYPosition(anchorname){var coordinates;if(this.type == "WINDOW"){coordinates = getAnchorWindowPosition(anchorname);}else{coordinates = getAnchorPosition(anchorname);}this.x = coordinates.x;this.y = coordinates.y;}
+function PopupWindow_setSize(width,height){this.width = width;this.height = height;}
+function PopupWindow_populate(contents){this.contents = contents;this.populated = false;}
+function PopupWindow_setUrl(url){this.url = url;}
+function PopupWindow_setWindowProperties(props){this.windowProperties = props;}
+function PopupWindow_refresh(){if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).innerHTML = this.contents;}else if(this.use_css){document.all[this.divName].innerHTML = this.contents;}else if(this.use_layers){var d = document.layers[this.divName];d.document.open();d.document.writeln(this.contents);d.document.close();}}else{if(this.popupWindow != null && !this.popupWindow.closed){if(this.url!=""){this.popupWindow.location.href=this.url;}else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close();}this.popupWindow.focus();}}}
+function PopupWindow_showPopup(anchorname){this.getXYPosition(anchorname);this.x += this.offsetX;this.y += this.offsetY;if(!this.populated &&(this.contents != "")){this.populated = true;this.refresh();}if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).style.left = this.x;document.getElementById(this.divName).style.top = this.y;document.getElementById(this.divName).style.visibility = "visible";}else if(this.use_css){document.all[this.divName].style.left = this.x;document.all[this.divName].style.top = this.y;document.all[this.divName].style.visibility = "visible";}else if(this.use_layers){document.layers[this.divName].left = this.x;document.layers[this.divName].top = this.y;document.layers[this.divName].visibility = "visible";}}else{if(this.popupWindow == null || this.popupWindow.closed){if(this.x<0){this.x=0;}if(this.y<0){this.y=0;}if(screen && screen.availHeight){if((this.y + this.height) > screen.availHeight){this.y = screen.availHeight - this.height;}}if(screen && screen.availWidth){if((this.x + this.width) > screen.availWidth){this.x = screen.availWidth - this.width;}}var avoidAboutBlank = window.opera ||( document.layers && !navigator.mimeTypes['*']) || navigator.vendor == 'KDE' ||( document.childNodes && !document.all && !navigator.taintEnabled);this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");}this.refresh();}}
+function PopupWindow_hidePopup(){if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).style.visibility = "hidden";}else if(this.use_css){document.all[this.divName].style.visibility = "hidden";}else if(this.use_layers){document.layers[this.divName].visibility = "hidden";}}else{if(this.popupWindow && !this.popupWindow.closed){this.popupWindow.close();this.popupWindow = null;}}}
+function PopupWindow_isClicked(e){if(this.divName != null){if(this.use_layers){var clickX = e.pageX;var clickY = e.pageY;var t = document.layers[this.divName];if((clickX > t.left) &&(clickX < t.left+t.clip.width) &&(clickY > t.top) &&(clickY < t.top+t.clip.height)){return true;}else{return false;}}else if(document.all){var t = window.event.srcElement;while(t.parentElement != null){if(t.id==this.divName){return true;}t = t.parentElement;}return false;}else if(this.use_gebi){var t = e.originalTarget;while(t.parentNode != null){if(t.id==this.divName){return true;}t = t.parentNode;}return false;}return false;}return false;}
+function PopupWindow_hideIfNotClicked(e){if(this.autoHideEnabled && !this.isClicked(e)){this.hidePopup();}}
+function PopupWindow_autoHide(){this.autoHideEnabled = true;}
+function PopupWindow_hidePopupWindows(e){for(var i=0;i<popupWindowObjects.length;i++){if(popupWindowObjects[i] != null){var p = popupWindowObjects[i];p.hideIfNotClicked(e);}}}
+function PopupWindow_attachListener(){if(document.layers){document.captureEvents(Event.MOUSEUP);}window.popupWindowOldEventListener = document.onmouseup;if(window.popupWindowOldEventListener != null){document.onmouseup = new Function("window.popupWindowOldEventListener();PopupWindow_hidePopupWindows();");}else{document.onmouseup = PopupWindow_hidePopupWindows;}}
+function PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex = 0;}if(!window.popupWindowObjects){window.popupWindowObjects = new Array();}if(!window.listenerAttached){window.listenerAttached = true;PopupWindow_attachListener();}this.index = popupWindowIndex++;popupWindowObjects[this.index] = this;this.divName = null;this.popupWindow = null;this.width=0;this.height=0;this.populated = false;this.visible = false;this.autoHideEnabled = false;this.contents = "";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";if(arguments.length>0){this.type="DIV";this.divName = arguments[0];}else{this.type="WINDOW";}this.use_gebi = false;this.use_css = false;this.use_layers = false;if(document.getElementById){this.use_gebi = true;}else if(document.all){this.use_css = true;}else if(document.layers){this.use_layers = true;}else{this.type = "WINDOW";}this.offsetX = 0;this.offsetY = 0;this.getXYPosition = PopupWindow_getXYPosition;this.populate = PopupWindow_populate;this.setUrl = PopupWindow_setUrl;this.setWindowProperties = PopupWindow_setWindowProperties;this.refresh = PopupWindow_refresh;this.showPopup = PopupWindow_showPopup;this.hidePopup = PopupWindow_hidePopup;this.setSize = PopupWindow_setSize;this.isClicked = PopupWindow_isClicked;this.autoHide = PopupWindow_autoHide;this.hideIfNotClicked = PopupWindow_hideIfNotClicked;}
+
+
+/* SOURCE FILE: CalendarPopup.js */
+
+function CalendarPopup(){var c;if(arguments.length>0){c = new PopupWindow(arguments[0]);}else{c = new PopupWindow();c.setSize(150,175);}c.offsetX = -152;c.offsetY = 25;c.autoHide();c.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");c.monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");c.dayHeaders = new Array("S","M","T","W","T","F","S");c.returnFunction = "CP_tmpReturnFunction";c.returnMonthFunction = "CP_tmpReturnMonthFunction";c.returnQuarterFunction = "CP_tmpReturnQuarterFunction";c.returnYearFunction = "CP_tmpReturnYearFunction";c.weekStartDay = 0;c.isShowYearNavigation = false;c.displayType = "date";c.disabledWeekDays = new Object();c.disabledDatesExpression = "";c.yearSelectStartOffset = 2;c.currentDate = null;c.todayText="Today";c.cssPrefix="";c.isShowYearNavigationInput=false;window.CP_targetInput = null;window.CP_dateFormat = "MM/dd/yyyy";c.setReturnFunction = CP_setReturnFunction;c.setReturnMonthFunction = CP_setReturnMonthFunction;c.setReturnQuarterFunction = CP_setReturnQuarterFunction;c.setReturnYearFunction = CP_setReturnYearFunction;c.setMonthNames = CP_setMonthNames;c.setMonthAbbreviations = CP_setMonthAbbreviations;c.setDayHeaders = CP_setDayHeaders;c.setWeekStartDay = CP_setWeekStartDay;c.setDisplayType = CP_setDisplayType;c.setDisabledWeekDays = CP_setDisabledWeekDays;c.addDisabledDates = CP_addDisabledDates;c.setYearSelectStartOffset = CP_setYearSelectStartOffset;c.setTodayText = CP_setTodayText;c.showYearNavigation = CP_showYearNavigation;c.showCalendar = CP_showCalendar;c.hideCalendar = CP_hideCalendar;c.getStyles = getCalendarStyles;c.refreshCalendar = CP_refreshCalendar;c.getCalendar = CP_getCalendar;c.select = CP_select;c.setCssPrefix = CP_setCssPrefix;c.showYearNavigationInput = CP_showYearNavigationInput
+return c;}
+function CP_tmpReturnFunction(y,m,d){if(window.CP_targetInput!=null){var dt = new Date(y,m-1,d,0,0,0);window.CP_targetInput.value = formatDate(dt,window.CP_dateFormat);}else{alert('Use setReturnFunction() to define which function will get the clicked results!');}}
+function CP_tmpReturnMonthFunction(y,m){alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , month='+m);}
+function CP_tmpReturnQuarterFunction(y,q){alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , quarter='+q);}
+function CP_tmpReturnYearFunction(y){alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year='+y);}
+function CP_setReturnFunction(name){this.returnFunction = name;}
+function CP_setReturnMonthFunction(name){this.returnMonthFunction = name;}
+function CP_setReturnQuarterFunction(name){this.returnQuarterFunction = name;}
+function CP_setReturnYearFunction(name){this.returnYearFunction = name;}
+function CP_setMonthNames(){for(var i=0;i<arguments.length;i++){this.monthNames[i] = arguments[i];}}
+function CP_setMonthAbbreviations(){for(var i=0;i<arguments.length;i++){this.monthAbbreviations[i] = arguments[i];}}
+function CP_setDayHeaders(){for(var i=0;i<arguments.length;i++){this.dayHeaders[i] = arguments[i];}}
+function CP_setWeekStartDay(day){this.weekStartDay = day;}
+function CP_showYearNavigation(){this.isShowYearNavigation =(arguments.length>0)?arguments[0]:true;}
+function CP_setDisplayType(type){if(type!="date"&&type!="week-end"&&type!="month"&&type!="quarter"&&type!="year"){alert("Invalid display type! Must be one of: date,week-end,month,quarter,year");return false;}this.displayType=type;}
+function CP_setYearSelectStartOffset(num){this.yearSelectStartOffset=num;}
+function CP_setDisabledWeekDays(){this.disabledWeekDays = new Object();for(var i=0;i<arguments.length;i++){this.disabledWeekDays[arguments[i]] = true;}}
+function CP_addDisabledDates(start, end){if(arguments.length==1){end=start;}if(start==null && end==null){return;}if(this.disabledDatesExpression!=""){this.disabledDatesExpression+= "||";}if(start!=null){start = parseDate(start);start=""+start.getFullYear()+LZ(start.getMonth()+1)+LZ(start.getDate());}if(end!=null){end=parseDate(end);end=""+end.getFullYear()+LZ(end.getMonth()+1)+LZ(end.getDate());}if(start==null){this.disabledDatesExpression+="(ds<="+end+")";}else if(end  ==null){this.disabledDatesExpression+="(ds>="+start+")";}else{this.disabledDatesExpression+="(ds>="+start+"&&ds<="+end+")";}}
+function CP_setTodayText(text){this.todayText = text;}
+function CP_setCssPrefix(val){this.cssPrefix = val;}
+function CP_showYearNavigationInput(){this.isShowYearNavigationInput =(arguments.length>0)?arguments[0]:true;}
+function CP_hideCalendar(){if(arguments.length > 0){window.popupWindowObjects[arguments[0]].hidePopup();}else{this.hidePopup();}}
+function CP_refreshCalendar(index){var calObject = window.popupWindowObjects[index];if(arguments.length>1){calObject.populate(calObject.getCalendar(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));}else{calObject.populate(calObject.getCalendar());}calObject.refresh();}
+function CP_showCalendar(anchorname){if(arguments.length>1){if(arguments[1]==null||arguments[1]==""){this.currentDate=new Date();}else{this.currentDate=new Date(parseDate(arguments[1]));}}this.populate(this.getCalendar());this.showPopup(anchorname);}
+function CP_select(inputobj, linkname, format){var selectedDate=(arguments.length>3)?arguments[3]:null;if(!window.getDateFromFormat){alert("calendar.select: To use this method you must also include 'date.js' for date formatting");return;}if(this.displayType!="date"&&this.displayType!="week-end"){alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'");return;}if(inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea"){alert("calendar.select: Input object passed is not a valid form input object");window.CP_targetInput=null;return;}window.CP_targetInput = inputobj;this.currentDate=null;var time=0;if(selectedDate!=null){time = getDateFromFormat(selectedDate,format)}else if(inputobj.value!=""){time = getDateFromFormat(inputobj.value,format);}if(selectedDate!=null || inputobj.value!=""){if(time==0){this.currentDate=null;}else{this.currentDate=new Date(time);}}window.CP_dateFormat = format;this.showCalendar(linkname);}
+function getCalendarStyles(){var result = "";var p = "";if(this!=null && typeof(this.cssPrefix)!="undefined" && this.cssPrefix!=null && this.cssPrefix!=""){p=this.cssPrefix;}result += "<STYLE>\n";result += "."+p+"cpYearNavigation,."+p+"cpMonthNavigation{background-color:#C0C0C0;text-align:center;vertical-align:center;text-decoration:none;color:#000000;font-weight:bold;}\n";result += "."+p+"cpDayColumnHeader, ."+p+"cpYearNavigation,."+p+"cpMonthNavigation,."+p+"cpCurrentMonthDate,."+p+"cpCurrentMonthDateDisabled,."+p+"cpOtherMonthDate,."+p+"cpOtherMonthDateDisabled,."+p+"cpCurrentDate,."+p+"cpCurrentDateDisabled,."+p+"cpTodayText,."+p+"cpTodayTextDisabled,."+p+"cpText{font-family:arial;font-size:8pt;}\n";result += "TD."+p+"cpDayColumnHeader{text-align:right;border:solid thin #C0C0C0;border-width:0 0 1 0;}\n";result += "."+p+"cpCurrentMonthDate, ."+p+"cpOtherMonthDate, ."+p+"cpCurrentDate{text-align:right;text-decoration:none;}\n";result += "."+p+"cpCurrentMonthDateDisabled, ."+p+"cpOtherMonthDateDisabled, ."+p+"cpCurrentDateDisabled{color:#D0D0D0;text-align:right;text-decoration:line-through;}\n";result += "."+p+"cpCurrentMonthDate, .cpCurrentDate{color:#000000;}\n";result += "."+p+"cpOtherMonthDate{color:#808080;}\n";result += "TD."+p+"cpCurrentDate{color:white;background-color: #C0C0C0;border-width:1;border:solid thin #800000;}\n";result += "TD."+p+"cpCurrentDateDisabled{border-width:1;border:solid thin #FFAAAA;}\n";result += "TD."+p+"cpTodayText, TD."+p+"cpTodayTextDisabled{border:solid thin #C0C0C0;border-width:1 0 0 0;}\n";result += "A."+p+"cpTodayText, SPAN."+p+"cpTodayTextDisabled{height:20px;}\n";result += "A."+p+"cpTodayText{color:black;}\n";result += "."+p+"cpTodayTextDisabled{color:#D0D0D0;}\n";result += "."+p+"cpBorder{border:solid thin #808080;}\n";result += "</STYLE>\n";return result;}
+function CP_getCalendar(){var now = new Date();if(this.type == "WINDOW"){var windowref = "window.opener.";}else{var windowref = "";}var result = "";if(this.type == "WINDOW"){result += "<HTML><HEAD><TITLE>Calendar</TITLE>"+this.getStyles()+"</HEAD><BODY MARGINWIDTH=0 MARGINHEIGHT=0 TOPMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0>\n";result += '<CENTER><TABLE WIDTH=100% BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n';}else{result += '<TABLE CLASS="'+this.cssPrefix+'cpBorder" WIDTH=144 BORDER=1 BORDERWIDTH=1 CELLSPACING=0 CELLPADDING=1>\n';result += '<TR><TD ALIGN=CENTER>\n';result += '<CENTER>\n';}if(this.displayType=="date" || this.displayType=="week-end"){if(this.currentDate==null){this.currentDate = now;}if(arguments.length > 0){var month = arguments[0];}else{var month = this.currentDate.getMonth()+1;}if(arguments.length > 1 && arguments[1]>0 && arguments[1]-0==arguments[1]){var year = arguments[1];}else{var year = this.currentDate.getFullYear();}var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);if( ((year%4 == 0)&&(year%100 != 0) ) ||(year%400 == 0) ){daysinmonth[2] = 29;}var current_month = new Date(year,month-1,1);var display_year = year;var display_month = month;var display_date = 1;var weekday= current_month.getDay();var offset = 0;offset =(weekday >= this.weekStartDay) ? weekday-this.weekStartDay : 7-this.weekStartDay+weekday ;if(offset > 0){display_month--;if(display_month < 1){display_month = 12;display_year--;}display_date = daysinmonth[display_month]-offset+1;}var next_month = month+1;var next_month_year = year;if(next_month > 12){next_month=1;next_month_year++;}var last_month = month-1;var last_month_year = year;if(last_month < 1){last_month=12;last_month_year--;}var date_class;if(this.type!="WINDOW"){result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";}result += '<TR>\n';var refresh = 'javascript:'+windowref+'CP_refreshCalendar';if(this.isShowYearNavigation){result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refresh+'('+this.index+','+last_month+','+last_month_year+');">&lt;</A></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="58"><SPAN CLASS="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+'</SPAN></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refresh+'('+this.index+','+next_month+','+next_month_year+');">&gt;</A></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10">&nbsp;</TD>';result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="'+refresh+'('+this.index+','+month+','+(year-1)+');">&lt;</A></TD>';if(this.isShowYearNavigationInput){result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="36"><INPUT NAME="cpYear" CLASS="'+this.cssPrefix+'cpYearNavigation" SIZE="4" MAXLENGTH="4" VALUE="'+year+'" onBlur="'+refresh+'('+this.index+','+month+',this.value-0);"></TD>';}else{result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="36"><SPAN CLASS="'+this.cssPrefix+'cpYearNavigation">'+year+'</SPAN></TD>';}result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="'+refresh+'('+this.index+','+month+','+(year+1)+');">&gt;</A></TD>';}else{result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refresh+'('+this.index+','+last_month+','+last_month_year+');">&lt;&lt;</A></TD>\n';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="100"><SPAN CLASS="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+' '+year+'</SPAN></TD>\n';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refresh+'('+this.index+','+next_month+','+next_month_year+');">&gt;&gt;</A></TD>\n';}result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n';result += '<TR>\n';for(var j=0;j<7;j++){result += '<TD CLASS="'+this.cssPrefix+'cpDayColumnHeader" WIDTH="14%"><SPAN CLASS="'+this.cssPrefix+'cpDayColumnHeader">'+this.dayHeaders[(this.weekStartDay+j)%7]+'</TD>\n';}result += '</TR>\n';for(var row=1;row<=6;row++){result += '<TR>\n';for(var col=1;col<=7;col++){var disabled=false;if(this.disabledDatesExpression!=""){var ds=""+display_year+LZ(display_month)+LZ(display_date);eval("disabled=("+this.disabledDatesExpression+")");}var dateClass = "";if((display_month == this.currentDate.getMonth()+1) &&(display_date==this.currentDate.getDate()) &&(display_year==this.currentDate.getFullYear())){dateClass = "cpCurrentDate";}else if(display_month == month){dateClass = "cpCurrentMonthDate";}else{dateClass = "cpOtherMonthDate";}if(disabled || this.disabledWeekDays[col-1]){result += '	<TD CLASS="'+this.cssPrefix+dateClass+'"><SPAN CLASS="'+this.cssPrefix+dateClass+'Disabled">'+display_date+'</SPAN></TD>\n';}else{var selected_date = display_date;var selected_month = display_month;var selected_year = display_year;if(this.displayType=="week-end"){var d = new Date(selected_year,selected_month-1,selected_date,0,0,0,0);d.setDate(d.getDate() +(7-col));selected_year = d.getYear();if(selected_year < 1000){selected_year += 1900;}selected_month = d.getMonth()+1;selected_date = d.getDate();}result += '	<TD CLASS="'+this.cssPrefix+dateClass+'"><A HREF="javascript:'+windowref+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+this.cssPrefix+dateClass+'">'+display_date+'</A></TD>\n';}display_date++;if(display_date > daysinmonth[display_month]){display_date=1;display_month++;}if(display_month > 12){display_month=1;display_year++;}}result += '</TR>';}var current_weekday = now.getDay() - this.weekStartDay;if(current_weekday < 0){current_weekday += 7;}result += '<TR>\n';result += '	<TD COLSPAN=7 ALIGN=CENTER CLASS="'+this.cssPrefix+'cpTodayText">\n';if(this.disabledDatesExpression!=""){var ds=""+now.getFullYear()+LZ(now.getMonth()+1)+LZ(now.getDate());eval("disabled=("+this.disabledDatesExpression+")");}if(disabled || this.disabledWeekDays[current_weekday+1]){result += '		<SPAN CLASS="'+this.cssPrefix+'cpTodayTextDisabled">'+this.todayText+'</SPAN>\n';}else{result += '		<A CLASS="'+this.cssPrefix+'cpTodayText" HREF="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CP_hideCalendar(\''+this.index+'\');">'+this.todayText+'</A>\n';}result += '		<BR>\n';result += '	</TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="month" || this.displayType=="quarter" || this.displayType=="year"){if(arguments.length > 0){var year = arguments[0];}else{if(this.displayType=="year"){var year = now.getFullYear()-this.yearSelectStartOffset;}else{var year = now.getFullYear();}}if(this.displayType!="year" && this.isShowYearNavigation){result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";result += '<TR>\n';result += '	<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year-1)+');">&lt;&lt;</A></TD>\n';result += '	<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="100">'+year+'</TD>\n';result += '	<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year+1)+');">&gt;&gt;</A></TD>\n';result += '</TR></TABLE>\n';}}if(this.displayType=="month"){result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<4;i++){result += '<TR>';for(var j=0;j<3;j++){var monthindex =((i*3)+j);result += '<TD WIDTH=33% ALIGN=CENTER><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnMonthFunction+'('+year+','+(monthindex+1)+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+this.monthAbbreviations[monthindex]+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="quarter"){result += '<BR><TABLE WIDTH=120 BORDER=1 CELLSPACING=0 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<2;i++){result += '<TR>';for(var j=0;j<2;j++){var quarter =((i*2)+j+1);result += '<TD WIDTH=50% ALIGN=CENTER><BR><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnQuarterFunction+'('+year+','+quarter+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">Q'+quarter+'</A><BR><BR></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="year"){var yearColumnSize = 4;result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";result += '<TR>\n';result += '	<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="50%"><A CLASS="cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year-(yearColumnSize*2))+');">&lt;&lt;</A></TD>\n';result += '	<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="50%"><A CLASS="cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year+(yearColumnSize*2))+');">&gt;&gt;</A></TD>\n';result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<yearColumnSize;i++){for(var j=0;j<2;j++){var currentyear = year+(j*yearColumnSize)+i;result += '<TD WIDTH=50% ALIGN=CENTER><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnYearFunction+'('+currentyear+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+currentyear+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.type == "WINDOW"){result += "</BODY></HTML>\n";}return result;}
+

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/js/mattkruse-lib.js
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl Thu Sep  1 02:08:10 2005
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2005 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.
+-->
+<!-- SVN $Id$ -->
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="window">
+
+<xsl:variable name="bgColor">
+  <xsl:choose>
+    <xsl:when test="@bgColor">
+        <xsl:value-of select="@bgColor" />
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>#CCCCCC</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:variable>
+
+  <table border="0" cellSpacing="0" cellpadding="0" width="100%"><tbody>
+    <tr vAlign="top">
+      <td width="5" bgColor="{$bgColor}"/>
+      <td bgColor="{$bgColor}" valign="middle">
+        <font color="#ffffff" face="Arial" size="2"><b>
+          <xsl:choose>
+            <xsl:when test="@title">
+              <xsl:value-of select="@title"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="title"/>
+            </xsl:otherwise>
+          </xsl:choose>	
+        </b></font>
+      </td>
+		<td align="right" bgColor="{$bgColor}">
+			<xsl:if test="basket-add-link">
+				<a href="{basket-add-link}">
+	  			    <img src="images/basket.gif" border="0" alt="Add Link"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="basket-add-content">
+				<a href="{basket-add-content}">
+	  			    <img src="images/basket.gif" border="0" alt="Add Content"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="edit-uri">
+				<a href="{edit-uri}">
+	  			    <img src="images/edit.gif" border="0" alt="Edit"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="help-uri">
+				<a href="{help-uri}">
+	  			    <img src="images/help.gif" border="0" alt="Help"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="view-uri">
+				<a href="{view-uri}">
+	  			    <img src="images/view.gif" border="0" alt="View"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="fullscreen-uri and not(maximize-uri)">
+				<a href="{fullscreen-uri}">
+	  			    <img src="images/customize.gif" border="0" alt="Full Screen"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="maxpage-uri">
+				<a href="{maxpage-uri}">
+	  			    <img src="images/show.gif" border="0" alt="Max Page"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="minpage-uri">
+				<a href="{minpage-uri}">
+	  			    <img src="images/show.gif" border="0" alt="Min Page"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="maximize-uri">
+				<a href="{maximize-uri}">
+	  			    <img src="images/maximize.gif" border="0" alt="Maximize"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="minimize-uri">
+				<a href="{minimize-uri}">
+	  			    <img src="images/minimize.gif" border="0" alt="Minimize"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="remove-uri">
+				<a href="{remove-uri}">
+	  			    <img src="images/delete.gif" border="0" alt="Delete"/>
+	  			</a>
+			</xsl:if>
+		</td>
+      <td width="5" bgColor="{$bgColor}"/>
+      <td width="1"/>
+    </tr>
+    <tr>
+      <td width="5"/>
+      <td colSpan="2">
+        <xsl:apply-templates select="content"/>
+      </td>
+      <td width="5" colSpan="2"/>
+    </tr>
+  </tbody></table>
+</xsl:template>
+
+<xsl:template match="content">
+    <xsl:apply-templates/>
+</xsl:template>
+
+<!-- Copy all and apply templates -->
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()" />
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/borderless-window.xsl
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl?rev=265679&view=auto
==============================================================================
--- cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl (added)
+++ cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl Thu Sep  1 02:08:10 2005
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-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.
+-->
+<!-- SVN $Id$ -->
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- Process a Column  -->
+<xsl:template match="column-layout">
+
+  <xsl:variable name="border">
+    <xsl:choose>
+      <xsl:when test="@border">
+        <xsl:value-of select="@border" />
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>0</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <table border="{$border}" cellSpacing="0" cellpadding="0" width="100%">
+    <xsl:if test="@bgcolor">
+      <xsl:attribute name="bgcolor">
+        <xsl:value-of select="@bgcolor" /> 
+      </xsl:attribute>
+    </xsl:if>
+    <tr vAlign="top">
+      <xsl:for-each select="item">
+        <td>
+          <xsl:if test="@bgcolor">
+            <xsl:attribute name="bgcolor">
+              <xsl:value-of select="@bgcolor" /> 
+            </xsl:attribute>
+          </xsl:if>
+          <xsl:if test="@width">
+            <xsl:attribute name="width">
+              <xsl:value-of select="@width" /> 
+            </xsl:attribute>
+          </xsl:if>
+          <xsl:apply-templates />
+        </td>
+      </xsl:for-each>
+    </tr>
+  </table>
+</xsl:template>
+
+
+<!-- Copy all and apply templates -->
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()" />
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal-sample/trunk/samples/skins/basic/styles/column.xsl
------------------------------------------------------------------------------
    svn:keywords = Id