<?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>http://incubator.apache.org/images/egg-logo.png</src>
    <href>http://incubator.apache.org/</href>
  </bannerRight>-->

  <custom>
    <fluidoSkin>
      <topBarEnabled>true</topBarEnabled>
      <sideBarEnabled>true</sideBarEnabled>
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <topBarIcon>
        <name>Apache Johnzon</name>
        <alt>Apache Johnzon</alt>
        <!-- <src>http://incubator.apache.org/images/egg-logo.png</src>  -->
        <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.3.1</version>
  </skin>

  <body>

    <head>

      <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://incubator.apache.org/projects/johnzon.html"/>
      <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="Site Archives">
        <item name="Johnzon 0.2-incubating"       href="/archives/0.2-incubating/index.html"/>
    </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>
      <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>
