You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by le...@apache.org on 2002/07/14 18:48:30 UTC

cvs commit: jakarta-avalon-site/docs/apps/apps/db/skin breadcrumbs.js print.css site.css tigris.css

leosimons    2002/07/14 09:48:30

  Modified:    docs/apps/apps/xcommander index.html
               docs/apps/apps/ftpserver index.html
               docs/apps/apps/demo demo-helloworld.html
                        demo-soaphelloworld.html index.html
               docs/apps/apps/db index.html
  Added:       docs/apps/skin breadcrumbs.js print.css site.css tigris.css
               docs/apps/apps/xcommander/skin breadcrumbs.js print.css
                        site.css tigris.css
               docs/apps/apps/xcommander/images header.gif jakarta-logo.gif
               docs/apps/apps/ftpserver/skin breadcrumbs.js print.css
                        site.css tigris.css
               docs/apps/apps/ftpserver/images header.gif jakarta-logo.gif
               docs/apps/apps/demo/skin breadcrumbs.js print.css site.css
                        tigris.css
               docs/apps/apps/db/skin breadcrumbs.js print.css site.css
                        tigris.css
  Log:
  updated apps site for the applications I fixed the documentation for. Use the new tigris skin.
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-site/docs/apps/skin/breadcrumbs.js
  
  Index: breadcrumbs.js
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 2000-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"
      must not be used to endorse or promote products derived from this  software
      without  prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  */
  
  /**
   * This script, when included in a html file, builds a neat breadcrumb trail
   * based on its url. That is, if it doesn't contains bugs (I'm relatively
   * sure it does).
   *
   * Typical usage:
   * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
   *
   *@author     <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author)
   *@author     <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin)
   *@created    July 12, 2002
   *@version    1.0
   */
  
  /* ========================================================================
  	CONSTANTS
     ======================================================================== */
  
  /**
   * Two-dimensional array containing extra crumbs to place at the front of
   * the trail. Specify first the name of the crumb, then the URI that belongs
   * to it. You'll need to modify this for every domain or subdomain where
   * you use this script (you can leave it as an empty array if you wish)
   */
  var PREPREND_CRUMBS = new Array();
     if(!("apache"=="")){
       PREPREND_CRUMBS.push( new Array( "apache", "http://www.apache.org" ) );
     }
     if(!("jakarta"=="")){
       PREPREND_CRUMBS.push( new Array( "jakarta", "http://jakarta.apache.org" ) );
     }
     if(!("avalon"=="")){
       PREPREND_CRUMBS.push( new Array( "avalon", "http://jakarta.apache.org/avalon/" ) );
     }
  
  /**
   * String to include between crumbs:
   */
  var DISPLAY_SEPARATOR = " &gt; ";
  /**
   * String to include at the beginning of the trail
   */
  var DISPLAY_PREPREND = "";
  /**
   * String to include at the end of the trail
   */
  var DISPLAY_POSTPREND = ":";
  
  /**
   * CSS Class to use for a single crumb:
   */
  var CSS_CLASS_CRUMB = "breadcrumb";
  
  /**
   * CSS Class to use for the complete trail:
   */
  var CSS_CLASS_TRAIL = "breadcrumbTrail";
  
  /**
   * CSS Class to use for crumb separator:
   */
  var CSS_CLASS_SEPARATOR = "crumbSeparator";
  
  /**
   * Array of strings containing common file extensions. We use this to
   * determine what part of the url to ignore (if it contains one of the
   * string specified here, we ignore it).
   */
  var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
  
  /**
   * String that separates parts of the breadcrumb trail from each other.
   * When this is no longer a slash, I'm sure I'll be old and grey.
   */
  var PATH_SEPARATOR = "/";
  
  /* ========================================================================
  	UTILITY FUNCTIONS
     ======================================================================== */
  /**
   * Capitalize first letter of the provided string and return the modified
   * string.
   */
  function sentenceCase( string )
  {
  	var lower = string.toLowerCase();
  	return lower.substr(0,1).toUpperCase() + lower.substr(1);
  }
  
  /**
   * Returns an array containing the names of all the directories in the
   * current document URL
   */
  function getDirectoriesInURL()
  {
  	var trail = document.location.pathname.split( PATH_SEPARATOR );
  
  	// check whether last section is a file or a directory
  	var lastcrumb = trail[trail.length-1];
  	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
  	{
  		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
  		{
  			// it is, remove it and send results
  			return trail.slice( 1, trail.length-1 );
  		}
  	}
  
  	// it's not; send the trail unmodified
  	return trail.slice( 1, trail.length );
  }
  
  /* ========================================================================
  	BREADCRUMB FUNCTIONALITY
     ======================================================================== */
  /**
   * Return a two-dimensional array describing the breadcrumbs based on the
   * array of directories passed in.
   */
  function getBreadcrumbs( dirs )
  {
  	var prefix = "/";
  	var postfix = "/";
  
  	// the array we will return
  	var crumbs = new Array();
  
  	if( dirs != null )
  	{
  		for( var i = 0; i < dirs.length; i++ )
  		{
  			prefix += dirs[i] + postfix;
  			crumbs.push( new Array( dirs[i], prefix ) );
  		}
  	}
  
  	// preprend the PREPREND_CRUMBS
  	if(PREPREND_CRUMBS.length > 0 )
  	{
  		return PREPREND_CRUMBS.concat( crumbs );
  	}
  
  	return crumbs;
  }
  
  /**
   * Return a string containing an XHTML breadcrumb trail based on the
   * two-dimensional array passed in.
   */
  function getCrumbTrail( crumbs )
  {
  	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
  	xhtml += DISPLAY_PREPREND;
  
  	for( var i = 0; i < crumbs.length; i++ )
  	{
  		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
  		xhtml += sentenceCase( crumbs[i][0] ) + '</a>';
  		if( i != (crumbs.length-1) )
  		{
  			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
  		}
  	}
  
  	xhtml += DISPLAY_POSTPREND;
  	xhtml += '</span>';
  
  	return xhtml;
  }
  
  /* ========================================================================
  	PRINT BREADCRUMB TRAIL
     ======================================================================== */
  
  // check if we're local; if so, only print the PREPREND_CRUMBS
  if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
  {
  	document.write( getCrumbTrail( getBreadcrumbs() ) );
  }
  else
  {
  	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
  }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/skin/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  /* just to be sure */
  #navcolumn {
   width: 0px;
  }
  
  #leftcol {
   width: 0px;
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/skin/site.css
  
  Index: site.css
  ===================================================================
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  /* make the whole column grey */
  #navcolumn {
   width: 150px;
   background: none;
   border-top: none;
   border-right: none;
   border-bottom: none;
   }
  
  #leftcol {
   width: 150px;
   background: #eee;
   border-top: 1px solid #fff;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
  }
  
  /* breadcrumbs */
  .breadcrumbTrail
  {
  	padding-left: 5px;
  }
  .breadcrumb
  {
  	font-weight: bold;
  }
  .crumbSeparator
  {
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/skin/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 {
   background-color: #888;
   }
  .a td {
   background: #ddd;
   }
  .b td {
   background: #efefef;
   }
  table, th, td {
   border: none
   }
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs {
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  {
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus {
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  
  1.4       +13 -78    jakarta-avalon-site/docs/apps/apps/xcommander/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/xcommander/index.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- index.html	30 Jun 2002 10:05:45 -0000	1.3
  +++ index.html	14 Jul 2002 16:48:29 -0000	1.4
  @@ -1,67 +1,18 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications - XCommander</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications - XCommander</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications - XCommander</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="api/">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications - XCommander</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Overview</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Overview</h3></div>
  +      <p>
         	A rather elaborate demo: a one-to-many socket server which is compatible with the flash 5 xml plugin.
         </p>
  -      
  -<p>
  +      <p>
           XCommander is a server program which is used to listen for and execute
           java commands which are given in xml format.
           It is possible to use XCommander to give any command which can be given
           using standard code, using its lightweight xml over TCP/IP protocol.
         </p>
  -      
  -<p>Here is a sample command:-</p>
  -
  -<div class="code">
  +      <p>Here is a sample command:-</p>
   <pre>
   &lt;?xml version="1.0"?&gt;
   
  @@ -128,14 +79,11 @@
       &lt;/method&gt;
   &lt;/command&gt;
   </pre>
  -</div>
  -      
  -<p>
  +      <p>
           Internally, XCommander uses a delegating SAX handler together with
           the Xerces xml parser (which comes with Avalon) and simple RMI to
           convert the xml into Java code.</p>
  -      
  -<p>
  +      <p>
           At the moment, XCommander does not provide security. It simply uses
           the current classloader for the block to find classes and execute methods
           on them. This means anyone with knowledge of Avalon can wreck the server!
  @@ -143,24 +91,11 @@
           to the server, and the model Avalon uses for Roles will be implemented.
         </p>
       
  -</div>
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:mail@leosimons.com">Leo Simons</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2000-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;Leo Simons</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/skin/breadcrumbs.js
  
  Index: breadcrumbs.js
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 2000-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"
      must not be used to endorse or promote products derived from this  software
      without  prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  */
  
  /**
   * This script, when included in a html file, builds a neat breadcrumb trail
   * based on its url. That is, if it doesn't contains bugs (I'm relatively
   * sure it does).
   *
   * Typical usage:
   * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
   *
   *@author     <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author)
   *@author     <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin)
   *@created    July 12, 2002
   *@version    1.0
   */
  
  /* ========================================================================
  	CONSTANTS
     ======================================================================== */
  
  /**
   * Two-dimensional array containing extra crumbs to place at the front of
   * the trail. Specify first the name of the crumb, then the URI that belongs
   * to it. You'll need to modify this for every domain or subdomain where
   * you use this script (you can leave it as an empty array if you wish)
   */
  var PREPREND_CRUMBS = new Array();
     if(!("apache"=="")){
       PREPREND_CRUMBS.push( new Array( "apache", "http://www.apache.org" ) );
     }
     if(!("jakarta"=="")){
       PREPREND_CRUMBS.push( new Array( "jakarta", "http://jakarta.apache.org" ) );
     }
     if(!("avalon"=="")){
       PREPREND_CRUMBS.push( new Array( "avalon", "http://jakarta.apache.org/avalon/" ) );
     }
  
  /**
   * String to include between crumbs:
   */
  var DISPLAY_SEPARATOR = " &gt; ";
  /**
   * String to include at the beginning of the trail
   */
  var DISPLAY_PREPREND = "";
  /**
   * String to include at the end of the trail
   */
  var DISPLAY_POSTPREND = ":";
  
  /**
   * CSS Class to use for a single crumb:
   */
  var CSS_CLASS_CRUMB = "breadcrumb";
  
  /**
   * CSS Class to use for the complete trail:
   */
  var CSS_CLASS_TRAIL = "breadcrumbTrail";
  
  /**
   * CSS Class to use for crumb separator:
   */
  var CSS_CLASS_SEPARATOR = "crumbSeparator";
  
  /**
   * Array of strings containing common file extensions. We use this to
   * determine what part of the url to ignore (if it contains one of the
   * string specified here, we ignore it).
   */
  var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
  
  /**
   * String that separates parts of the breadcrumb trail from each other.
   * When this is no longer a slash, I'm sure I'll be old and grey.
   */
  var PATH_SEPARATOR = "/";
  
  /* ========================================================================
  	UTILITY FUNCTIONS
     ======================================================================== */
  /**
   * Capitalize first letter of the provided string and return the modified
   * string.
   */
  function sentenceCase( string )
  {
  	var lower = string.toLowerCase();
  	return lower.substr(0,1).toUpperCase() + lower.substr(1);
  }
  
  /**
   * Returns an array containing the names of all the directories in the
   * current document URL
   */
  function getDirectoriesInURL()
  {
  	var trail = document.location.pathname.split( PATH_SEPARATOR );
  
  	// check whether last section is a file or a directory
  	var lastcrumb = trail[trail.length-1];
  	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
  	{
  		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
  		{
  			// it is, remove it and send results
  			return trail.slice( 1, trail.length-1 );
  		}
  	}
  
  	// it's not; send the trail unmodified
  	return trail.slice( 1, trail.length );
  }
  
  /* ========================================================================
  	BREADCRUMB FUNCTIONALITY
     ======================================================================== */
  /**
   * Return a two-dimensional array describing the breadcrumbs based on the
   * array of directories passed in.
   */
  function getBreadcrumbs( dirs )
  {
  	var prefix = "/";
  	var postfix = "/";
  
  	// the array we will return
  	var crumbs = new Array();
  
  	if( dirs != null )
  	{
  		for( var i = 0; i < dirs.length; i++ )
  		{
  			prefix += dirs[i] + postfix;
  			crumbs.push( new Array( dirs[i], prefix ) );
  		}
  	}
  
  	// preprend the PREPREND_CRUMBS
  	if(PREPREND_CRUMBS.length > 0 )
  	{
  		return PREPREND_CRUMBS.concat( crumbs );
  	}
  
  	return crumbs;
  }
  
  /**
   * Return a string containing an XHTML breadcrumb trail based on the
   * two-dimensional array passed in.
   */
  function getCrumbTrail( crumbs )
  {
  	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
  	xhtml += DISPLAY_PREPREND;
  
  	for( var i = 0; i < crumbs.length; i++ )
  	{
  		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
  		xhtml += sentenceCase( crumbs[i][0] ) + '</a>';
  		if( i != (crumbs.length-1) )
  		{
  			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
  		}
  	}
  
  	xhtml += DISPLAY_POSTPREND;
  	xhtml += '</span>';
  
  	return xhtml;
  }
  
  /* ========================================================================
  	PRINT BREADCRUMB TRAIL
     ======================================================================== */
  
  // check if we're local; if so, only print the PREPREND_CRUMBS
  if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
  {
  	document.write( getCrumbTrail( getBreadcrumbs() ) );
  }
  else
  {
  	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
  }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/skin/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  /* just to be sure */
  #navcolumn {
   width: 0px;
  }
  
  #leftcol {
   width: 0px;
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/skin/site.css
  
  Index: site.css
  ===================================================================
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  /* make the whole column grey */
  #navcolumn {
   width: 150px;
   background: none;
   border-top: none;
   border-right: none;
   border-bottom: none;
   }
  
  #leftcol {
   width: 150px;
   background: #eee;
   border-top: 1px solid #fff;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
  }
  
  /* breadcrumbs */
  .breadcrumbTrail
  {
  	padding-left: 5px;
  }
  .breadcrumb
  {
  	font-weight: bold;
  }
  .crumbSeparator
  {
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/skin/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 {
   background-color: #888;
   }
  .a td {
   background: #ddd;
   }
  .b td {
   background: #efefef;
   }
  table, th, td {
   border: none
   }
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs {
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  {
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus {
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/images/header.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/xcommander/images/jakarta-logo.gif
  
  	<<Binary file>>
  
  
  1.4       +11 -85    jakarta-avalon-site/docs/apps/apps/ftpserver/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/ftpserver/index.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- index.html	30 Jun 2002 10:05:45 -0000	1.3
  +++ index.html	14 Jul 2002 16:48:29 -0000	1.4
  @@ -1,102 +1,28 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications - FtpServer</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -<div id="submenu">
  -<h4>Implementations</h4>
  -<ul>
  -<li>
  -<a href="">Core FTP Server</a>
  -</li>
  -<li>
  -<a href="">Settings Server</a>
  -</li>
  -<li>
  -<a href="">Alternative Settings Server</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications - FtpServer</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications - FtpServer</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="http://hack.hack">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div><div><strong>Implementations</strong><div><a href="">Core FTP Server</a></div><div><a href="">Settings Server</a></div><div><a href="">Alternative Settings Server</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications - FtpServer</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Overview</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Overview</h3></div>
  +      <p>
         	FtpServer is a server component for Pheonix that allows remote FTP client to
         	attach and download files.  The client software can be any type of FTP client
         	written in any language.  The criteria for eligibility is RFC compliance.
         </p>
  -      
  -<p>
  +      <p>
           The server uses several components.  Some of the components have multiple 
           implementations.  For example user management has implementations that will use
           LDAP, JDBC and Cornerstone's Store facility for storage.
         </p>
  -      
  -<p>
  +      <p>
           The server has a management console (GUI) that can connect over RMI to the
           server.
         </p>
       
  -</div>
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:TODO@TODO.net">TODO</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2001-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;TODO</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/skin/breadcrumbs.js
  
  Index: breadcrumbs.js
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 2001-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"
      must not be used to endorse or promote products derived from this  software
      without  prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  */
  
  /**
   * This script, when included in a html file, builds a neat breadcrumb trail
   * based on its url. That is, if it doesn't contains bugs (I'm relatively
   * sure it does).
   *
   * Typical usage:
   * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
   *
   *@author     <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author)
   *@author     <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin)
   *@created    July 12, 2002
   *@version    1.0
   */
  
  /* ========================================================================
  	CONSTANTS
     ======================================================================== */
  
  /**
   * Two-dimensional array containing extra crumbs to place at the front of
   * the trail. Specify first the name of the crumb, then the URI that belongs
   * to it. You'll need to modify this for every domain or subdomain where
   * you use this script (you can leave it as an empty array if you wish)
   */
  var PREPREND_CRUMBS = new Array();
     if(!("apache"=="")){
       PREPREND_CRUMBS.push( new Array( "apache", "http://www.apache.org" ) );
     }
     if(!("jakarta"=="")){
       PREPREND_CRUMBS.push( new Array( "jakarta", "http://jakarta.apache.org" ) );
     }
     if(!("avalon"=="")){
       PREPREND_CRUMBS.push( new Array( "avalon", "http://jakarta.apache.org/avalon/" ) );
     }
  
  /**
   * String to include between crumbs:
   */
  var DISPLAY_SEPARATOR = " &gt; ";
  /**
   * String to include at the beginning of the trail
   */
  var DISPLAY_PREPREND = "";
  /**
   * String to include at the end of the trail
   */
  var DISPLAY_POSTPREND = ":";
  
  /**
   * CSS Class to use for a single crumb:
   */
  var CSS_CLASS_CRUMB = "breadcrumb";
  
  /**
   * CSS Class to use for the complete trail:
   */
  var CSS_CLASS_TRAIL = "breadcrumbTrail";
  
  /**
   * CSS Class to use for crumb separator:
   */
  var CSS_CLASS_SEPARATOR = "crumbSeparator";
  
  /**
   * Array of strings containing common file extensions. We use this to
   * determine what part of the url to ignore (if it contains one of the
   * string specified here, we ignore it).
   */
  var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
  
  /**
   * String that separates parts of the breadcrumb trail from each other.
   * When this is no longer a slash, I'm sure I'll be old and grey.
   */
  var PATH_SEPARATOR = "/";
  
  /* ========================================================================
  	UTILITY FUNCTIONS
     ======================================================================== */
  /**
   * Capitalize first letter of the provided string and return the modified
   * string.
   */
  function sentenceCase( string )
  {
  	var lower = string.toLowerCase();
  	return lower.substr(0,1).toUpperCase() + lower.substr(1);
  }
  
  /**
   * Returns an array containing the names of all the directories in the
   * current document URL
   */
  function getDirectoriesInURL()
  {
  	var trail = document.location.pathname.split( PATH_SEPARATOR );
  
  	// check whether last section is a file or a directory
  	var lastcrumb = trail[trail.length-1];
  	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
  	{
  		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
  		{
  			// it is, remove it and send results
  			return trail.slice( 1, trail.length-1 );
  		}
  	}
  
  	// it's not; send the trail unmodified
  	return trail.slice( 1, trail.length );
  }
  
  /* ========================================================================
  	BREADCRUMB FUNCTIONALITY
     ======================================================================== */
  /**
   * Return a two-dimensional array describing the breadcrumbs based on the
   * array of directories passed in.
   */
  function getBreadcrumbs( dirs )
  {
  	var prefix = "/";
  	var postfix = "/";
  
  	// the array we will return
  	var crumbs = new Array();
  
  	if( dirs != null )
  	{
  		for( var i = 0; i < dirs.length; i++ )
  		{
  			prefix += dirs[i] + postfix;
  			crumbs.push( new Array( dirs[i], prefix ) );
  		}
  	}
  
  	// preprend the PREPREND_CRUMBS
  	if(PREPREND_CRUMBS.length > 0 )
  	{
  		return PREPREND_CRUMBS.concat( crumbs );
  	}
  
  	return crumbs;
  }
  
  /**
   * Return a string containing an XHTML breadcrumb trail based on the
   * two-dimensional array passed in.
   */
  function getCrumbTrail( crumbs )
  {
  	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
  	xhtml += DISPLAY_PREPREND;
  
  	for( var i = 0; i < crumbs.length; i++ )
  	{
  		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
  		xhtml += sentenceCase( crumbs[i][0] ) + '</a>';
  		if( i != (crumbs.length-1) )
  		{
  			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
  		}
  	}
  
  	xhtml += DISPLAY_POSTPREND;
  	xhtml += '</span>';
  
  	return xhtml;
  }
  
  /* ========================================================================
  	PRINT BREADCRUMB TRAIL
     ======================================================================== */
  
  // check if we're local; if so, only print the PREPREND_CRUMBS
  if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
  {
  	document.write( getCrumbTrail( getBreadcrumbs() ) );
  }
  else
  {
  	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
  }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/skin/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  /* just to be sure */
  #navcolumn {
   width: 0px;
  }
  
  #leftcol {
   width: 0px;
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/skin/site.css
  
  Index: site.css
  ===================================================================
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  /* make the whole column grey */
  #navcolumn {
   width: 150px;
   background: none;
   border-top: none;
   border-right: none;
   border-bottom: none;
   }
  
  #leftcol {
   width: 150px;
   background: #eee;
   border-top: 1px solid #fff;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
  }
  
  /* breadcrumbs */
  .breadcrumbTrail
  {
  	padding-left: 5px;
  }
  .breadcrumb
  {
  	font-weight: bold;
  }
  .crumbSeparator
  {
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/skin/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 {
   background-color: #888;
   }
  .a td {
   background: #ddd;
   }
  .b td {
   background: #efefef;
   }
  table, th, td {
   border: none
   }
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs {
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  {
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus {
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/images/header.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/ftpserver/images/jakarta-logo.gif
  
  	<<Binary file>>
  
  
  1.4       +43 -178   jakarta-avalon-site/docs/apps/apps/demo/demo-helloworld.html
  
  Index: demo-helloworld.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/demo/demo-helloworld.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- demo-helloworld.html	30 Jun 2002 10:05:45 -0000	1.3
  +++ demo-helloworld.html	14 Jul 2002 16:48:29 -0000	1.4
  @@ -1,160 +1,61 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications / Demo</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -<div id="submenu">
  -<h4>Demo Components</h4>
  -<ul>
  -<li>
  -<a href="demo-helloworld.html">Hello World</a>
  -</li>
  -<li>
  -<a href="demo-soaphelloworld.html">SOAP Hello World</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications / Demo</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications / Demo</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="http://hack.hack">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div><div><strong>Demo Components</strong><div><a href="demo-helloworld.html">Hello World</a></div><div><a href="demo-soaphelloworld.html">SOAP Hello World</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications / Demo</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Introduction</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Introduction</h3></div>
  +      <p>
           The 'Hello World' demo server component is a socket listener app that replies 'Hello World' to client applications that open the port.  The reply is in HTML form so can be viewed by a Browser.  The HTTP headers are missing, but it still works.  Telnet is another client that can view the message.
         </p>
       
  -</div>
  -    
  -<h2>Architecture</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Architecture</h3></div>
  +      <p>
           The following shows how the HelloWorld demo block depends on ConnectionManager from cornerstone.  These 
           two blocks packaged as a server application (.SAR file) are loaded and launched by Phoenix, itself sitting on top of Avalon's framework.
         </p>
   
       
  -</div>
  -    
  -<h2>Relevant source modules</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Relevant source modules</h3></div>
  +      <p>
           The HelloWorld demo compiles as part of the build process for cornerstone.  The important modules that contribute to the demo are listed here.  All are within the src directory
         </p>
  -      
  -<blockquote>
  -<ol>
  -        
  -<li>
  -          
  -<b>org.apache.avalon.apps.demos.helloworldserver package</b> This package contains the Java source for 'Hello World' and the xinfo block descriptor.
  +      <blockquote><ol>
  +        <li>
  +          <b>org.apache.avalon.apps.demos.helloworldserver package</b> This package contains the Java source for 'Hello World' and the xinfo block descriptor.
           </li>
  -        
  -<li>
  -          
  -<b>manifest/helloworld-demo.mf</b> This contains a manifest for use in the bar file that details what's inside the block archive 'demo-helloworld.bar'
  +        <li>
  +          <b>manifest/helloworld-demo.mf</b> This contains a manifest for use in the bar file that details what's inside the block archive 'demo-helloworld.bar'
           </li>
  -        
  -<li>
  -          
  -<b>conf\avalon-demo-assembly.xml</b> This contains the assembly configuration for the resulting server archive (sar) file.
  +        <li>
  +          <b>conf\avalon-demo-assembly.xml</b> This contains the assembly configuration for the resulting server archive (sar) file.
           </li>
  -      
  -</ol>
  -</blockquote>
  +      </ol></blockquote>
       
  -</div>
  -    
  -<h2>Java Source</h2>
  -<div class="section">
  -      
  -<h3>HelloWorldHandler.java</h3>
  -<div class="section">
  -        
  -<p>
  +    <div class="h3"><h3>Java Source</h3></div>
  +      <div class="h4"><h4>HelloWorldHandler.java</h4></div>
  +        <p>
             Instantiated and dispatched by the impl once per socket request that comes in.
           </p>
         
  -</div>
  -      
  -<h3>HelloWorldServer.java</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>HelloWorldServer.java</h4></div>
  +        <p>
             The interface that's the contract for the Server block.  As it happens HelloWorld is not that resusable.  If it were "ObjectDataBase.java" many server apps could use it through this interface.  The interface could set more useful things that the greeting ("Hello", "Bonjour" etc.)
           </p>
         
  -</div>
  -      
  -<h3>HelloWorldServerImpl.java</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>HelloWorldServerImpl.java</h4></div>
  +        <p>
             This like all impls implements an interface.  Which interface is rather obvious in this case. It's a standard pattern that uses other blocks (SocketManager and ConnectionManager) to do the hard work of listening on a port, pooling threads and connections and organizing socket invokations in a queue and multi app friendly way.
           </p>
         
  -</div>
  -      
  -<h3>HelloWorldServerImpl.xinfo</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>HelloWorldServerImpl.xinfo</h4></div>
  +        <p>
             This is obviously associated with the impl.  It expresses that impls needs in respect of other blocks in a way that Avalon can readily use for rapid deployment.
           </p>
         
  -</div>
  -    
  -</div>
       
  -<h2>helloworld-demo.mf</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>helloworld-demo.mf</h3></div>
  +      <p>
           The file is renamed as part of the build process to MANIFEST.MF and placed in the ususal directory (META-INF).  It's used to allow Avalon to quickly index the contents of blocks.
         </p>
  -
  -<div class="code">
   <pre>
   Manifest-Version: 1.0
   Created-By: Apache Avalon Project
  @@ -162,18 +63,11 @@
   Name: org/apache/apps/demos/helloworldserver/HelloWorldServerImpl.class
   Avalon-Block: true
   </pre>
  -</div>
  -    
  -</div>
       
  -<h2>avalon-demo-assembly xml</h2>
  -<div class="section">
  -    
  -<p>
  +    <div class="h3"><h3>avalon-demo-assembly xml</h3></div>
  +    <p>
         The file is renamed as part of the build process to assembly.xml, and only has a separate name here to aid development.  The bulk of the contents of the file pertain to other blocks including ones that HelloWorld is dependant upon.  Here's the section that's for HelloWorld
       </p>
  -
  -<div class="code">
   <pre>
   (text snipped)
       &lt;block class="org.apache.avalon.apps.demos.helloworldserver.HelloWorldServerImpl"
  @@ -184,22 +78,14 @@
       &lt;/block&gt;
   (text snipped)
   </pre>
  -</div>
  -      
  -<p>
  +      <p>
           Of the block element, listed attributes are the instatiatable class implementing the HelloWorld interface (not mentioned itself in this assembly xml), the display name of the block, and two services that HelloWorld needs.
         </p>
       
  -</div>
  -    
  -<h2>avalon-demo-config xml</h2>
  -<div class="section">  
  -    
  -<p>
  +    <div class="h3"><h3>avalon-demo-config xml</h3></div>  
  +    <p>
         The file is renamed as part of the build process to config.xml, and only has a separate name here to aid development.  Again here is the pertinent section:
       </p>      
  -
  -<div class="code">
   <pre> 
   (text snipped)
           &lt;helloworldserver&gt;
  @@ -211,47 +97,26 @@
           &lt;/helloworldserver&gt;
   (text snipped)
   </pre>
  -</div>
  -      
  -<p>
  +      <p>
           The configuration element named &lt;helloworldserver&gt; is used as it's name suggests and is passed the blocks being used for the app. Elements port and bind are used by the socket manager.
         </p>
  -      
  -<p>
  +      <p>
           If you had configuration for an app, you'd specify it here in with eelement and attribute names that are invented for the application.
         </p>
  -    
  -</div>     
  -    
  -<h2>Starting your own server project</h2>
  -<div class="section">
  -      
  -<p>
  +         
  +    <div class="h3"><h3>Starting your own server project</h3></div>
  +      <p>
           Familiarity with Ant and it's build script would be a good place to start.  After learning how Cornerstone compiles and jars the demos would be a good second step.  Thirdly, as I've done before, take the demos out of Cornerstone, delete classes and xml not relating to the HelloWorld server and rename from HelloWorld to whatever suits you.  I import into the lib dir avalon-cornerstone-compilation-0.x.jar to allow things that use it to compile.  I also import cornerstone-0.x.bar to the same place to allow it's inclusion in the sar file being made.  The build xml file even contains a target that allow you to install the freshly made sar file into a nearby Avalon installation - "build install", though for development you'll initially only be running "build" and "build clean".
         </p>
  -      
  -<p>
  +      <p>
           As a secondary process, it would be handy to learn xdocs (the technology that allows the creation of these book pages).  You're copying cornerstone to be (after some selective trimming) the foundation stone for new server app, so you might as well take adavantage of all it's templates..  "build xdocs" and look in build/docs.  All the Apache java based projects do this and then copy that to the website.  The project I'm involved with <a href="http://www.jesktop.org">Jesktop</a> does too.
         </p>
       
  -</div>
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:Paul_Hammant@yahoo.com">Paul Hammant</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2000-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;Paul Hammant</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.4       +46 -183   jakarta-avalon-site/docs/apps/apps/demo/demo-soaphelloworld.html
  
  Index: demo-soaphelloworld.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/demo/demo-soaphelloworld.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- demo-soaphelloworld.html	30 Jun 2002 10:05:45 -0000	1.3
  +++ demo-soaphelloworld.html	14 Jul 2002 16:48:29 -0000	1.4
  @@ -1,168 +1,65 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications / Demo</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -<div id="submenu">
  -<h4>Demo Components</h4>
  -<ul>
  -<li>
  -<a href="demo-helloworld.html">Hello World</a>
  -</li>
  -<li>
  -<a href="demo-soaphelloworld.html">SOAP Hello World</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications / Demo</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications / Demo</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="http://hack.hack">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div><div><strong>Demo Components</strong><div><a href="demo-helloworld.html">Hello World</a></div><div><a href="demo-soaphelloworld.html">SOAP Hello World</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications / Demo</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Introduction</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Introduction</h3></div>
  +      <p>
           The 'Hello World' demo server component is a socket listener app that replies 'Hello World' to client applications that open the port.  The reply is in HTML form so can be viewed by a Browser.  The HTTP headers are missing, but it still works.  Telnet is another client that can view the message.
         </p>
       
  -</div>
  -    
  -<h2>Architecture</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Architecture</h3></div>
  +      <p>
           The following shows the HelloWorld demo block depending on ConnectionManager from cornerstone.  It also shows the Soapification service (Glue STD implementation) and the SOAPHelloWorld block depending on it and the HelloWorld block.  All these blocks are placed together on in one sar file as a server application.
         </p>
   
       
  -</div>
  -    
  -<h2>Relevant source modules</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Relevant source modules</h3></div>
  +      <p>
           The SOAPHelloWorld demo compiles as part of the build process for cornerstone, but only if Glue's jars have been taken from the zip file downloaded from <a href="http://www.themindelectric.com">here</a> and placed in the lib directory of cornerstone. That's commercial software and we are not distributing it, nor granting you rights to use it.  Please refer to the terms and conditions of use at The Mind Electric.  The important modules that contribute to the demo are listed here.  All are within the src directory
         </p>
  -      
  -<blockquote>
  -<ol>
  -        
  -<li>
  -          
  -<b>org.apache.avalon.apps.demos.soaphelloworldserver package</b> This package contains the Java source for 'SOAP Hello World' and the xinfo block descriptor.
  +      <blockquote><ol>
  +        <li>
  +          <b>org.apache.avalon.apps.demos.soaphelloworldserver package</b> This package contains the Java source for 'SOAP Hello World' and the xinfo block descriptor.
           </li>
  -        
  -<li>
  -          
  -<b>manifest/soaphelloworld-demo.mf</b> This contains a manifest for use in the bar file that details what's inside the block archive 'demo-soaphelloworld.bar'
  +        <li>
  +          <b>manifest/soaphelloworld-demo.mf</b> This contains a manifest for use in the bar file that details what's inside the block archive 'demo-soaphelloworld.bar'
           </li>
  -        
  -<li>
  -          
  -<b>conf\avalon-soapdemo-assembly.xml</b> This contains the assembly configuration for the resulting server archive (sar) file.
  +        <li>
  +          <b>conf\avalon-soapdemo-assembly.xml</b> This contains the assembly configuration for the resulting server archive (sar) file.
           </li>
  -      
  -</ol>
  -</blockquote>
  +      </ol></blockquote>
       
  -</div>
  -    
  -<h2>Java Source</h2>
  -<div class="section">
  -      
  -<h3>SOAPHelloWorldHandler.java</h3>
  -<div class="section">
  -        
  -<p>
  +    <div class="h3"><h3>Java Source</h3></div>
  +      <div class="h4"><h4>SOAPHelloWorldHandler.java</h4></div>
  +        <p>
             Instantiated and dispatched by the impl once per socket request that comes in.
           </p>
         
  -</div>
  -      
  -<h3>SOAPHelloWorldServer.java</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>SOAPHelloWorldServer.java</h4></div>
  +        <p>
             The interface that's the contract for the Server block.  This service interface is empty, there are no methods, but it is mandatory for Phoenix apps.
           </p>
         
  -</div>
  -      
  -<h3>SOAPHelloWorldServerImpl.java</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>SOAPHelloWorldServerImpl.java</h4></div>
  +        <p>
             This, like all impls, implements a service interface.  Quite simply it gets its dependancies, SOAP (Glue) and HelloWorld server, ties them toegether and then launches publishes the HelloWorld interface (via Glue).
           </p>
         
  -</div>
  -      
  -<h3>SOAPHelloWorldServerImpl.xinfo</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>SOAPHelloWorldServerImpl.xinfo</h4></div>
  +        <p>
             This is obviously associated with the impl.  It expresses that impls needs in respect of other blocks in a way that Avalon can readily use for rapid deployment.
           </p>
         
  -</div>
  -      
  -<h3>SOAPHelloWorldServerTester.java</h3>
  -<div class="section">
  -        
  -<p>
  +      <div class="h4"><h4>SOAPHelloWorldServerTester.java</h4></div>
  +        <p>
             This class illustrates the SOAP served WDSL page in use.  It uses Glue again to bind to the service and invoke the setGreeting(String) method passing in "Howdie Partner" as the greeting.  We're using Glue here, but any SOAP compliant language could be used invoke methods in the published WSDL definition.
           </p>
  -      
  -</div>      
  -    
  -</div>
  +            
       
  -<h2>soaphelloworld-demo.mf</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>soaphelloworld-demo.mf</h3></div>
  +      <p>
           The file is renamed as part of the build process to MANIFEST.MF and placed in the ususal directory (META-INF).  It's used to allow Avalon to quickly index the contents of blocks.
         </p>
  -
  -<div class="code">
   <pre>
   Manifest-Version: 1.0
   Created-By: Apache Avalon Project
  @@ -170,18 +67,11 @@
   Name: org/apache/apps/demos/soaphelloworldserver/SOAPHelloWorldServerImpl.class
   Avalon-Block: true
   </pre>
  -</div>
       
  -</div>
  -    
  -<h2>avalon-soapdemo-assembly xml</h2>
  -<div class="section">
  -    
  -<p>
  +    <div class="h3"><h3>avalon-soapdemo-assembly xml</h3></div>
  +    <p>
         The file is renamed as part of the build process to assembly.xml, and only has a separate name here to aid development.  The bulk of the contents of the file pertain to other blocks including ones that SOAPHelloWorld is dependant upon.  Here's the section that's for SOAPHelloWorld.
       </p>
  -
  -<div class="code">
   <pre>
   (text snipped)
     &lt;block class="org.apache.avalon.apps.demos.helloworldserver.HelloWorldServerImpl" 
  @@ -204,30 +94,20 @@
     &lt;/block&gt;
   (text snipped)
   </pre>
  -</div>
  -      
  -<p>
  +      <p>
           The first segment shows HelloWorldServerImpl being preseneted as a block that depends on SocketManager and ConnectionManager as blocks.
         </p>
  -      
  -<p>
  +      <p>
           The second segment shows Glue being preseneted as a block that depends on nothing.  Incidentally, this is imperfect, it would be nice if Glue could use a pluggable webserver rather than the inbuilt one.
         </p>
  -      
  -<p>
  +      <p>
           The third segment shows SOAPHelloWorldServerImpl being preseneted as a block that depends on HelloWorldServer service (implemented by HelloWorldServerImpl) and SOAPification service (implemented by Glue)
         </p>      
       
  -</div>
  -    
  -<h2>avalon-soapdemo-config xml</h2>
  -<div class="section">    
  -    
  -<p>
  +    <div class="h3"><h3>avalon-soapdemo-config xml</h3></div>    
  +    <p>
         The file is renamed as part of the build process to config.xml, and only has a separate name here to aid development.  Again here are the pertinent sections:
       </p>    
  -
  -<div class="code">
   <pre> 
   (text snipped)
     &lt;helloworldserver&gt;
  @@ -247,38 +127,21 @@
     &lt;/soaphelloworldserver&gt;  
   (text snipped)
   </pre>
  -</div>
  -      
  -<p>
  +      <p>
           The first segment is the parameter for HelloWorldServer (presenting a HTTP-like service through port 7999).
         </p>
  -      
  -<p>      
  +      <p>      
           The second segment named &lt;glue-soapification&gt; is for Glue itself, it means that all WSDL pages present will be done so over port 7998.  Client code accessing the SOAP services will do so through this port.
         </p>
  -      
  -<p>
  +      <p>
           The third segment is the parameters for SOAPHelloWorldServer.  It's only configurable aspect is the is the name of the page to present in WSDL form.  In this case it would be "http://localhost:7998/helloworld.wsdl".
         </p>
  -    
  -</div>    
  +        
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:Paul_Hammant@yahoo.com">Paul Hammant</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2000-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;Paul Hammant</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.4       +9 -78     jakarta-avalon-site/docs/apps/apps/demo/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/demo/index.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- index.html	30 Jun 2002 10:05:45 -0000	1.3
  +++ index.html	14 Jul 2002 16:48:29 -0000	1.4
  @@ -1,86 +1,17 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications / Demo</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -<div id="submenu">
  -<h4>Demo Components</h4>
  -<ul>
  -<li>
  -<a href="demo-helloworld.html">Hello World</a>
  -</li>
  -<li>
  -<a href="demo-soaphelloworld.html">SOAP Hello World</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications / Demo</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications / Demo</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="http://hack.hack">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div><div><strong>Demo Components</strong><div><a href="demo-helloworld.html">Hello World</a></div><div><a href="demo-soaphelloworld.html">SOAP Hello World</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications / Demo</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Introduction</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Introduction</h3></div>
  +      <p>
           Demos are a few very simple blocks for phoenix. 
         </p>
       
  -</div>
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:avalon-dev@jakarta.apache.org">Avalon Documentation Team</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2000-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;Avalon Documentation Team</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/demo/skin/breadcrumbs.js
  
  Index: breadcrumbs.js
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 2000-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"
      must not be used to endorse or promote products derived from this  software
      without  prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  */
  
  /**
   * This script, when included in a html file, builds a neat breadcrumb trail
   * based on its url. That is, if it doesn't contains bugs (I'm relatively
   * sure it does).
   *
   * Typical usage:
   * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
   *
   *@author     <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author)
   *@author     <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin)
   *@created    July 12, 2002
   *@version    1.0
   */
  
  /* ========================================================================
  	CONSTANTS
     ======================================================================== */
  
  /**
   * Two-dimensional array containing extra crumbs to place at the front of
   * the trail. Specify first the name of the crumb, then the URI that belongs
   * to it. You'll need to modify this for every domain or subdomain where
   * you use this script (you can leave it as an empty array if you wish)
   */
  var PREPREND_CRUMBS = new Array();
     if(!("apache"=="")){
       PREPREND_CRUMBS.push( new Array( "apache", "http://www.apache.org" ) );
     }
     if(!("jakarta"=="")){
       PREPREND_CRUMBS.push( new Array( "jakarta", "http://jakarta.apache.org" ) );
     }
     if(!("avalon"=="")){
       PREPREND_CRUMBS.push( new Array( "avalon", "http://jakarta.apache.org/avalon/" ) );
     }
  
  /**
   * String to include between crumbs:
   */
  var DISPLAY_SEPARATOR = " &gt; ";
  /**
   * String to include at the beginning of the trail
   */
  var DISPLAY_PREPREND = "";
  /**
   * String to include at the end of the trail
   */
  var DISPLAY_POSTPREND = ":";
  
  /**
   * CSS Class to use for a single crumb:
   */
  var CSS_CLASS_CRUMB = "breadcrumb";
  
  /**
   * CSS Class to use for the complete trail:
   */
  var CSS_CLASS_TRAIL = "breadcrumbTrail";
  
  /**
   * CSS Class to use for crumb separator:
   */
  var CSS_CLASS_SEPARATOR = "crumbSeparator";
  
  /**
   * Array of strings containing common file extensions. We use this to
   * determine what part of the url to ignore (if it contains one of the
   * string specified here, we ignore it).
   */
  var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
  
  /**
   * String that separates parts of the breadcrumb trail from each other.
   * When this is no longer a slash, I'm sure I'll be old and grey.
   */
  var PATH_SEPARATOR = "/";
  
  /* ========================================================================
  	UTILITY FUNCTIONS
     ======================================================================== */
  /**
   * Capitalize first letter of the provided string and return the modified
   * string.
   */
  function sentenceCase( string )
  {
  	var lower = string.toLowerCase();
  	return lower.substr(0,1).toUpperCase() + lower.substr(1);
  }
  
  /**
   * Returns an array containing the names of all the directories in the
   * current document URL
   */
  function getDirectoriesInURL()
  {
  	var trail = document.location.pathname.split( PATH_SEPARATOR );
  
  	// check whether last section is a file or a directory
  	var lastcrumb = trail[trail.length-1];
  	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
  	{
  		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
  		{
  			// it is, remove it and send results
  			return trail.slice( 1, trail.length-1 );
  		}
  	}
  
  	// it's not; send the trail unmodified
  	return trail.slice( 1, trail.length );
  }
  
  /* ========================================================================
  	BREADCRUMB FUNCTIONALITY
     ======================================================================== */
  /**
   * Return a two-dimensional array describing the breadcrumbs based on the
   * array of directories passed in.
   */
  function getBreadcrumbs( dirs )
  {
  	var prefix = "/";
  	var postfix = "/";
  
  	// the array we will return
  	var crumbs = new Array();
  
  	if( dirs != null )
  	{
  		for( var i = 0; i < dirs.length; i++ )
  		{
  			prefix += dirs[i] + postfix;
  			crumbs.push( new Array( dirs[i], prefix ) );
  		}
  	}
  
  	// preprend the PREPREND_CRUMBS
  	if(PREPREND_CRUMBS.length > 0 )
  	{
  		return PREPREND_CRUMBS.concat( crumbs );
  	}
  
  	return crumbs;
  }
  
  /**
   * Return a string containing an XHTML breadcrumb trail based on the
   * two-dimensional array passed in.
   */
  function getCrumbTrail( crumbs )
  {
  	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
  	xhtml += DISPLAY_PREPREND;
  
  	for( var i = 0; i < crumbs.length; i++ )
  	{
  		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
  		xhtml += sentenceCase( crumbs[i][0] ) + '</a>';
  		if( i != (crumbs.length-1) )
  		{
  			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
  		}
  	}
  
  	xhtml += DISPLAY_POSTPREND;
  	xhtml += '</span>';
  
  	return xhtml;
  }
  
  /* ========================================================================
  	PRINT BREADCRUMB TRAIL
     ======================================================================== */
  
  // check if we're local; if so, only print the PREPREND_CRUMBS
  if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
  {
  	document.write( getCrumbTrail( getBreadcrumbs() ) );
  }
  else
  {
  	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
  }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/demo/skin/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  /* just to be sure */
  #navcolumn {
   width: 0px;
  }
  
  #leftcol {
   width: 0px;
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/demo/skin/site.css
  
  Index: site.css
  ===================================================================
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  /* make the whole column grey */
  #navcolumn {
   width: 150px;
   background: none;
   border-top: none;
   border-right: none;
   border-bottom: none;
   }
  
  #leftcol {
   width: 150px;
   background: #eee;
   border-top: 1px solid #fff;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
  }
  
  /* breadcrumbs */
  .breadcrumbTrail
  {
  	padding-left: 5px;
  }
  .breadcrumb
  {
  	font-weight: bold;
  }
  .crumbSeparator
  {
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/demo/skin/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 {
   background-color: #888;
   }
  .a td {
   background: #ddd;
   }
  .b td {
   background: #efefef;
   }
  table, th, td {
   border: none
   }
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs {
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  {
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus {
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  
  1.5       +9 -67     jakarta-avalon-site/docs/apps/apps/db/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/docs/apps/apps/db/index.html,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- index.html	30 Jun 2002 10:05:45 -0000	1.4
  +++ index.html	14 Jul 2002 16:48:30 -0000	1.5
  @@ -1,77 +1,19 @@
  -<html>
  -<head>
  -<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  -<title>Avalon Applications / AvalonDB</title>
  -<meta value="Leo Simons" name="author">
  -<meta value="leosimons@apache.org" name="email">
  -<link href="skin/common.css" type="text/css" rel="stylesheet">
  -</head>
  -<body>
  -<div id="header">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td align="left" valign="middle" id="jakartaLogoTD"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif" id="jakartaLogo"></a></td><td align="right" valign="middle" id="projectLogoTD"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif" id="projectLogo"></a></td>
  -</tr>
  -</table>
  -</div>
  -<div id="breadcrumbs">
  -<a class="menu" href="http://www.apache.org">apache &gt;</a><a class="menu" href="http://jakarta.apache.org">jakarta &gt;</a><a class="menu" href="http://jakarta.apache.org/avalon/">avalon</a><script type="text/javascript" language="JavaScript1.2"></script>
  -</div>
  -<div id="main">
  -<table cellspacing="0" cellpadding="0" border="0" width="100%">
  -<tr>
  -<td valign="top">
  -<div id="menu">
  -<div id="submenu">
  -<h4>About</h4>
  -<ul>
  -<li>
  -<a href="index.html">Overview</a>
  -</li>
  -<li>
  -<a href="api/index.html">API Docs</a>
  -</li>
  -<li>
  -<a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a>
  -</li>
  -</ul>
  -</div>
  -</div>
  -</td><td width="10">&nbsp;</td><td width="100%" valign="top">
  -<div id="title">
  -<h1>Avalon Applications / AvalonDB</h1>
  -</div>
  -<div id="contents">
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  +<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><link rel="stylesheet" href="skin/tigris.css" type="text/css"><link rel="stylesheet" href="skin/site.css" type="text/css"><link media="print" rel="stylesheet" href="skin/print.css" type="text/css"><meta value="Avalon Documentation Team" name="author"><meta value="avalon-dev@jakarta.apache.org" name="email"><title>Avalon Applications / AvalonDB</title></head><body class="composite" marginheight="0" marginwidth="0"><div id="banner"><table width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr><td align="left"><a href="http://jakarta.apache.org/"><img border="0" src="images/jakarta-logo.gif"></a></td><td align="right"><a href="http://jakarta.apache.org/avalon/"><img border="0" src="images/header.gif"></a></td></tr></tbody></table></div><div id="breadcrumbs"><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script></div><table id="main" width="100%" cellpadding="8" cellspacing="0" border="0"><tbody><tr valign="top"><td id="leftcol"><div id="navcolumn"><div><strong>About</strong><div><a href="index.html">Overview</a></div><div><a href="api/">API Docs</a></div><div><a href="http://jakarta.apache.org/builds/jakarta-avalon-apps/">Download</a></div></div></div></td><td><div id="bodycol"><div class="app"><div align="center"><h1>Avalon Applications / AvalonDB</h1><h2></h2></div><div class="h3">
     
     
  -    
  -<h2>Introduction</h2>
  -<div class="section">
  -      
  -<p>
  +    <div class="h3"><h3>Introduction</h3></div>
  +      <p>
           AvalonDB is a multiple implementation RDBMS.  The idea is that thre are 
           multiple implementations for persistence, parsing, optimization, caching.        
           The work is very much in progress and nowhere near ready for deployment.
         </p>
       
  -</div>
     
     
  +<div id="authors" align="right">by&nbsp;<a href="mailto:Paul_Hammant@yahoo.com">Paul Hammant</a></div></div></div></div></td></tr></tbody></table><div id="footer"><table width="100%" cellpadding="4" cellspacing="0" border="0"><tbody><tr><td align="left">Copyright &copy; 2000-2002 Apache Software Foundation. All Rights Reserved.</td><td></td><td align="right"><script language="JavaScript">
  +                          <!--
  +                                  document.write("last modified: " + document.lastModified);
  +                          //  -->
   
  -<div id="authors">by&nbsp;Paul Hammant</div>
  -</div>
  -<script language="JavaScript">
  -<!-- 
  -document.write("last modified: " + document.lastModified); 
  -//  -->
  -</script></td>
  -</tr>
  -</table>
  -</div>
  -<div id="footer">
  -						 Copyright &copy;2002 Apache Software Foundation. All Rights Reserved.
  -
  -			</div>
  -<a href="http://jakarta.apache.org/ant/"><img border="0" alt="Ant Logo" src="skin/images/ant_logo_medium.gif" align="right"></a><a href="http://xml.apache.org/cocoon/"><img border="0" alt="Cocoon Logo" src="skin/images/built-with-cocoon.gif" align="right"></a><a href="http://www.krysalis.org/"><img border="0" alt="Krysalis Logo" src="skin/images/krysalis-logo-small.gif" align="right"></a><a href="http://www.krysalis.org/centipede/"><img border="0" alt="Krysalis Centipede Logo" src="skin/images/centipede-logo-small.gif" align="right"></a>
  -</body>
  -</html>
  +                           </script></td></tr></tbody></table></div></body></html>
  \ No newline at end of file
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/db/skin/breadcrumbs.js
  
  Index: breadcrumbs.js
  ===================================================================
  /*
  
   ============================================================================
                     The Apache Software License, Version 1.1
   ============================================================================
  
   Copyright (C) 2000-2002 The Apache Software Foundation. All rights reserved.
  
   Redistribution and use in source and binary forms, with or without modifica-
   tion, are permitted provided that the following conditions are met:
  
   1. Redistributions of  source code must  retain the above copyright  notice,
      this list of conditions and the following disclaimer.
  
   2. Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
  
   3. The end-user documentation included with the redistribution, if any, must
      include  the following  acknowledgment:  "This product includes  software
      developed  by the  Apache Software Foundation  (http://www.apache.org/)."
      Alternately, this  acknowledgment may  appear in the software itself,  if
      and wherever such third-party acknowledgments normally appear.
  
   4. The names "Jakarta", "Avalon", "Excalibur" and "Apache Software Foundation"
      must not be used to endorse or promote products derived from this  software
      without  prior written permission. For written permission, please contact
      apache@apache.org.
  
   5. Products  derived from this software may not  be called "Apache", nor may
      "Apache" appear  in their name,  without prior written permission  of the
      Apache Software Foundation.
  
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   FITNESS  FOR A PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN NO  EVENT SHALL  THE
   APACHE SOFTWARE  FOUNDATION  OR ITS CONTRIBUTORS  BE LIABLE FOR  ANY DIRECT,
   INDIRECT, INCIDENTAL, SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLU-
   DING, BUT NOT LIMITED TO, PROCUREMENT  OF SUBSTITUTE GOODS OR SERVICES; LOSS
   OF USE, DATA, OR  PROFITS; OR BUSINESS  INTERRUPTION)  HOWEVER CAUSED AND ON
   ANY  THEORY OF LIABILITY,  WHETHER  IN CONTRACT,  STRICT LIABILITY,  OR TORT
   (INCLUDING  NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT OF THE  USE OF
   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
   This software  consists of voluntary contributions made  by many individuals
   on  behalf of the Apache Software  Foundation. For more  information on the
   Apache Software Foundation, please see <http://www.apache.org/>.
  
  */
  
  /**
   * This script, when included in a html file, builds a neat breadcrumb trail
   * based on its url. That is, if it doesn't contains bugs (I'm relatively
   * sure it does).
   *
   * Typical usage:
   * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script>
   *
   *@author     <a href="mailto:leosimons@apache.org">Leo Simons</a> (main author)
   *@author     <a href="mailto:nicolaken@apache.org">Nicola Ken Barozzi</a> (integration in skin)
   *@created    July 12, 2002
   *@version    1.0
   */
  
  /* ========================================================================
  	CONSTANTS
     ======================================================================== */
  
  /**
   * Two-dimensional array containing extra crumbs to place at the front of
   * the trail. Specify first the name of the crumb, then the URI that belongs
   * to it. You'll need to modify this for every domain or subdomain where
   * you use this script (you can leave it as an empty array if you wish)
   */
  var PREPREND_CRUMBS = new Array();
     if(!("apache"=="")){
       PREPREND_CRUMBS.push( new Array( "apache", "http://www.apache.org" ) );
     }
     if(!("jakarta"=="")){
       PREPREND_CRUMBS.push( new Array( "jakarta", "http://jakarta.apache.org" ) );
     }
     if(!("avalon"=="")){
       PREPREND_CRUMBS.push( new Array( "avalon", "http://jakarta.apache.org/avalon/" ) );
     }
  
  /**
   * String to include between crumbs:
   */
  var DISPLAY_SEPARATOR = " &gt; ";
  /**
   * String to include at the beginning of the trail
   */
  var DISPLAY_PREPREND = "";
  /**
   * String to include at the end of the trail
   */
  var DISPLAY_POSTPREND = ":";
  
  /**
   * CSS Class to use for a single crumb:
   */
  var CSS_CLASS_CRUMB = "breadcrumb";
  
  /**
   * CSS Class to use for the complete trail:
   */
  var CSS_CLASS_TRAIL = "breadcrumbTrail";
  
  /**
   * CSS Class to use for crumb separator:
   */
  var CSS_CLASS_SEPARATOR = "crumbSeparator";
  
  /**
   * Array of strings containing common file extensions. We use this to
   * determine what part of the url to ignore (if it contains one of the
   * string specified here, we ignore it).
   */
  var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" );
  
  /**
   * String that separates parts of the breadcrumb trail from each other.
   * When this is no longer a slash, I'm sure I'll be old and grey.
   */
  var PATH_SEPARATOR = "/";
  
  /* ========================================================================
  	UTILITY FUNCTIONS
     ======================================================================== */
  /**
   * Capitalize first letter of the provided string and return the modified
   * string.
   */
  function sentenceCase( string )
  {
  	var lower = string.toLowerCase();
  	return lower.substr(0,1).toUpperCase() + lower.substr(1);
  }
  
  /**
   * Returns an array containing the names of all the directories in the
   * current document URL
   */
  function getDirectoriesInURL()
  {
  	var trail = document.location.pathname.split( PATH_SEPARATOR );
  
  	// check whether last section is a file or a directory
  	var lastcrumb = trail[trail.length-1];
  	for( var i = 0; i < FILE_EXTENSIONS.length; i++ )
  	{
  		if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) )
  		{
  			// it is, remove it and send results
  			return trail.slice( 1, trail.length-1 );
  		}
  	}
  
  	// it's not; send the trail unmodified
  	return trail.slice( 1, trail.length );
  }
  
  /* ========================================================================
  	BREADCRUMB FUNCTIONALITY
     ======================================================================== */
  /**
   * Return a two-dimensional array describing the breadcrumbs based on the
   * array of directories passed in.
   */
  function getBreadcrumbs( dirs )
  {
  	var prefix = "/";
  	var postfix = "/";
  
  	// the array we will return
  	var crumbs = new Array();
  
  	if( dirs != null )
  	{
  		for( var i = 0; i < dirs.length; i++ )
  		{
  			prefix += dirs[i] + postfix;
  			crumbs.push( new Array( dirs[i], prefix ) );
  		}
  	}
  
  	// preprend the PREPREND_CRUMBS
  	if(PREPREND_CRUMBS.length > 0 )
  	{
  		return PREPREND_CRUMBS.concat( crumbs );
  	}
  
  	return crumbs;
  }
  
  /**
   * Return a string containing an XHTML breadcrumb trail based on the
   * two-dimensional array passed in.
   */
  function getCrumbTrail( crumbs )
  {
  	var xhtml = '<span class="' + CSS_CLASS_TRAIL  + '">';
  	xhtml += DISPLAY_PREPREND;
  
  	for( var i = 0; i < crumbs.length; i++ )
  	{
  		xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">';
  		xhtml += sentenceCase( crumbs[i][0] ) + '</a>';
  		if( i != (crumbs.length-1) )
  		{
  			xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>';
  		}
  	}
  
  	xhtml += DISPLAY_POSTPREND;
  	xhtml += '</span>';
  
  	return xhtml;
  }
  
  /* ========================================================================
  	PRINT BREADCRUMB TRAIL
     ======================================================================== */
  
  // check if we're local; if so, only print the PREPREND_CRUMBS
  if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 )
  {
  	document.write( getCrumbTrail( getBreadcrumbs() ) );
  }
  else
  {
  	document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) );
  }
  
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/db/skin/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  /* just to be sure */
  #navcolumn {
   width: 0px;
  }
  
  #leftcol {
   width: 0px;
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/db/skin/site.css
  
  Index: site.css
  ===================================================================
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  /* make the whole column grey */
  #navcolumn {
   width: 150px;
   background: none;
   border-top: none;
   border-right: none;
   border-bottom: none;
   }
  
  #leftcol {
   width: 150px;
   background: #eee;
   border-top: 1px solid #fff;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
  }
  
  /* breadcrumbs */
  .breadcrumbTrail
  {
  	padding-left: 5px;
  }
  .breadcrumb
  {
  	font-weight: bold;
  }
  .crumbSeparator
  {
  }
  
  
  
  1.1                  jakarta-avalon-site/docs/apps/apps/db/skin/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 {
   background-color: #888;
   }
  .a td {
   background: #ddd;
   }
  .b td {
   background: #efefef;
   }
  table, th, td {
   border: none
   }
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs {
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  {
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus {
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>