<?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 Scout">
	
	<version position="right"/>
    <bannerLeft>
        <name>Apache Scout</name>
        <src>images/juddi_logo_v3.png</src>
        <href>juddi.apache.org/scout/</href>
    </bannerLeft>
    <bannerRight>
        <src>images/scout.jpg</src>
    </bannerRight>
   <skin>
		<groupId>org.apache.maven.skins</groupId>
		<artifactId>maven-fluido-skin</artifactId>
		<version>1.6</version>
	</skin>
	<custom>
		<fluidoSkin>
			<googleSearch>
				<sitesearch/>
			</googleSearch>
			<sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
			<gitHub>
				<projectId>apache/maven-skins</projectId>
				<ribbonOrientation>right</ribbonOrientation>
				<ribbonColor>black</ribbonColor>
				<projectId>apache/juddi</projectId>
			</gitHub>
			<topBarEnabled>true</topBarEnabled>
			<sideBarEnabled>true</sideBarEnabled>
		</fluidoSkin>
	</custom>

    <publishDate format="dd MMM yyyy" position="right"/>

    <body>
        <breadcrumbs>
            <item name="Apache" href="http://www.apache.org/"/>
            <item name="jUDDI" href="http://juddi.apache.org/"/>
            <item name="Scout" href="http://juddi.apache.org/scout/"/>
        </breadcrumbs>

        <menu name="Apache Scout">
            <item name="Welcome" href="http://juddi.apache.org/scout/index.html"/>
            <item name="Get Scout">
                <item name="Releases" href="releases.html"/>
                <item name="Source Code" href="source-repository.html"/>
            </item>
            <item name="Wiki" href="http://wiki.apache.org/juddi/scout"/>
        </menu>
        <menu name="Related Projects">
            <item name="Apache jUDDI" href="http://juddi.apache.org/" />
        </menu>
        <menu ref="reports"/>

    </body>
</project>

