OLD | NEW |
1 "use strict"; | 1 "use strict"; |
2 | 2 |
3 (function() | 3 (function() |
4 { | 4 { |
5 function escapeRegExp(string) | 5 function escapeRegExp(string) |
6 { | 6 { |
7 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); | 7 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); |
8 } | 8 } |
9 | 9 |
10 function hasClass(element, className) | 10 function hasClass(element, className) |
(...skipping 29 matching lines...) Expand all Loading... |
40 { | 40 { |
41 if (typeof window.event !== "undefined" | 41 if (typeof window.event !== "undefined" |
42 && typeof window.event.cancelBubble !== "undefined") | 42 && typeof window.event.cancelBubble !== "undefined") |
43 window.event.cancelBubble = true; | 43 window.event.cancelBubble = true; |
44 else | 44 else |
45 event.stopPropagation(); | 45 event.stopPropagation(); |
46 } | 46 } |
47 | 47 |
48 function initLanguageSelection() | 48 function initLanguageSelection() |
49 { | 49 { |
50 var language = document.getElementById("language"); | 50 var locale = document.getElementById("locale-selected"); |
51 | 51 |
52 // skip if page does not have language selection (EG: blog) | 52 // skip if page does not have language selection (EG: blog) |
53 if (!language) | 53 if (!locale) |
54 return; | 54 return; |
55 | 55 |
56 var languageSelection = language.getElementsByTagName("ul")[0]; | 56 locale.onclick = function() |
57 | |
58 document.documentElement.onclick = function() | |
59 { | 57 { |
60 removeClass(languageSelection, "visible"); | 58 toggleClass(document.getElementById("locale-menu"), "visible"); |
61 }; | |
62 | |
63 language.onclick = function(event) | |
64 { | |
65 if (hasClass(languageSelection, "visible")) | |
66 return; | |
67 | |
68 addClass(languageSelection, "visible"); | |
69 stopPropagation(event); | |
70 }; | 59 }; |
71 } | 60 } |
72 | 61 |
73 function navigationClick(event) | 62 function navigationClick(event) |
74 { | 63 { |
75 var element = event.target; | 64 toggleClass(document.getElementById("navbar-menu"), "visible"); |
76 while (true) | |
77 { | |
78 if (!element) | |
79 return; | |
80 | |
81 if (hasClass(element, "selected") || element.id == "hamburger") | |
82 { | |
83 if ("querySelector" in document) | |
84 { | |
85 event.preventDefault(); | |
86 toggleClass(document.querySelector("header nav > ul"), "visible"); | |
87 } | |
88 return false; | |
89 } | |
90 element = element.parentElement; | |
91 } | |
92 } | 65 } |
93 | 66 |
94 function initMenu() | 67 function initMenu() |
95 { | 68 { |
96 if ("querySelector" in document) | 69 document.getElementById("menu-toggle").onclick = navigationClick; |
97 document.querySelector("header nav").onclick = navigationClick; | |
98 } | 70 } |
99 | 71 |
100 function initFooterSection(section) | 72 function initFooterSection(section) |
101 { | 73 { |
102 var header = section.getElementsByTagName("h1")[0]; | 74 var header = section.getElementsByTagName("h1")[0]; |
103 header.onclick = function() | 75 header.onclick = function() |
104 { | 76 { |
105 toggleClass(section, "visible"); | 77 toggleClass(section, "visible"); |
106 }; | 78 }; |
107 } | 79 } |
108 | 80 |
109 function initFooter() | 81 function initFooter() |
110 { | 82 { |
111 var footerContent = document.getElementById("footer-content"); | 83 var footerContent = document.getElementById("footer-content"); |
112 var footerNav = footerContent.getElementsByTagName("nav")[0]; | 84 var footerNav = footerContent.getElementsByTagName("nav")[0]; |
113 var footerNavSections = footerNav.getElementsByTagName("section"); | 85 var footerNavSections = footerNav.getElementsByTagName("section"); |
114 | 86 |
115 for (var i = 0; i < footerNavSections.length; i++) | 87 for (var i = 0; i < footerNavSections.length; i++) |
116 { | 88 { |
117 var section = footerNavSections[i]; | 89 var section = footerNavSections[i]; |
118 initFooterSection(section); | 90 initFooterSection(section); |
119 } | 91 } |
120 } | 92 } |
121 | 93 |
122 initLanguageSelection(); | 94 initLanguageSelection(); |
123 initMenu(); | 95 initMenu(); |
124 initFooter(); | 96 initFooter(); |
125 })(); | 97 })(); |
OLD | NEW |