<?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="jSieve">

    <skin>
        <groupId>org.apache.james</groupId>
        <artifactId>james-skin</artifactId>
        <version>${james-skin.version}</version>
    </skin>

  <bannerLeft>
    <name>JAMES jSieve</name>
    <src>images/james-logo.png</src>
    <href>http://james.apache.org/</href>
    <alt>james-logo.png</alt>
  </bannerLeft>

  <bannerRight>
    <name>The Apache Software Foundation</name>
    <src>images/logos/asf_logo_small.png</src>
    <href>http://www.apache.org/index.html</href>
  </bannerRight>

  <body>

        <links>
            <item
                name="Home"
                href="http://james.apache.org/index.html" />
            <item
                name="James"
                href="http://james.apache.org/documentation.html" />
            <item
                name="Mime4J"
                href="http://james.apache.org/mime4j/index.html" />
            <item
                name="jSieve"
                href="http://james.apache.org/jsieve/index.html" />
            <item
                name="jSPF"
                href="http://james.apache.org/jspf/index.html" />
            <item
                name="jDKIM"
                href="http://james.apache.org/jdkim/index.html" />
            <item
                name="Hupa"
                href="http://james.apache.org/hupa/index.html" />
        </links>
    <menu name="jSieve">
      <item name="Overview" href="/index.html" />
      <item name="Util" href="/util/index.html" />
      <item name="Changes" href="/jira-report.html" />
      <item name="Release Notes" href="/release-notes.html" />
      <item name="JavaDocs" href="/apidocs/index.html" />
      <item name="Issue Tracker" href="https://issues.apache.org/jira/browse/JSIEVE" />
      <item name="Specification" collapse="false">
        <item name="RFC 2234 ABNF" href="http://www.ietf.org/rfc/rfc2234.txt" />
        <item name="RFC 2244 ACAP" href="http://www.ietf.org/rfc/rfc2244.txt" />
        <item name="RFC 2298 MDN" href="http://www.ietf.org/rfc/rfc2298.txt" />
        <item name="RFC 5228 Sieve" href="http://tools.ietf.org/html/rfc5228" />
        <item name='RFC 4790 IAPCR' href='http://tools.ietf.org/html/rfc4790'/>
        <item name='RFC 5173 Body Extension' href='http://tools.ietf.org/html/rfc5173'/>
      </item>
      <item name="Download Releases" href="http://james.apache.org/download.cgi#Apache_JSieve" />
    </menu>
  </body>
</project>
