<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2003-2004 The Apache Software Foundation

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->


<!-- $Rev$ $Date$ -->

<project name="Apache Geronimo">

  <title>Apache Geronimo</title>

<!--  <organizationLogo href="http://geronimo.apache.org/images/geronimo-logo.png">Apache</organizationLogo> -->

  <body>
    <search/>

    <links>
      <item name="Apache" href="http://www.apache.org"/>
    </links>

    <menu name="Geronimo">
      <item name="Overview"                href="/index.html"/>
      <item name="Documentation"           href="/documentation.html" />
      <item name="Mailing Lists"           href="/mailing.html" />
      <item name="FAQ"                     href="/faq.html"/>
      <item name="Wiki"                    href="http://wiki.apache.org/geronimo"/>
      <item name="Jira"                    href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10220"/>
      <item name="Source Code"             href="/source.html" />
      <item name="Download"                href="/download.html"/>

      <!--
      <item name="To Do List"              href="/todo.html"/>
      <item name="Getting Started"         href="/gettingstarted.html"/>
      <item name="Tutorial"          	   href="/tutorial.html"/>
      <item name="Detail"                  href="/overview.html"/>
      <item name="Download"                href="/builds/distributions/"/>
      -->

      <item name="News"                    href="/news.html"/>
      <item name="Related Projects"        href="/reuse.html"/>
    </menu>

    <menu name="Modules">
      <!-- item name="Axis"                     href="/modules/axis/index.html"/ -->
      <item name="Clustering"               href="/modules/clustering/index.html"/>
      <item name="Common"                   href="/modules/common/index.html"/>
      <item name="Connector"                href="/modules/connector/index.html"/>
      <item name="Web Console"              href="/modules/console-web/index.html"/>
      <item name="Core Container"           href="/modules/core/index.html"/>
      <item name="Deployment"               href="/modules/deployment/index.html"/>
      <item name="Jetty"                    href="/modules/jetty/index.html"/>
      <item name="Kernel"                   href="/modules/kernel/index.html"/>
      <item name="Naming"                   href="/modules/naming/index.html"/>
      <item name="Security"                 href="/modules/security/index.html"/>
      <item name="Spring"                   href="/modules/spring/index.html"/>
      <item name="System"                   href="/modules/system/index.html"/>
      <item name="Tomcat"                   href="/modules/tomcat/index.html"/>
      <item name="Transaction"              href="/modules/transaction/index.html"/>
    </menu>

    <menu name="Specifications">
      <item name="Enterprise Java Beans"                      href="/specs/ejb/index.html"/>
      <item name="Java Connector"                             href="/specs/j2ee-connector/index.html"/>
      <item name="J2EE Application Deployment"                href="/specs/j2ee-deployment/index.html"/>
      <item name="J2EE Authorization Contract for Containers" href="/specs/j2ee-jacc/index.html"/>
      <item name="J2EE Application Management"                href="/specs/j2ee-management/index.html"/>
      <item name="Java Message Service"                       href="/specs/jms/index.html"/>
      <item name="Java Server Pages Specification"            href="/specs/jsp/index.html"/>
      <item name="Java Transaction API"                       href="/specs/jta/index.html"/>
      <item name="Java Servlet Specification"                 href="/specs/servlet/index.html"/>
    </menu>

    <footer><div>Java, J2EE, and JCP are trademarks or registered trademarks of
      Sun Microsystems, Inc. in the United States and other countries.</div></footer>

  </body>
</project>
