{% if page.is_default_language %}
  {% capture baseurl_i18n %}{{ site.baseurl }}{% endcapture %}
{% else %}
  {% capture baseurl_i18n %}{{ site.baseurl }}/{{ page.language }}{% endcapture %}
{% endif %}

<!-- Top navbar. -->
    <nav class="navbar navbar-default">
        <!-- The logo. -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <div class="navbar-logo">
            <a href="{{ baseurl_i18n }}/">
              <img alt="Apache Flink" src="{{ site.baseurl }}/img/flink-header-logo.svg" width="147px" height="73px">
            </a>
          </div>
        </div><!-- /.navbar-header -->

        <!-- The navigation links. -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav navbar-main">

            <!-- First menu section explains visitors what Flink is -->

            <!-- What is Stream Processing? -->
            <!--
            <li{% if page.url contains '/streamprocessing1.html' or page.url contains '/streamprocessing2.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/streamprocessing1.html">What is Stream Processing?</a></li>
            -->

            <!-- What is Flink? -->
            <li><a href="{{ baseurl_i18n }}/flink-architecture.html">{{ site.data.i18n[page.language].what_is_flink }}</a></li>

            {% if page.url contains 'flink-' %}
            <ul class="nav navbar-nav navbar-subnav">
              <li {% if page.url contains 'flink-architecture.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/flink-architecture.html">{{ site.data.i18n[page.language].flink_architecture }}</a>
              </li>
              <li {% if page.url contains 'flink-applications.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/flink-applications.html">{{ site.data.i18n[page.language].flink_applications }}</a>
              </li>
              <li {% if page.url contains 'flink-operations.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/flink-operations.html">{{ site.data.i18n[page.language].flink_operations }}</a>
              </li>
            </ul>
            {% endif %}

            <!-- What is Stateful Functions? -->

            <li{% if page.url contains '/stateful-functions.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/stateful-functions.html">{{ site.data.i18n[page.language].what_is_statefun }}</a></li>

            <!-- Use cases -->
            <li{% if page.url contains '/usecases.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/usecases.html">{{ site.data.i18n[page.language].use_case }}</a></li>

            <!-- Powered by -->
            <li{% if page.url contains '/poweredby.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/poweredby.html">{{ site.data.i18n[page.language].powered_by }}</a></li>


            &nbsp;
            <!-- Second menu section aims to support Flink users -->

            <!-- Downloads -->
            <li{% if page.url contains '/downloads.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/downloads.html">{{ site.data.i18n[page.language].downloads }}</a></li>

            <!-- Getting Started -->
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{ site.data.i18n[page.language].getting_started }}<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="{{ site.docs-stable }}/{% if page.language != 'en' %}{{ page.language }}/{% endif %}getting-started/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="{{ site.docs-statefun-stable }}/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
              </ul>
            </li>

            <!-- Documentation -->
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">{{ site.data.i18n[page.language].documentation }}<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="{{ site.docs-stable }}" target="_blank">Flink {{site.FLINK_VERSION_STABLE_SHORT}} (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="{{ site.docs-snapshot }}" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="{{ site.docs-statefun-stable }}" target="_blank">Flink Stateful Functions {{site.FLINK_STATEFUN_STABLE_SHORT}} (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="{{ site.docs-statefun-snapshot }}" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
              </ul>
            </li>

            <!-- getting help -->
            <li{% if page.url contains '/gettinghelp.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/gettinghelp.html">{{ site.data.i18n[page.language].getting_help }}</a></li>

            <!-- Blog -->
            <li{% if page.url contains '/blog/' or page.url contains '/news/' or page.url contains '/features/' %} class="active"{% endif %}><a href="{{ site.baseurl }}/blog/"><b>{{ site.data.i18n[page.language].flink_blog }}</b></a></li>


            <!-- Flink-packages -->
            <li>
              <a href="https://flink-packages.org" target="_blank">{{ site.data.i18n[page.language].packages }} <small><span class="glyphicon glyphicon-new-window"></span></small></a>
            </li>
            &nbsp;

            <!-- Third menu section aim to support community and contributors -->

            <!-- Community -->
            <li{% if page.url contains '/community.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/community.html">{{ site.data.i18n[page.language].community_project }}</a></li>

            <!-- Roadmap -->
            <li{% if page.url contains '/roadmap.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/roadmap.html">{{ site.data.i18n[page.language].roadmap }}</a></li>

            <!-- Contribute -->
            <li{% if page.url contains '/contributing/how-to-contribute.html' %} class="active"{% endif %}><a href="{{ baseurl_i18n }}/contributing/how-to-contribute.html">{{ site.data.i18n[page.language].how_to_contribute }}</a></li>
            {% if page.url contains '/contributing/' %}
            <ul class="nav navbar-nav navbar-subnav">
              <li {% if page.url contains '/contributing/contribute-code.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/contribute-code.html">{{ site.data.i18n[page.language].contribute_code }}</a>
              </li>
              <li {% if page.url contains '/contributing/reviewing-prs.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/reviewing-prs.html">{{ site.data.i18n[page.language].review_code }}</a>
              </li>
              <li {% if page.url contains '/contributing/code-style-and-quality-preamble.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/code-style-and-quality-preamble.html">{{ site.data.i18n[page.language].code_style_guide }}</a>
              </li>
              <li {% if page.url contains '/contributing/contribute-documentation.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/contribute-documentation.html">{{ site.data.i18n[page.language].contribute_docs }}</a>
              </li>
              <li {% if page.url contains '/contributing/docs-style.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/docs-style.html">{{ site.data.i18n[page.language].docs_style_guide }}</a>
              </li>
              <li {% if page.url contains '/contributing/improve-website.html' %} class="active"{% endif %}>
                  <a href="{{ baseurl_i18n }}/contributing/improve-website.html">{{ site.data.i18n[page.language].contribute_website }}</a>
              </li>
            </ul>
            {% endif %}

            <!-- GitHub -->
            <li>
              <a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
            </li>

            &nbsp;

            <!-- Language Switcher -->
            <li>
              {% if page.is_default_language %}
                {% if page.url contains '/blog/' or page.url contains '/news/' or page.url contains '/features/' %}
                  <!-- link to the Chinese home page when current is blog page -->
                  <a href="{{ site.baseurl }}/zh">中文版</a>
                {% else %}
                  <a href="{{ site.baseurl }}/zh{{ page.url }}">中文版</a>
                {% endif %}
              {% else %}
                <a href="{{ site.baseurl }}{{ page.url | remove_first: 'zh/' }}">English</a>
              {% endif %}
            </li>

          </ul>

          <ul class="nav navbar-nav navbar-bottom">
          <hr />

            <!-- Twitter -->
            <li><a href="{{ site.twitter }}" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

            <!-- Visualizer -->
            <li class="{% if page.url contains '/visualizer/' %} active{% endif %} hidden-md hidden-sm"><a href="{{ site.baseurl }}/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

          <hr />

            <li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

            <li>
              <style>
                .smalllinks:link {
                  display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
                }
              </style>

              <a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
            </li>

          </ul>
        </div><!-- /.navbar-collapse -->
    </nav>
