PageSourceSearch

https://www.emailverify.io/blog/wp-content/themes/pixwell/assets/js/global.js?ver=11.5.5

js emailverify.io collected 2026-10-01 10:35:57 UTC 79,818 bytes, 2,115 lines download raw bytes

1/**  PIXWELL MAN SCRIPT */
2var PIXWELL_MAIN_SCRIPTS = (function (Module, $) {
3    'use strict';
4
5    Module.$body = $('body');
6    Module.$ios = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
7    Module.$document = $(document);
8    Module.$html = $('html, body');
9    Module.$window = $(window);
10    Module.$ajax = {};
11    Module.wPoint = {};
12    Module.$singleScrollDelay = 1;
13    Module.$stickyScrollDelay = 1;
14    Module.$lastPos = 0;
15    Module.siteAccessFlag = false;
16
17    Module.init = function () {
18        this.getSettings();
19        this.mainMenuPos();
20        this.reCalcMenuPos();
21        this.calcFullScreenFeat();
22        this.stickyNavigation();
23        this.touchNavigation();
24        this.quickFilter();
25        this.carouselSlider();
26        this.carouselWideSlider();
27        this.bigSlider();
28        this.bigNavSlider();
29        this.toggleOffCanvas();
30        this.stickySidebar();
31        this.searchBoxToggle();
32        this.bodyImageLoaded();
33        this.backTop();
34        this.siteAccessDetector();
35        this.smoothScrollTOC();
36        this.tocToggle();
37        this.offCanvasLoad();
38        this.navLiveSearch();
39        this.subMenuEffects();
40        this.categoryHeaderBg();
41        this.singleInfiniteLoadNext();
42        this.mobileStickyNav();
43        this.masonryPPCol3();
44        this.masonryPPCol4();
45        this.masonryFwP1();
46        this.rbGallery();
47
48        this.documentReload();
49    };
50
51    Module.documentReload = function () {
52        this.paginationNextPrev();
53        this.loadMore();
54        this.paginationInfinite();
55        this.scrollUpdateProcess();
56        this.videoAutoPlay();
57        this.showPostComment();
58        this.replyReview();
59        this.scrollToComment();
60        this.showSingleFeat();
61        this.singleParallaxFeat();
62        this.postGallerySlider();
63        this.postGalleryLightBox();
64        this.tooltips();
65        this.productQuantity();
66        this.bookMarkTipsy();
67        this.masonryFW1();
68        this.masonryCT1();
69        this.usersRating();
70    };
71
72    Module.getSettings = function () {
73        this.$themeSettings = $.parseJSON(themeSettings);
74        this.slidePrev = '<i class="rbi rbi-angle-left"></i><span>' + this.$themeSettings.textPrev + '</span>';
75        this.slideNext = '<i class="rbi rbi-angle-right"></i><span>' + this.$themeSettings.textNext + '</span>';
76    };
77
78    Module.getRTL = function () {
79        return this.$body.hasClass('rtl');
80    };
81
82    Module.backTop = function () {
83        if (this.$body.hasClass('is-backtop')) {
84            $().UItoTop({
85                containerID: 'back-top',
86                easingType: 'easeOutQuart',
87                text: '<i class="rbi rbi-arrow-up"></i>',
88                containerHoverID: 'back-top-inner',
89                scrollSpeed: 800
90            });
91        }
92    };
93
94    /** smooth scroll TOC */
95    Module.smoothScrollTOC = function () {
96        var TOC = $('#ruby-table-contents');
97        if (TOC.hasClass('rb-smooth-scroll')) {
98            this.$html.css('scroll-behavior', 'smooth');
99        }
100    }
101
102    Module.tocToggle = function () {
103        this.$document.on('click', '.ruby-toc-toggle', function (e) {
104            e.preventDefault();
105            e.stopPropagation();
106
107            var target = $(this);
108            var content = target.parents('.rbtoc').find('.inner');
109            target.toggleClass('activate');
110            content.toggle('250');
111        })
112    }
113
114    /** sticky nav */
115    Module.stickyNavigation = function () {
116
117        var self = this;
118        var stickyNav = $('#sticky-nav');
119        var navOuter = $('.navbar-outer');
120        if (self.$body.hasClass('sticky-nav') && stickyNav.length > 0 && navOuter.length > 0 && self.$window.width() >= 992) {
121            var smartSticky = false;
122            var showPos = navOuter.offset().top + navOuter.height() + 70;
123            stickyNav.css('top', '-' + stickyNav.height() + 'px');
124            if (self.$body.hasClass('smart-sticky')) {
125                smartSticky = true;
126            }
127            if (window.addEventListener) {
128                window.addEventListener('scroll', function () {
129                    self.stickyProcess(stickyNav, showPos, smartSticky);
130                }, false);
131            } else if (window.attachEvent) {
132                window.attachEvent('onscroll', function () {
133                    self.stickyProcess(stickyNav, showPos, smartSticky);
134                });
135            }
136        }
137    };
138
139    /** check touch devices */
140    Module.isTouchDevice = function () {
141        if (this.$ios) {
142            return true;
143        }
144        return 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
145    };
146
147    /** touch navigation */
148    Module.touchNavigation = function () {
149        var self = this;
150        if (self.isTouchDevice() && self.$window.width() > 991) {
151            var hasSubLink = $('.navbar-wrap .menu-item-has-children > a, .topbar-wrap .menu-item-has-children > a');
152            hasSubLink.find('span').append('<span class="touch-smenu"></span>');
153            var explainTag = $('.navbar-wrap, .topbar-wrap').find('.touch-smenu');
154
155            explainTag.on('click || tap', function (e) {
156                e.preventDefault();
157                e.stopPropagation();
158                var itemparent = $(this).closest('.menu-item-has-children');
159                itemparent.addClass('show-smenu');
160                return false;
161            });
162
163            self.$document.on('click || tap', function (e) {
164                if ($(e.target).is('.touch-smenu') === false) {
165                    $(".menu-item-has-children").removeClass('show-smenu');
166                }
167            });
168        }
169    };
170
171    /** sticky mobile menu */
172    Module.mobileStickyNav = function () {
173        var self = this;
174        var mobileStickyNav = $('#mobile-sticky-nav');
175        var navOuter = $('.navbar-outer');
176        if (self.$body.hasClass('sticky-nav') && mobileStickyNav.length > 0 && self.$window.width() < 992) {
177
178            var smartSticky = false;
179            var showPos = navOuter.offset().top + navOuter.height() + 70;
180            mobileStickyNav.css('top', '-' + mobileStickyNav.height() + 'px');
181            if (self.$body.hasClass('smart-sticky')) {
182                smartSticky = true;
183            }
184            if (window.addEventListener) {
185                window.addEventListener('scroll', function () {
186                    self.stickyProcess(mobileStickyNav, showPos, smartSticky);
187                }, false);
188            } else if (window.attachEvent) {
189                window.attachEvent('onscroll', function () {
190                    self.stickyProcess(mobileStickyNav, showPos, smartSticky);
191                });
192            }
193        }
194    };
195
196    /** sticky process */
197    Module.stickyProcess = function (stickyNav, showPos, smartSticky) {
198
199        if (this.$stickyScrollDelay % 3 == 1) {
200            var scrollTop = this.$window.scrollTop();
201            if (!smartSticky) {
202                if (scrollTop > showPos && !stickyNav.hasClass('is-show')) {
203                    stickyNav.addClass('is-show');
204                } else if (scrollTop < showPos && stickyNav.hasClass('is-show')) {
205                    stickyNav.removeClass('is-show');
206                }
207            } else {
208                var direction;
209                if (scrollTop !== this.lastPos) {
210                    if (scrollTop > this.lastPos) {
211                        direction = 'down';
212                    } else {
213                        direction = 'up';
214                    }
215                    this.lastPos = scrollTop;
216                }
217                if (scrollTop > showPos) {
218                    if (direction == 'up' && !stickyNav.hasClass('is-show')) {
219                        stickyNav.addClass('is-show');
220                    } else if (direction == 'down' && stickyNav.hasClass('is-show')) {
221                        stickyNav.removeClass('is-show');
222                    }
223                } else if (scrollTop < showPos && stickyNav.hasClass('is-show')) {
224                    stickyNav.removeClass('is-show');
225                }
226            }
227            this.$stickyScrollDelay = 1;
228        } else {
229            this.$stickyScrollDelay++;
230        }
231    };
232
233    /* carousel slider */
234    Module.carouselSlider = function () {
235        var self = this;
236        var elements = $('.carousel-feat-3, .carousel-feat-7, .carousel-feat-10');
237        if (elements.length > 0) {
238
239            var config = {
240                items: 3,
241                loop: true,
242                center: true,
243                dots: self.$themeSettings.sliderDot,
244                navText: [self.slidePrev, self.slideNext],
245                autoplay: self.$themeSettings.sliderPlay,
246                autoplayTimeout: self.$themeSettings.sliderSpeed,
247                navElement: 'div role="presentation"',
248                autoplayHoverPause: true,
249                nav: true,
250                rtl: self.getRTL(),
251                navClass: [
252                    'rb-owl-prev',
253                    'rb-owl-next'
254                ],
255                autoplaySpeed: 500,
256                responsive: {
257                    0: {items: 1},
258                    768: {items: 2},
259                    992: {items: 3}
260                }
261            };
262
263            elements.each(function () {
264                var el = $(this);
265
266                if (el.width() > 1599) {
267                    config.responsive = {
268                        0: {items: 1},
269                        768: {items: 2},
270                        992: {items: 3},
271                        1500: {items: 5}
272                    }
273                }
274
275                el.on('initialized.owl.carousel', function () {
276                    el.prev('.load-animation').fadeOut(150, function () {
277                        $(this).remove();
278                        el.removeClass('per-load');
279                    });
280                });
281
282                el.on('changed.owl.carousel', function (event) {
283                    $(event.target).find('.active').addClass('loaded');
284                });
285
286                el.owlCarousel(config);
287            })
288        }
289    };
290
291    /* carousel wide slider */
292    Module.carouselWideSlider = function () {
293        var self = this;
294        var elements = $('.carousel-feat-9, .carousel-feat-12');
295        if (elements.length > 0) {
296            var config = {
297                items: 5,
298                loop: true,
299                center: false,
300                dots: self.$themeSettings.sliderDot,
301                navText: [self.slidePrev, self.slideNext],
302                autoplay: self.$themeSettings.sliderPlay,
303                autoplayTimeout: self.$themeSettings.sliderSpeed,
304                navElement: 'div role="presentation"',
305                autoplayHoverPause: true,
306                nav: true,
307                rtl: self.getRTL(),
308                navClass: [
309                    'rb-owl-prev',
310                    'rb-owl-next'
311                ],
312                autoplaySpeed: 500,
313                responsive: {
314                    0: {items: 1},
315                    768: {items: 2},
316                    992: {items: 3},
317                    1024: {items: 4},
318                    1500: {items: 5}
319                }
320            };
321
322            elements.each(function () {
323                var el = $(this);
324
325                el.on('initialized.owl.carousel', function () {
326                    el.prev('.load-animation').fadeOut(150, function () {
327                        $(this).remove();
328                        el.removeClass('per-load');
329                    });
330                });
331
332                el.on('changed.owl.carousel', function (event) {
333                    $(event.target).find('.active').addClass('loaded');
334                });
335
336                el.owlCarousel(config);
337            })
338        }
339    };
340
341    //hover effect
342    Module.subMenuEffects = function () {
343
344        var self = this;
345        if (self.isTouchDevice()) {
346            return false;
347        }
348        var rbMenus = $('.rb-menu');
349        if (rbMenus.length > 0) {
350            rbMenus.each(function () {
351                var menu = $(this);
352
353                var subMegaItems = menu.children('.is-mega-menu');
354                subMegaItems.find('.sub-menu, .menu-item-has-children').addBack().addClass('mega-tree');
355                var subParents = menu.find('.menu-item-has-children');
356                subParents.not('.mega-tree').addClass('animation-menu');
357
358                var subMenus = menu.find('.sub-menu');
359                if (subMenus.length > 0) {
360                    $(subMenus).each(function () {
361                        var subItem = $(this);
362                        if (!subItem.hasClass('mega-tree')) {
363                            var itemItem = subItem.children('li').children('a');
364                            var index = 0;
365                            $(itemItem).each(function () {
366                                var item = $(this);
367                                var delay = 200 + 35 * index;
368                                item.css('transition-delay', delay + 'ms');
369                                item.css('-webkit-transition-delay', delay + 'ms');
370                                index++;
371                            });
372                        }
373                    });
374                }
375
376                if (!menu.hasClass('is-clicked')) {
377                    subParents.on('mouseenter', function () {
378                        var self = $(this);
379                        if (self.hasClass('animation-menu')) {
380                            self.addClass('hovering-menu');
381                            self.removeClass('no-delay');
382                        }
383                        return false;
384                    }).on('mouseleave', function () {
385                        var self = $(this);
386                        if (self.hasClass('animation-menu')) {
387                            self.removeClass('hovering-menu');
388                            self.addClass('no-delay');
389                        }
390                        return false;
391                    });
392                }
393            });
394        }
395    };
396
397    /* big slider */
398    Module.bigSlider = function () {
399
400        var self = this;
401        var elements = $('.slider-feat-4, .slider-feat-5, .slider-feat-14, .slider-feat-15');
402        if (elements.length > 0) {
403            var config = {
404                items: 1,
405                loop: true,
406                dots: self.$themeSettings.sliderDot,
407                navText: [self.slidePrev, self.slideNext],
408                autoplay: self.$themeSettings.sliderPlay,
409                autoplayTimeout: self.$themeSettings.sliderSpeed,
410                autoplayHoverPause: true,
411                nav: false,
412                rtl: self.getRTL(),
413                navClass: [
414                    'rb-owl-prev',
415                    'rb-owl-next'
416                ],
417                navElement: 'div role="presentation"',
418                autoplaySpeed: 500,
419                responsive: {
420                    768: {
421                        nav: true
422                    }
423                }
424            };
425
426            if (self.$themeSettings.sliderAnimation) {
427                config.animateOut = 'fadeOut';
428            }
429
430            elements.each(function () {
431                var el = $(this);
432
433                el.on('initialized.owl.carousel', function () {
434                    el.prev('.load-animation').fadeOut(150, function () {
435                        $(this).remove();
436                        el.removeClass('per-load');
437                    });
438                });
439
440                el.owlCarousel(config);
441            })
442        }
443    };
444
445    /** slider width nav */
446    Module.bigNavSlider = function () {
447        var self = this;
448        var elements = $('.slider-feat-13');
449        if (elements.length > 0) {
450            var config = {
451                items: 1,
452                loop: true,
453                dots: self.$themeSettings.sliderDot,
454                dotsData: true,
455                autoplay: self.$themeSettings.sliderPlay,
456                autoplayTimeout: self.$themeSettings.sliderSpeed,
457                autoplayHoverPause: true,
458                nav: false,
459                animateOut: 'rb-slideout',
460                rtl: self.getRTL(),
461                autoplaySpeed: 500
462            };
463
464            if (self.$themeSettings.sliderAnimation) {
465                config.animateOut = 'fadeOut';
466            }
467
468            elements.each(function () {
469                var el = $(this);
470
471                el.on('initialized.owl.carousel', function () {
472                    el.prev('.load-animation').fadeOut(150, function () {
473                        $(this).remove();
474                        el.removeClass('per-load');
475                    });
476                });
477
478                el.on('changed.owl.carousel', function (event) {
479                    $(event.target).find('.active').addClass('loaded');
480                });
481
482                el.owlCarousel(config);
483            })
484        }
485    };
486
487    Module.offCanvasLoad = function () {
488        $('#off-canvas-section').removeClass('is-hidden');
489    };
490
491    Module.toggleOffCanvas = function () {
492        var self = this;
493        var triggerBtn = $('.off-canvas-trigger');
494        var closeBtn = $('#off-canvas-close-btn');
495        var siteMask = $('.site-mask');
496
497        triggerBtn.on('click || tap', function (e) {
498            e.preventDefault();
499            e.stopPropagation();
500            self.$body.toggleClass('mobile-js-menu');
501            return false;
502        });
503
504        siteMask.on('click || tap', function () {
505            self.$body.toggleClass('mobile-js-menu');
506            return false;
507        });
508
509        closeBtn.on('click || tap', function () {
510            self.$body.toggleClass('mobile-js-menu');
511            return false;
512        });
513
514        var nav = $('.off-canvas-menu');
515        var navSub = nav.find('li.menu-item-has-children > a');
516        navSub.append('<aside class="explain-menu"><i class="rbi rbi-angle-down"></i></aside>');
517        $('.explain-menu').on('click', function () {
518            var item = $(this).closest('.menu-item-has-children');
519            item.children('.sub-menu').slideToggle(200);
520            setTimeout(function () {
521                item.toggleClass('hovering-menu');
522                if (item.hasClass('hovering-menu')) {
523                    item.removeClass('no-delay');
524                } else {
525                    item.addClass('no-delay');
526                    item.find('.sub-menu').hide();
527                }
528            }, 150);
529
530            return false;
531        });
532    };
533
534    //search box toggle
535    Module.searchBoxToggle = function () {
536        var self = this;
537        $('.nav-search-link').off('click').on('click', function (e) {
538            e.preventDefault();
539            e.stopPropagation();
540            var target = $(this).next('.navbar-search-popup');
541            self.$body.find('.show-searchform').not(target).removeClass('show-searchform');
542            target.toggleClass('show-searchform');
543        });
544    };
545
546    //sticky sidebar
547    Module.stickySidebar = function () {
548        var sidebars = $('.sidebar-sticky').not('.sb-infinite');
549        if (sidebars.length > 0) {
550            this.$body.imagesLoaded(function () {
551                RubyStickySidebar.stick(sidebars);
552            });
553        }
554    };
555
556    //tooltips
557    Module.tooltips = function () {
558        var self = this;
559        if (self.$body.hasClass('is-tooltips') && false === self.$ios) {
560            if (self.$body.hasClass('is-tooltips-touch')) {
561                if (false === self.ios) {
562                    self.tooltipsProcess()
563                }
564            } else {
565                self.tooltipsProcess()
566            }
567        }
568    };
569
570    //tooltips process
571    Module.tooltipsProcess = function () {
572
573        if (window.innerWidth < 992) {
574            return false;
575        }
576
577        var self = this;
578        var tooltips_n = self.$body.find('.tooltips-n');
579        var tooltips_w = self.$body.find('.tooltips-w');
580        var tooltips_s = self.$body.find('.tooltips-s');
581        var tooltips_e = self.$body.find('.tooltips-e');
582        var tooltipsCart = self.$body.find('.cart-tooltips .add-to-cart');
583
584        var direct_e = 'e';
585        var direct_w = 'w';
586
587        if (this.getRTL()) {
588            direct_e = 'w';
589            direct_w = 'e';
590        }
591
592        if (tooltips_n.length > 0) {
593            tooltips_n.each(function () {
594                var current = $(this);
595                if (!current.hasClass('tipsy-loaded')) {
596                    current.children('a, .tipsy-el').tipsy({
597                        fade: true,
598                        opacity: 1,
599                        trigger: 'hover',
600                        gravity: 'n'
601                    });
602                    current.addClass('tipsy-loaded')
603                }
604            })
605        }
606
607        if (tooltips_w.length > 0) {
608            tooltips_w.each(function () {
609                var current = $(this);
610                if (!current.hasClass('tipsy-loaded')) {
611                    current.children('a').tipsy({
612                        fade: true,
613                        opacity: 1,
614                        trigger: 'hover',
615                        gravity: direct_w
616                    });
617                    current.addClass('tipsy-loaded')
618                }
619            })
620        }
621
622        if (tooltips_s.length > 0) {
623            tooltips_s.each(function () {
624                var current = $(this);
625                if (!current.hasClass('tipsy-loaded')) {
626                    current.children('a').tipsy({
627                        fade: true,
628                        opacity: 1,
629                        trigger: 'hover',
630                        gravity: 's'
631                    });
632                    current.addClass('tipsy-loaded')
633                }
634            })
635        }
636
637        if (tooltips_e.length > 0) {
638            tooltips_e.each(function () {
639                var current = $(this);
640                if (!current.hasClass('tipsy-loaded')) {
641                    current.children('a').tipsy({
642                        fade: true,
643                        opacity: 1,
644                        trigger: 'hover',
645                        gravity: direct_e
646                    });
647                    current.addClass('tipsy-loaded')
648                }
649            })
650        }
651
652        if (!tooltipsCart.hasClass('tipsy-loaded') && window.innerWidth > 992) {
653            tooltipsCart.tipsy({
654                trigger: 'hover',
655                fade: true, opacity: 1, gravity: direct_e, title: function () {
656                    var added = $(this).find('.added_to_cart');
657                    if (added.length > 0) {
658                        return added.text();
659                    }
660                    return $(this).find('.ajax_add_to_cart').text();
661                }
662            });
663            tooltipsCart.addClass('tipsy-loaded')
664        }
665    };
666
667    /** bookmark tipsy */
668    Module.bookMarkTipsy = function () {
669        var tipsyBookmarks = $('.read-it-later');
670        tipsyBookmarks.each(function () {
671            var current = $(this);
672            if (!current.hasClass('tipsy-loaded')) {
673                current.tipsy({
674                    fade: true,
675                    opacity: 1,
676                    gravity: 's',
677                    title: function () {
678                        return $(this).data('title');
679                    }
680                });
681                current.addClass('tipsy-loaded');
682            }
683        });
684    };
685
686    // category header background
687    Module.categoryHeaderBg = function () {
688        var self = this;
689
690        var headerBGWrap = $('#category-header-bg');
691        if (headerBGWrap.length > 0) {
692            var background = headerBGWrap.data('background');
693            var wrapper = headerBGWrap.parent('.header-holder');
694            var topPos = wrapper.offset().top;
695            var headerHeight = wrapper.height();
696
697            if (background) {
698                headerBGWrap.css('background-image', 'url(' + background + ')');
699                setTimeout(function () {
700                    headerBGWrap.addClass('is-show');
701                }, 1);
702                self.initParallax(headerBGWrap, topPos, headerHeight, 3);
703                if (window.addEventListener) {
704                    window.addEventListener('scroll', function () {
705                        self.parallaxCalcAnimation(headerBGWrap, topPos, headerHeight, 3);
706                    }, false);
707                } else if (window.attachEvent) {
708                    window.attachEvent('onscroll', function () {
709                        self.parallaxCalcAnimation(headerBGWrap, topPos, headerHeight, 3);
710                    });
711                }
712            }
713        }
714    };
715
716    // init transform
717    Module.initParallax = function (wrapper, posTop, elHeight, percent) {
718
719        if (!this.$body.hasClass('is-parallax-feat') || wrapper.hasClass('parallax-init')) {
720            return;
721        }
722        var scrollTop = this.$document.scrollTop();
723        if (Math.abs(scrollTop - posTop) <= elHeight) {
724            var parallaxMove = Math.round((scrollTop - posTop) / percent);
725            wrapper.css('transform', 'translate3d(0,' + parallaxMove + 'px, 0)');
726            wrapper.css('-webkit-transform', 'translate3d(0,' + parallaxMove + 'px, 0)');
727        }
728    };
729
730    // calc parallax
731    Module.parallaxCalcAnimation = function (wrapper, posTop, elHeight, percent) {
732        var scrollTop = this.$document.scrollTop();
733        if (Math.abs(scrollTop - posTop) <= elHeight) {
734            var parallaxMove = Math.round((scrollTop - posTop) / percent);
735            wrapper.css('transform', 'translate3d(0,' + parallaxMove + 'px, 0)');
736            wrapper.css('-webkit-transform', 'translate3d(0,' + parallaxMove + 'px, 0)');
737        }
738    };
739
740    /** single featured parallax */
741    Module.singleParallaxFeat = function () {
742        var self = this;
743        if (!self.$body.hasClass('is-parallax-feat')) {
744            return;
745        }
746        var singleParallax = $('.parallax-thumb');
747        if (singleParallax.length > 0) {
748            singleParallax.each(function () {
749                var el = $(this);
750                if (!el.hasClass('loaded-parallax')) {
751                    //  var wrapper = el.find('.p-thumb');
752                    var wrapper = el.find('.rb-iwrap');
753                    var posTop = el.offset().top;
754                    var elHeight = el.height();
755                    self.initParallax(wrapper, posTop, elHeight, 4);
756                    setTimeout(function () {
757                        el.addClass('loaded-parallax');
758                    }, 500);
759                    if (window.addEventListener) {
760                        window.addEventListener('scroll', function () {
761                            self.parallaxCalcAnimation(wrapper, posTop, elHeight, 4);
762                        }, false);
763                    } else if (window.attachEvent) {
764                        window.attachEvent('onscroll', function () {
765                            self.parallaxCalcAnimation(wrapper, posTop, elHeight, 4);
766                        });
767                    }
768                }
769            })
770        }
771    };
772
773    /** fade in featured image */
774    Module.showSingleFeat = function () {
775        var singleParallax = $('.parallax-thumb');
776        if (singleParallax.length > 0) {
777            singleParallax.each(function () {
778                var el = $(this);
779                el.imagesLoaded(function () {
780                    if (!el.hasClass('feat-loaded')) {
781                        el.addClass('feat-loaded')
782                    }
783                });
784            });
785        }
786    };
787
788    /** featured thumbnail height calc */
789    Module.calcFullScreenFeat = function () {
790        var self = this;
791        var singleParallax = $('.parallax-thumb');
792        var winHeight = this.$window.height();
793        if (singleParallax.length > 0) {
794            singleParallax.each(function () {
795                var el = $(this);
796                // var wrapper = el.find('.p-thumb');
797                var wrapper = el.find('.rb-iwrap');
798                var topOffset = el.offset().top;
799                if (el.hasClass('is-fullscreen') && !el.hasClass('h-added')) {
800                    el.addClass('h-added');
801                    if (topOffset < winHeight) {
802                        el.css('height', 'calc(100vh - ' + el.offset().top + 'px)');
803                    } else {
804                        el.css('height', '100vh');
805                    }
806                }
807                var elHeight = el.height();
808                self.initParallax(wrapper, topOffset, elHeight, 4);
809                wrapper.addClass('parallax-init');
810            });
811        }
812    };
813
814    //post gallery outer
815    Module.postGallerySlider = function () {
816
817        var self = this;
818        var elements = $('.p-gallery-slider');
819        if (elements.length > 0) {
820            var config = {
821                items: 1,
822                loop: true,
823                dots: self.$themeSettings.sliderDot,
824                navText: [self.slidePrev, self.slideNext],
825                autoplay: self.$themeSettings.sliderPlay,
826                autoplayTimeout: self.$themeSettings.sliderSpeed,
827                nav: true,
828                autoplayHoverPause: true,
829                rtl: self.getRTL(),
830                navClass: [
831                    'rb-owl-prev',
832                    'rb-owl-next'
833                ],
834                navElement: 'div role="presentation"',
835                autoplaySpeed: 500
836            };
837
838            elements.each(function () {
839                var el = $(this);
840                el.on('initialized.owl.carousel', function () {
841                    el.prev('.load-animation').fadeOut(150, function () {
842                        $(this).remove();
843                        el.removeClass('per-load');
844                    });
845                });
846
847                el.imagesLoaded(function () {
848                    el.owlCarousel(config);
849                });
850
851            })
852        }
853    };
854
855    Module.siteAccessDetector = function () {
856        var self = this;
857        var detection = $('#rb-checktag');
858
859        if (!detection.length) {
860            return false;
861        }
862
863        setTimeout(function () {
864            if ($('.rb-adbanner').height() < 1) {
865                self.siteAccessPopup();
866                document.addEventListener('contextmenu', event => event.preventDefault());
867            }
868        }, 1000);
869    };
870
871    Module.siteAccessPopup = function () {
872
873        this.siteAccessFlag = true;
874        $.magnificPopup.close();
875
876        $.magnificPopup.open({
877            type: 'inline',
878            preloader: false,
879            showCloseBtn: false,
880            closeBtnInside: false,
881            enableEscapeKey: false,
882            removalDelay: 999999,
883            closeOnBgClick: false,
884            items: {
885                src: '#rb-site-access',
886                type: 'inline'
887            },
888            mainClass: 'popup-animation site-access-popup',
889            fixedBgPos: true,
890            fixedContentPos: true
891        });
892    };
893
894    //gallery popup
895    Module.postGalleryLightBox = function () {
896        var self = this;
897        $('.gallery-popup-link, .rb-gallery-link').on('click', function (e) {
898            e.preventDefault();
899            e.stopPropagation();
900
901            var target = $(this);
902            var data = [];
903            var galleryID = target.data('gallery');
904            var slideIndex = target.data('index');
905            var galleries = $(galleryID).find('.gallery-el');
906            galleries.each(function () {
907                data.push({
908                    title: $(this).find('.image-title').html(),
909                    rbgallery: $(this).html()
910                });
911            });
912
913            $.magnificPopup.open({
914                type: 'inline',
915                mainClass: 'rb-gallery-popup rb-popup-effect mfp-animation',
916                closeMarkup: '<button title="%title%" class="mfp-close"><i class="rbi rbi-move"></i></button>',
917                closeOnBgClick: false,
918                removalDelay: 500,
919                showCloseBtn: true,
920                preloader: false,
921                gallery: {
922                    enabled: true,
923                    preload: [0, 2],
924                    arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"><i class="rbi rbi-angle-%dir%"></i></button>',
925                    tCounter: '<span>%curr% / %total%</span>'
926                },
927                callbacks: {
928                    open: function () {
929                        $.magnificPopup.instance.goTo(slideIndex);
930                        self.$document.on('click', '.gallery-popup-select', function (e) {
931                            e.preventDefault();
932                            e.stopPropagation();
933                            var index = $(this).data('index');
934                            $.magnificPopup.instance.goTo(index);
935                        });
936                    },
937                    buildControls: function () {
938                        if (this.arrowLeft && this.arrowRight) {
939                            this.contentContainer.find('.gallery-popup-nav').append(this.arrowLeft.add(this.arrowRight));
940                        }
941                    }
942                },
943                inline: {
944                    markup: '<div class="gallery-popup-header is-light-text">' +
945                        '<h3 class="mfp-title"></h3>' +
946                        '<div class="header-right"><div class="mfp-counter"></div><div class="gallery-popup-nav"></div><div class="mfp-close"></div></div>' +
947                        '</div>' +
948                        '<div class="gallery-popup-content"><div class="mfp-rbgallery"></div></div>'
949                },
950                items: data
951            });
952
953            return false;
954        });
955    };
956
957    //auto play single video
958    Module.videoAutoPlay = function () {
959        var self = this;
960        var videos = $('.post-video-outer');
961        var nonResIframe = $('.entry-content > iframe');
962        if (videos != null && videos.length > 0) {
963            videos.each(function () {
964                var el = $(this);
965                if (el.hasClass('is-autoplay') && !el.hasClass('added-autoplay')) {
966                    self.wPoint['iframe'] = new Waypoint({
967                        element: el,
968                        handler: function () {
969                            var iframe = el.find('iframe');
970                            self.initAutoPlay(iframe);
971                            el.addClass('autoplay-added');
972                            this.destroy();
973                        },
974                        offset: '60%'
975                    });
976                }
977            })
978        }
979
980        if (nonResIframe != null && nonResIframe.length > 0) {
981            nonResIframe.each(function () {
982                var el = $(this);
983                if (!el.hasClass('is-loaded')) {
984                    var iURL = el.attr('src');
985                    if (iURL.indexOf('youtube.com') > 0 || iURL.indexOf('youtu.be') > 0 || iURL.indexOf('vimeo.com') > 0) {
986                        el.wrap('<div class="rb-ires is-loaded"></div>');
987                    }
988                }
989            })
990        }
991    };
992
993    //init auto play video
994    Module.initAutoPlay = function (item) {
995        if (item.length > 0 && 'undefined' != item[0]) {
996            var src = item[0].src;
997            if (src.indexOf('?') > -1) {
998                item[0].src += "&autoplay=1";
999            } else {
1000                item[0].src += "?autoplay=1";
1001            }
1002        }
1003    };
1004
1005    /** image loaded */
1006    Module.bodyImageLoaded = function () {
1007        this.$body.imagesLoaded(function () {
1008            $('.image-caption.is-overlay').removeClass('is-hide');
1009        })
1010    };
1011
1012    /** show comment box */
1013    Module.showPostComment = function () {
1014        $('.show-post-comment').off('click').on('click', function (e) {
1015            e.preventDefault();
1016            
1016e.stopPropagation();
1017            $(this).parent().next('.comment-box-content').removeClass('is-hidden');
1018            $(this).fadeOut(400, function () {
1019                $(this).remove();
1020            })
1021        });
1022    };
1023
1024    /** scroll to comment  */
1025    Module.scrollToComment = function () {
1026        var commentBtn = $('.show-post-comment');
1027        var self = this;
1028        if (commentBtn.length > 0) {
1029            var hash = window.location.hash;
1030            if ('#respond' == hash || '#comment' == hash.substring(0, 8)) {
1031                commentBtn.trigger('click');
1032                self.$html.scrollTop(commentBtn.offset().top);
1033            }
1034        }
1035    };
1036
1037    /** child review reply */
1038    Module.replyReview = function () {
1039        var replyLink = $('.comment-reply-link');
1040        replyLink.on('click', function () {
1041            var target = $(this);
1042            var wrapper = target.parents('.rb-reviews-area');
1043            if (wrapper.length > 0) {
1044                var cancelLink = $('#cancel-comment-reply-link');
1045                wrapper.find('.rb-form-rating').addClass('is-hidden');
1046                cancelLink.on('click', function () {
1047                    wrapper.find('.rb-form-rating').removeClass('is-hidden');
1048                });
1049            }
1050        });
1051    };
1052
1053    /** shop product */
1054    Module.productQuantity = function () {
1055        this.$document.on('click', '.quantity .quantity-btn', function (e) {
1056            e.preventDefault();
1057            var button = $(this);
1058            var step = 1;
1059            var input = button.parent().find('input');
1060            var min = 1;
1061            var max = 9999;
1062            var value_old = parseInt(input.val());
1063            var value_new = parseInt(input.val());
1064
1065            if (input.attr('step')) {
1066                step = parseInt(input.attr('step'));
1067            }
1068
1069            if (input.attr('min')) {
1070                min = parseInt(input.attr('min'));
1071            }
1072
1073            if (input.attr('max')) {
1074                max = parseInt(input.attr('max'));
1075            }
1076
1077            if (button.hasClass('up')) {
1078                if (value_old < max) {
1079                    value_new = value_old + step;
1080                } else {
1081                    value_new = max;
1082                }
1083            } else if (button.hasClass('down')) {
1084                if (value_old > min) {
1085                    value_new = value_old - step;
1086                } else {
1087                    value_new = min;
1088                }
1089            }
1090
1091            if (!input.attr('disabled')) {
1092                input.val(value_new).change();
1093            }
1094        });
1095    };
1096
1097    /** mega menu position */
1098    Module.mainMenuPos = function () {
1099
1100        if (window.innerWidth < 991) {
1101            return false;
1102        }
1103
1104        var defaultSubs = $('.rb-menu .sub-menu:not(sub-mega)');
1105        var megaColItems = $('.is-mega-menu.type-column');
1106
1107        if (defaultSubs.length > 0) {
1108            defaultSubs.each(function () {
1109                var item = $(this);
1110                var wrap = item.parents('.navbar-inner');
1111                if (wrap.length > 0) {
1112                    var wrapRightOffset = wrap.offset().left + wrap.width();
1113                    var rightOffset = item.offset().left + item.width();
1114                    if (rightOffset > wrapRightOffset) {
1115                        item.addClass('left-direction');
1116                        item.parents('.sub-menu').addClass('left-direction is-left-child');
1117                    }
1118                }
1119            });
1120        }
1121
1122        if (megaColItems.length > 0) {
1123            megaColItems.each(function () {
1124                var item = $(this);
1125                item.imagesLoaded(function () {
1126                    var parent = item.parents('.navbar-inner');
1127                    var sub = item.children('.mega-col.sub-menu');
1128                    var rightSpacing = parent.offset().left + parent.width() - (item.offset().left + item.width());
1129                    var leftSpacing = item.offset().left - parent.offset().left;
1130                    if (sub.length > 0) {
1131                        var subWidth = sub.width();
1132                        var subHaftWidth = parseInt(subWidth / 2);
1133                        if (subHaftWidth > leftSpacing) {
1134                            sub.css('left', '-' + leftSpacing + 'px');
1135                            sub.css('right', 'auto');
1136                        } else if (subHaftWidth > rightSpacing) {
1137                            sub.css('right', '-' + rightSpacing + 'px');
1138                            sub.css('left', 'auto');
1139                        } else {
1140                            sub.css('left', '-' + parseInt(subHaftWidth - parseInt(item.width() / 2)) + 'px');
1141                            sub.css('right', 'auto');
1142                        }
1143                    }
1144                });
1145            })
1146        }
1147    };
1148
1149    /* resize */
1150    Module.reCalcMenuPos = function () {
1151        var self = this;
1152        var delay;
1153        this.$window.on('resize', function () {
1154            clearTimeout(delay);
1155            delay = setTimeout(function () {
1156                self.mainMenuPos();
1157            }, 300);
1158        })
1159    };
1160
1161    /* masonry block */
1162    Module.masonryFW1 = function () {
1163        var self = this;
1164        var wrapper = $('.fw-masonry-1.is-masonry');
1165        if (wrapper.length > 0) {
1166            wrapper.each(function () {
1167                var el = $(this);
1168                var inner = el.find('.content-inner').eq(0);
1169                $(inner).isotope({
1170                    itemSelector: '.fw-mh-1',
1171                    percentPosition: true,
1172                    masonry: {
1173                        columnWidth: '.fw-ms-1'
1174                    }
1175                });
1176
1177                self.$window.on('RB:LazyLoaded', function () {
1178                    inner.imagesLoaded().progress(function () {
1179                        $(inner).isotope('layout');
1180                    });
1181                });
1182
1183                self.$body.imagesLoaded(function () {
1184                    setTimeout(function () {
1185                        $(inner).isotope('layout');
1186                    }, 20)
1187                });
1188            });
1189        }
1190    };
1191
1192    Module.masonryCT1 = function () {
1193        var self = this;
1194        var wrapper = $('.ct-masonry-1.is-masonry');
1195        if (wrapper.length > 0) {
1196            wrapper.each(function () {
1197                var el = $(this);
1198                var inner = el.find('.content-inner').eq(0);
1199                $(inner).isotope({
1200                    itemSelector: '.ct-mh-1',
1201                    percentPosition: true,
1202                    masonry: {
1203                        columnWidth: '.ct-ms-1'
1204                    }
1205                });
1206                self.$window.on('RB:LazyLoaded', function () {
1207                    inner.imagesLoaded().progress(function () {
1208                        $(inner).isotope('layout');
1209                    });
1210                });
1211
1212                self.$body.imagesLoaded(function () {
1213                    setTimeout(function () {
1214                        $(inner).isotope('layout');
1215                    }, 20)
1216                });
1217            });
1218        }
1219    };
1220
1221    Module.masonryPPCol3 = function () {
1222        var self = this;
1223        var wrapper = $('.pp-archive-m3.is-masonry');
1224        if (wrapper.length > 0) {
1225            wrapper.each(function () {
1226                var el = $(this);
1227                var inner = el.find('.content-inner').eq(0);
1228                $(inner).isotope({
1229                    itemSelector: '.fw-mh-1',
1230                    percentPosition: true,
1231                    masonry: {
1232                        columnWidth: '.fw-ms-1'
1233                    }
1234                });
1235
1236                self.$window.on('RB:LazyLoaded', function () {
1237                    inner.imagesLoaded().progress(function () {
1238                        $(inner).isotope('layout');
1239                    });
1240                });
1241
1242                self.$body.imagesLoaded(function () {
1243                    setTimeout(function () {
1244                        $(inner).isotope('layout');
1245                    }, 20)
1246                });
1247            });
1248        }
1249    };
1250
1251    Module.masonryPPCol4 = function () {
1252        var self = this;
1253        var wrapper = $('.pp-archive-m4.is-masonry');
1254        if (wrapper.length > 0) {
1255            wrapper.each(function () {
1256                var el = $(this);
1257                var inner = el.find('.content-inner').eq(0);
1258                $(inner).isotope({
1259                    itemSelector: '.fw-mh-c4',
1260                    percentPosition: true,
1261                    masonry: {
1262                        columnWidth: '.fw-ms-c4'
1263                    }
1264                });
1265
1266                self.$window.on('RB:LazyLoaded', function () {
1267                    inner.imagesLoaded().progress(function () {
1268                        $(inner).isotope('layout');
1269                    });
1270                });
1271
1272                self.$body.imagesLoaded(function () {
1273                    setTimeout(function () {
1274                        $(inner).isotope('layout');
1275                    }, 20)
1276                });
1277            });
1278        }
1279    };
1280
1281    Module.masonryFwP1 = function () {
1282        var self = this;
1283        var wrapper = $('.fw-portfolio-1.is-masonry');
1284        if (wrapper.length > 0) {
1285            wrapper.each(function () {
1286                var el = $(this);
1287                var inner = el.find('.content-inner').eq(0);
1288                var portfolioFW1 = $(inner).isotope({
1289                    itemSelector: '.fw-mh-1',
1290                    percentPosition: true,
1291                    filter: '*',
1292                    masonry: {
1293                        columnWidth: '.fw-ms-1'
1294                    }
1295                });
1296
1297                self.$window.on('RB:LazyLoaded', function () {
1298                    inner.imagesLoaded().progress(function () {
1299                        $(inner).isotope('layout');
1300                    });
1301                });
1302
1303                self.$body.imagesLoaded(function () {
1304                    setTimeout(function () {
1305                        $(inner).isotope('layout');
1306                    }, 20)
1307                });
1308
1309                /** filter */
1310                var filterBtn = el.find('.pp-filter-el');
1311                filterBtn.on('click', function () {
1312                    var target = $(this);
1313                    var filterValue = target.attr('data-filter');
1314                    target.addClass('active').siblings().removeClass('active');
1315                    $(inner).isotope({filter: filterValue});
1316                })
1317            });
1318        }
1319    };
1320
1321    Module.rbGallery = function () {
1322        let gallery = $('.rb-gallery-wrap');
1323        if (gallery.length > 0) {
1324            gallery.each(function () {
1325                let el = $(this);
1326                let inner = el.find('.gallery-inner').eq(0);
1327                $(inner).isotope({
1328                    itemSelector: '.rb-gallery-el',
1329                    percentPosition: true,
1330                    masonry: {
1331                        columnWidth: inner.find('.rb-gallery-el')[0]
1332                    }
1333                });
1334
1335                $(window).on('RB:LazyLoaded', function () {
1336                    inner.imagesLoaded().progress(function () {
1337                        $(inner).isotope('layout');
1338                    });
1339                });
1340
1341                $('body').imagesLoaded(function () {
1342                    $(inner).isotope('layout');
1343                });
1344
1345                setTimeout(function () {
1346                    inner.removeClass('gallery-loading');
1347                }, 2000);
1348                inner.imagesLoaded(function () {
1349                    inner.removeClass('gallery-loading');
1350                });
1351            });
1352        }
1353    };
1354
1355    /** user rating */
1356    Module.usersRating = function () {
1357        var self = this;
1358        var reviewsForm = this.$body.find('.rb-reviews-form');
1359        if (reviewsForm.length > 0) {
1360            reviewsForm.each(function () {
1361                var reviewForm = $(this);
1362                if (!reviewForm.hasClass('is-loaded')) {
1363                    reviewForm.addClass('is-loaded');
1364                    var ratingForm = reviewForm.find('.rb-form-rating');
1365                    var target = reviewForm.find('.rb-rating-selection');
1366                    target.hide();
1367                    target.before(
1368                        '<div class="rb-review-stars">\
1369                            <span>\
1370                                <a class="star" data-rating="1" href="#"><i class="rbi rbi-star"></i></a>\
1371                                <a class="star" data-rating="2" href="#"><i class="rbi rbi-star"></i></a>\
1372                                <a class="star" data-rating="3" href="#"><i class="rbi rbi-star"></i></a>\
1373                                <a class="star" data-rating="4" href="#"><i class="rbi rbi-star"></i></a>\
1374                                <a class="star" data-rating="5" href="#"><i class="rbi rbi-star"></i></a>\
1375                            </span>\
1376                        </div>'
1377                    );
1378
1379                    ratingForm.on('click', 'a.star', function (e) {
1380                        e.preventDefault();
1381                        e.stopPropagation();
1382                        var star = $(this);
1383                        var rating = star.closest('#respond').find('.rb-rating-selection');
1384                        rating.val(star.data('rating'));
1385                        star.siblings('a').removeClass('active');
1386                        star.addClass('active');
1387                        ratingForm.addClass('selected');
1388                    });
1389
1390                    reviewForm.on('click', '#respond #submit', function () {
1391                        var ratingEl = $(this).closest('.rb-reviews-form').find('.rb-rating-selection');
1392                        var text = $(this).closest('.rb-reviews-form').find('.rating-alert').html();
1393                        var rating = ratingEl.val();
1394                        if (ratingEl.length > 0 && !rating) {
1395                            window.alert(text);
1396                            return false;
1397                        }
1398                    });
1399                }
1400            });
1401        }
1402    };
1403
1404    /** Theme ajax */
1405    Module.reinitiateFunctions = function () {
1406        this.$html.off();
1407        this.$document.off();
1408        this.$window.trigger('load');
1409        this.documentReload();
1410    };
1411
1412    /** register cache object */
1413    Module.$cacheAjax = {
1414
1415        data: {},
1416        get: function (id) {
1417            return this.data[id];
1418        },
1419
1420        set: function (id, data) {
1421            this.remove(id);
1422            this.data[id] = data;
1423        },
1424
1425        remove: function (id) {
1426            delete this.data[id];
1427        },
1428
1429        exist: function (id) {
1430            return this.data.hasOwnProperty(id) && this.data[id] !== null;
1431        }
1432
1433    };
1434
1435    /** get data */
1436    Module.getAjaxData = function (block) {
1437        return {
1438            uuid: block.data('uuid'),
1439            name: block.data('name'),
1440            posts_per_page: block.data('posts_per_page'),
1441            page_max: block.data('page_max'),
1442            page_current: block.data('page_current'),
1443            category: block.data('category'),
1444            categories: block.data('categories'),
1445            orderby: block.data('orderby'),
1446            author: block.data('author'),
1447            tags: block.data('tags'),
1448            post_not_in: block.data('post_not_in'),
1449            format: block.data('format'),
1450            offset: block.data('offset'),
1451            quick_filter: block.data('quick_filter'),
1452            tag_not_in: block.data('tag_not_in'),
1453            layout: block.data('layout')
1454        };
1455    };
1456
1457    /** check pagination */
1458    Module.checkPagination = function (block) {
1459
1460        var settings = this.getAjaxData(block);
1461
1462        if (settings.page_current >= settings.page_max || settings.page_max <= 1) {
1463            block.find('.loadmore-link').hide();
1464            block.find('.loadmore-animation').hide();
1465            block.find('.pagination-infinite').addClass('disable-pagination');
1466            block.find('.pagination-loadmore').addClass('disable-pagination');
1467        } else {
1468            block.find('.loadmore-link').show();
1469            block.find('.loadmore-link').css('opacity', 1);
1470            block.find('.loadmore-animation').hide();
1471            block.find('.pagination-infinite').removeClass('disable-pagination');
1472            block.find('.pagination-loadmore').removeClass('disable-pagination');
1473        }
1474
1475        if (settings.page_max < 2) {
1476            block.find('.pagination-link').addClass('is-disable');
1477        }
1478        if (settings.page_current >= settings.page_max) {
1479            block.find('.ajax-next').addClass('is-disable');
1480        }
1481        if (settings.page_current <= 1) {
1482            block.find('.ajax-prev').addClass('is-disable');
1483        }
1484    };
1485
1486    /** quick filter */
1487    Module.quickFilter = function () {
1488        var self = this;
1489        $('.quick-filter-link').off('click').on('click', function (e) {
1490
1491            e.preventDefault();
1492            e.stopPropagation();
1493
1494            var link = $(this);
1495            var block = link.parents('.block-wrap');
1496            var uuid = block.attr('id');
1497
1498            if (true == self.$ajax[uuid + '_processing']) {
1499                return;
1500            }
1501            self.$ajax[uuid + '_processing'] = true;
1502            var filterVal = link.data('ajax_filter_val');
1503
1504            block.find('.quick-filter-link').removeClass('is-active');
1505            block.find('.quick-filter-link').not(this).addClass('is-deactivate');
1506            link.addClass('is-active');
1507
1508            self.animationStart(block, 'replace');
1509            var settings = self.getAjaxData(block);
1510
1511            self.resetQuickFilter(block, settings, filterVal);
1512
1513            setTimeout(function () {
1514                self.quickFilterProcess(block, settings);
1515            }, 400);
1516
1517        });
1518
1519        /** reset quick filter */
1520        Module.resetQuickFilter = function (block, settings, filterVal) {
1521
1522            var self = this;
1523            var uuid = block.attr('id');
1524
1525            settings.page_current = 1;
1526            block.data('page_current', 1);
1527
1528            if ('category' == settings.quick_filter) {
1529                if ('undefined' == typeof (self.$ajax[uuid + '_category'])) {
1530                    self.$ajax[uuid + '_category'] = 0;
1531                }
1532
1533                if (0 == filterVal) {
1534                    settings.category = self.$ajax[uuid + '_category'];
1535                    settings.categories = self.$ajax[uuid + '_categories'];
1536
1537                    block.data('category', self.$ajax[uuid + '_category']);
1538                    block.data('categories', self.$ajax[uuid + '_categories']);
1539
1540                } else {
1541                    settings.category = filterVal;
1542                    settings.categories = 0;
1543
1544                    block.data('category', filterVal);
1545                    block.data('categories', 0);
1546                }
1547            }
1548
1549            if ('tag' == settings.quick_filter) {
1550                settings.tags = filterVal;
1551                block.data('tags', filterVal);
1552            }
1553        };
1554
1555        /** process ajax */
1556        Module.quickFilterProcess = function (block, settings) {
1557
1558            var self = this;
1559            var cacheSettings = settings;
1560            delete cacheSettings.page_max;
1561            var cacheID = JSON.stringify(cacheSettings);
1562
1563            if (self.$cacheAjax.exist(cacheID)) {
1564                var data = self.$cacheAjax.get(cacheID);
1565
1566                if ('undefined' != typeof data.page_max) {
1567                    block.data('page_max', data.page_max);
1568                }
1569
1570                self.animationEnd(block, data.content, 'replace');
1571
1572                return false;
1573            } else {
1574                $.ajax({
1575                    type: 'POST',
1576                    url: pixwellParams.ajaxurl,
1577                    data: {
1578                        action: 'pixwell_quick_filter',
1579                        data: settings
1580                    },
1581                    success: function (data) {
1582                        data = $.parseJSON(JSON.stringify(data));
1583                        if ('undefined' != typeof data.page_max) {
1584                            block.data('page_max', data.page_max);
1585                        }
1586                        self.$cacheAjax.set(cacheID, data);
1587                        self.animationEnd(block, data.content, 'replace');
1588                    }
1589                });
1590            }
1591        };
1592
1593        /** ajax next prev */
1594        Module.paginationNextPrev = function () {
1595            var self = this;
1596            $('.pagination-link').off('click').on('click', function (e) {
1597
1598                e.preventDefault();
1599                e.stopPropagation();
1600
1601                var link = $(this);
1602                var block = link.parents('.block-wrap');
1603                var uuid = block.attr('id');
1604
1605                if (true == self.$ajax[uuid + '_processing']) {
1606                    return;
1607                }
1608
1609                self.$ajax[uuid + '_processing'] = true;
1610
1611                var type = link.data('type');
1612
1613                var settings = self.getAjaxData(block);
1614                self.animationStart(block, 'replace');
1615                self.paginationNextPrevProcess(block, settings, type);
1616            });
1617        };
1618
1619        /** processing next prev ajax */
1620        Module.paginationNextPrevProcess = function (block, settings, type) {
1621
1622            if ('prev' == type) {
1623                settings.page_next = parseInt(settings.page_current) - 1;
1624            } else {
1625                settings.page_next = parseInt(settings.page_current) + 1;
1626            }
1627            var cacheSettings = settings;
1628            delete cacheSettings.page_max;
1629            cacheSettings.page_current = settings.page_next;
1630            var cacheID = JSON.stringify(cacheSettings);
1631
1632            if (self.$cacheAjax.exist(cacheID)) {
1633                var data = self.$cacheAjax.get(cacheID);
1634                if ('undefined' != typeof data.page_current) {
1635                    block.data('page_current', data.page_current);
1636                }
1637                self.animationEnd(block, data.content, 'replace');
1638                return false;
1639            } else {
1640                $.ajax({
1641                    type: 'POST',
1642                    url: pixwellCoreParams.ajaxurl,
1643                    data: {
1644                        action: 'pixwell_live_pagination',
1645                        data: settings
1646                    },
1647                    success: function (data) {
1648                        data = $.parseJSON(JSON.stringify(data));
1649                        if ('undefined' != typeof data.page_current) {
1650                            block.data('page_current', data.page_current);
1651                        }
1652                        self.$cacheAjax.set(cacheID, data);
1653                        self.animationEnd(block, data.content, 'replace');
1654                    }
1655                });
1656            }
1657        };
1658
1659        /** ajax load more */
1660        Module.loadMore = function () {
1661            var self = this;
1662            $('.loadmore-link').off('click').on('click', function (e) {
1663
1664                e.preventDefault();
1665                e.stopPropagation();
1666
1667                var link = $(this);
1668                var block = link.parents('.block-wrap');
1669                var uuid = block.attr('id');
1670                if (true == self.$ajax[uuid + '_processing']) {
1671                    return;
1672                }
1673
1674                self.$ajax[uuid + '_processing'] = true;
1675                var settings = self.getAjaxData(block);
1676                if (settings.page_current >= settings.page_max) {
1677                    return;
1678                }
1679
1680                self.animationStart(block, 'append');
1681                self.loadmoreProcess(block, settings);
1682
1683            })
1684        };
1685
1686        /** processing load more */
1687        Module.loadmoreProcess = function (block, settings) {
1688
1689            settings.page_next = parseInt(settings.page_current) + 1;
1690            if (settings.page_next <= settings.page_max) {
1691                $.ajax({
1692                    type: 'POST',
1693                    url: pixwellParams.ajaxurl,
1694                    data: {
1695                        action: 'pixwell_live_pagination',
1696                        data: settings
1697                    },
1698                    success: function (data) {
1699                        data = $.parseJSON(JSON.stringify(data));
1700                        if ('undefined' != data.page_current) {
1701                            block.data('page_current', data.page_current);
1702                        }
1703                        if ('undefined' != data.notice) {
1704                            data.content = data.content + data.notice;
1705                        }
1706                        self.animationEnd(block, data.content, 'append');
1707                    }
1708                });
1709            }
1710        };
1711
1712        /** infinite ajax */
1713        Module.paginationInfinite = function () {
1714            var self = this;
1715            var infiniteElements = $('.pagination-infinite');
1716            if (infiniteElements.length > 0) {
1717                infiniteElements.each(function () {
1718                    var element = $(this);
1719                    if (!element.hasClass('disable-pagination')) {
1720                        var animation = element.find('.loadmore-animation');
1721                        var block = element.parents('.block-wrap');
1722                        var uuid = block.attr('id');
1723                        var wPointID = 'infinite' + uuid;
1724                        var settings = self.getAjaxData(block);
1725
1726                        self.wPoint[wPointID] = new Waypoint({
1727                            element: element,
1728                            handler: function (direction) {
1729                                if ('down' == direction) {
1730                                    if (true == self.$ajax[uuid + '_processing']) {
1731                                        return;
1732                                    }
1733                                    self.$ajax[uuid + '_processing'] = true;
1734                                    self.animationStart(block, 'append');
1735                                    Module.loadmoreProcess(block, settings);
1736                                    setTimeout(function () {
1737                                        self.wPoint[wPointID].destroy();
1738                                    }, 10);
1739                                }
1740                            },
1741                            offset: '99%'
1742                        })
1743                    }
1744                });
1745            }
1746        };
1747
1748        /** animation start */
1749        Module.animationStart = function (block, action) {
1750
1751            var wrapper = block.find('.content-wrap');
1752            var inner = wrapper.find('.content-inner');
1753
1754            block.find('.ajax-link').addClass('is-disable');
1755            inner.stop();
1756
1757            if ('replace' == action) {
1758                wrapper.css('height', wrapper.outerHeight());
1759                wrapper.prepend('<div class="load-animation"></div>');
1760                inner.addClass('is-overflow');
1761                inner.fadeTo('200', 0.05);
1762            } else {
1763                block.find('.loadmore-link').addClass('loading').animate({opacity: 0}, 200);
1764                block.find('.loadmore-animation').css({'display': 'block'}).delay(300).animate({opacity: 1}, 200);
1765            }
1766        };
1767
1768        /** animation end */
1769        Module.animationEnd = function (block, content, action) {
1770            var self = this;
1771            block.delay(100).queue(function () {
1772                var uuid = block.attr('id');
1773                var wrapper = block.find('.content-wrap');
1774                var inner = block.find('.content-inner');
1775
1776                block.find('.filter-link').removeClass('is-deactivate');
1777                block.find('.ajax-link').removeClass('is-disable');
1778                inner.stop();
1779
1780                if ('replace' == action) {
1781                    wrapper.find('.load-animation').remove();
1782                    inner.html(content);
1783
1784                    /** fix flashing menu */
1785                    if (inner.hasClass('mega-content-inner')) {
1786                        inner.imagesLoaded(function () {
1787                            setTimeout(function () {
1788                                inner.removeClass('is-overflow');
1789                                wrapper.css('height', 'auto');
1790                                setTimeout(function () {
1791                                    inner.fadeTo(300, 1);
1792                                }, 300);
1793                            }, 100)
1794                        });
1795                    } else {
1796                        inner.removeClass('is-overflow');
1797                        wrapper.css('height', 'auto');
1798                        setTimeout(function () {
1799                            inner.fadeTo(300, 1);
1800                        }, 300);
1801                    }
1802                } else {
1803                    content = $(content);
1804                    content.addClass('is-hide');
1805                    content.addClass('opacity-animate');
1806                    inner.append(content);
1807                    block.find('.loadmore-animation').animate({opacity: 0}, 200, function () {
1808                        $(this).css({'display': 'none'});
1809                    });
1810                    setTimeout(function () {
1811                        content.removeClass('is-hide');
1812                    }, 300);
1813                    block.find('.loadmore-link').removeClass('loading').delay(300).animate({opacity: 1}, 200);
1814                }
1815
1816                /** reload */
1817                if (inner.hasClass('is-masonry-reload')) {
1818                    $(inner).isotope('reloadItems');
1819                    self.$window.on('RB:LazyLoaded', function () {
1820                        $(inner).isotope('reloadItems');
1821                    });
1822                }
1823
1824                self.checkPagination(block);
1825                block.dequeue();
1826
1827                setTimeout(function () {
1828                    self.$ajax[uuid + '_processing'] = false;
1829                    self.reinitiateFunctions();
1830                }, 50);
1831            });
1832        }
1833    };
1834
1835    /** live search */
1836    Module.navLiveSearch = function () {
1837
1838        var navSearch = $('.nav-search-live');
1839        if (navSearch.length == 0) {
1840            return;
1841        }
1842        navSearch.each(function () {
1843            var navSearchEl = $(this);
1844            var input = navSearchEl.find('input[type="search"]');
1845            var contentWrap = navSearchEl.find('.navbar-search-response');
1846            var animation = navSearchEl.find('.live-search-animation');
1847            var submitIcon = navSearchEl.find('.search-form');
1848
1849            input.attr('autocomplete', 'off');
1850            var delay = (function () {
1851                var timer = 0;
1852                return function (callback, ms) {
1853                    clearTimeout(timer);
1854                    timer = setTimeout(callback, ms);
1855                };
1856            })();
1857
1858            input.keyup(function () {
1859                var param = $(this).val();
1860                delay(function () {
1861                    if (param) {
1862                        submitIcon.addClass('loading');
1863                        setTimeout(function () {
1864                            animation.fadeIn(250);
1865                        }, 250);
1866
1867                        $.ajax({
1868                            type: 'POST',
1869                            url: pixwellParams.ajaxurl,
1870                            data: {
1871                                action: 'pixwell_live_search',
1872                                s: param
1873                            },
1874                            success: function (data) {
1875                                data = $.parseJSON(JSON.stringify(data));
1876
1877                                animation.fadeOut(250);
1878                                setTimeout(function () {
1879                                    submitIcon.removeClass('loading');
1880                                }, 300);
1881                                contentWrap.hide().empty().css('height', contentWrap.height());
1882                                contentWrap.html(data);
1883                                contentWrap.css('height', 'auto').fadeIn(250);
1884                                $(window).trigger('load');
1885                            }
1886                        });
1887                    } else {
1888                        contentWrap.fadeOut(300, function () {
1889                            contentWrap.empty().css('height', 'auto');
1890                        });
1891                    }
1892                }, 300);
1893            })
1894        });
1895    };
1896
1897    /** single infinite load */
1898    Module.singleInfiniteLoadNext = function () {
1899
1900        var self = this;
1901        var infiniteWrapper = $('#single-post-infinite');
1902        var infiniteLoadPoint = $('#single-infinite-point');
1903        var animationIcon = infiniteLoadPoint.find('.loadmore-animation');
1904
1905        if (infiniteWrapper.length == 0 || infiniteLoadPoint.length == 0) {
1906            return;
1907        }
1908
1909        infiniteWrapper.imagesLoaded(function () {
1910            self.wPoint['ajaxSingle'] = new Waypoint({
1911                element: infiniteLoadPoint,
1912                offset: 'bottom-in-view',
1913                handler: function (direction) {
1914                    if (true == self.$ajax['singleProcessing'] || 'up' == direction) {
1915                        return;
1916                    }
1917                    var nextPostURL = infiniteWrapper.data('nextposturl');
1918
1919                    if (nextPostURL.indexOf('?') != -1 || nextPostURL.indexOf('#') != -1) {
1920                        nextPostURL = nextPostURL + '&rbsnp=1';
1921                    } else {
1922                        nextPostURL = nextPostURL + '?rbsnp=1';
1923                    }
1924
1925                    self.$ajax['singleProcessing'] = true;
1926                    animationIcon.css({'display': 'block'}).delay(300).animate({opacity: 1}, 300);
1927
1928                    $.ajax({
1929                        type: 'GET',
1930                        url: nextPostURL,
1931                        dataType: 'html',
1932                        success: function (response) {
1933
1934                            response = $.parseJSON(JSON.stringify(response));
1935                            response = $('<div id="temp-dom"></div>').append($.parseHTML(response));
1936                            response = response.find('.single-p-outer');
1937
1938                            var nextPostURL = response.data('nextposturl');
1939                            if ('undefined' != typeof (nextPostURL) && nextPostURL.length > 0) {
1940                                infiniteWrapper.data('nextposturl', nextPostURL);
1941                            } else {
1942                                infiniteWrapper.removeAttr('id');
1943                                infiniteLoadPoint.remove();
1944                            }
1945                            animationIcon.animate({opacity: 0}, 300).delay(300).css({'display': 'none'});
1946                            var googleAds = $(response).find('.adsbygoogle');
1947                            var instEmbed = $(response).find('.instagram-media');
1948                            infiniteWrapper.append(response);
1949                            self.$ajax['singleProcessing'] = false;
1950                            setTimeout(function () {
1951                                Waypoint.refreshAll();
1952
1953                                self.reinitiateFunctions();
1954                                self.loadGoogleAds(googleAds);
1955                                self.loadInstagram(instEmbed)
1956                            }, 1);
1957                        }
1958                    });
1959                }
1960            });
1961        });
1962
1963    };
1964
1965    /** scroll update URL */
1966    Module.scrollUpdateProcess = function () {
1967
1968        var self = this;
1969        var scroll;
1970        var articleData = [];
1971
1972        var infiniteWrapper = $('#single-post-infinite');
1973        if (infiniteWrapper.length == 0) {
1974            return;
1975        }
1976
1977        var articleOuter = infiniteWrapper.find('.single-p-outer');
1978        if (articleOuter.length > 0) {
1979            articleOuter.each(function () {
1980                var article = $(this);
1981                articleData.push({
1982                    postID: article.data('postid'),
1983                    postURL: article.data('postlink'),
1984                    postTitle: article.find('h1.entry-title').text(),
1985                    top: article.offset().top,
1986                    bottom: article.offset().top + article.outerHeight(true)
1987                });
1988            });
1989
1990            if (window.addEventListener) {
1991                window.addEventListener('scroll', function () {
1992                    if (self.$singleScrollDelay % 3 == 1) {
1993                        self.scrollUpdateAction(articleData);
1994                        self.$singleScrollDelay = 1;
1995                    } else {
1996                        self.$singleScrollDelay++;
1997                    }
1998                }, false);
1999
2000            } else if (window.attachEvent) {
2001                window.attachEvent('onscroll', function () {
2002                    if (self.$singleScrollDelay % 3 == 0) {
2003                        self.scrollUpdateAction(articleData);
2004                        self.$singleScrollDelay = 1;
2005                    } else {
2006                        self.$singleScrollDelay++;
2007                    }
2008                });
2009            }
2010        }
2011
2012    };
2013
2014    Module.scrollUpdateAction = function (articleData) {
2015        var self = this;
2016        var scrollTop = self.$window.scrollTop();
2017        articleData.every(function (element) {
2018            if (scrollTop > element.top && scrollTop < element.bottom) {
2019                if (element.postID != self.currentArticleID) {
2020                    self.currentArticleID = element.postID;
2021                    self.updateLocationHref(element.postURL, element.postTitle);
2022                }
2023                return false;
2024            }
2025            return true;
2026        });
2027    };
2028
2029    Module.updateLocationHref = function (url, title) {
2030        var self = this;
2031        if (window.location.href !== url) {
2032            if (url !== '') {
2033                history.replaceState(null, null, url);
2034                document.title = title;
2035            }
2036            self.updateGA(url);
2037        }
2038    };
2039
2040    Module.updateGA = function (url) {
2041        url = url.replace(/https?:\/\/[^\/]+/i, '');
2042
2043        if (typeof _gaq !== 'undefined' && _gaq !== null) {
2044            _gaq.push(['_trackPageview', url]);
2045        }
2046
2047        if (typeof ga !== 'undefined' && ga !== null) {
2048            ga('send', 'pageview', url);
2049        }
2050
2051        if (typeof __gaTracker !== 'undefined' && __gaTracker !== null) {
2052            __gaTracker('send', 'pageview', url);
2053        }
2054
2055        if (typeof googletag !== 'undefined') {
2056            googletag.pubads().refresh();
2057        }
2058    };
2059
2060    /** load google ads */
2061    Module.loadGoogleAds = function (googleAds) {
2062        if (typeof window.adsbygoogle !== 'undefined' && googleAds.length) {
2063            var adsbygoogle;
2064            googleAds.each(function () {
2065                (adsbygoogle = window.adsbygoogle || []).push({});
2066            });
2067        }
2068    };
2069
2070    Module.loadInstagram = function (instEmbed) {
2071        if ('undefined' !== typeof window.instgrm) {
2072            window.instgrm.Embeds.process();
2073        } else if (instEmbed.length && 'undefined' === typeof window.instgrm) {
2074            var embedJS = document.createElement('script');
2075            embedJS.src = '//platform.instagram.com/en_US/embeds.js';
2076            embedJS.onload = function () {
2077                window.instgrm.Embeds.process();
2078            };
2079            this.$body.append(embedJS);
2080        }
2081    };
2082
2083    Module.loadElementor = function () {
2084        PIXWELL_MAIN_SCRIPTS.$themeSettings.sliderPlay = 0;
2085
2086        PIXWELL_MAIN_SCRIPTS.bigSlider();
2087        PIXWELL_MAIN_SCRIPTS.carouselSlider();
2088        PIXWELL_MAIN_SCRIPTS.carouselWideSlider();
2089        PIXWELL_MAIN_SCRIPTS.bigNavSlider();
2090
2091    };
2092
2093    return Module;
2094
2095}(PIXWELL_MAIN_SCRIPTS || {}, jQuery));
2096
2097jQuery(document).ready(function () {
2098    PIXWELL_MAIN_SCRIPTS.init();
2099});
2100
2101/** Elementor editor */
2102jQuery(window).on('elementor/frontend/init', function () {
2103    if (window.elementor) {
2104        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-4.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2105        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-5.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2106        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-14.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2107        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-15.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2108        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-3.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2109        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-7.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2110        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-9.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2111        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-10.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2112        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-12.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2113        elementorFrontend.hooks.addAction('frontend/element_ready/fw-feat-13.default', PIXWELL_MAIN_SCRIPTS.loadElementor);
2114    }
2115});

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.