<?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="Apache MyFaces Trinidad">
  <bannerLeft>
    <name>Apache MyFaces Trinidad</name>

    <src>images/trinidad_logo.png</src>

    <href>http://myfaces.apache.org/trinidad</href>

  </bannerLeft>
  <bannerRight>
    <name>Apache MyFaces</name>
    <src>img/banners/MyFaces_logo.jpg</src>
    <href>http://myfaces.apache.org/</href>
  </bannerRight>
  <skin>
    <groupId>org.apache.myfaces.maven</groupId>
    <artifactId>myfaces-site-skin</artifactId>
    <version>1</version>
  </skin>
  <body>
    <links>
      <item name="MyFaces" href="http://myfaces.apache.org/"/>
    </links>

    <menu name="Trinidad">
      <item name="Download" href="download.html"/>
      <item name="Publications" href="publications.html" />
      <item name="Installation" href="devguide/installation.html" />
      <item name="Current Release Notes" href="download.html"/>
      <item name="Supported Browsers" href="browsers.html" />
      <item name="Overview" href="spec-diff.html" />
      <item name="Javadoc" href="trinidad-api/apidocs/index.html" />
      <item name="Tag Documentation" href="trinidad-api/tagdoc.html" />
      <item name="Skinning Selectors" href="skin-selectors.html" />
      <item name="Developer Guide" href="devguide/index.html" />
      <item name="Plugins" href="plugins/index.html"/>
      <item name="Trinidad 1.0.x" href="trinidad-1_0/index.html"/>
      <item name="Live Demos (Trinidad 1.2.x)" href="http://www.irian.at/trinidad-demo/faces/index.jspx" />
    </menu>

    <menu name="Foundation">
      <item name="ASF" href="http://apache.org/" />
      <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html" />
      <item name="Thanks" href="http://www.apache.org/foundation/thanks.html" />
    </menu>
    
    <menu ref="modules"/>
    <menu ref="reports"/>
  </body>
</project>
