PageSourceSearch

https://yellowgreen-snake-642464.hostingersite.com/wp-content/plug…/js/frontend-scripts.js?ver=1791003536

js yellowgreen-snake-642464.hostingersite.com collected 2026-10-03 04:59:41 UTC 26,389 bytes, 769 lines download raw bytes

1var $wk_jq=jQuery.noConflict();
2console.log(" >>> ");
3// $wk_jq(function($) {
4//     "use strict";
5
6//     console.log(" in >>> ");
7//     $wk_jq(document).ready(function($) {
8//       console.log(" >>> ininin ");
9//       $('.acc__title').click(function(j) {
10//         console.log(" clicked .... in ");
11//         var dropDown = $(this).closest('.acc__card').find('.acc__panel');
12//         console.log(dropDown, " dropDown ");
13//         // $(this).closest('.acc').find('.acc__panel').not(dropDown).slideUp();		
14//         if ($(this).hasClass('active')) {
15//           $(this).removeClass('active');
16//               dropDown.stop(false, true).slideUp();
17//         } else {
18//           $(this).closest('.acc').find('.acc__title.active').removeClass('active');
19//           $(this).addClass('active');
20//               dropDown.stop(false, true).slideDown();
21//         }
22//         j.preventDefault();
23//       });
24
25//     });
26
27// });
28
29
30
31$wk_jq(document).ready(function($) {
32
33  // console.log(" script ready... ")
34    // $('.acc__title').click(function(j) {
35    //   console.log(" clicked .... ");
36    //   var dropDown = $(this).closest('.acc__card').find('.acc__panel');
37    //   console.log(dropDown, " dropDown ");
38    //   // $(this).closest('.acc').find('.acc__panel').not(dropDown).slideUp();		
39    //   if ($(this).hasClass('active')) {
40    //     $(this).removeClass('active');
41    //         dropDown.stop(false, true).slideUp();
42    //   } else {
43    //     $(this).closest('.acc').find('.acc__title.active').removeClass('active');
44    //     $(this).addClass('active');
45    //         dropDown.stop(false, true).slideDown();
46    //   }
47    //   j.preventDefault();
48    // });
49 /*   var sync1 = $("#sync1");
50    var sync2 = $("#sync2");
51    var slidesPerPage = 4; //globaly define number of elements per page
52    var syncedSecondary = true;
53
54    sync1.owlCarousel({
55        items: 1,
56        slideSpeed: 2000,
57        nav: true,
58        autoplay: false, 
59        dots: false,
60        loop: true,
61        responsiveRefreshRate: 200,
62        navText: ['<svg width="100%" height="100%" viewBox="0 0 11 20"><path style="fill:none;stroke-width: 1px;stroke: #000;" d="M9.554,1.001l-8.607,8.607l8.607,8.606"/></svg>', '<svg width="100%" height="100%" viewBox="0 0 11 20" version="1.1"><path style="fill:none;stroke-width: 1px;stroke: #000;" d="M1.054,18.214l8.606,-8.606l-8.606,-8.607"/></svg>'],
63    }).on('changed.owl.carousel', syncPosition);
64
65    sync2
66        .on('initialized.owl.carousel', function() {
67            sync2.find(".owl-item").eq(0).addClass("current");
68        })
69        .owlCarousel({
70            items: slidesPerPage,
71            dots: false,
72            nav: true,
73            smartSpeed: 200,
74            slideSpeed: 500,
75            slideBy: slidesPerPage, //alternatively you can slide by 1, this way the active slide will stick to the first item in the second carousel
76            responsiveRefreshRate: 100
77        }).on('changed.owl.carousel', syncPosition2);
78
79    function syncPosition(el) {
80        //if you set loop to false, you have to restore this next line
81        //var current = el.item.index;
82
83        //if you disable loop you have to comment this block
84        var count = el.item.count - 1;
85        var current = Math.round(el.item.index - (el.item.count / 2) - .5);
86
87        if (current < 0) {
88            current = count;
89        }
90        if (current > count) {
91            current = 0;
92        }
93
94        //end block
95
96        sync2
97            .find(".owl-item")
98            .removeClass("current")
99            .eq(current)
100            .addClass("current");
101        var onscreen = sync2.find('.owl-item.active').length - 1;
102        var start = sync2.find('.owl-item.active').first().index();
103        var end = sync2.find('.owl-item.active').last().index();
104
105        if (current > end) {
106            sync2.data('owl.carousel').to(current, 100, true);
107        }
108        if (current < start) {
109            sync2.data('owl.carousel').to(current - onscreen, 100, true);
110        }
111    }
112
113    function syncPosition2(el) {
114        if (syncedSecondary) {
115            var number = el.item.index;
116            sync1.data('owl.carousel').to(number, 100, true);
117        }
118    }
119
120    sync2.on("click", ".owl-item", function(e) {
121        e.preventDefault();
122        var number = $(this).index();
123        sync1.data('owl.carousel').to(number, 300, true);
124    }); */
125
126  //related products slider
127//   $("#realted-vehi-slider").owlCarousel({
128//     autoplay: true,
129//     rewind: true, /* use rewind if you don't want loop */
130//     margin: 20,
131//     responsiveClass: true,
132//     autoHeight: true,
133//     autoplayTimeout: 7000,
134//     dots: false,
135//     smartSpeed: 800,
136//     nav: false,
137//     responsive: {
138//       0: {
139//         items: 1
140//       },
141
142//       600: {
143//         items: 2
144//       },
145
146//       1024: {
147//         items: 3
148//       },
149
150//       1366: {
151//         items: 3
152//       }
153//     }
154//   });
155
156
157
158
159function singleGalleryCarousel () {
160  if ($('.single-gallery-carousel-content-box').length && $('.single-gallery-carousel-thumbnail-box').length) {
161
162    var $sync11 = $(".single-gallery-carousel-content-box"), // variable declaration
163        $sync22 = $(".single-gallery-carousel-thumbnail-box"),
164        flag = false,
165        duration = 500;
166
167        $sync11.owlCarousel({ //function for preview carousel
168            items: 1,
169            margin: 0,
170            nav: false,
171            dots: false,
172            autoHeight: false,
173            onInitialized: function(event) {
174                var $carousel = $(event.target);
175                var $nav = $carousel.find('.vehicle-gallery-nav-wrapper');
176                if (!$nav.length) {
177                    $nav = $('<div class="vehicle-gallery-nav-wrapper" aria-hidden="true"></div>');
178                    $nav.append($('<button type="button" role="presentation" class="vehicle-gallery-nav-prev" aria-label="Previous"><span></span></button>'));
179                    $nav.append($('<button type="button" role="presentation" class="vehicle-gallery-nav-next" aria-label="Next"><span></span></button>'));
180                    $carousel.find('.owl-stage-outer').after($nav);
181                    $nav.find('.vehicle-gallery-nav-prev').on('click', function() {
182                        $carousel.trigger('prev.owl.carousel');
183                    });
184                    $nav.find('.vehicle-gallery-nav-next').on('click', function() {
185                        $carousel.trigger('next.owl.carousel');
186                    });
187                }
188                singleGalleryCarouselUpdateNavState($carousel);
189                setTimeout(function() {
190                    $sync11.trigger('refresh.owl.carousel');
191                    singleGalleryCarouselUpdateNavState($sync11);
192                }, 100);
193            }
194        })
195        .on('changed.owl.carousel', function (e) {
196            if (!flag) {
197                flag = true;
198                $sync22.trigger('to.owl.carousel', [e.item.index, duration, true]);
199                flag = false;
200            }
201            singleGalleryCarouselUpdateNavState($(e.target), e.item.index, e.item.count);
202        });
203
204        function singleGalleryCarouselUpdateNavState($carousel, currentIndex, itemCount) {
205            var $prev = $carousel.find('.vehicle-gallery-nav-prev');
206            var $next = $carousel.find('.vehicle-gallery-nav-next');
207            if (!$prev.length) return;
208            var total = itemCount !== undefined ? itemCount : $carousel.find('.owl-item').length;
209            var current = currentIndex !== undefined ? currentIndex : 0;
210            $prev.toggleClass('disabled', current <= 0).attr('aria-disabled', current <= 0 ? 'true' : 'false');
211            $next.toggleClass('disabled', current >= total - 1).attr('aria-disabled', current >= total - 1 ? 'true' : 'false');
212        }
213
214        // jQuery('.single-gallery-carousel-content-box').magnificPopup({ //function for magnific popup
215        //     type: 'image',
216        //     delegate: 'a.popup-link',
217        //     closeOnContentClick: false,
218        //     closeBtnInside: true,
219        //     removalDelay: 500,
220        //     callbacks: {
221        //         beforeOpen: function() {
222        //              this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
223        //              this.st.mainClass = this.st.el.attr('data-effect');
224        //         }
225        //     },
226        //     tLoading: 'Loading image #%curr%...',
227        //     mainClass: 'mfp-zoom-in mfp-img-mobile',
228        //     gallery: {
229        //         enabled: true,
230        //         navigateByImgClick: true,
231        //         preload: [0,1]
232        //     },
233        //     zoom: {
234        //         enabled: true,
235        //         duration: 300
236        //     },
237        //     image: {
238        //         tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
239        //         // titleSrc: function(item) {
240        //         //     return item.el.attr('title') + '<small></small>';
241        //         // },
242        //         verticalFit: true
243        //     }
244        // });
245
246        jQuery('.single-gallery-carousel-content-box').magnificPopup({
247            type: 'image',
248            delegate: 'a.popup-link',
249            closeOnContentClick: false,
250            closeBtnInside: true,
251            removalDelay: 500,
252            callbacks: {
253                beforeOpen: function() {
254                    this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure mfp-with-anim');
255                    var effect = this.st.el.attr('data-effect');
256                    this.st.mainClass = (effect ? effect + ' ' : '') + 'mo-mfp-scope mfp-no-move mfp-img-mobile';
257                },
258                open: function() {
259                    var mfp = this;
260                    var $wrap = jQuery(mfp.wrap);
261                    var $bg = $wrap.prev();
262                    if ($bg.hasClass('mfp-bg')) {
263                        $bg.addClass('mo-mfp-scope');
264                    }
265
266                    // Hide default MFP arrows and add carousel-style arrows (append to container so nav persists when changing images)
267                    $wrap.find('.mfp-arrow').addClass('mfp-hide');
268                    var $container = $wrap.find('.mfp-container');
269                    if ($container.length && !$container.find('.mfp-gallery-nav').length) {
270                        var $nav = jQuery('<div class="mfp-gallery-nav" aria-hidden="true"></div>');
271                        $nav.append(jQuery('<button type="button" class="mfp-nav-prev mfp-prevent-close" title="Previous">Prev</button>'));
272                        $nav.append(jQuery('<button type="button" class="mfp-nav-next mfp-prevent-close" title="Next">Next</button>'));
273                        $container.append($nav);
274                        $nav.on('click', '.mfp-nav-prev', function(e) {
275                            e.preventDefault();
276                            e.stopPropagation();
277                            if (mfp && mfp.prev) mfp.prev();
278                        });
279                        $nav.on('click', '.mfp-nav-next', function(e) {
280                            e.preventDefault();
281                            e.stopPropagation();
282                            if (mfp && mfp.next) mfp.next();
283                        });
284                    }
285
286                    var $content = $wrap.find('.mfp-content');
287                    $content.off('dblclick');
288
289                    // Add double-click to toggle zoom
290                    $content.on('dblclick', 'img.mfp-img', function(e) {
291                        e.stopPropagation();
292
293                        var $this = jQuery(this);
294                        if ($this.hasClass('zoomed-in')) {
295                            $this.removeClass('zoomed-in').css({
296                                transform: 'scale(1)',
297                                cursor: 'zoom-in'
298                            });
299                        } else {
300                            $this.addClass('zoomed-in').css({
301                                transform: 'scale(2)',
302                                cursor: 'zoom-out'
303                            });
304                        }
305                    });
306                },
307                close: function() {
308                    var $wrap = jQuery(this.wrap);
309                    var $bg = $wrap.prev();
310                    if ($bg.hasClass('mfp-bg')) {
311                        $bg.removeClass('mo-mfp-scope');
312                    }
313                    $wrap.find('.mfp-content').off('dblclick');
314                }
315            },
316            tLoading: 'Loading image #%curr%...',
317            mainClass: 'mo-mfp-scope mfp-no-move mfp-img-mobile',
318            gallery: {
319                enabled: true,
320                navigateByImgClick: false, // <-- Disable next on image click
321                preload: [0,1]
322            },
323            zoom: {
324                enabled: false,
325                duration: 0
326            },
327            image: {
328                tError: '<a href="%url%">The image #%curr%</a> could not be loaded.',
329                verticalFit: true
330            }
331        });
332
333  //     if (typeof $.fn.magnificPopup === 'function') {
334  //   if ($('.formagnifi').length > 0) {
335  //     $('.formagnifi').magnificPopup({
336  //       type: 'image',
337  //       gallery: {
338  //         enabled: true
339  //       }
340  //     });
341  //   } else {
342  //     console.warn('.formagnifi element not found.');
343  //   }
344  // } else {
345  //   console.error('Magnific Popup is NOT loaded.');
346  // }
347        $sync22.owlCarousel({ //function for thumbnails carousel
348            items: 7,
349            nav: false,
350            margin: 5,
351            dots: false,
352            navText:false,
353            // center: true,
354            // loop:true,
355            autoHeight:true,
356            responsive: {
357                0:{
358                    items:2,
359                    autoWidth: false,
360                    autoHeight:true
361                },
362                400:{
363                    items:3,
364                    autoWidth: false,
365                    autoHeight:true
366                },
367                768:{
368                    items:4,
369                    autoWidth: false,
370                    autoHeight:true
371                }
372            },
373        })
374        .on('click', '.owl-item', function () {
375            $sync11.trigger('to.owl.carousel', [$(this).index(), duration, true]);
376        })
377        .on('changed.owl.carousel', function (e) {
378            if (!flag) {
379                flag = true;    
380                $sync11.trigger('to.owl.carousel', [e.item.index, duration, true]);
381                flag = false;
382            }
383        });
384        // setTimeout(() => {
385        //   $sync11.trigger('refresh.owl.carousel');
386        //   console.log('refresh');
387        // }, 500); // Give time for image loading
388    };
389
390    // if ($('.slider_items').length){
391    //   console.log($('.slider_items').length);
392    //   var owl = $(".slider_items");
393    //   owl.owlCarousel({
394    //       items: 3, // Adjust as needed
395    //       loop: false,
396    //       dots: false, // Disable bullets
397    //       margin: 10,
398    //       smartSpeed: 800, 
399    //       scrollSpeed: 1,					        
400    //       // nav: true, // Enables navigation buttons
401    //       mouseDrag: true,  // Enable mouse drag
402    //       // mouseDrag: true,  // Enable drag with mouse
403    //       touchDrag: true,  // Enable touch swipe on mobile
404    //       // pullDrag: true,  // Enable smooth drag
405    //       // smartSpeed: 600,  // Smooth scrolling speed
406    //       responsive: {
407    //           0: { items: 1 },
408    //           600: { items: 2 },
409    //           1000: { items: 3, stagePadding: 40 }
410    //       },
411    //       onInitialized: function() {
412    //           // Optional: Add a slight delay to fix the initial layout
413    //           setTimeout(function() {
414    //             console.log('trigger');
415    //               owl.trigger('refresh.owl.carousel');
416    //           }, 200);
417    //       }
418    //   });
419
420    //   // Custom navigation buttons
421    //   $(".custom-next").click(function(){
422    //       owl.trigger('next.owl.carousel');
423    //   });
424
425    //   $(".custom-prev").click(function(){
426    //       owl.trigger('prev.owl.carousel');
427    //   });
428
429    //   // Prevent vertical scrolling from interfering with the carousel
430    //   var startX = 0, startY = 0;
431    //   owl.on("touchstart", function(event) {
432    //       startX = event.originalEvent.touches[0].clientX;
433    //       startY = event.originalEvent.touches[0].clientY;
434    //   });
435
436    //   owl.on("touchmove", function(event) {
437    //       var moveX = event.originalEvent.touches[0].clientX;
438    //       var moveY = event.originalEvent.touches[0].clientY;
439
440    //       if (Math.abs(moveY - startY) > Math.abs(moveX - startX)) {
441    //           event.stopPropagation(); // Prevent vertical movement from triggering carousel
442    //       }
443    //   });
444
445    //   // Enable smooth scrolling on laptop touchpads (mouse wheel horizontal support)
446    //   // owl.on("wheel", function(event) {
447    //   //     if (event.originalEvent.deltaX !== 0) { // Detect horizontal scroll
448    //   //       let scrollSpeed = 0.2; // Increase this value to slow down the effect
449    //   //         event.preventDefault();
450
451    //   //         let delta = event.originalEvent.deltaY || event.originalEvent.deltaX;
452    //   //       if (Math.abs(delta) > 10) { // Avoid micro-movements
453    //   //           if (delta > 0) {
454    //   //               owl.trigger("next.owl.carousel");
455    //   //           } else {
456    //   //               owl.trigger("prev.owl.carousel");
457    //   //           }
458    //   //       }
459    //   //     }
460    //   // });
461
462
463    //    let scrollThrottle = false;
464    //   owl.on("wheel", function(event) {
465    //       if (event.originalEvent.deltaX !== 0) { // Detect horizontal scroll
466    //           event.preventDefault();
467
468    //           let delta = event.originalEvent.deltaX;
469    //           // let delta = event.originalEvent.deltaY || event.originalEvent.deltaX;
470
471    //            // Only react to significant scroll (not small jitter)
472    //           if (Math.abs(delta) < 45) return;
473
474    //           // Throttle scroll trigger to prevent rapid-fire swipes
475    //           if (scrollThrottle) return;
476
477    //           scrollThrottle = true;
478
479    //           if (delta > 0) {
480    //               owl.trigger('next.owl.carousel');
481    //           } else {
482    //               owl.trigger('prev.owl.carousel');
483    //           }
484
485    //           // Reset throttle after delay (adjust to control scroll frequency)
486    //           setTimeout(() => {
487    //               scrollThrottle = false;
488    //           }, 500); // 400ms delay between scrolls
489    //       }
490    //   });
491
492    //   // Disable buttons on first and last slide
493    //   $("#prev_button").prop("disabled", true);
494    //   owl.on("changed.owl.carousel", function(event) {
495    //       var totalItems = event.item.count;  // Total slides
496    //       var currentIndex = event.item.index; // Current slide index
497
498    //       if (currentIndex === 0) {
499    //           $("#prev_button").prop("disabled", true); // Disable Prev on first slide
500    //       } else {
501    //           $("#prev_button").prop("disabled", false);
502    //       }
503
504    //       if (currentIndex + event.page.size >= totalItems) {
505    //           $("#next_button").prop("disabled", true); // Disable Next on last slide
506    //       } else {
507    //           $("#next_button").prop("disabled", false);
508    //       }
509    //   });
510    // }
511
512
513
514  $('.slider_items').each(function () {
515    var $thisCarousel = $(this);
516
517    // Initialize each Owl Carousel
518    $thisCarousel.owlCarousel({
519      items: 3,
520      loop: false,
521      dots: false,
522      margin: 20,
523      smartSpeed: 800,
524      scrollSpeed: 1,
525      mouseDrag: true,
526      touchDrag: true,
527      responsive: {
528        0: { items: 1 },
529        600: { items: 2 },
530        1000: { items: 3, stagePadding: 5 }
531      },
532      onInitialized: function () {
533        setTimeout(function () {
534          $thisCarousel.trigger('refresh.owl.carousel');
535        }, 200);
536      }
537    });
538
539    // Use closest wrapper to find nav buttons
540    var $wrapper = $thisCarousel.closest('.vehicles-main');
541    var $nextBtn = $wrapper.find('.custom-next');
542    var $prevBtn = $wrapper.find('.custom-prev');
543
544    // Attach click events for this carousel only
545    $nextBtn.click(function () {
546      $thisCarousel.trigger('next.owl.carousel');
547    });
548
549    $prevBtn.click(function () {
550      $thisCarousel.trigger('prev.owl.carousel');
551    });
552
553    // Optional: Touch/scroll behavior
554    let scrollThrottle = false;
555    $thisCarousel.on("wheel", function (event) {
556      if (event.originalEvent.deltaX !== 0) {
557        event.preventDefault();
558        let delta = event.originalEvent.deltaX;
559        if (Math.abs(delta) < 45 || scrollThrottle) return;
560        scrollThrottle = true;
561
562        if (delta > 0) {
563          $thisCarousel.trigger('next.owl.carousel');
564        } else {
565          $thisCarousel.trigger('prev.owl.carousel');
566        }
567
568        setTimeout(() => {
569          scrollThrottle = false;
570        }, 500);
571      }
572    });
573
574    // Disable Prev on first item initially
575    $prevBtn.prop("disabled", true);
576
577    // Enable/Disable nav buttons on change
578    $thisCarousel.on("changed.owl.carousel", function (event) {
579      var totalItems = event.item.count;
580      var currentIndex = event.item.index;
581      var pageSize = event.page.size;
582
583      $prevBtn.prop("disabled", currentIndex === 0);
584      $nextBtn.prop("disabled", currentIndex + pageSize >= totalItems);
585    });
586  });
587
588
589}
590singleGalleryCarousel (); //FUNCTION CALLED HERE
591
592var Tabs = function($) {
593  return {
594    
595    init: function() {
596      this.cacheDom();
597      this.setupAria();
598      this.appendIndicator();
599      this.bindEvents();
600    },
601    
602    cacheDom: function() {
603      this.$el = $('.tabs');
604      this.$tabList = this.$el.find('ul');
605      this.$tab = this.$tabList.find('li');
606      this.$tabFirst = this.$tabList.find('li:first-child a');
607      this.$tabLink = this.$tab.find('a');
608      this.$tabPanel = this.$el.find('section');
609      this.$tabPanelFirstContent = this.$el.find('section > *:first-child');
610      this.$tabPanelFirst = this.$el.find('section:first-child');
611      this.$tabPanelNotFirst = this.$el.find('section:not(:first-of-type)');
612    },
613    
614    bindEvents: function() {
615      this.$tabLink.on('click', function(){
616        this.changeTab();
617        this.animateIndicator($(event.currentTarget));
618      }.bind(this));
619      this.$tabLink.on('keydown', function() {
620        this.changeTabKey();
621      }.bind(this));
622    },
623    
624    changeTab: function() {
625      var self = $(event.target);
626      // console.log(self);
627      event.preventDefault();
628      this.removeTabFocus();
629      this.setSelectedTab(self);
630      this.hideAllTabPanels();
631      this.setSelectedTabPanel(self);
632    },
633    
634    animateIndicator: function(elem) {
635      var offset = elem.offset().left;
636      var width = elem.width();    
637      var $indicator = this.$tabList.find('.indicator');
638      
639      console.log(elem.width());
640      
641      $indicator.transition({ 
642        x: offset,
643        width: elem.width()
644      })
645    },
646    
647    appendIndicator: function() {
648      this.$tabList.append('<div class="indicator"></div>');
649    },
650    
651    changeTabKey: function() {
652      var self = $(event.target),
653        $target = this.setKeyboardDirection(self, event.keyCode);
654      
655      if ($target.length) {
656        this.removeTabFocus(self);
657        this.setSelectedTab($target);
658      }
659      this.hideAllTabPanels();
660      this.setSelectedTabPanel($(document.activeElement));
661      this.animateIndicator($target);
662    },
663    
664    hideAllTabPanels: function() {
665      this.$tabPanel.attr('aria-hidden', 'true');
666    },
667    
668    removeTabFocus: function(self) {
669      var $this = self || $('[role="tab"]');
670      
671      $this.attr({
672        'tabindex': '-1',
673        'aria-selected': null
674      });
675    },
676    
677    selectFirstTab: function() {
678      this.$tabFirst.attr({
679        'aria-selected': 'true',
680        'tabindex': '0'
681      });
682    },
683    
684    setupAria: function() {
685      this.$tabList.attr('role', 'tablist');
686      this.$tab.attr('role', 'presentation');
687      this.$tabLink.attr({
688        'role': 'tab',
689        'tabindex': '-1'
690      });
691      this.$tabLink.each(function() {
692        var $this = $(this);
693        
694        $this.attr('aria-controls', $this.attr('href').substring(1));
695      });
696      this.$tabPanel.attr({
697        'role': 'tabpanel'
698      });
699      this.$tabPanelFirstContent.attr({
700        'tabindex': '0'
701      });
702      this.$tabPanelNotFirst.attr({
703        'aria-hidden': 'true'
704      });
705      this.selectFirstTab();
706    },
707    
708    setKeyboardDirection: function(self, keycode) {
709      var $prev = self.parents('li').prev().children('[role="tab"]'),
710          $next = self.parents('li').next().children('[role="tab"]');
711      
712      switch (keycode) {
713        case 37:
714          return $prev;
715          break;
716        case 39:
717          return $next;
718          break;
719        default:
720          return false;
721          break;
722      }
723    },
724    
725    setSelectedTab: function(self) {
726      console.log('here');
727      self.attr({
728        'aria-selected': true,
729        'tabindex': '0'
730      }).focus();
731    },
732    
733    setSelectedTabPanel: function(self) {
734      // console.log(self.attr('href'));
735      try{
736        $('#' + self.attr('href').substring(1)).attr('aria-hidden', null);
737      } catch (error){
738        console.log(error);
739      }
740    },
741    
742  };
743}(jQuery);
744
745Tabs.init();
746
747});
748
749
750function openNav() {
751  document.getElementById("mySidenav").style.display  = "block";
752  document.getElementById("mySidenav").style.width  = "100%";
753  document.getElementById("mobile_view").style.display  = "none";
754}
755function closeNav() {
756  document.getElementById("mySidenav").style.display  = "none";
757  document.getElementById("mySidenav").style.width  = "0";
758  document.getElementById("mobile_view").style.display  = "block";
759}
760
761function stopClosing(event){
762  // console.log(event);
763  event.stopPropagation();
764}
765
766function handleCloseSideNav(e){
767  // console.log(e);
768  closeNav();
769}

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.