<?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">
  <bannerLeft>
    <name>JAMES jSieve</name>
    <src>images/james-jsieve-logo.gif</src>
    <href>http://james.apache.org/</href>
  </bannerLeft>

  <bannerRight>
    <name>The Apache Software Foundation</name>
    <src>images/asf-logo-reduced.gif</src>
    <href>http://www.apache.org/index.html</href>
  </bannerRight>

  <skin>
    <groupId>org.apache.james</groupId>
    <artifactId>maven-skin</artifactId>
    <version>1.2</version>
  </skin>

  <body>
    <menu name="jSieve">
      <item name="Main" href="http://james.apache.org/jsieve/main/index.html" />
      <item name="Mailet" href="http://james.apache.org/jsieve/mailet/index.html" />
      <item name="Util" href="http://james.apache.org/jsieve/util/index.html" />
      <item name="Changes" href="http://james.apache.org/jsieve/jira-report.html" />
      <item name="Release Notes" href="http://james.apache.org/jsieve/release-notes.html" />
      <item name="JavaDocs" href="http://james.apache.org/jsieve/apidocs/index.html" />
    </menu>

    <menu name='Specifications' inherit='bottom'>
      <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'/>
    </menu>

    <menu name='0.3 Release'>
      <item name='Release Notes' href='0.3/release-notes.html'/>
      <item name='Documentation' href='0.3/index.html'/>
    </menu>
  </body>
</project>
