1// must be loaded at the end of the body element 2(function(){ 3 var addEvent = function(element, events, func){ 4 events = events.split(' '); 5 for (var i = 0; i < events.length; i++) { 6 if(element.addEventListener){ 7 element.addEventListener(events[i], func, false); 8 } 9 else{ 10 element.attachEvent('on'+events[i], func); 11 } 12 } 13 }, 14 triggerEvent = function(element, eventName) { 15 var evt = document.createEvent('HTMLEvents'); 16 evt.initEvent(eventName, true, true); 17 element.dispatchEvent(evt); 18 }, 19 eventPreventDefault = function(event){ 20 event = event || window.event; 21 if (!event) { 22 return; 23 } 24 if(event.preventDefault){ 25 event.preventDefault(); 26 } 27 else{ 28 event.returnValue = false; 29 } 30 }, 31 eventStop = function(event) { 32 event = event || window.event; 33 if (!event) { 34 return; 35 } 36 if(event.stopPropagation){ 37 event.stopPropagation(); 38 } 39 else{ 40 event.cancelBubble = true; 41 } 42 }, 43 elementMatches = function(element, selector) { 44 var methods = ['matches', 'matchesSelector', 'msMatchesSelector', 'mozMatchesSelector', 'webkitMatchesSelector']; 45 for (var i = 0; i < methods.length; i++) { 46 if (methods[i] in element) { 47 return element[methods[i]](selector); 48 } 49 } 50 return false; 51 }, 52 addClass = function(element, className) { 53 var elements = ('length' in element && !('className' in element)) 54 ? element 55 : [element]; 56 for (var i = 0; i < elements.length; i++) { 57 if (!hasClass(elements[i], className)) { 58 elements[i].className += ' ' + className; 59 } 60 } 61 }, 62 removeClass = function(element, className) { 63 var elements = ('length' in element && !('className' in element)) 64 ? element 65 : [element]; 66 for (var i = 0; i < elements.length; i++) { 67 if (hasClass(elements[i], className)) { 68 elements[i].className = elements[i].className.replace(new RegExp('(?:^|\\s+)' + className + '(?:$|\\s+)'), ' '); 69 } 70 } 71 }, 72 hasClass = function(element, className) { 73 return !!element.className.match('(?:^|\\s)' + className + '(?:$|\\s)'); 74 }, 75 toggleClass = function(element, className) { 76 return hasClass(element, className) 77 ? removeClass(element, className) 78 : addClass(element, className); 79 }, 80 getZoomLevel = function() { 81 if (document.documentElement.clientWidth && window.innerWidth){ 82 return document.documentElement.clientWidth / window.innerWidth; 83 } 84 return 1; 85 }, 86 each = function(array, callback) { 87 if (!array || !array.length) { 88 return; 89 } 90 for (var i = 0; i < array.length; i++) { 91 callback(array[i], i); 92 } 93 }, 94 navMain = document.getElementById('main-navigation'), 95 navMainLis, i, element, navMainTouched, touchUsed; 96 97 // Main navigation search 98 (function(elements){ 99 for (var i = 0; i < elements.length; i++) { 100 addEvent(elements[i].getElementsByTagName('input')[0], 'focus', function(){ 101 addClass(this.parentNode, 'focus'); 102 }); 103 addEvent(elements[i].getElementsByTagName('button')[0], 'focus', function(){ 104 addClass(this.parentNode, 'focus'); 105 }); 106 addEvent(elements[i].getElementsByTagName('input')[0], 'blur', function(){ 107 removeClass(this.parentNode, 'focus'); 108 }); 109 addEvent(elements[i].getElementsByTagName('button')[0], 'blur', function(){ 110 removeClass(this.parentNode, 'focus'); 111 }); 112 } 113 })(document.querySelectorAll && document.querySelectorAll('.main-navigation-search')); 114 115 // Dropdown fix for all touch devices 116 if(window.Modernizr && Modernizr.touch){ 117 if(navMain && navMain.getElementsByTagName('ul').length){ 118 // devices supporting touch events may not mean touch input is used 119 // e.g. touch enabled laptops running Windows 8 120 addEvent(navMain, 'touchstart', function(event) { 121 touchUsed = true; 122 }); 123 navMainLis = navMain.getElementsByTagName('ul')[0].childNodes; 124 for(i = 0; i < navMainLis.length; i++){ 125 if(navMainLis[i].nodeName && navMainLis[i].nodeName.toLowerCase() === 'li' && navMainLis[i].querySelector('ul,.mega-dropdown')){ 126 element = navMainLis[i].getElementsByTagName('a'); 127 if(element && (element = element[0])){ 128 addEvent(element, 'click', function(event){ 129 if(navMainTouched !== this && touchUsed){ 130 navMainTouched = this; 131 eventPreventDefault(event); 132 } 133 }); 134 } 135 } 136 } 137 } 138 } 139 140 // Fixed elements 141 (function(header, tagline) { 142 143 if (!header) { 144 return; 145 } 146 147 var nav = header.querySelector('.header-navigation-inner'); 148 var bar = header.querySelector('.header-bar'); 149 var originalHeight; 150 var originalNavHeight; 151 var originalBarHeight; 152 var minNavHeight; 153 var minBarHeight; 154 155 var resetStyles = function() { 156 removeClass(header, 'is-fixed'); 157 header.parentNode.style.paddingTop = ''; 158 if (nav) { 159 nav.style.height = ''; 160 } 161 if (bar) { 162 bar.style.overflow = ''; 163 bar.style.height = ''; 164 } 165 if (tagline) { 166 tagline.parentNode.style.overflow = ''; 167 tagline.style.transform = tagline.style.WebkitTransform = ''; 168 tagline.style.opacity = ''; 169 } 170 }; 171 172 var updateOriginalValues = function() { 173 resetStyles(); 174 originalHeight = header.offsetHeight; 175 originalNavHeight = nav && nav.offsetHeight; 176 originalBarHeight = bar && bar.offsetHeight; 177 if (nav) { 178 nav.style.height = 0; 179 } 180 if (bar) { 181 bar.style.height = 0; 182 } 183 minNavHeight = nav && nav.offsetHeight; 184 minBarHeight = bar && bar.offsetHeight; 185 if (nav) { 186 nav.style.height = ''; 187 } 188 if (bar) { 189 bar.style.height = ''; 190 } 191 }; 192 193 updateOriginalValues(); 194 195 var scroll = function() { 196 197 if (getZoomLevel() > 1.01 || (window.matchMedia && window.matchMedia("(max-width: 900px)").matches)) { 198 resetStyles(); 199 return; 200 } 201 202 var taglineHeight = tagline && tagline.offsetHeight; 203 var documentHeight = window.innerHeight || document.documentElement.clientHeight; 204 var offset = window.pageYOffset || document.documentElement.scrollTop || 0; 205 206 // Only allow scroll positions inside the possible range 207 offset = Math.min( 208 document.documentElement.scrollHeight - documentHeight, 209 offset 210 ); 211 offset = Math.max(0, offset); 212 213 addClass(header, 'is-fixed'); 214 header.parentNode.style.paddingTop = originalHeight + 'px'; 215 216 if (nav) { 217 nav.style.height = Math.max(minNavHeight, originalNavHeight - offset) + 'px'; 218 offset -= originalNavHeight - Math.max(minNavHeight, originalNavHeight - offset); 219 } 220 221 if (bar) { 222 if (offset > 0) { 223 bar.style.overflow = 'hidden'; 224 } 225 else { 226 bar.style.overflow = ''; 227 } 228 bar.style.height = Math.max(minBarHeight, originalBarHeight - offset) + 'px'; 229 offset -= originalBarHeight - Math.max(minBarHeight, originalBarHeight - offset); 230 } 231 232 if (tagline) { 233 if ( 234 offset > 0 235 && offset < taglineHeight 236 && taglineHeight + originalHeight < documentHeight 237 ) { 238 tagline.parentNode.style.overflow = 'hidden'; 239 tagline.style.transform = tagline.style.WebkitTransform = 240 'translate3d(0,' 241 + Math.round(Math.min(offset, taglineHeight) / 2) + 'px,0)'; 242 tagline.style.opacity = (taglineHeight - (offset / 1.5)) / taglineHeight; 243 } 244 else { 245 tagline.parentNode.style.overflow = ''; 246 tagline.style.transform = tagline.style.WebkitTransform = 'translate3d(0,
2460,0)'; 247 tagline.style.opacity = ''; 248 } 249 } 250 251 }; 252 253 addEvent(window, 'resize load', updateOriginalValues); 254 addEvent(window, 'scroll resize load', scroll); 255 scroll(); 256 257 })( 258 document.querySelector && document.querySelector('.page-header'), 259 document.querySelector && document.querySelector('.tagline-inner') 260 ); 261 262 // Mobile navigation 263 (function(nav, page) { 264 if (!nav) { 265 return; 266 } 267 document.body.insertBefore(nav, document.body.firstChild); 268 var navLink; 269 var isOpened; 270 var open, close; 271 var updateHeight = function() { 272 if (!isOpened) { 273 return; 274 } 275 if (!nav.offsetHeight) { 276 // Close the nav if it is not visible anymore 277 return close(); 278 } 279 nav.style.minHeight = 0; 280 page.style.height = Math.max((window.innerHeight || document.documentElement.clientHeight), nav.offsetHeight) + 'px'; 281 page.style.position = 'relative'; 282 page.style.overflow = 'hidden'; 283 nav.style.minHeight = ''; 284 }; 285 open = function() { 286 isOpened = true; 287 addClass(nav, 'is-active'); 288 updateHeight(); 289 }; 290 close = function() { 291 isOpened = false; 292 removeClass(nav, 'is-active'); 293 page.style.height = ''; 294 page.style.position = ''; 295 page.style.overflow = ''; 296 }; 297 addEvent(window, 'resize', updateHeight); 298 addClass(nav, 'is-enabled'); 299 navLink = document.createElement('a'); 300 navLink.innerHTML = 'navigation'; 301 navLink.href = ''; 302 addClass(navLink, 'main-navigation-mobile-open'); 303 addEvent(navLink, 'click', function(event) { 304 eventPreventDefault(event); 305 if (hasClass(nav, 'is-active')) { 306 close(); 307 } 308 else { 309 open(); 310 } 311 }); 312 if (document.querySelector && document.querySelector('.page')) { 313 document.querySelector('.page').insertBefore( 314 navLink, 315 document.querySelector('.page').firstChild 316 ); 317 } 318 else { 319 nav.parentNode.insertBefore(navLink, nav); 320 } 321 closeButton = document.createElement('button'); 322 closeButton.innerHTML = 'close'; 323 addClass(closeButton, 'main-navigation-mobile-close'); 324 addEvent(closeButton, 'click', function(event) { 325 if (isOpened) { 326 close(); 327 } 328 eventPreventDefault(event); 329 }); 330 nav.appendChild(closeButton); 331 var uls = nav.querySelectorAll('ul ul'); 332 var button; 333 var buttonOnClick = function(event) { 334 toggleClass(this.parentNode, 'is-expanded'); 335 toggleClass(this.parentNode, 'is-collapsed'); 336 updateHeight(); 337 }; 338 for (var i = 0; i < uls.length; i++) { 339 button = document.createElement('button'); 340 button.innerHTML = 'expand'; 341 button.className = 'main-navigation-mobile-expand'; 342 addEvent(button, 'click', buttonOnClick); 343 uls[i].parentNode.insertBefore(button, uls[i]); 344 if (hasClass(uls[i].parentNode, 'active') || hasClass(uls[i].parentNode, 'trail')) { 345 addClass(uls[i].parentNode, 'is-expanded'); 346 } 347 else { 348 addClass(uls[i].parentNode, 'is-collapsed'); 349 } 350 } 351 })( 352 document.querySelector && document.querySelector('.main-navigation-mobile'), 353 document.querySelector && document.querySelector('.page') 354 ); 355 356 // Animations 357 (function() { 358 359 if (!window.Modernizr || !Modernizr.csstransitions) { 360 return; 361 } 362 363 var getCounterValue = function(data, multiplier) { 364 var value = data.number * multiplier; 365 return data.prefix 366 + value.toFixed(data.precision).split('.').join(data.separator) 367 + data.suffix; 368 }; 369 370 var initCounterAnimation = function(element) { 371 if (!element.counterAnimationData) { 372 var value = element.innerHTML; 373 var matches = /^(.*?)(-?[0-9,.]*\d)(.*)$/.exec(value); 374 if (!matches || !matches.length) { 375 return; 376 } 377 var separator = matches[2].indexOf(',') > 0 ? ',' : '.'; 378 matches[2] = matches[2].split(',').join('.'); 379 if (isNaN(matches[2] * 1)) { 380 return; 381 } 382 element.counterAnimationData = { 383 original: value, 384 prefix: matches[1], 385 suffix: matches[3], 386 number: matches[2] * 1, 387 precision: Math.max( 388 0, 389 matches[2].length - matches[2].split('.')[0].length - 1 390 ), 391 separator: separator, 392 duration: (element.getAttribute('data-animation-duration') || 1000) * 1 393 }; 394 } 395 element.innerHTML = getCounterValue(element.counterAnimationData, 0); 396 }; 397 398 var counterAnimations = []; 399 400 var runCounterAnimation = function() { 401 var animations = []; 402 var animation; 403 var multiplier; 404 for (var i = 0; i < counterAnimations.length; i++) { 405 animation = counterAnimations[i]; 406 multiplier = Math.min(1, ( 407 new Date().getTime() - animation.start 408 ) / animation.data.duration); 409 if (multiplier < 1) { 410 animation.element.innerHTML = getCounterValue( 411 animation.data, 412 multiplier 413 ); 414 animations.push(animation); 415 } 416 else { 417 animation.element.innerHTML = animation.data.original; 418 } 419 } 420 counterAnimations = animations; 421 if (window.requestAnimationFrame && counterAnimations.length) { 422 window.requestAnimationFrame(runCounterAnimation); 423 } 424 }; 425 426 var startCounterAnimation = function(element) { 427 if (window.requestAnimationFrame && !counterAnimations.length) { 428 window.requestAnimationFrame(runCounterAnimation); 429 } 430 counterAnimations.push({ 431 element: element, 432 data: element.counterAnimationData, 433 start: new Date().getTime() 434 }); 435 }; 436 437 var isHiddenInSlider = function (element) { 438 if (!element.slider) { 439 return false;
440 } 441 return !window.jQuery(element.element).closest('.rsts-slide').is(element.slider.getSlides()[element.slider.slideIndex].element); 442 }; 443 444 var isInView = function(element) { 445 return ( 446 (element.element.offsetWidth || element.element.offsetHeight) 447 && ( 448 element.element.getBoundingClientRect().top < (window.innerHeight || document.documentElement.clientHeight) * 0.8 449 || element.element.getBoundingClientRect().bottom <= (window.innerHeight || document.documentElement.clientHeight) 450 ) 451 && !isHiddenInSlider(element) 452 ); 453 }; 454 455 var isNotInView = function(element) { 456 return ( 457 (!element.element.offsetWidth && !element.element.offsetHeight) 458 || element.element.getBoundingClientRect().top > (window.innerHeight || document.documentElement.clientHeight) * 1.2 459 || isHiddenInSlider(element) 460 ); 461 }; 462 463 var elements = []; 464 465 var update = function() { 466 var rect; 467 each(elements, function(element) { 468 if (isInView(element)) { 469 if (element.element.counterAnimationData && !hasClass(element.element, 'in-view')) { 470 if (!hasClass(element.element, 'has-shown') || element.doesRepeat) { 471 startCounterAnimation(element.element); 472 } 473 } 474 addClass(element.element, 'in-view'); 475 addClass(element.element, 'has-shown'); 476 removeClass(element.element, 'not-in-view'); 477 } 478 else if(isNotInView(element)) { 479 if (element.element.counterAnimationData && !hasClass(element.element, 'not-in-view') && element.doesRepeat) { 480 initCounterAnimation(element.element); 481 } 482 if (element.doesRepeat) { 483 addClass(element.element, 'not-in-view'); 484 removeClass(element.element, 'in-view'); 485 } 486 } 487 }); 488 }; 489 490 var updateElements = function(wrapper) { 491 wrapper = wrapper || document; 492 var newElements = wrapper.querySelectorAll && wrapper.querySelectorAll('.is-animated'); 493 if (!newElements) { 494 return; 495 } 496 each(newElements, function(element) { 497 if ( 498 !elementMatches(element, '.not-animated *, .not-animated') 499 && elements.map(function(element) { 500 return element.element; 501 }).indexOf(element) === -1 502 ) { 503 elements.push({ 504 element: element, 505 doesRepeat: elementMatches(element, '.does-repeat *, .does-repeat'), 506 slider: window.jQuery && window.jQuery(element).closest('.rsts-main').data('rstSlider') 507 }); 508 if (hasClass(element, '-counter')) { 509 initCounterAnimation(element); 510 } 511 addClass(element, 'not-in-view'); 512 } 513 }); 514 }; 515 516 updateElements(); 517 518 addEvent(window, 'scroll resize load', update); 519 if (window.jQuery) { 520 window.jQuery('.rsts-main, .mod_rocksolid_slider').on('rsts-slidestop', function() { 521 updateElements(this); 522 update(); 523 }); 524 } 525 setTimeout(update, 0); 526 527 if (window.requestAnimationFrame) { 528 window.requestAnimationFrame(runCounterAnimation); 529 } 530 else { 531 setInterval(runCounterAnimation, 16); 532 } 533 534 })(); 535 536 // Background videos 537 (function(elements) { 538 if (!elements || !elements.length || !navigator.userAgent.match(/(iPhone|iPod)/)) { 539 return; 540 } 541 for (var i = 0; i < elements.length; i++) { 542 if (elements[i].poster) { 543 elements[i].parentNode.style.backgroundImage = 'url("' + elements[i].poster + '")'; 544 } 545 elements[i].parentNode.removeChild(elements[i]); 546 } 547 })(document.querySelectorAll && document.querySelectorAll('.centered-wrapper-background > video')); 548 549 // Moving backgrounds 550 (function(elements) { 551 if (!elements || !elements.length || navigator.userAgent.match(/(iPad|iPhone|iPod)/)) { 552 return; 553 } 554 addEvent(window, 'mousemove', function(event) { 555 var percentage; 556 for (var i = 0; i < elements.length; i++) { 557 percentage = event.clientX / ( 558 window.innerWidth || 559 document.documentElement.clientWidth 560 ); 561 if (hasClass(elements[i].parentNode, '-background-mousemove')) { 562 percentage = 1 - percentage; 563 } 564 percentage = Math.max(0, Math.min(1, percentage)); 565 elements[i].style.transform = 566 elements[i].style.webkitTransform = 567 'translate3d(' + (percentage * -10) + '%, 0, 0)'; 568 } 569 }); 570 })(document.querySelectorAll && document.querySelectorAll('.-background-mousemove-inverted > .centered-wrapper-background, .-background-mousemove > .centered-wrapper-background')); 571 572 // Parallax backgrounds 573 (function(elements) { 574 575 if (!elements || !elements.length || navigator.userAgent.match(/(iPad|iPhone|iPod)/)) { 576 return; 577 } 578 579 if (!('transform' in elements[0].style) && !('webkitTransform' in elements[0].style)) { 580 return; 581 } 582 583 var imageCache = []; 584 585 var update = function(event) { 586 587 var windowHeight = window.innerHeight || document.documentElement.clientHeight; 588 589 // Get all dimensions from the browser before applying styles for better performance 590 var parentRects = []; 591 for (var i = 0; i < elements.length; i++) { 592 parentRects[i] = elements[i].parentNode.getBoundingClientRect(); 593 if (!('width' in parentRects[i]) || !('height' in parentRects[i])) { 594 return; 595 } 596 } 597 598 var position, height; 599 for (i = 0; i < elements.length; i++) { 600 // Skip invisible elements 601 if (parentRects[i].bottom < 0 || parentRects[i].top > windowHeight) { 602 continue; 603 } 604 height = 0; 605 if (imageCache[i].width && imageCache[i].height) { 606 height = imageCache[i].height / imageCache[i].width * parentRects[i].width; 607 } 608 height = Math.round(Math.max( 609 height, 610 Math.min(parentRects[i].height, windowHeight) * 1.1 611 )); 612 elements[i].style.bottom = 'auto'; 613 elements[i].style.height = height + 'px'; 614 if (height < windowHeight || (windowHeight < parentRects[i].height && height < parentRects[i].height)) { 615 position = parentRects[i].top / (windowHeight - parentRects[i].height) 616 * -(height - parentRects[i].height); 617 } 618 else { 619 position = (windowHeight - parentRects[i].top) / (windowHeight + parentRects[i].height) 620 * -(height - parentRects[i].height); 621 } 622 elements[i].style.transform = 623 elements[i].style.webkitTransform = 624 'translate3d(0, ' + Math.round(position) + 'px, 0)'; 625 } 626 627 }; 628 addEvent(window, 'scroll resize', update); 629 630 for (var i = 0; i < elements.length; i++) { 631 imageCache[i] = new Image(); 632 addEvent(imageCache[i], 'load', update); 633 imageCache[i].src = elements[i].getAttribute 634 && elements[i].getAttribute('data-image-url'); 635 } 636 637 })(document.querySelectorAll && document.querySelectorAll('.-background-parallax > .centered-wrapper-background')); 638 639 // Header login 640 (function(elements) { 641 if (!elements || !elements.length) { 642 return; 643 } 644 var click = function(event) { 645 eventPreventDefault(event); 646 toggleClass(this.parentNode, 'is-active'); 647 var input = this.parentNode.querySelector('input[type=text]'); 648 if (input && hasClass(this.parentNode, 'is-active')) { 649 input.focus(); 650 } 651 else { 652 this.blur(); 653 } 654 }; 655 var headline; 656 var button; 657 for (var i = 0; i < elements.length; i++) { 658 headline = elements[i].querySelector('h1, h2, h3, h4, h5, h6'); 659 if (headline) { 660 headline.setAttribute('tabindex', '0'); 661 addEvent(headline, 'click', click); 662 if ( 663 hasClass(elements[i], 'logout') 664 && (button = elements[i].querySelector('input[type=submit]')) 665 ) { 666 headline.innerHTML = button.value; 667 } 668 } 669 if (elements[i].querySelector('.error')) { 670 addClass(elements[i], 'is-active'); 671 } 672 } 673 })(document.querySelectorAll && document.querySelectorAll('.header-login')); 674 675 // Header Dropdown touch support 676 (function(elements) { 677 if (!elements || !elements.length) { 678 return; 679 } 680 var headline; 681 for (var i = 0; i < elements.length; i++) { 682 headline = elements[i].querySelector('h1, h2, h3, h4, h5, h6'); 683 if (headline) { 684 headline.setAttribute('tabindex', '0'); 685 addEvent(headline, 'click', function() {}); 686 } 687 } 688 })(document.querySelectorAll && document.querySelectorAll('.header-dropdown')); 689 690 // Rotating boxes touch support 691 (function(elements) { 692 if (!elements || !elements.length) { 693 return; 694 } 695 for (var i = 0; i < elements.length; i++) { 696 addEvent(elements[i], 'touchend', function(event) { 697 if (event.target && hasClass(event.target, 'rotating-boxes-item-link')) { 698 return; 699 } 700 eventPreventDefault(event); 701 // Remove the hover state from the element on iOS 702 if (hasClass(this, 'hover')) { 703 var parent = this.parentNode; 704 var next = this.nextSibling; 705 parent.removeChild(this); 706 if (next) { 707 parent.insertBefore(this, next); 708 } 709 else { 710 parent.appendChild(this); 711 } 712 this.offsetWidth; 713 } 714 toggleClass(this, 'hover'); 715 }); 716 } 717 })(document.querySelectorAll && document.querySelectorAll('.rotating-boxes-item')); 718 719 // Tabs 720 (function(navigations) { 721 722 if (!navigations || !navigations.length) { 723 return; 724 } 725 726 var documentHref = document.location.href.split('#'); 727 728 each(navigations, function(navigation) { 729 730 var links = navigation.querySelectorAll('a'); 731 var targets = []; 732 var clickFirst; 733 734 each(links, function(link, i) { 735 736 var href = link.href.split('#'); 737 if ( 738 href[0] && 739 documentHref[0].substr(- href[0].length) !== href[0] 740 ) { 741 return; 742 } 743 var target = document.querySelector('#' + href[1]); 744 if (!target) { 745 return; 746 } 747 748 targets.push(target); 749 750 var onclick = function(event) { 751 eventPreventDefault(event); 752 eventStop(event); 753 each(targets, function(target) { 754 target.style.display = 'none'; 755 }); 756 removeClass(links, 'is-active'); 757 addClass(link, 'is-active'); 758 target.style.display = ''; 759 link.blur(); 760 triggerEvent(window, 'resize'); 761 }; 762 addEvent(link, 'click', onclick); 763 764 // First element 765 if (!clickFirst) {
766 clickFirst = onclick; 767 } 768 769 }); 770 771 clickFirst(); 772 773 }); 774 775 })(document.querySelectorAll && document.querySelectorAll('.tab-navigation')); 776 777})();
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.