
{% set not_doc_page_titles = ['Home', 'Quick Start', 'About', 'Talks', 'Download', 'Community', 'Events'] %}

{% macro active_nav(page, title, classes) %}
  class="{% if (page and page.title == title) or (title == 'Home' and meta and meta.sub_page) %}active {% endif %}{{ classes }}"
{% endmacro %}

{% macro docs_are_active(page) %}
  class="{% if (not page or not page.title in not_doc_page_titles) and (not meta or not meta.sub_page) %}active{% endif %}"
{% endmacro %}

<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li {{ active_nav(current_page, 'Home') }}>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li {{ active_nav(current_page, 'Quick Start', "important") }}>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li {{ active_nav(current_page, 'About') }}>
                    <a href="/about/">About</a>
                </li>
                <li {{ active_nav(current_page, 'Talks') }}>
                    <a href="/talks/">Talks</a>
                </li>
                <li {{ docs_are_active(current_page) }}>
                    <a href="{% if config.extra.version != 'none' %}/latest{% endif %}/{{ config.extra.doc_path }}">Documentation</a>
                </li>
                <li {{ active_nav(current_page, 'Download') }}>
                    <a href="/download/">Download</a>
                </li>
                <li {{ active_nav(current_page, 'Community') }}>
                    <a href="/community/">Community</a>
                </li>
                <li {{ active_nav(current_page, 'Events') }}>
                    <a href="/events/">Events</a>
                </li>
            </ul>

            <!-- Search, Navigation and Repo links -->
            <ul class="nav navbar-nav navbar-right">
                {% if repo_url %}
                <li>
                    <a href="{{ repo_url }}">
                        {% if repo_name == 'GitHub' %}
                            <i class="fa fa-github"></i>
                        {% elif repo_name == 'Bitbucket' %}
                            <i class="fa fa-bitbucket"></i>
                        {% endif %}
                        {{ repo_name }}
                    </a>
                </li>
                {% endif %}
            </ul>
        </div>
    </div>
</nav>
