OLD | NEW |
1 (function(){ | 1 (function(){ |
2 document.addEventListener("DOMContentLoaded", function() | 2 document.addEventListener("DOMContentLoaded", function() |
3 { | 3 { |
4 /************************************************************************** | 4 /************************************************************************** |
5 * General | 5 * General |
6 **************************************************************************/ | 6 **************************************************************************/ |
7 | 7 |
8 document.documentElement.classList.add("js"); | 8 document.documentElement.classList.add("js"); |
9 document.documentElement.classList.remove("no-js"); | 9 document.documentElement.classList.remove("no-js"); |
10 // the class "open" was added just in case it's a no-js state | 10 // the class "open" was added just in case it's a no-js state |
11 document.getElementById("sidebar").classList.remove("open"); | 11 document.getElementById("sidebar").classList.remove("open"); |
12 | 12 |
13 /************************************************************************** | 13 /************************************************************************** |
14 * Sidebar | 14 * Sidebar |
15 **************************************************************************/ | 15 **************************************************************************/ |
16 | 16 |
17 var sidebar = document.getElementById("sidebar"); | |
18 var sidebarOpen = document.getElementById("sidebar-open"); | 17 var sidebarOpen = document.getElementById("sidebar-open"); |
19 var sidebarClose = document.getElementById("sidebar-close"); | 18 var sidebarClose = document.getElementById("sidebar-close"); |
| 19 var root = document.documentElement; |
20 | 20 |
21 sidebarOpen.addEventListener("click", function() | 21 sidebarOpen.addEventListener("click", function() |
22 { | 22 { |
23 sidebar.classList.add("open"); | 23 root.classList.add("open-sidebar"); |
24 }, false); | 24 }, false); |
25 | 25 |
26 sidebarClose.addEventListener("click", function() | 26 sidebarClose.addEventListener("click", function() |
27 { | 27 { |
28 sidebar.classList.remove("open"); | 28 root.classList.remove("open-sidebar"); |
29 }, false); | 29 }, false); |
30 | 30 |
31 | 31 |
32 /************************************************************************** | 32 /************************************************************************** |
33 * Youtube Embed | 33 * Youtube Embed |
34 **************************************************************************/ | 34 **************************************************************************/ |
35 | 35 |
36 function YoutubeEmbed(container) | 36 function YoutubeEmbed(container) |
37 { | 37 { |
38 this.container = container; | 38 this.container = container; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 else | 73 else |
74 { | 74 { |
75 this.container.classList.add("show-disclaimer"); | 75 this.container.classList.add("show-disclaimer"); |
76 this.timeClickedVideo = new Date().getTime(); | 76 this.timeClickedVideo = new Date().getTime(); |
77 } | 77 } |
78 }; | 78 }; |
79 | 79 |
80 if (document.querySelector(".youtube-embed")) | 80 if (document.querySelector(".youtube-embed")) |
81 new YoutubeEmbed(document.querySelector(".youtube-embed")); | 81 new YoutubeEmbed(document.querySelector(".youtube-embed")); |
82 | 82 |
| 83 /*************************************************************************
* |
| 84 * Header disappears on scroll down and re-appears on scroll up in small s
creens |
| 85 *************************************************************************
*/ |
| 86 |
| 87 function initNavbarToggle() |
| 88 { |
| 89 var sidebarHeight = document.getElementById("sidebar").offsetHeight; |
| 90 var scrollHandled = false; |
| 91 var lastScrollTop = 0; |
| 92 var desktopBreakpoint = 1199; |
| 93 |
| 94 // IE9 does not support offsetHeight when element is fixed |
| 95 if (!sidebarHeight) |
| 96 return; |
| 97 |
| 98 window.addEventListener("scroll", (function() |
| 99 { |
| 100 scrollHandled = false; |
| 101 })); |
| 102 |
| 103 setInterval(function() |
| 104 { |
| 105 if (window.innerWidth <= desktopBreakpoint) |
| 106 { |
| 107 root.classList.add("mobile"); |
| 108 if (!root.classList.contains("open-sidebar") && !scrollHandled) |
| 109 { |
| 110 scrollHandled = handleScroll(); |
| 111 } |
| 112 } |
| 113 else |
| 114 { |
| 115 root.classList.remove("mobile"); |
| 116 } |
| 117 }, 250); |
| 118 |
| 119 function handleScroll() |
| 120 { |
| 121 var currentScroll = window.pageYOffset; |
| 122 if (currentScroll > lastScrollTop) |
| 123 { |
| 124 root.classList.add("scrollDown"); |
| 125 } |
| 126 else |
| 127 { |
| 128 root.classList.remove("scrollDown"); |
| 129 } |
| 130 lastScrollTop = currentScroll; |
| 131 return true; |
| 132 } |
| 133 } |
| 134 |
| 135 initNavbarToggle(); |
| 136 |
83 }, false); | 137 }, false); |
| 138 |
84 }()); | 139 }()); |
OLD | NEW |