1/*! 2 * classie - class helper functions 3 * from bonzo https://github.com/ded/bonzo 4 * 5 * classie.has( elem, 'my-class' ) -> true/false 6 * classie.add( elem, 'my-new-class' ) 7 * classie.remove( elem, 'my-unwanted-class' ) 8 * classie.toggle( elem, 'my-class' ) 9 */ 10(function(e) { 11 "use strict"; 12 function t(e) { 13 return new RegExp("(^|\\s+)" + e + "(\\s+|$)"); 14 } 15 function s(e, t) { 16 var s = n(e, t) ? i : r; 17 s(e, t); 18 } 19 var n, r, i; 20 if ("classList" in document.documentElement) { 21 n = function(e, t) { 22 return e.classList.contains(t); 23 }; 24 r = function(e, t) { 25 e.classList.add(t); 26 }; 27 i = function(e, t) { 28 e.classList.remove(t); 29 }; 30 } else { 31 n = function(e, n) { 32 return t(n).test(e.className); 33 }; 34 r = function(e, t) { 35 if (!n(e, t)) { 36 e.className = e.className + " " + t; 37 } 38 }; 39 i = function(e, n) { 40 e.className = e.className.replace(t(n), " "); 41 }; 42 } 43 var o = { 44 hasClass: n, 45 addClass: r, 46 removeClass: i, 47 toggleClass: s, 48 has: n, 49 add: r, 50 remove: i, 51 toggle: s 52 }; 53 if (typeof define === "function" && define.amd) { 54 define(o); 55 } else { 56 e.classie = o; 57 } 58})(window); 59 60/** 61 * sidebarEffects.js v1.0.0 62 * http://www.codrops.com 63 * 64 * Licensed under the MIT license. 65 * https://www.opensource.org/licenses/mit-license.php 66 * 67 * Copyright 2013, Codrops 68 * http://www.codrops.com 69 */ 70 71/* 72 * ARIA Modifications made for the @A11YProject 73 * by @gryghostvisuals & @svinkle 74 */ 75var SidebarMenuEffects = (function() { 76 function hasParentClass(e, classname) { 77 if (e === document) return false; 78 79 if (classie.has(e, classname)) { 80 return true; 81 } 82 83 return e.parentNode && hasParentClass(e.parentNode, classname); 84 } 85 86 // http://coveroverflow.com/a/11381730/989439 87 function mobilecheck() { 88 var check = false; 89 (function(a) { 90 if ( 91 /(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test( 92 a 93 ) || 94 /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( 95 a.substr(0, 4) 96 ) 97 ) 98 check = true; 99 })(navigator.userAgent || navigator.vendor || window.opera); 100 return check; 101 } 102 103 function init() { 104 // ARIA 105 var trigger = document.getElementById("menu-button"), 106 menu = document.getElementById("menu"); 107 108 trigger.setAttribute("aria-expanded", "false"); 109 trigger.setAttribute("aria-label", "Menu"); 110 trigger.setAttribute("aria-controls", "menu"); 111 112 menu.setAttribute("aria-hidden", "true"); 113 menu.setAttribute("aria-labelledby", "menu-button"); 114 115 var container = document.getElementById("oc-container"), 116 buttons = Array.prototype.slice.call( 117 document.querySelectorAll("#oc-trigger > button") 118 ), 119 // event type (if mobile use touch events) 120 eventtype = mobilecheck() ? "touchstart" : "click", 121 resetMenu = function() { 122 trigger.setAttribute("aria-expanded", "false"); 123 menu.setAttribute("aria-hidden", "true"); 124 classie.remove(container, "oc-menu-open"); 125 }, 126 bodyClickFn = function(evt) { 127 if (!hasParentClass(evt.target, "oc-menu")) { 128 resetMenu(); 129 document.removeEventListener(eventtype, bodyClickFn); 130 } 131 }; 132 133 buttons.forEach(function(el, i) { 134 var effect = el.getAttribute("data-effect"); 135 136 el.addEventListener(eventtype, function(ev) { 137 ev.stopPropagation(); 138 ev.preventDefault(); 139 el.setAttribute("aria-expanded", "true"); 140 menu.setAttribute("aria-hidden", "false"); 141 container.className = "oc-container"; // clear 142 classie.add(container, effect); 143 setTimeout(function() { 144 classie.add(container, "oc-menu-open"); 145 }, 25); 146 document.addEventListener(eventtype, bodyClickFn); 147 }); 148 }); 149 150 // Handle 'esc' event 151 // Keyboard Tweaks via Scott Vinkle 152 var escapeMenu = function(ev) { 153 if (ev.which === 27) { 154 ev.stopPropagation(); 155 ev.preventDefault(); 156 resetMenu(); 157 trigger.focus(); 158 } 159 }; 160 161 // PB: reset menu if X button cliked 162 var mobile_menu__close = document.getElementById("mobile-menu__close"); 163 164 mobile_menu__close.onclick = function() { 165 // alert("hello"); 166 resetMenu(); 167 return false;
168 }; 169 170 trigger.addEventListener("keydown", function(ev) { 171 escapeMenu(ev); 172 }); 173 174 menu.addEventListener("keydown", function(ev) { 175 escapeMenu(ev); 176 }); 177 } 178 179 init(); 180})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.