<!--
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 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.
-->

<div class="brand">
  <div class="burger">
    <div><!-- * --></div>
    <div><!-- * --></div>
    <div><!-- * --></div>
  </div>
  <div class="icon">Apache Fauxton</div>
</div>

<nav id="main_navigation">
  <ul id="nav-links" class="nav pull-right">
    <% _.each(navLinks, function(link) { %>
    <% if (link.view) {return;}  %>
        <li data-nav-name= "<%= link.title %>" >
          <a href="<%= link.href %>">
            <i class="<%= link.icon %> fonticon"></i>
            <%= link.title %>
          </a>
        </li>
    <% }); %>
  </ul>

  <div id="footer-links">

    <ul id="bottom-nav-links" class="nav">
        <li data-nav-name= "Documentation">
            <a href="<%=getDocUrl('docs')%>" target="_blank">
              <i class="fonticon-bookmark fonticon"></i>
                Documentation
            </a>
        </li>


      <% _.each(bottomNavLinks, function(link) { %>
      <% if (link.view) {return;}  %>
        <li data-nav-name= "<%= link.title %>">
            <a href="<%= link.href %>">
              <i class="<%= link.icon %> fonticon"></i>
              <%= link.title %>
            </a>
        </li>
      <% }); %>
    </ul>

    <ul id="footer-nav-links" class="nav">
      <% _.each(footerNavLinks, function(link) { %>
      <% if (link.view) {return;}  %>
        <li data-nav-name= "<%= link.title %>">
            <a href="<%= link.href %>">
              <i class="<%= link.icon %> fonticon"></i>
              <%= link.title %>
            </a>
        </li>
      <% }); %>
    </ul>

  </div>
</nav>



