<?xml version="1.0" encoding="UTF-8"?>
<!--
  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 Hivemall" xmlns="http://maven.apache.org/DECORATION/1.7.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 http://maven.apache.org/xsd/decoration-1.7.0.xsd">

	<skin>
		<groupId>org.apache.maven.skins</groupId>
		<artifactId>maven-fluido-skin</artifactId>
		<version>1.6</version>
	</skin>

	<custom>
		<fluidoSkin>
			<topBarEnabled>true</topBarEnabled>
			<navBarStyle>navbar-inverse</navBarStyle>
			<!--
            <topBarContainerStyle>width: 80%;</topBarContainerStyle>
			<topBarIcon>
				<name>Apache Hivemall</name>
				<alt>Apache Hivemall</alt>
				<src>/images/hivemall-logo-small.png</src>
				<href>/index.html</href>
			</topBarIcon>
			-->
			<sideBarEnabled>false</sideBarEnabled>
			<sourceLineNumbersEnabled>false</sourceLineNumbersEnabled>
			<gitHub>
				<projectId>apache/incubator-hivemall</projectId>
				<ribbonOrientation>right</ribbonOrientation>
				<ribbonColor>red</ribbonColor>
			</gitHub>			
            <!-- <facebookLike /> -->
			<twitter>			    
				<user>ApacheHivemall</user>
				<showUser>true</showUser>
				<showFollowers>false</showFollowers>				
			</twitter>
			<skipGenerationDate>true</skipGenerationDate>
		</fluidoSkin>
	</custom>

	<publishDate format="yyyy-MM-dd" position="left" />
	<version position="left" />

	<poweredBy>
		<logo name="Apache Incubator" href="http://incubator.apache.org/projects/hivemall.html" img="/images/apache-incubator-logo.png" />
	</poweredBy>

	<body>

        <!--
        <head><![CDATA[
            <link rel="stylesheet" href="/css/font-awesome.css" type="text/css" />
        ]]></head>
        -->

		<menu name="Project">
			<item name="Home" href="/index.html" />
			<item name="Download" href="/download.html" />
			<item name="Licenses" href="/licenses.html" />
			<item name="Team" href="/team.html" />
			<item name="Powered By" href="/poweredby.html" />
			<item name="Incubation Status" href="http://incubator.apache.org/projects/hivemall.html" />
		</menu>
		
		<menu name="Documentation">
		  <item name="User Guide" href="/userguide/index.html" />
		  <item name="Overview" href="/overview.html" />
		  <item name="Wiki" href="https://cwiki.apache.org/confluence/display/HIVEMALL" target="_blank" />
          <item name="FAQ" href="/faq.html" />
		</menu>

		<menu name="Get Involved">
            <item name="Mailing Lists" href="/mailing-lists.html" />
			<item name="Issues (Jira)" href="https://issues.apache.org/jira/browse/HIVEMALL" target="_blank" />		
            <item name="Source (Git)" href="/repository.html" />
            <item name="Travis CI" href="https://travis-ci.org/apache/incubator-hivemall" target="_blank" />
            <item name="Contributing" href="/contributing.html" />
            <item name="Release Guide" href="/release-guide.html" />
		</menu>

		<!-- <menu ref="reports" inherit="top" /> -->
        
		<menu name="ASF">
			<item name="How Apache Works" href="http://www.apache.org/foundation/how-it-works.html" target="_blank" />
			<item name="Foundation" href="http://www.apache.org/foundation/" target="_blank" />
			<item name="Sponsoring Apache" href="http://www.apache.org/foundation/sponsorship.html" target="_blank" />
			<item name="Thanks" href="http://www.apache.org/foundation/thanks.html" target="_blank" />
		</menu>

		<footer><![CDATA[
			<p>
			  <small>
                Apache Hivemall is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by <a href="http://incubator.apache.org/">the Apache Incubator</a>.
                Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, 
                and decision making process have stabilized in a manner consistent with other successful ASF projects. 
                While incubation status is not necessarily a reflection of the completeness or stability of the code, 
                it does indicate that the project has yet to be fully endorsed by the ASF.
			  </small>
			</p>
		]]></footer>

	</body>

</project>
