{{ define "title" }}
  {{ .Page.Title | plainify }} | {{ .Site.Title }}
{{ end }}

{{ define "main-class" }}--section layouts-blog-section{{ end }}

{{ define "main-type" }}{{ .Params.mainType }}{{ end }}

{{ define "footer-scripts" }}
<script>
  // Source: https://css-tricks.com/the-complete-guide-to-lazy-loading-images/
  document.addEventListener("DOMContentLoaded", function() {
    var lazyloadImages;    

    if ("IntersectionObserver" in window) {
      lazyloadImages = document.querySelectorAll(".lazy");
      var imageObserver = new IntersectionObserver(function(entries, observer) {
        entries.forEach(function(entry) {
          if (entry.isIntersecting) {
            console.log("Ding");
            var image = entry.target;
            image.classList.remove("lazy");
            imageObserver.unobserve(image);
          }
        });
      });

      lazyloadImages.forEach(function(image) {
        imageObserver.observe(image);
      });
    } else {  
      var lazyloadThrottleTimeout;
      lazyloadImages = document.querySelectorAll(".lazy");
      
      function lazyload () {
        if(lazyloadThrottleTimeout) {
          clearTimeout(lazyloadThrottleTimeout);
        }    

        lazyloadThrottleTimeout = setTimeout(function() {
          var scrollTop = window.pageYOffset;
          lazyloadImages.forEach(function(img) {
              if(img.offsetTop < (window.innerHeight + scrollTop)) {
                img.src = img.dataset.src;
                img.classList.remove('lazy');
              }
          });
          if(lazyloadImages.length == 0) { 
            document.removeEventListener("scroll", lazyload);
            window.removeEventListener("resize", lazyload);
            window.removeEventListener("orientationChange", lazyload);
          }
        }, 20);
      }

      document.addEventListener("scroll", lazyload);
      window.addEventListener("resize", lazyload);
      window.addEventListener("orientationChange", lazyload);
    }
  });
</script>
{{ end }}

{{ define "main-header" }}
  <header class="site-content__header">
    <h2 class="page-title">{{ .Title | safeHTML }}
    {{ if eq .Type "blog" }}
       {{ with .GetPage "blog/posts" }}
          {{ range .AlternativeOutputFormats -}}
            <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
               <img class="feed-icon" alt="RSS feed" src="{{ $.Site.Params.feedIcon }}">
            </a>
          {{ end }}
       {{ end }}
    {{ else }}
      {{ range .AlternativeOutputFormats -}}
        <a href="{{ .RelPermalink }}" aria-label="{{ $.Title }} RSS feed">
          <img class="feed-icon" alt="RSS feed" src="{{ $.Site.Params.feedIcon }}">
        </a>
      {{ end }}
    {{ end }}
    </h2>
    {{ .Content }}
    
    <nav class="page-header__minor-links">
      <ul class="minor-links__categories">
          <li><a href="/series"><h3>Series’</h3></a> <p>({{ len .Site.Taxonomies.series }})</p></li>
          {{ range .Site.Taxonomies.categories }}
          <li><a href="{{ .Page.RelPermalink }}"><h3>{{ .Page.Title | safeHTML }}</h3></a> <p>({{ len . }})</p></li>  
          {{ end }}
      </ul>
      {{ if eq .Type "blog" }}
        {{ with .GetPage "blog/posts" }}
          {{ partial "years-list.html" . }}
        {{ end }}
      {{ else }}
          {{ partial "years-list.html" . }}
      {{ end }}
    </nav>
  </header>
{{ end }}

{{ define "main-body" }}
  {{ if eq .Type "blog" }}
     {{ with .GetPage "blog/posts" }}
        {{ partial "items-grid.html" . }}
     {{ end }}
  {{ else }}
      {{ partial "items-grid.html" . }}
  {{ end }}
{{ end }}