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