PageSourceSearch

https://www.esparkinfo.com/wp-content/themes/esparkbiz/js/header-footer-script.js?ver=1790272314

js esparkinfo.com collected 2026-09-24 17:52:46 UTC 8,476 bytes, 188 lines download raw bytes

1
2jQuery(document).ready(function () {
3    var DESKTOP_BP = 1280;
4
5    // ─── Shared ────────────────────────────────────────────────────────────────
6    jQuery('.copy-icon, #copyEmail').on('click', function () {
7        var pageUrl = jQuery(this).siblings('a').text().trim();
8        navigator.clipboard.writeText(pageUrl);
9    });
10
11    // ─── Desktop (>= 1280px) ───────────────────────────────────────────────────
12    function initDesktopNav() {
13        // Initialise megamenu tabs
14        jQuery('.site-header ul li.nav-item.has-child').each(function () {
15            jQuery(this).find('.tab-left-block li:first-child').addClass('active');
16            jQuery(this).find('.megamenu-right-inner').hide();
17            jQuery(this).find('.megamenu-right-inner:first').show();
18        });
19
20        jQuery('.tab-left-block li').on('click.desktop', function (e) {
21            e.preventDefault();
22            var current_parent = jQuery(this).parents('.megamenu');
23            current_parent.find('.tab-left-block li').removeClass('active');
24            jQuery(this).addClass('active');
25            current_parent.find('.megamenu-right-inner').hide();
26            jQuery(jQuery(this).attr('data-id')).fadeIn();
27            return false;
28        });
29
30        jQuery('.nav-item.has-child .nav-link').on('click.desktop', function (e) {
31            e.preventDefault();
32            var liItem = jQuery(this).parent('li');
33            var isActive = liItem.hasClass('active');
34            jQuery('.nav-item').removeClass('active');
35            jQuery('.megamenu').removeClass('active');
36            if (!isActive) {
37                liItem.addClass('active');
38                liItem.find('.megamenu').addClass('active');
39            }
40        });
41
42        jQuery(document).on('click.desktop', function (e) {
43            if (!jQuery(e.target).closest('.nav-item.has-child').length) {
44                jQuery('.nav-item').removeClass('active');
45                jQuery('.megamenu').removeClass('active');
46            }
47        });
48    }
49
50    function destroyDesktopNav() {
51        jQuery('.tab-left-block li').off('click.desktop');
52        jQuery('.nav-item.has-child .nav-link').off('click.desktop');
53        jQuery(document).off('click.desktop');
54        jQuery('.nav-item').removeClass('active');
55        jQuery('.megamenu').removeClass('active');
56        jQuery('.tab-left-block li').removeClass('active');
57        jQuery('.megamenu-right-inner').removeAttr('style');
58    }
59
60    // ─── Mobile (< 1280px) ─────────────────────────────────────────────────────
61    function initMobileNav() {
62        // Hamburger Menu Toggle
63        jQuery('.nav-trigger').on('click.mobile', function (e) {
64            e.stopPropagation();
65            var trigger = jQuery(this);
66            var nav = jQuery('.site-navigation');
67            
68            if (nav.hasClass('active')) {
69                // Closing the menu
70                trigger.removeClass('active');
71                nav.slideUp(250, function() {
72                    nav.removeClass('active');
73                    // RESET submenus
74                    jQuery('.nav-item.has-child').removeClass('active');
75                    jQuery('.megamenu').slideUp(0);
76                    jQuery('.megamenu-left-tab-title-mobile').removeClass('active');
77                    jQuery('.megamenu-right-inner').slideUp(0);
78                });
79            } else {
80                // Opening the menu
81                trigger.addClass('active');
82                nav.addClass('active').hide().slideDown(250);
83            }
84        });
85
86        // Click outside to close mobile menu
87        jQuery(document).on('click.mobile', function (e) {
88            var nav = jQuery('.site-navigation');
89            var trigger = jQuery('.nav-trigger');
90            if (!nav.is(e.target) && nav.has(e.target).length === 0 && !trigger.is(e.target) && trigger.has(e.target).length === 0) {
91                if (nav.hasClass('active')) {
92                    trigger.removeClass('active');
93                    nav.slideUp(250, function() {
94                        nav.removeClass('active');
95                        // RESET submenus
96                        jQuery('.nav-item.has-child').removeClass('active');
97                        jQuery('.megamenu').slideUp(0);
98                        jQuery('.megamenu-left-tab-title-mobile').removeClass('active');
99                        jQuery('.megamenu-right-inner').slideUp(0);
100                    });
101                }
102            }
103        });
104
105        // 1. Open and close megamenu on .nav-link-arrow click
106        jQuery('.nav-item.has-child .nav-link-arrow').on('click.mobile', function (e) {
107            e.preventDefault();
108            e.stopPropagation();
109            var liItem = jQuery(this).closest('.nav-item');
110            var megamenu = liItem.find('.megamenu');
111
112            // Close all other nav items and their megamenus
113            var otherItems = jQuery('.nav-item.has-child').not(liItem);
114            otherItems.removeClass('active');
115            otherItems.find('.megamenu').slideUp(250, function () {
116                // Reset internal content when other megamenus close
117                jQuery(this).find('.megamenu-left-tab-title-mobile').removeClass('active');
118                jQuery(this).find('.megamenu-right-inner').hide();
119            });
120
121            // Toggle current nav item and megamenu
122            if (liItem.hasClass('active')) {
123                // Closing current
124                liItem.removeClass('active');
125                megamenu.slideUp(250, function () {
126                    // Reset internal content when closed
127                    jQuery(this).find('.megamenu-left-tab-title-mobile').removeClass('active');
128                    jQuery(this).find('.megamenu-right-inner').hide();
129                });
130            } else {
131                // Opening current
132                liItem.addClass('active');
133                megamenu.slideDown(250);
134            }
135        });
136
137        // 2. Open and close inner content on .megamenu-left-tab-title-mobile click
138        jQuery('.megamenu-left-tab-title-mobile').on('click.mobile', function (e) {
139            e.preventDefault();
140            var currentTitle = jQuery(this);
141            var currentInner = currentTitle.next('.megamenu-right-inner');
142            var parentMegamenu = currentTitle.closest('.megamenu');
143
144            // Close other inner contents in the same megamenu
145            parentMegamenu.find('.megamenu-left-tab-title-mobile').not(currentTitle).removeClass('active');
146            parentMegamenu.find('.megamenu-right-inner').not(currentInner).slideUp(250);
147
148            // Toggle current inner content
149            currentTitle.toggleClass('active');
150            currentInner.slideToggle(250);
151        });
152    }
153
154    function destroyMobileNav() {
155        jQuery('.nav-trigger').off('click.mobile');
156        jQuery(document).off('click.mobile');
157        jQuery('.nav-item.has-child .nav-link-arrow').off('click.mobile');
158        jQuery('.megamenu-left-tab-title-mobile').off('click.mobile');
159
160        jQuery('.nav-trigger').removeClass('active');
161        jQuery('.site-navigation').removeClass('active');
162        jQuery('.site-navigation').removeAttr('style');
163        jQuery('.nav-item.has-child').removeClass('active');
164        jQuery('.megamenu').removeAttr('style');
165        jQuery('.megamenu-left-tab-title-mobile').removeClass('active');
166        jQuery('.megamenu-right-inner').removeAttr('style');
167    }
168
169    // ─── Resolution check ──────────────────────────────────────────────────────
170    var isDesktop = null;
171
172    function checkNav() {
173        if (window.innerWidth >= DESKTOP_BP) {
174            if (isDesktop === true) return;
175            destroyMobileNav();
176            initDesktopNav();
177            isDesktop = true;
178        } else {
179            if (isDesktop === false) return;
180            destroyDesktopNav();
181            initMobileNav();
182            isDesktop = false;
183        }
184    }
185
186    checkNav();
187    jQuery(window).on('resize', checkNav);
188});

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.