<?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 xmlns="http://maven.apache.org/DECORATION/1.6.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 http://maven.apache.org/xsd/decoration-1.6.0.xsd"
    name="Apache HttpComponents Client">

  <!-- N.B. all non-body elements are automatically inherited -->

  <skin>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>maven-site-skin</artifactId>
    <version>1.1</version>
  </skin>
  <!--skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.9</version>
  </skin-->

  <bannerLeft>
    <name>Apache</name>
    <src>http://www.apache.org/images/asf_logo_wide.gif</src>
    <href>http://www.apache.org/</href>
  </bannerLeft>

  <bannerRight>
    <name>HttpComponents</name>
    <src>http://hc.apache.org/images/logos/httpcomponents.png</src>
    <href>http://hc.apache.org/</href>
  </bannerRight>

  <body>
    <!-- N.B. body links are automatically inherited -->
    <links>
      <item name="Apache" href="http://www.apache.org/"/>
      <item name="HttpComponents" href="http://hc.apache.org/index.html"/>
    </links>
    
    <!-- inherited -->
    <menu ref="parent" inherit="bottom"/>
    <menu ref="modules" inherit="bottom"/>
    <menu ref="reports" inherit="bottom"/>

    <menu name="ASF" inherit="bottom">
      <item name="ASF Home Page" href="http://www.apache.org"/>
      <item name="Foundation" href="http://www.apache.org/foundation/"/>
      <item name="Sponsor Apache" href="http://www.apache.org/foundation/sponsorship.html"/>
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
    </menu>
  </body>
  
  <!-- inherited -->
  <poweredBy>
    <!-- Add ApacheCon logo -->
    <logo name="ApacheCon" href="http://www.apache.org/events/current-event.html"
          img="http://www.apache.org/events/current-event-125x125.png"/>
    <!-- Keep the default logo as well -->
    <logo name="Maven" href="http://maven.apache.org/"
          img="http://maven.apache.org/images/logos/maven-feather.png"/>
  </poweredBy>

  <!-- inherited -->
  <custom>
    <footer>
      <div class="xleft">Apache HttpComponents, Commons HttpClient, Apache, the Apache feather logo, and the Apache HttpComponents project logo are trademarks of The Apache Software Foundation.</div>
      <br/>
      <div class="xleft">All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
    </footer>
  </custom>
</project>
