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.