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

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

  <bannerLeft>
    <name>James jSPF</name>
    <src>images/james-logo.png</src>
    <href>http://james.apache.org/jspf/index.html</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/index.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="jSPF" inherit="top">
      <item name="Overview" href="/index.html"/>
      <item name="jSPF FAQ" href="/FAQ.html"/>
      <item name="Mailing Lists" href="https://builds.apache.org/hudson/view/G-L/view/James/job/jspf-trunk-site/site/mail-lists.html" />
      <item name="Useful RFCs" href="/rfclist.html"/>
    </menu>

        <menu
                name="About James"
                inherit="bottom">
            <item
                    name="Overview"
                    href="/index.html" />
            <item
                    name="News"
                    href="/newsarchive.html" />
            <item
                    name="Mailing Lists"
                    href="/mail.html" />
            <item
                    name="Contributing"
                    href="/contribute.html" />
            <item
                    name="Guidelines"
                    href="/guidelines.html" />
            <item
                    name="Wiki"
                    href="http://wiki.apache.org/james" />
            <item
                    name="Who We Are"
                    href="/team-list.html" />
            <item
                    name="License"
                    href="/license.html" />
            <item
                    name="Thanks"
                    href="/thanks.html" />
            <item
                    name="Professional support"
                    href="/support.html" />
        </menu>

        <menu
                name="Download"
                inherit="bottom">
            <item
                    name="Releases"
                    href="http://james.apache.org/download.cgi" />
        </menu>




  </body>
</project>
