1var Slick = (function(){ 2 3 var $nav = jQuery(document.querySelector('#navigation ul')), 4 bodyClass = document.body.classList, 5 autoStyling = bodyClass.contains('TT2')?false:true, 6 snav, 7 btn 8 9 $nav.slicknav({ 10 beforeClose:function(t){ 11 if(t[0] === btn) 12 btn.setAttribute('aria-expanded','false') 13 }, 14 beforeOpen:function($t){ 15 var t = $t[0] 16 if(t === btn){ 17 btn.setAttribute('aria-expanded','true') 18} 19 else{ 20 var open = Array.from(snav.querySelectorAll('.slicknav_open')) 21 filtered = open.filter(function(li){ 22 let a = li.firstElementChild 23 return (a != t && li != btn) 24 }) 25 26 filtered.forEach(function(li){ 27 let a = li.firstElementChild, 28 ul = a.nextElementSibling 29 30 if (!ul.contains(t.firstElementChild)) 31 _forceCloseDropdown(a) 32 }) 33 } 34 }, 35 label: 'Menu', 36 parentTag: 'span', 37 allowParentLinks: false 38 }) 39 40 document.querySelector('.slicknav_nav').classList.add('u-c') 41 42 snav = document.querySelector('.slicknav_menu') 43 44 // Move skip navigation links 45 var snl = document.querySelector('.skip-main') 46 if (snl){ 47 snav.parentNode.insertBefore(snl,snav) 48 } 49 50 btn = snav.querySelector('.slicknav_btn') 51 52 btn.setAttribute('aria-expanded','false') 53 54 var spans = snav.querySelectorAll('.slicknav_parent>span') 55 if (spans && spans.length){ 56 spans.forEach(function(s){ 57 let p = s.parentNode, 58 a = s.firstElementChild, 59 arrow = s.querySelector('.slicknav_arrow') 60 61 a.setAttribute('role','menuitem') 62 a.removeAttribute('aria-hidden') 63 a.removeAttribute('tabindex') 64 a.classList.add('slicknav_item','slicknav_row') 65 66 arrow.setAttribute('aria-hidden','true') 67 a.append(arrow) 68 69 while(s.firstChild) 70 p.insertBefore(s.firstChild,s) 71 72 p.removeChild(s) 73 }) 74 } 75 76 function _forceCloseDropdown(a){ 77 let li = a.parentElement, 78 ul = a.nextElementSibling 79 80 a.querySelector('.slicknav_arrow').innerHTML = "âº" 81 a.setAttribute('aria-expanded','false') 82 83 li.classList.remove('slicknav_open') 84 li.classList.add('slicknav_collapsed') 85 86 ul.classList.add('slicknav_hidden') 87 ul.setAttribute('aria-hidden','true') 88 setTimeout(function(){ul.style.display = 'none'},10) 89 } 90 91 function _toggleDropdown(a){ 92 let expanded = a.getAttribute('aria-expanded'), 93 li = a.parentElement, 94 ul = a.nextElementSibling 95 96 if (expanded == 'true'){ 97 a.setAttribute('aria-expanded','false') 98 99 let childDropdowns = ul.querySelectorAll('.slicknav_open>.has-dropdown') 100 if (ul && childDropdowns.length){ 101 childDropdowns.forEach(function(_a){ 102 _forceCloseDropdown(_a) 103 }) 104 } 105 } 106 else{ 107 a.setAttribute('aria-expanded','true') 108 } 109 } 110 111 const uls = snav.querySelectorAll('.slicknav_nav ul') 112 if (uls && uls.length){ 113 uls.forEach(function(ul){ 114 let a = ul.previousElementSibling 115 a.classList.add('has-dropdown') 116 }); 117 } 118 119 var dropdowns = snav.querySelectorAll('.has-dropdown') 120 if (dropdowns && dropdowns.length){ 121 dropdowns.forEach(function(a){ 122 let ul = a.nextElementSibling 123 124 if (!ul.children.length) 125 return false 126 127 let first = ul.firstElementChild.firstElementChild, 128 last = ul.lastElementChild.firstElementChild 129 130 a.addEventListener('click',function(e){ 131 _toggleDropdown(a) 132 }) 133 134 a.addEventListener('keydown',function(e){ 135 let key = e.keyCode || e.which 136 137 if (key == 13) //enter 138 _toggleDropdown(a) 139 }) 140 141 a.addEventListener('keydown',function(e){ 142 let key = e.keyCode || e.which 143 144 if (key == 9 && (e.shiftKey && key == 9)){ //tab 145 let expanded = this.getAttribute('aria-expanded') 146 if (expanded == 'true') 147 _forceCloseDropdown(this) 148 } 149 }) 150 151 if (!Object.is(first, null)) { 152 first.addEventListener('keydown',function(e){ 153 let key = e.keyCode || e.which 154 155 if (key == 9 && (e.shiftKey && key == 9)) //tab 156 _forceCloseDropdown(a) 157 }) 158 } 159 160 if (!Object.is(last, null)){ 161 last.addEventListener('keydown',function(e){ 162 let key = e.keyCode || e.which 163 164 if (key == 9 && !(e.shiftKey && key == 9)) //tab 165 _forceCloseDropdown(a) 166 }) 167 } 168 }) 169 } 170 171 172 var as = snav.querySelectorAll('.slicknav_nav a') 173 174 // Handle empty/non-navigable hrefs 175 as.forEach(function(a){
176 var h = a.getAttribute('href') 177 if (h === 'javascript:void(0);' || h === '' || h === '#' || h === '-empty-' ) { 178 a.removeAttribute('href') 179 } 180 else if (a.hasAttribute('href') && !a.classList.contains('has-dropdown')) { 181 a.addEventListener('click', function (e) { 182 if (!this.classList.contains('external') && !this.classList.contains('target_blank') && this.target != '_blank'){ 183 window.location = this.href 184 e.stopImmediatePropagation() 185 } 186 },false) 187 } 188 }) 189 190 // Close Slicknav when focusing out of last focusable navigation item 191 var lastA = as[as.length - 1], 192 lastTopLevelA = snav.querySelector('.slicknav_nav').lastElementChild.firstElementChild 193 194 lastA.addEventListener('keydown',function(e){ 195 var keyCode = e.keyCode || e.which; 196 if (keyCode == 9 && !(event.shiftKey && event.keyCode == 9)) { 197 $nav.slicknav('close') 198 } 199 }) 200 201 if (lastA != lastTopLevelA){ 202 lastTopLevelA.addEventListener('keydown',function(e){ 203 var hasdd = this.classList.contains('has-dropdown'), 204 expanded = this.getAttribute('aria-expanded'), 205 keyCode = e.keyCode || e.which; 206 207 if ((keyCode == 9 && !(event.shiftKey && event.keyCode == 9))) { 208 if (!hasdd || hasdd && expanded == 'false'){ 209 $nav.slicknav('close') 210 } 211 } 212 }) 213 } 214 215 // Handle Layout Variations 216 // Clone login link 217 var ll = document.querySelector('#navigation .top-link.log-in a') 218 if (ll) 219 document.querySelector('.slicknav_menu').insertAdjacentElement('beforeend',ll.cloneNode()) 220 // Clone logo 221 var hl = document.querySelector('.header-logo') 222 if (bodyClass.contains('_245') && hl) 223 snav.insertAdjacentElement('afterbegin',hl.cloneNode()) 224 // Clone additional links 225 if (bodyClass.contains('_21')) { 226 var adtl = document.querySelectorAll('.additionalLinks ul li') 227 228 $(adtl).each(function() { 229 $(this).clone().addClass('additional-link').appendTo('.slicknav_nav') 230 }) 231 } 232 // Change home text 233 var sh = document.querySelector('ul.slicknav_nav li.home a') 234 if (bodyClass.contains('_27') && sh) 235 sh.innerText = 'Home' 236 237 238 // Set browser transparency values 239 var te = document.createElement('div') 240 te.setAttribute('id','transparentElement') 241 document.body.appendChild(te) 242 243 var $te = jQuery(te), 244 transparentStrings = { 245 background:$te.css('background'), 246 backgroundImage:$te.css('background-image'), 247 backgroundColor:$te.css('background-color') 248 } 249 250 251 function styleNav(){ 252 var $nc = jQuery('#navigationContainer'), 253 $n = jQuery('#navigation'), 254 $nUL = $n.find('.nav_ul:first') 255 256 function checkBackground ($el) { 257 var ts = transparentStrings 258 259 if ($el.css('background') == ts.background && $el.css('background-image') == ts.backgroundImage) 260 return $el.css('background-color') 261 else if ($el.css('background') == ts.background && $el.css('background-color') == ts.backgroundColor) 262 return $el.css('background-image') 263 else if ($el.css('background') != ts.background) 264 return $el.css('background') 265 else 266 return undefined 267 } 268 269 // Style background colors of navigation items 270 // bdid-88 Team Sites handle background styling in stylesheets 271 if (!(bodyClass.contains('_33') && bodyClass.contains('_88'))) { 272 // Outer 273 var ncBG = checkBackground($nc), 274 nBG = checkBackground($n) 275 276 if (ncBG != 'none' && ncBG != 'transparent' && ncBG != 'undefined' && ncBG != 'rgba(0, 0, 0, 0)') 277 snav.style.background = ncBG 278 else 279 snav.style.background = nBG 280 281 // Inner 282 if (!bodyClass.contains('_21')){ 283 var innerBG = checkBackground(jQuery(document.querySelector('#navigation ul ul'))) 284 285 $('.slicknav_menu ul ul').css({background:innerBG}) 286 } 287 } 288 289 // Style text/link color of navigation items 290 var $a = $n.find('a'), 291 bars = snav.querySelectorAll('.slicknav_icon-bar'), 292 topC = $nUL.find('>li:not(.home)>a').css('color'), 293 inner1C = $nUL.find('>li:not(.first)>ul>li>a:first').css('color'), 294 inner2C = $nUL.find('>li:not(.first)>ul>li>ul>li>a:first').css('color') 295 296 $a.css('color','') 297 298 // Assign colors 299 bars.forEach(function(el){ 300 el.style.background = topC 301 }) 302 btn.style.color = topC 303 jQuery('.slicknav_nav>li>a').css('color',topC) 304 jQuery('.slicknav_nav>li>span').css('color',topC) 305 306 jQuery('.slicknav_nav>li>ul>li').css('color',inner1C) 307 jQuery('.slicknav_nav>li>ul>li>ul>li>a').css('color',inner2C) 308} 309 310 if (autoStyling) 311 styleNav() 312 313 return { 314 autoStyling:autoStyling, 315 styleNav:styleNav 316 } 317})();
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.