<?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 Johnzon"
         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 Johnzon</name>
        <alt>Apache Johnzon</alt>
        <href>/index.html</href>
    </bannerLeft>
  
  <bannerRight>
      <src>/images/johnzon_logo.png</src>
      <width>180</width>
  </bannerRight>

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <sideBarEnabled>true</sideBarEnabled>
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <topBarIcon>
        <name>Apache Johnzon</name>
        <alt>Apache Johnzon</alt>
        <href>/index.html</href>
      </topBarIcon>
      <ohloh>
        <projectId>apache-johnzon</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>

    <head>

        <![CDATA[<script type="text/javascript">
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-3211522-15', 'apache.org');
                ga('send', 'pageview');
      </script>]]>

    </head>

    <menu name="User Guide">
      <item name="Home" href="/index.html"/>
      <item name="Download" href="http://www.apache.org/dyn/closer.cgi/incubator/johnzon"/>
      <item name="Javadoc" href="/apidocs/index.html"/>
      <item name="Source Code" href="/source-repository.html"/>
      <item name="Changelog" href="/changelog.html"/>
      <item name="Mailing Lists" href="/mail-lists.html"/>
    </menu>
    
    <menu name="Releases">
        <item name="Johnzon 0.1-incubating"       href="/archives/0.1-incubating/index.html"/>
        <item name="Johnzon 0.2-incubating"       href="/archives/0.2-incubating/index.html"/>
        <item name="Johnzon 0.5-incubating"       href="/archives/0.5-incubating/index.html"/>
        <item name="Johnzon 0.6-incubating"       href="/archives/0.6-incubating/index.html"/>
        <item name="Johnzon 0.7-incubating"       href="/archives/0.7-incubating/index.html"/>
    </menu>

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

    <menu name="Security">
      <item name="Report vulnerability" href="/security.html"/>
    </menu>

    <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="row span16"><div>Apache Johnzon, Apache, the Apache feather logo, and the Apache Johnzon project logos are trademarks of The Apache Software Foundation.
        All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
        <a href="${project.url}/privacy-policy.html">Privacy Policy</a>
        </div>
        ]]>
    </footer>

  </body>
</project>
