---
layout: default
---
{% assign tour_pages = site.data.tour.docs %}  
{% for p in tour_pages %}
  {% assign doc_url = p | prepend: '/tour/' | append: '/' %}
  {% if doc_url == page.url %}
    {% assign tour_num = forloop.index %}
    {% if forloop.first %}
      {% assign previous = -1 %}
    {% else %}
      {% assign previous = forloop.index0 | minus: 1 %}
      {% assign previous_page = tour_pages[previous] | prepend:"/tour/" | append:"/" %}
    {% endif %}
    {% if forloop.last %}
      {% assign next = 0 %}
    {% else %}
      {% assign next = forloop.index0 | plus: 1 %}
      {% assign next_page = tour_pages[next] | prepend:"/tour/" | append:"/" %}
    {% endif %}
  {% endif %}
{% endfor %}

<div id="tour-header">
  <h2><a href="/tour/">Fluo Tour</a>: {{ page.title }}</h2>
  <p class="text-muted">Tour page {{ tour_num }} of {{ tour_pages.size }}</p>
</div>
<div id="tour-content">
  {{ content }}
</div>

<script>
document.body.onkeyup = function(e){
{% if previous >= 0 %}
if (e.keyCode == '37') { window.location = '{{previous_page}}'; }
{% endif %}

{% if next > 0 %}
if (e.keyCode == '39') { window.location = '{{next_page}}'; }
{% endif %}
};
</script>

<div class="text-center">
 
  <h2> 
    {% if previous >= 0 %}
    <a href="{{ previous_page }}">&lt;</a> 
    {% endif %}

    {{ tour_num }} / {{ tour_pages.size }} 
    {% if next > 0 %}
    <a href="{{ next_page }}">&gt;</a> 
    {% endif %}
  </h2>
</div>
