PageSourceSearch

https://www.ernieball.com/assets/js/menu2.js,q1790632010.pagespeed.ce.7whoJJ780R.js

js ernieball.com collected 2026-10-01 10:40:54 UTC 3,591 bytes, 128 lines download raw bytes

1$(function(){
2
3    var headerContainer = $('header');
4
5    function attachHeader(){
6        var scrollTop = $(window).scrollTop();
7
8        if (scrollTop > 40){
9            headerContainer.css('position', 'fixed');
10        } else {
11            headerContainer.css('position', 'relative');
12        }
13    }
14
15    $(window).scroll(function(){
16        attachHeader();
17    });
18
19    attachHeader();
20
21    function setCookie(cname, cvalue, exdays) {
22        var d = new Date();
23        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
24        var expires = "expires="+d.toUTCString();
25        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
26    }
27
28    function getCookie(cname) {
29        var name = cname + "=";
30        var decodedCookie = decodeURIComponent(document.cookie);
31        var ca = decodedCookie.split(';');
32        for(var i = 0; i <ca.length; i++) {
33            var c = ca[i];
34            while (c.charAt(0) == ' ') {
35                c = c.substring(1);
36            }
37            if (c.indexOf(name) == 0) {
38                return c.substring(name.length, c.length);
39            }
40        }
41        return "";
42    }
43
44    var gdpr = $('#gdpr');
45    var gdprButton = $('#gdprButton');
46    var gdprCookie = getCookie('gdpr');
47
48    if (gdprCookie === ''){
49        gdpr.css('display', 'block');
50    }
51
52    gdprButton.on('click', function(){
53        gdpr.css('display', 'none');
54        setCookie('gdpr', 'accepted', 30);
55    });
56
57    const menu = document.querySelector('.menu');
58    const menuSection = menu.querySelector('.menu-section');
59    const menuArrow = menu.querySelector('.menu-mobile-arrow');
60    const menuClosed = menu.querySelector('.menu-mobile-close');
61    const menuTrigger = document.querySelector('.menu-mobile-trigger');
62    const menuOverlay = document.querySelector('.overlay');
63    let subMenu;
64
65    menuSection.addEventListener('click', (e) => {
66        if (!menu.classList.contains('active')) {
67            return;
68        }
69
70        if (e.target.closest('.menu-item-has-children')) {
71            const hasChildren = e.target.closest('.menu-item-has-children');
72            showSubMenu(hasChildren);
73        }
74    });
75
76    menuArrow.addEventListener('click', () => {
77        hideSubMenu();
78    });
79
80    menuTrigger.addEventListener('click', () => {
81        toggleMenu();
82    });
83
84    menuClosed.addEventListener('click', () => {
85        toggleMenu();
86    });
87
88    menuOverlay.addEventListener('click', () => {
89        toggleMenu();
90    });
91
92    function toggleMenu() {
93        menu.classList.toggle('active');
94        menuOverlay.classList.toggle('active');
95    }
96
97    function showSubMenu(hasChildren) {
98        subMenu = hasChildren.querySelector('.menu-subs');
99        subMenu.classList.add('active');
100        subMenu.style.animation = 'slideLeft 0.5s ease';
101        const menuTitle = hasChildren.querySelector('i').parentNode.childNodes[0].textContent;
102        menu.querySelector('.menu-mobile-title').innerHTML = menuTitle;
103        menu.querySelector('.menu-mobile-header').classList.add('active');
104    }
105
106    function hideSubMenu() {
107        subMenu.style.animation = 'slideRight 0.5s ease';
108        setTimeout(() => {
109            subMenu.classList.remove('active');
110        }, 300);
111
112        menu.querySelector('.menu-mobile-title').innerHTML = '';
113        menu.querySelector('.menu-mobile-header').classList.remove('active');
114    }
115
116    window.onresize = function () {
117        if (this.innerWidth > 991) {
118            if (menu.classList.contains('active')) {
119                toggleMenu();
120            }
121        }
122    };
123
124
125});
126
127
128

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.