<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You 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="Apache BatchEE"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/DECORATION/1.0.1"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.1
                             http://maven.apache.org/xsd/decoration-1.0.1.xsd">
  <bannerLeft>
    <name>Apache BatchEE</name>
    <alt>Apache BatchEE logo</alt>
    <href>/index.html</href>
  </bannerLeft>
  <!--bannerRight>
    <src>http://incubator.apache.org/images/egg-logo.png</src>
    <href>http://incubator.apache.org/</href>
  </bannerRight-->

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <sideBarEnabled>false</sideBarEnabled>
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <ohloh>
        <projectId>batchee</projectId>
        <widget>stats</widget>
      </ohloh>
    </fluidoSkin>
  </custom>

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.5</version>
  </skin>

  <body>

    <menu name="User Guide">
      <item name="Home" href="/index.html"/>
      <item name="Modules" href="/modules.html"/>
      <item name="Configuration" href="/configuration.html"/>
      <item name="Extensions" href="/extensions.html"/>
      <item name="GUI" href="/gui.html"/>
      <item name="Download" href="https://downloads.apache.org/geronimo/batchee/"/>
    </menu>

    <menu ref="reports" inherit="bottom"/>

    <menu name="ASF">
      <item name="How Apache Works" href="http://www.apache.org/foundation/how-it-works.html"/>
      <item name="Foundation" href="http://www.apache.org/foundation/"/>
      <item name="Sponsoring Apache" href="http://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
    </menu>

    <footer><![CDATA[
  <div class="container">
    <footer id="main-footer">
      <p class="text-muted">
      Apache Batchee, Apache, the Apache feather logo, and the Apache Batchee project logos are trademarks of The Apache Software Foundation.
        All other marks mentioned may be trademarks or registered trademarks of their respective owners.
      </p>
      <a href="/privacy-policy.html">Privacy Policy</a>
    </footer>
  </div> <!-- /container -->
      ]]></footer>

  </body>
</project>
