<?xml version="1.0"?>
<!--
  | Copyright 2007-2008 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.
  |
-->

<project name="OpenWebBeans">
    <bannerLeft>
        <name>Apache OpenWebBeans</name>
        <src>http://incubator.apache.org/openwebbeans/images/openwebbeans.png</src>
        <href>http://incubator.apache.org/openwebbeans</href>
    </bannerLeft>
    
    <bannerRight>
        <name>Apache Banner</name>
        <src>http://incubator.apache.org/openwebbeans/images/apache-incubator-logo.png</src>
        <href>http://incubator.apache.org/openwebbeans</href>
    </bannerRight>
    
    <publishDate format="dd MMM yyyy" />
    <version position="left"/>
    
    <body>
        <breadcrumbs>
        <item name="Incubator" href="http://incubator.apache.org"/>
        <item name="OpenWebBeans" href="http://incubator.apache.org/openwebbeans"/>
        </breadcrumbs>

        <menu name="Overview">
            <item name="Introduction" href="index.html" />
        </menu>

        <menu name="OpenWebBeans">
            <item name="JSR-299" href="jsr299.html" />
            <item name="Contributing" href="contributing.html" />
            <item name="IRC" href="irc.html" />
            <item name="FAQ" href="faq.html" />
            <item name="Extensions" href="extensions/index.html" />
        </menu>

        <menu ref="modules" />

        <menu name="Examples">
            <item name="guess" href="examples/guess.html" />
        </menu>

	<menu ref="reports"/>
    </body>
</project>

