<?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="mime4j">
    <title>mime4j - the Java stream based MIME message parser</title>
    <body>
        <links>
            <item name="Home Page" href="http://www.mime4j.org/"/>
            <item name="Browse Source Code" href="http://svn.apache.org/viewcvs.cgi/james/mime4j/trunk/"/>
        </links>        
        <menu name="Overview">
            <!--<item name="Features" href="/features.html"/>-->
            <item name="News and Status" href="/status.html"/>
            <item name="Getting Started" href="/start/index.html" collapse="true">
                <item name="Download" href="/start/download.html"/>
                <item name="Build" href="/start/build.html"/>
            </item>
        </menu>
        <menu name="Documentation">
<!--            <item name="Samples" href="/samples.html"/>-->
            <item name="API docs (Javadoc)" href="/apidocs/"/>
        </menu>
    </body>
</project>
