<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 !
 !     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="AsterixDB" xmlns="http://maven.apache.org/DECORATION/1.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
  <bannerLeft>
    <name>AsterixDB</name>
    <src>images/asterixlogo.png</src>
    <href>http://asterixdb.ics.uci.edu/</href>
  </bannerLeft>

  <version position="right"/>

  <poweredBy>
    <logo name="Hyracks"
          href="https://code.google.com/p/hyracks/"
          img="images/hyrax_ts.png"/>
  </poweredBy>

  <skin>
    <groupId>org.apache.maven.skins</groupId>
    <artifactId>maven-fluido-skin</artifactId>
    <version>1.3.0</version>
  </skin>
  <custom>
    <fluidoSkin>
      <!-- <topBarEnabled>true</topBarEnabled>
      <topBarIcon>
        <name>AsterixDB</name>
        <alt>AsterixDB</alt>
        <src>images/asterixlogo.png</src>
        <href>/index.html</href>
      </topBarIcon>
      <sideBarEnabled>false</sideBarEnabled> -->
      <!-- <topBarContainerStyle>width: 90%;</topBarContainerStyle> -->
      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
      <!-- <googlePlusOne /> -->
    </fluidoSkin>
  </custom>

  <body>
    <head>
      <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-41536543-1', 'uci.edu');
        ga('send', 'pageview');
      </script>
    </head>
    <links>
      <item name="Documentation Home" href="index.html"/>
    </links>

    <menu name="Documentation">
      <item name="Installing and Managing AsterixDB using Managix" href="install.html"/>
      <item name="AsterixDB 101: An ADM and AQL Primer" href="aql/primer.html"/>
      <item name="AsterixDB Javascript SDK" href="aql/js-sdk.html"/>
      <item name="Asterix Data Model (ADM)" href="aql/datamodel.html"/>
      <item name="Asterix Query Language (AQL)" href="aql/manual.html"/>
      <item name="AQL Functions" href="aql/functions.html"/>
      <item name="AQL Allen's Relations Functions" href="aql/allens.html"/>
      <item name="AQL Support of Similarity Queries" href="aql/similarity.html"/>
      <item name="Accessing External Data" href="aql/externaldata.html"/>
      <item name="Filter-Based LSM Index Acceleration" href="aql/filters.html"/>
      <item name="REST API to AsterixDB" href="api.html"/>
    </menu>

    <menu ref="reports"/>

    <footer>&copy; Copyright 2013 University of California, Irvine</footer>

  </body>
</project>
