1(function ($) { 2 3 'use strict'; 4 5 document.querySelectorAll('[data-placement]').forEach(element => { 6 if (element.getAttribute('data-placement').indexOf('ms-') < 0 && !element.classList.contains('cookieconsent')) { 7 element.setAttribute('data-bs-placement', element.getAttribute('data-placement')); 8 element.removeAttribute('data-placement'); 9 } 10 }); 11 12 document.querySelectorAll('[data-parent]').forEach(element => { 13 if (element.getAttribute('data-parent').indexOf('ms-') < 0) { 14 element.setAttribute('data-bs-parent', element.getAttribute('data-parent')); 15 element.removeAttribute('data-parent'); 16 } 17 }); 18 19 document.querySelectorAll('[data-toggle]').forEach(element => { 20 if (element.getAttribute('data-toggle').indexOf('ms-') < 0) { 21 element.setAttribute('data-bs-toggle', element.getAttribute('data-toggle')); 22 element.removeAttribute('data-toggle'); 23 } 24 }); 25 26 document.querySelectorAll('[data-target]').forEach(element => { 27 if (element.getAttribute('data-target').indexOf('ms-') < 0) { 28 element.setAttribute('data-bs-target', element.getAttribute('data-target')); 29 element.removeAttribute('data-target'); 30 } 31 }); 32 33 document.querySelectorAll('[data-dismiss]').forEach(element => { 34 if (element.getAttribute('data-dismiss').indexOf('ms-') < 0) { 35 element.setAttribute('data-bs-dismiss', element.getAttribute('data-dismiss')); 36 element.removeAttribute('data-dismiss'); 37 } 38 }); 39 40 document.querySelectorAll('[data-content]').forEach(element => { 41 if (element.getAttribute('data-content').indexOf('ms-') < 0) { 42 element.setAttribute('data-bs-content', element.getAttribute('data-content')); 43 element.removeAttribute('data-content'); 44 } 45 }); 46 47 document.querySelectorAll('[data-trigger]').forEach(element => { 48 if (element.getAttribute('data-trigger').indexOf('ms-') < 0) { 49 element.setAttribute('data-bs-trigger', element.getAttribute('data-trigger')); 50 element.removeAttribute('data-trigger'); 51 } 52 }); 53 54 document.querySelectorAll('[data-dismiss]').forEach(element => { 55 if (element.getAttribute('data-dismiss').indexOf('ms-') < 0) { 56 element.setAttribute('data-bs-dismiss', element.getAttribute('data-dismiss')); 57 element.removeAttribute('data-dismiss'); 58 } 59 }); 60 61}).apply(this, [jQuery]);window.theme = {}; 62 63window.theme.fn = { 64 65 getOptions: function (opts) { 66 67 if (typeof (opts) == 'object') { 68 69 return opts; 70 71 } else if (typeof (opts) == 'string') { 72 73 try { 74 return JSON.parse(opts.replace(/'/g, '"').replace(';', '')); 75 } catch (e) { 76 return {}; 77 } 78 79 } else { 80 81 return {}; 82 83 } 84 85 }, 86 87 execPluginFunction: function (functionName, context) { 88 var args = Array.prototype.slice.call(arguments, 2); 89 var namespaces = functionName.split("."); 90 var func = namespaces.pop(); 91 92 for (var i = 0; i < namespaces.length; i++) { 93 context = context[namespaces[i]]; 94 } 95 96 return context[func].apply(context, args); 97 }, 98
99 intObs: function (selector, functionName, intObsOptions, alwaysObserve) { 100 var $el = document.querySelectorAll(selector); 101 var intersectionObserverOptions = { 102 rootMargin: '0px 0px 200px 0px' 103 } 104 105 if (intObsOptions.length) { 106 $.extend(intersectionObserverOptions, intObsOptions); 107 } 108 109 var observer = new IntersectionObserver(function (entries) { 110 for (var i = 0; i < entries.length; i++) { 111 var entry = entries[i]; 112 113 if (entry.intersectionRatio > 0) { 114 if (typeof functionName === 'string') { 115 var func = Function('return ' + functionName)(); 116 } else { 117 var callback = functionName; 118 119 callback.call($(entry.target)); 120 } 121 122 // Unobserve 123 if (!alwaysObserve) { 124 observer.unobserve(entry.target); 125 } 126 127 } 128 } 129 }, intersectionObserverOptions); 130 131 $($el).each(function () { 132 observer.observe($(this)[0]); 133 }); 134 }, 135 136 intObsInit: function (selector, functionName) { 137 var $el = document.querySelectorAll(selector); 138 var intersectionObserverOptions = { 139 rootMargin: '200px' 140 } 141 142 var observer = new IntersectionObserver(function (entries) { 143 for (var i = 0; i < entries.length; i++) { 144 var entry = entries[i]; 145 if (entry.intersectionRatio > 0) { 146 147 var $this = $(entry.target), 148 opts; 149 150 var pluginOptions = theme.fn.getOptions($this.data('plugin-options')); 151 if (pluginOptions) 152 opts = pluginOptions; 153 154 theme.fn.execPluginFunction(functionName, $this, opts); 155 156 // Unobserve 157 observer.unobserve(entry.target); 158 } 159 } 160 }, intersectionObserverOptions); 161 162 $($el).each(function () { 163 observer.observe($(this)[0]); 164 }); 165 } 166}; 167 168// Before / After 169(function (theme, $) { 170 171 theme = theme || {}; 172 173 var instanceName = '__beforeafter'; 174 175 var PluginBeforeAfter = function ($el, opts) { 176 return this.initialize($el, opts); 177 }; 178 179 PluginBeforeAfter.defaults = { 180 181 }; 182 183 PluginBeforeAfter.prototype = { 184 initialize: function ($el, opts) { 185 this.$el = $el; 186 187 this 188 .setData() 189 .setOptions(opts) 190 .build(); 191 192 return this; 193 }, 194 195 setData: function () { 196 this.$el.data(instanceName, this); 197 198 return this; 199 }, 200 201 setOptions: function (opts) { 202 this.options = $.extend(true, {}, PluginBeforeAfter.defaults, opts, { 203 wrapper: this.$el 204 }); 205 206 return this; 207 }, 208 209 build: function () { 210 211 if (!($.isFunction($.fn.twentytwenty))) { 212 return this; 213 } 214 215 var self = this; 216 217 self.options.wrapper 218 .twentytwenty(self.options); 219 220 return this; 221 222 } 223 }; 224 225 // expose to scope 226 $.extend(theme, { 227 PluginBeforeAfter: PluginBeforeAfter 228 }); 229 230 // jquery plugin 231 $.fn.themePluginBeforeAfter = function (opts) { 232 return this.map(function () { 233 var $this = $(this); 234 235 if ($this.data(instanceName)) { 236 return $this.data(instanceName); 237 } else { 238 return new PluginBeforeAfter($this, opts); 239 } 240 241 }); 242 } 243 244}).apply(this, [window.theme, jQuery]); 245 246// Countdown 247(function (theme, $) { 248 249 theme = theme || {}; 250 251 var instanceName = '__countdown'; 252 253 var PluginCountdown = function ($el, opts) { 254 return this.initialize($el, opts); 255 }; 256 257 PluginCountdown.defaults = { 258 date: '2030/06/10 12:00:00', 259 textDay: 'DAY', 260 textHour: 'HRS', 261 textMin: 'MIN', 262 textSec: 'SEC', 263 uppercase: true, 264 numberClass: '', 265 wrapperClass: '', 266 insertHTMLbefore: '', 267 insertHTMLafter: '' 268 }; 269 270 PluginCountdown.prototype = { 271 initialize: function ($el, opts) { 272 if ($el.data(instanceName)) { 273 return this; 274 } 275 276 this.$el = $el; 277 278 this 279 .setData() 280 .setOptions(opts) 281 .build(); 282 283 return this; 284 }, 285 286 setData: function () { 287 this.$el.data(instanceName, this); 288 289 return this; 290 }, 291 292 setOptions: function (opts) { 293 this.options = $.extend(true, {}, PluginCountdown.defaults, opts, { 294 wrapper: this.$el 295 }); 296 297 return this; 298 }, 299 300 build: function () { 301 if (!($.isFunction($.fn.countTo))) { 302 return this; 303 } 304 305 var self = this, 306 $el = this.options.wrapper, 307 numberClass = (self.options.numberClass) ? ' ' + self.options.numberClass : '', 308 wrapperClass = (self.options.wrapperClass) ? ' ' + self.options.wrapperClass : ''; 309 310 if (self.options.uppercase) { 311 $el.countdown(self.options.date).on('update.countdown', function (event) { 312 var $this = $(this).html(event.strftime(self.options.insertHTMLbefore 313 + '<span class="days' + wrapperClass + '"><span class="' + numberClass + '">%D</span> ' + self.options.textDay + '<div class="d-inline text-uppercase">%!d</div></span> ' 314 + '<span class="hours' + wrapperClass + '"><span class="' + numberClass + '">%H</span> ' + self.options.textHour + '</span> ' 315 + '<span class="minutes' + wrapperClass + '"><span class="' + numberClass + '">%M</span> ' + self.options.textMin + '</span> ' 316 + '<span class="seconds' + wrapperClass + '"><span class="' + numberClass + '">%S</span> ' + self.options.textSec + '</span> ' 317 + self.options.insertHTMLafter 318 )); 319 }); 320 } else { 321 $el.countdown(self.options.date).on('update.countdown', function (event) { 322 var $this = $(this).html(event.strftime(self.options.insertHTMLbefore 323 + '<span class="days' + wrapperClass + '"><span class="' + numberClass + '">%D</span> ' + self.options.textDay + '%!d</span> ' 324 + '<span class="hours' + wrapperClass + '"><span class="' + numberClass + '">%H</span> ' + self.options.textHour + '</span> ' 325 + '<span class="minutes' + wrapperClass + '"><span class="' + numberClass + '">%M</span> ' + self.options.textMin + '</span> ' 326 + '<span class="seconds' + wrapperClass + '"><span class="' + numberClass + '">%S</span> ' + self.options.textSec + '</span> ' 327 + self.options.insertHTMLafter 328 )); 329 }); 330 } 331 332 return this; 333 } 334 }; 335 336 // expose to scope 337 $.extend(theme, { 338 PluginCountdown: PluginCountdown 339 }); 340 341 // jquery plugin 342 $.fn.themePluginCountdown = function (opts) { 343 return this.map(function () { 344 var $this = $(this); 345 346 if ($this.data(instanceName)) { 347 return $this.data(instanceName); 348 } else { 349 return new PluginCountdown($this, opts); 350 } 351 352 }); 353 } 354 355}).apply(this, [window.theme, jQuery]); 356 357// Counter 358(function (theme, $) { 359 360 theme = theme || {}; 361 362 var instanceName = '__counter'; 363 364 var PluginCounter = function ($el, opts) { 365 return this.initialize($el, opts); 366 }; 367 368 PluginCounter.defaults = { 369 accX: 0, 370 accY: 0, 371 speed: 3000, 372 refreshInterval: 100, 373 decimals: 0, 374 onUpdate: null, 375 onComplete: null 376 }; 377 378 PluginCounter.prototype = { 379 initialize: function ($el, opts) { 380 if ($el.data(instanceName)) { 381 return this; 382 } 383 384 this.$el = $el; 385 386 this 387 .setData() 388 .setOptions(opts) 389 .build(); 390 391 return this; 392 }, 393 394 setData: function () { 395 this.$el.data(instanceName, this); 396 397 return this; 398 }, 399 400 setOptions: function (opts) { 401 this.options = $.extend(true, {}, PluginCounter.defaults, opts, { 402 wrapper: this.$el 403 }); 404 405 return this; 406 }, 407 408 build: function () { 409 if (!($.isFunction($.fn.countTo))) { 410 return this; 411 } 412 413 var self = this, 414 $el = this.options.wrapper; 415 416 $.extend(self.options, { 417 onComplete: function () { 418 if ($el.data('append')) { 419 $el.html($el.html() + $el.data('append')); 420 } 421 422 if ($el.data('prepend')) { 423 $el.html($el.data('prepend') + $el.html()); 424 } 425 } 426 }); 427
428 $el.appear(function () { 429 430 $el.countTo(self.options); 431 432 }, { 433 accX: self.options.accX, 434 accY: self.options.accY 435 }); 436 437 return this; 438 } 439 }; 440 441 // expose to scope 442 $.extend(theme, { 443 PluginCounter: PluginCounter 444 }); 445 446 // jquery plugin 447 $.fn.themePluginCounter = function (opts) { 448 return this.map(function () { 449 var $this = $(this); 450 451 if ($this.data(instanceName)) { 452 return $this.data(instanceName); 453 } else { 454 return new PluginCounter($this, opts); 455 } 456 457 }); 458 } 459 460}).apply(this, [window.theme, jQuery]); 461 462// Match Height 463(function (theme, $) { 464 465 theme = theme || {}; 466 467 var instanceName = '__matchHeight'; 468 469 var PluginMatchHeight = function ($el, opts) { 470 return this.initialize($el, opts); 471 }; 472 473 PluginMatchHeight.defaults = { 474 byRow: true, 475 property: 'height', 476 target: null, 477 remove: false 478 }; 479 480 PluginMatchHeight.prototype = { 481 initialize: function ($el, opts) { 482 if ($el.data(instanceName)) { 483 return this; 484 } 485 486 this.$el = $el; 487 488 this 489 .setData() 490 .setOptions(opts) 491 .build(); 492 493 return this; 494 }, 495 496 setData: function () { 497 this.$el.data(instanceName, this); 498 499 return this; 500 }, 501 502 setOptions: function (opts) { 503 this.options = $.extend(true, {}, PluginMatchHeight.defaults, opts, { 504 wrapper: this.$el 505 }); 506 507 return this; 508 }, 509 510 build: function () { 511 if (!($.isFunction($.fn.matchHeight))) { 512 return this; 513 } 514 515 var self = this; 516 517 self.options.wrapper.matchHeight(self.options); 518 519 return this; 520 } 521 522 }; 523 524 // expose to scope 525 $.extend(theme, { 526 PluginMatchHeight: PluginMatchHeight 527 }); 528 529 // jquery plugin 530 $.fn.themePluginMatchHeight = function (opts) { 531 return this.map(function () { 532 var $this = $(this); 533 534 if ($this.data(instanceName)) { 535 return $this.data(instanceName); 536 } else { 537 return new PluginMatchHeight($this, opts); 538 } 539 540 }); 541 } 542 543}).apply(this, [window.theme, jQuery]); 544 545// Sticky 546(function (theme, $) { 547 548 theme = theme || {}; 549 550 var instanceName = '__sticky'; 551 552 var PluginSticky = function ($el, opts) { 553 return this.initialize($el, opts); 554 }; 555 556 PluginSticky.defaults = { 557 minWidth: 991, 558 activeClass: 'sticky-active' 559 }; 560 561 PluginSticky.prototype = { 562 initialize: function ($el, opts) { 563 if ($el.data(instanceName)) { 564 return this; 565 } 566 567 this.$el = $el; 568 569 this 570 .setData() 571 .setOptions(opts) 572 .build(); 573 574 return this; 575 }, 576 577 setData: function () { 578 this.$el.data(instanceName, this); 579 580 return this; 581 }, 582 583 setOptions: function (opts) { 584 this.options = $.extend(true, {}, PluginSticky.defaults, opts, { 585 wrapper: this.$el 586 }); 587 588 return this; 589 }, 590 591 build: function () { 592 if (!($.isFunction($.fn.pin))) { 593 return this; 594 } 595 596 this.options.wrapper.pin(this.options); 597 598 return this; 599 } 600 }; 601 602 // expose to scope 603 $.extend(theme, { 604 PluginSticky: PluginSticky 605 }); 606 607 // jquery plugin 608 $.fn.themePluginSticky = function (opts) { 609 return this.map(function () { 610 var $this = $(this); 611 612 if ($this.data(instanceName)) { 613 return $this.data(instanceName); 614 } else { 615 return new PluginSticky($this, opts); 616 } 617 618 }); 619 } 620 621}).apply(this, [window.theme, jQuery]); 622 623// Toggle 624(function (theme, $) { 625 626 theme = theme || {}; 627 628 var instanceName = '__toggle'; 629 630 var PluginToggle = function ($el, opts) { 631 return this.initialize($el, opts); 632 }; 633 634 PluginToggle.defaults = { 635 duration: 350, 636 isAccordion: false 637 }; 638 639 PluginToggle.prototype = { 640 initialize: function ($el, opts) { 641 if ($el.data(instanceName)) { 642 return this; 643 } 644 645 this.$el = $el; 646 647 this 648 .setData() 649 .setOptions(opts) 650 .build(); 651 652 return this; 653 }, 654 655 setData: function () { 656 this.$el.data(instanceName, this); 657 658 return this; 659 }, 660 661 setOptions: function (opts) { 662 this.options = $.extend(true, {}, PluginToggle.defaults, opts, { 663 wrapper: this.$el 664 }); 665 666 return this; 667 }, 668 669 build: function () { 670 var self = this, 671 $wrapper = this.options.wrapper, 672 $items = $wrapper.find('.toggle'), 673 $el = null; 674 675 $items.each(function () { 676 $el = $(this); 677 678 if ($el.hasClass('active')) { 679 $el.find('> p').addClass('preview-active'); 680 $el.find('> .toggle-content').slideDown(self.options.duration); 681 } 682 683 self.events($el); 684 }); 685 686 if (self.options.isAccordion) { 687 self.options.duration = self.options.duration / 2; 688 } 689 690 return this; 691 }, 692 693 events: function ($el) { 694 var self = this, 695 previewParCurrentHeight = 0, 696 previewParAnimateHeight = 0, 697 toggleContent = null; 698 699 $el.find('> label, > button').click(function (e) { 700 701 var $this = $(this), 702 parentSection = $this.parent(), 703 parentWrapper = $this.parents('.toggle'), 704 previewPar = null, 705 closeElement = null; 706 707 if (self.options.isAccordion && typeof (e.originalEvent) != 'undefined') { 708 closeElement = parentWrapper.find('.toggle.active > label,.toggle.active > button'); 709 710 if (closeElement[0] == $this[0]) { 711 return; 712 } 713 } 714 715 parentSection.toggleClass('active'); 716 717 // Preview Paragraph 718 if (parentSection.find('> p').get(0)) { 719 720 previewPar = parentSection.find('> p'); 721 previewParCurrentHeight = previewPar.css('height'); 722 previewPar.css('height', 'auto'); 723 previewParAnimateHeight = previewPar.css('height'); 724 previewPar.css('height', previewParCurrentHeight); 725 726 } 727 728 // Content 729 toggleContent = parentSection.find('> .toggle-content'); 730 731 if (parentSection.hasClass('active')) { 732 733 $(previewPar).animate({ 734 height: previewParAnimateHeight 735 }, self.options.duration, function () { 736 $(this).addClass('preview-active'); 737 });
738 739 toggleContent.slideDown(self.options.duration, function () { 740 if (closeElement) { 741 closeElement.trigger('click'); 742 } 743 }); 744 745 } else { 746 747 $(previewPar).animate({ 748 height: 0 749 }, self.options.duration, function () { 750 $(this).removeClass('preview-active'); 751 }); 752 753 toggleContent.slideUp(self.options.duration); 754 755 } 756 757 }); 758 } 759 }; 760 761 // expose to scope 762 $.extend(theme, { 763 PluginToggle: PluginToggle 764 }); 765 766 // jquery plugin 767 $.fn.themePluginToggle = function (opts) { 768 return this.map(function () { 769 var $this = $(this); 770 771 if ($this.data(instanceName)) { 772 return $this.data(instanceName); 773 } else { 774 return new PluginToggle($this, opts); 775 } 776 777 }); 778 } 779 780}).apply(this, [window.theme, jQuery]); 781 782// Word Rotate 783(function (theme, $) { 784 785 theme = theme || {}; 786 787 var instanceName = '__wordRotate'; 788 789 var PluginwordRotate = function ($el, opts) { 790 return this.initialize($el, opts); 791 }; 792 793 PluginwordRotate.defaults = { 794 delay: 2000, 795 animDelay: 300 796 }; 797 798 PluginwordRotate.prototype = { 799 initialize: function ($el, opts) { 800 if ($el.data(instanceName)) { 801 return this; 802 } 803 804 this.$el = $el; 805 806 this 807 .setData() 808 .setOptions(opts) 809 .build(); 810 811 return this; 812 }, 813 814 setData: function () { 815 this.$el.data(instanceName, this); 816 817 return this; 818 }, 819 820 setOptions: function (opts) { 821 this.options = $.extend(true, {}, PluginwordRotate.defaults, opts, { 822 wrapper: this.$el 823 }); 824 825 return this; 826 }, 827 828 build: function () { 829 var self = this, 830 $el = this.options.wrapper, 831 itemsWrapper = $el.find(".word-rotate-items"), 832 items = itemsWrapper.find("> span"), 833 firstItem = items.eq(0), 834 firstItemClone = firstItem.clone(), 835 currentItem = 1, 836 currentTop = 0, 837 itemWidth = 0; 838 839 itemsWrapper 840 .width(firstItem.width() + "px") 841 .append(firstItemClone); 842 843 $el 844 .addClass("active"); 845 846 setInterval(function () { 847 848 currentTop = (currentItem * $el.height()); 849 currentItem++; 850 851 if (currentItem <= items.length) { 852 itemWidth = items.eq(currentItem - 1).width(); 853 } else { 854 itemWidth = items.eq(0).width(); 855 } 856 857 itemsWrapper.animate({ 858 top: -(currentTop) + "px", 859 width: itemWidth + "px" 860 }, self.options.animDelay, "easeOutQuad", function () { 861 862 if (currentItem > items.length) { 863 864 itemsWrapper.css("top", 0); 865 currentItem = 1; 866 867 } 868 869 }); 870 871 }, self.options.delay); 872 873 return this; 874 } 875 }; 876 877 // expose to scope 878 $.extend(theme, { 879 PluginwordRotate: PluginwordRotate 880 }); 881 882 // jquery plugin 883 $.fn.themePluginwordRotate = function (opts) { 884 return this.map(function () { 885 var $this = $(this); 886 887 if ($this.data(instanceName)) { 888 return $this.data(instanceName); 889 } else { 890 return new PluginwordRotate($this, opts); 891 } 892 893 }); 894 } 895 896}).apply(this, [window.theme, jQuery]); 897 898// Loading Overlay 899(function (theme, $) { 900 901 'use strict'; 902 903 theme = theme || {}; 904 905 // Default 906 var loadingOverlayDefaultTemplate = [ 907 '<div class="loading-overlay">', 908 '<div class="bounce-loader"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>', 909 '</div>' 910 ].join(''); 911 912 // Percentage 913 var loadingOverlayPercentageTemplate = [ 914 '<div class="loading-overlay loading-overlay-percentage">', 915 '<div class="page-loader-progress-wrapper"><span class="page-loader-progress">0</span><span class="page-loader-progress-symbol">%</span></div>', 916 '</div>' 917 ].join(''); 918 919 // Cubes 920 var loadingOverlayCubesTemplate = [ 921 '<div class="loading-overlay">', 922 '<div class="bounce-loader"><div class="cssload-thecube"><div class="cssload-cube cssload-c1"></div><div class="cssload-cube cssload-c2"></div><div class="cssload-cube cssload-c4"></div><div class="cssload-cube cssload-c3"></div></div></div>', 923 '</div>' 924 ].join(''); 925 926 // Cube Progress 927 var loadingOverlayCubeProgressTemplate = [ 928 '<div class="loading-overlay">', 929 '<div class="bounce-loader"><span class="cssload-cube-progress"><span class="cssload-cube-progress-inner"></span></span></div>', 930 '</div>' 931 ].join(''); 932 933 // Float Rings 934 var loadingOverlayFloatRingsTemplate = [ 935 '<div class="loading-overlay">', 936 '<div class="bounce-loader"><div class="cssload-float-rings-loader"><div class="cssload-float-rings-inner cssload-one"></div><div class="cssload-float-rings-inner cssload-two"></div><div class="cssload-float-rings-inner cssload-three"></div></div></div>', 937 '</div>' 938 ].join(''); 939 940 // Floating Bars 941 var loadingOverlayFloatBarsTemplate = [ 942 '<div class="loading-overlay">', 943 '<div class="bounce-loader"><div class="cssload-float-bars-container"><ul class="cssload-float-bars-flex-container"><li><span class="cssload-float-bars-loading"></span></li></div></div></div>', 944 '</div>' 945 ].join(''); 946 947 // Speeding Wheel 948 var loadingOverlaySpeedingWheelTemplate = [ 949 '<div class="loading-overlay">', 950 '<div class="bounce-loader"><div class="cssload-speeding-wheel-container"><div class="cssload-speeding-wheel"></div></div></div>', 951 '</div>' 952 ].join(''); 953 954 // Zenith 955 var loadingOverlayZenithTemplate = [ 956 '<div class="loading-overlay">', 957 '<div class="bounce-loader"><div class="cssload-zenith-container"><div class="cssload-zenith"></div></div></div>', 958 '</div>' 959 ].join(''); 960 961 // Spinning Square 962 var loadingOverlaySpinningSquareTemplate = [ 963 '<div class="loading-overlay">', 964 '<div class="bounce-loader"><div class="cssload-spinning-square-loading"></div></div>', 965 '</div>' 966 ].join(''); 967 968 // Pulse
969 var loadingOverlayPulseTemplate = [ 970 '<div class="loading-overlay">', 971 '<div class="bounce-loader"><div class="wrapper-pulse"><div class="cssload-pulse-loader"></div></div></div>', 972 '</div>' 973 ].join(''); 974 975 var LoadingOverlay = function ($wrapper, options, noInheritOptions) { 976 return this.initialize($wrapper, options, noInheritOptions); 977 }; 978 979 LoadingOverlay.prototype = { 980 981 options: { 982 css: {}, 983 hideDelay: 500, 984 progressMinTimeout: 0, 985 effect: 'default' 986 }, 987 988 initialize: function ($wrapper, options, noInheritOptions) { 989 this.$wrapper = $wrapper; 990 991 this 992 .setVars() 993 .setOptions(options, noInheritOptions) 994 .build() 995 .events() 996 .dynamicShowHideEvents(); 997 998 this.$wrapper.data('loadingOverlay', this); 999 }, 1000 1001 setVars: function () { 1002 this.$overlay = this.$wrapper.find('.loading-overlay'); 1003 this.pageStatus = null; 1004 this.progress = null; 1005 this.animationInterval = 33; 1006 1007 return this; 1008 }, 1009 1010 setOptions: function (options, noInheritOptions) { 1011 if (!this.$overlay.get(0)) { 1012 this.matchProperties(); 1013 } 1014 1015 if (noInheritOptions) { 1016 this.options = $.extend(true, {}, this.options, options); 1017 } else { 1018 this.options = $.extend(true, {}, this.options, options, theme.fn.getOptions(this.$wrapper.data('plugin-options'))); 1019 } 1020 1021 this.loaderClass = this.getLoaderClass(this.options.css.backgroundColor); 1022 1023 return this; 1024 }, 1025 1026 build: function () { 1027 var _self = this; 1028 1029 if (!this.$overlay.closest(document.documentElement).get(0)) { 1030 if (!this.$cachedOverlay) { 1031 1032 switch (_self.options.effect) { 1033 case 'percentageProgress1': 1034 this.$overlay = $(loadingOverlayPercentageTemplate).clone(); 1035 break; 1036 1037 case 'percentageProgress2': 1038 this.$overlay = $(loadingOverlayPercentageTemplate).clone(); 1039 this.$overlay 1040 .addClass('loading-overlay-percentage-effect-2') 1041 .prepend('<div class="loading-overlay-background-layer"></div>'); 1042 break; 1043 1044 case 'cubes': 1045 this.$overlay = $(loadingOverlayCubesTemplate).clone(); 1046 break; 1047 1048 case 'cubeProgress': 1049 this.$overlay = $(loadingOverlayCubeProgressTemplate).clone(); 1050 break; 1051 1052 case 'floatRings': 1053 this.$overlay = $(loadingOverlayFloatRingsTemplate).clone(); 1054 break; 1055 1056 case 'floatBars': 1057 this.$overlay = $(loadingOverlayFloatBarsTemplate).clone(); 1058 break; 1059 1060 case 'speedingWheel': 1061 this.$overlay = $(loadingOverlaySpeedingWheelTemplate).clone(); 1062 break; 1063 1064 case 'zenith': 1065 this.$overlay = $(loadingOverlayZenithTemplate).clone(); 1066 break; 1067 1068 case 'spinningSquare': 1069 this.$overlay = $(loadingOverlaySpinningSquareTemplate).clone(); 1070 break; 1071 1072 case 'pulse': 1073 this.$overlay = $(loadingOverlayPulseTemplate).clone(); 1074 break; 1075 1076 case 'default': 1077 default: 1078 this.$overlay = $(loadingOverlayDefaultTemplate).clone(); 1079 break; 1080 } 1081 1082 if (this.options.css) { 1083 this.$overlay.css(this.options.css); 1084 this.$overlay.find('.loader').addClass(this.loaderClass); 1085 } 1086 } else { 1087 this.$overlay = this.$cachedOverlay.clone(); 1088 } 1089 1090 this.$wrapper.prepend(this.$overlay); 1091 } 1092 1093 if (!this.$cachedOverlay) { 1094 this.$cachedOverlay = this.$overlay.clone(); 1095 } 1096 1097 if (['percentageProgress1', 'percentageProgress2'].includes(_self.options.effect)) { 1098 _self.updateProgress(); 1099 1100 if (_self.options.isDynamicHideShow) { 1101 setTimeout(function () { 1102 _self.progress = 'complete'; 1103 1104 $('.page-loader-progress').text(100); 1105 1106 if (['percentageProgress2'].includes(_self.options.effect)) { 1107 $('.loading-overlay-background-layer').css({ 1108 width: '100%' 1109 }); 1110 } 1111 }, 2800); 1112 } 1113 } 1114 1115 return this; 1116 }, 1117 1118 events: function () { 1119 var _self = this; 1120 1121 if (this.options.startShowing) { 1122 _self.show(); 1123 } 1124 1125 if (this.$wrapper.is('body') || this.options.hideOnWindowLoad) { 1126 $(window).on('load error', function () { 1127 setTimeout(function () { 1128 _self.hide(); 1129 }, _self.options.progressMinTimeout); 1130 }); 1131 } 1132 1133 if (this.options.listenOn) { 1134 $(this.options.listenOn) 1135 .on('loading-overlay:show beforeSend.ic', function (e) { 1136 e.stopPropagation(); 1137 _self.show(); 1138 }) 1139 .on('loading-overlay:hide complete.ic', function (e) { 1140 e.stopPropagation(); 1141 _self.hide(); 1142 });
1143 } 1144 1145 this.$wrapper 1146 .on('loading-overlay:show beforeSend.ic', function (e) { 1147 if (e.target === _self.$wrapper.get(0)) { 1148 e.stopPropagation(); 1149 _self.show(); 1150 return true; 1151 } 1152 return false; 1153 }) 1154 .on('loading-overlay:hide complete.ic', function (e) { 1155 if (e.target === _self.$wrapper.get(0)) { 1156 e.stopPropagation(); 1157 _self.hide(); 1158 return true; 1159 } 1160 return false; 1161 }); 1162 1163 if (['percentageProgress1', 'percentageProgress2'].includes(_self.options.effect)) { 1164 $(window).on('load', function () { 1165 setTimeout(function () { 1166 _self.pageStatus = "complete"; 1167 1168 $('.page-loader-progress').text(100); 1169 1170 if (['percentageProgress2'].includes(_self.options.effect)) { 1171 $('.loading-overlay-background-layer').css({ 1172 width: '100%' 1173 }); 1174 } 1175 }, _self.options.progressMinTimeout); 1176 }); 1177 } 1178 1179 return this; 1180 }, 1181 1182 show: function () { 1183 this.build(); 1184 1185 this.position = this.$wrapper.css('position').toLowerCase(); 1186 if (this.position != 'relative' || this.position != 'absolute' || this.position != 'fixed') { 1187 this.$wrapper.css({ 1188 position: 'relative' 1189 }); 1190 } 1191 this.$wrapper.addClass('loading-overlay-showing'); 1192 }, 1193 1194 hide: function () { 1195 var _self = this; 1196 1197 setTimeout(function () { 1198 _self.$wrapper.removeClass('loading-overlay-showing'); 1199 1200 if (this.position != 'relative' || this.position != 'absolute' || this.position != 'fixed') { 1201 _self.$wrapper.css({ position: '' }); 1202 } 1203 1204 $(window).trigger('loading.overlay.ready'); 1205 }, _self.options.hideDelay); 1206 }, 1207 1208 updateProgress: function () { 1209 var _self = this; 1210 1211 var render = function () { 1212 if (_self.pageStatus == "complete") { 1213 $('.page-loader-progress').text(100); 1214 setTimeout(function () { 1215 $('.page-loader-progress').addClass('d-none'); 1216 }, 700); 1217 } 1218 else { 1219 if (_self.progress == null) { 1220 _self.progress = 1; 1221 } 1222 1223 _self.progress = _self.progress + 1; 1224 if (_self.progress >= 0 && _self.progress <= 30) { 1225 _self.animationInterval += 1; 1226 $('.page-loader-progress').text(_self.progress); 1227 } 1228 else if (_self.progress > 30 && _self.progress <= 60) { 1229 _self.animationInterval += 2; 1230 $('.page-loader-progress').text(_self.progress); 1231 } 1232 else if (_self.progress > 60 && _self.progress <= 80) { 1233 _self.animationInterval += 40; 1234 $('.page-loader-progress').text(_self.progress); 1235 } 1236 else if (_self.progress > 80 && _self.progress <= 90) { 1237 _self.animationInterval += 80; 1238 $('.page-loader-progress').text(_self.progress); 1239 } 1240 else if (_self.progress > 90 && _self.progress <= 95) { 1241 _self.animationInterval += 150; 1242 $('.page-loader-progress').text(_self.progress); 1243 } 1244 else if (_self.progress > 95 && _self.progress <= 99) { 1245 _self.animationInterval += 400; 1246 $('.page-loader-progress').text(_self.progress); 1247 } 1248 else if (_self.progress >= 100) { 1249 $('.page-loader-progress').text(99); 1250 } 1251 1252 if (['percentageProgress2'].includes(_self.options.effect)) { 1253 $('.loading-overlay-background-layer').css({ 1254 width: _self.progress + '%' 1255 }); 1256 } 1257 1258 self.loopInside = setTimeout(render, _self.animationInterval); 1259 } 1260 1261 } 1262 render(); 1263 1264 return this; 1265 }, 1266 1267 matchProperties: function () { 1268 var i, 1269 l, 1270 properties; 1271 1272 properties = [ 1273 'backgroundColor', 1274 'borderRadius' 1275 ]; 1276 1277 l = properties.length; 1278 1279 for (i = 0; i < l; i++) { 1280 var obj = {}; 1281 obj[properties[i]] = this.$wrapper.css(properties[i]); 1282 1283 $.extend(this.options.css, obj); 1284 } 1285 }, 1286 1287 getLoaderClass: function (backgroundColor) { 1288 if (!backgroundColor || backgroundColor === 'transparent' || backgroundColor === 'inherit') { 1289 return 'black'; 1290 } 1291 1292 var hexColor, 1293 r, 1294 g, 1295 b, 1296 yiq; 1297 1298 var colorToHex = function (color) { 1299 var hex, 1300 rgb; 1301 1302 if (color.indexOf('#') > - 1) { 1303 hex = color.replace('#', ''); 1304 } else { 1305 rgb = color.match(/\d+/g); 1306 hex = ('0' + parseInt(rgb[0], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2); 1307 } 1308 1309 if (hex.length === 3) { 1310 hex = hex + hex; 1311 } 1312 1313 return hex; 1314 }; 1315 1316 hexColor = colorToHex(backgroundColor); 1317 1318 r = parseInt(hexColor.substr(0, 2), 16); 1319 g = parseInt(hexColor.substr(2, 2), 16); 1320 b = parseInt(hexColor.substr(4, 2), 16); 1321 yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 1322 1323 return (yiq >= 128) ? 'black' : 'white'; 1324 }, 1325 1326 dynamicShowHide: function (effect) { 1327 var _self = this; 1328 1329 // Remove Loading Overlay Data 1330 $('body').removeData('loadingOverlay'); 1331 1332 // Remove Html Of Loading Overlay 1333 $('.loading-overlay').remove(); 1334 1335 if (effect == '') { 1336 return this; 1337 } 1338 1339 // Initialize New Loading Overlay (second parameter is to NO inherit data-plugin-options) 1340 $('body').loadingOverlay({ 1341 effect: effect ? effect : 'pulse', 1342 isDynamicHideShow: true 1343 }, true); 1344
1345 // Show Loading Overlay Loader 1346 $('body').data('loadingOverlay').show(); 1347 1348 // Hide Loading Overlay Loader 1349 setTimeout(function () { 1350 $('body').data('loadingOverlay').hide(); 1351 }, 3000); 1352 1353 return this; 1354 }, 1355 1356 dynamicShowHideEvents: function () { 1357 var _self = this; 1358 1359 // Button 1360 $(document).off('click.loading-overlay-button').on('click.loading-overlay-button', '.loading-overlay-button', function (e) { 1361 e.preventDefault(); 1362 1363 _self.dynamicShowHide($(this).data('effect')); 1364 }); 1365 1366 return this; 1367 } 1368 1369 }; 1370 1371 // expose to scope 1372 $.extend(theme, { 1373 LoadingOverlay: LoadingOverlay 1374 }); 1375 1376 // expose as a jquery plugin 1377 $.fn.loadingOverlay = function (opts, noInheritOptions) { 1378 return this.each(function () { 1379 var $this = $(this); 1380 1381 var loadingOverlay = $this.data('loadingOverlay'); 1382 if (loadingOverlay) { 1383 return loadingOverlay; 1384 } else { 1385 var options = opts || $this.data('loading-overlay-options') || {}; 1386 return new LoadingOverlay($this, options, noInheritOptions); 1387 } 1388 }); 1389 } 1390 1391 // auto init 1392 $('[data-loading-overlay]').loadingOverlay(); 1393 1394}).apply(this, [window.theme, jQuery]); 1395 1396//Lazy Load Background Images (with lazySizes plugin) 1397document.addEventListener('lazybeforeunveil', function (e) { 1398 var bg = e.target.getAttribute('data-bg-src'); 1399 if (bg) { 1400 e.target.style.backgroundImage = 'url(' + bg + ')'; 1401 } 1402}); 1403 1404//Shape Divider - SVG Aspect Ratio 1405function aspectRatioSVG() { 1406 if ($(window).width() < 1950) { 1407 $('.shape-divider svg[preserveAspectRatio]').each(function () { 1408 if (!$(this).parent().hasClass('shape-divider-horizontal-animation')) { 1409 $(this).attr('preserveAspectRatio', 'xMinYMin'); 1410 } else { 1411 $(this).attr('preserveAspectRatio', 'none'); 1412 } 1413 }); 1414 } else { 1415 $('.shape-divider svg[preserveAspectRatio]').each(function () { 1416 $(this).attr('preserveAspectRatio', 'none'); 1417 }); 1418 } 1419} 1420 1421if ($('.shape-divider').length) { 1422 aspectRatioSVG(); 1423 $(window).on('resize', function () { 1424 aspectRatioSVG(); 1425 }); 1426} 1427 1428//Shape Divider Animated 1429if ($('.shape-divider-horizontal-animation').length) { 1430 theme.fn.intObs('.shape-divider-horizontal-animation', function () { 1431 for (var i = 0; i <= 1; i++) { 1432 var svgClone = $(this).find('svg:nth-child(1)').clone(); 1433 1434 $(this).append(svgClone) 1435 } 1436 1437 $(this).addClass('start'); 1438 }, {}); 1439} 1440 1441// Nav 1442(function (theme, $) { 1443 1444 theme = theme || {}; 1445 1446 var initialized = false; 1447 1448 $.extend(theme, { 1449 1450 Nav: { 1451 1452 defaults: { 1453 wrapper: $('#mainMenu'), 1454 scrollDelay: 600, 1455 scrollAnimation: 'easeOutQuad' 1456 }, 1457 1458 initialize: function ($wrapper, opts) { 1459 if (initialized) { 1460 return this; 1461 } 1462 1463 initialized = true; 1464 this.$wrapper = ($wrapper || this.defaults.wrapper); 1465 1466 this 1467 .setOptions(opts) 1468 .build() 1469 .events(); 1470 1471 return this; 1472 }, 1473 1474 setOptions: function (opts) { 1475 this.options = $.extend(true, {}, this.defaults, opts, this.$wrapper.data('plugin-options')); 1476 1477 return this; 1478 }, 1479 1480 build: function () { 1481 1482 return this; 1483 }, 1484 1485 events: function () { 1486 var self = this, 1487 target = "",
1488 delay = 1, 1489 $header = $('header'), 1490 headerHeight = $header.outerHeight(), 1491 $nav = $('.nav-main'), 1492 $body = $('body'); 1493 1494 $header.find('[href=#]').on('click', function (e) { 1495 e.preventDefault(); 1496 }); 1497 1498 $('ul.image-gallery').parent('.row').css('display', 'block'); 1499 1500 //DNN 9 1501 1502 if ($('.personalBarContainer').length && $('.full-header').length) 1503 $('header.full-header').css('margin-left', '-80px'); 1504 1505 //LSF Widgets 1506 function changeWidgets() { 1507 if ($("header").hasClass("flat-header")) 1508 $(".mini-widgets").addClass("brd-top"); 1509 1510 else if ($("header").hasClass("clean-top")) 1511 $(".mini-widgets").addClass("bg-color-light brd-top"); 1512 1513 if ($(window).width() > 991) { 1514 1515 if ($("header").hasClass("darken-top-border")) 1516 $(".mini-widgets").addClass("darken-border-top"); 1517 1518 if ($(".mini-widgets").find(".DNNEmptyPane").length != 3) { 1519 if ($("header").hasClass("colored")) 1520 $(".mini-widgets").addClass("bg-color-primary"); 1521 1522 else if ($("header").hasClass("newHeader") && !$("header").hasClass("fixedheader")) { 1523 $(".mini-widgets").addClass("widget-overlap") 1524 $(".newHeader").css("margin-top", $(".mini-widgets").height()); 1525 } 1526 1527 else if ($("header").hasClass("header-bottom")) { 1528 $(".mini-widgets").addClass("widget-overlap") 1529 $(".header-bottom").css("margin-top", $(".mini-widgets").height()); 1530 } 1531 1532 else if ($("header").hasClass("full-header") && !$("header").hasClass("fixedheader")) { 1533 $(".mini-widgets").find(".container").addClass("container-fluid").removeClass("container"); 1534 $(".mini-widgets").addClass("widget-overlap bg-color-dark").css("padding-right", "40px"); 1535 $(".full-header").css("margin-top", $(".mini-widgets").height()); 1536 } 1537 1538 if ($("body").hasClass("dnnEditState")) { 1539 $(".mini-widgets").removeClass("widget-overlap"); 1540 $("header").css("margin-top", "0"); 1541 } 1542 } 1543 } 1544 else { 1545 $("header").removeClass("mt-55 mt-38 mt-32") 1546 $(".mini-widgets").removeClass("widget-overlap bg-color-dark darken-border-top"); 1547 } 1548 } 1549 1550 changeWidgets(); 1551 1552 //Skip To Content 1553 $("#SkipContent a").click(function (e) { 1554 e.preventDefault(); 1555 var target = $(this).attr("href"); 1556 window.scrollTo(0, $("#" + target).offset().top - 100); 1557 }); 1558 1559 $("#SkipContent a").on('keyup', function (e) { 1560 if (e.which == 32 || e.which == 13) { 1561 var target = $(this).attr("href"); 1562 $("#" + target).attr('tabindex', '-1').css('outline', 'none').focus(); 1563 } 1564 }); 1565 1566 //VerticalMenu 1567 1568 $vMenu = $('#verticalMenu'); 1569 1570 if ($vMenu.length > 0) 1571 $vMenu.find('.dropdown-toggle, .dropdown:not(.mega-menu-item) .dropdown-submenu > a').append($('<i />').addClass('fas fa-caret-down')); 1572 1573 $('.nav-main').find('.dropdown-toggle[href="#"], .dropdown-submenu [href="#"], .dropdown-toggle[href!="#"] .fa-caret-down, .dropdown-submenu a[href!="#"] .fa-caret-down').on('click', function (e) { 1574 1575 e.preventDefault(); 1576 1577 if ($(window).width() > 991 && $(this).parents('#verticalMenu').length < 0) 1578 return this; 1579 1580 $(this).parent().parent().toggleClass('resp-active'); 1581 1582 return this; 1583 }); 1584 1585 function changeVerticalMenu() { 1586 1587 if ($(window).width() < 992) { 1588 if ($('body').hasClass('v-hamburger')) 1589 $('.v-menu').addClass('hamburger'); 1590 } else 1591 $('.v-menu').removeClass('hamburger'); 1592 1593 if ($('.v-menu').hasClass('hamburger')) { 1594 $('.btn-vertical-nav').show(); 1595 $('.nav-main-vertical').hide(); 1596 } else { 1597 $('.btn-vertical-nav').hide(); 1598 $('.nav-main-vertical').show(); 1599 } 1600 } 1601 1602 $('.btn-vertical-nav').click(function () { 1603 $('.nav-main-vertical').slideToggle('slow'); 1604 }); 1605 1606 //Vertical Menu Keyboard Focus 1607 $('.v-menu nav ul.nav-main > li > a').keyup(function (e) { 1608 if (e.keyCode == 9) { 1609 if ($('.v-menu .dropdown').hasClass('resp-active')) 1610 $('.v-menu .dropdown').removeClass('resp-active'); 1611 $(this).siblings('.dropdown-menu').parent().addClass('resp-active'); 1612 } 1613 }); 1614 1615 $('.v-menu .dropdown-submenu > a').keyup(function (e) { 1616 if (e.keyCode == 9) { 1617 if ($('.v-menu .dropdown-submenu').hasClass('resp-active')) 1618 $('.v-menu .dropdown-submenu').removeClass('resp-active'); 1619 $(this).siblings('.dropdown-menu').parent().addClass('resp-active'); 1620 } 1621 }); 1622 1623 changeVerticalMenu(); 1624 1625 //Accordion 1626 $('.panel-group .accordion-body.collapse').each(function () { 1627 if ($(this).hasClass('in')) 1628 $(this).removeClass('in').addClass('show') 1629 }); 1630 1631 //Toggle 1632 $('a[data-bs-toggle="tab"]').on("shown.bs.tab", function (a) { 1633 $(this).parents(".nav-tabs").find(".active").removeClass("active"), 1634 $(this).addClass("active").parent().addClass("active") 1635 }); 1636 1637 //Toggle Keyboard Focus 1638 $('.toggle-heading').keyup(function (e) { 1639 if (e.keyCode == 9) { 1640 $(this).trigger('click'); 1641 } 1642 }); 1643 1644 //Search 1645 var $search = $('.search .searchInputContainer'); 1646 var inputid = $search.find('input').attr('id'); 1647 $search.append('<label class="sr-only" for="' + inputid + '">Search</label>'); 1648 $search.parent().find('.icon-search').text('Search').css("text-indent", "-9999px"); 1649 1650 //Mini Search 1651 var $searchBlock = $('.search-block .searchInputContainer'); 1652 var inputid = $searchBlock.find('input').attr('id'); 1653 $searchBlock.append('<label class="sr-only" for="' + inputid + '">Mini Search</label>'); 1654 $searchBlock.parent().find('.icon-search').text('Search').css("text-indent", "-9999px"); 1655 1656 function showSearch() { 1657 if ($(window).width() < 992) { 1658 if ($('header .search-block').children().length > 0) 1659 $('header .mini-search').show(); 1660 else 1661 $('header .mini-search').hide(); 1662 } 1663 } 1664 1665 //Header Height 1666 headerBodyHeight = $('header .header-body').outerHeight(); 1667 1668 //Mini Search Animate in Mobile 1669 function animateSearch() { 1670 1671 if ($(window).width() < 992) { 1672 1673 $('header .search-block').on('show.bs.collapse', function () { 1674 1675 $('.header-body').animate({ 1676 'min-height': ($('.search-block').outerHeight() + $('.header-body').outerHeight()) 1677 }, 500); 1678 1679 $('.header-body').css("overflow", "hidden"); 1680 $("header .navbar-collapse").removeClass("show"); 1681 $("header .btn-responsive-nav").find("em").removeClass("fa-times").addClass("fa-bars"); 1682 });
1683 1684 $('header .search-block').on('hide.bs.collapse', function () { 1685 $('.header-body').animate({ 1686 'min-height': headerBodyHeight 1687 }, 250); 1688 }); 1689 1690 $('header .search-block').on('hidden.bs.collapse', function () { 1691 setTimeout(function () { 1692 $('.header-body').removeAttr("style"); 1693 }, 270); 1694 }); 1695 } 1696 } 1697 1698 showSearch(); 1699 animateSearch(); 1700 1701 //Menu Type 1702 if ($nav.hasClass('ddrmenu')) { 1703 $nav.parents('header').addClass('ddrheader'); 1704 $('header').find(".btn-responsive-nav").removeAttr('style'); 1705 } 1706 else if ($nav.hasClass('overlay')) { 1707 $nav.parents('header').addClass('overlayHeader'); 1708 $('header').find(".btn-responsive-nav").removeAttr('style'); 1709 } 1710 else if ($nav.hasClass('push-down')) { 1711 $nav.parents('header').addClass('inlineHeader'); 1712 $('header').find(".btn-responsive-nav").removeAttr('style'); 1713 } 1714 else if ($nav.hasClass('pushdown')) { 1715 $nav.parents('header').addClass('pushdownHeader'); 1716 $('header').find(".btn-responsive-nav").removeAttr('style'); 1717 } 1718 else if ($('.navbar-collapse').hasClass('slidebar')) { 1719 $('header').addClass('slideHeader'); 1720 $('header').find(".btn-responsive-nav").removeAttr('style'); 1721 } 1722 1723 //Change Button Text 1724 $('header .btn-responsive-nav .btn-text-indent').text('Open Menu'); 1725 1726 //Dropdown Menu Keyboard Focus 1727 $(document).click(function () { 1728 $('.dropdown').removeClass('focused'); 1729 $('.dropdown-submenu').removeClass('focused'); 1730 }); 1731 1732 $('header .nav > li > a').focus(function () { 1733 if ($('.dropdown').hasClass('focused')) 1734 $('.dropdown').removeClass('focused'); 1735 $('.dropdown-submenu').removeClass('focused'); 1736 $(this).siblings('.dropdown-menu').parent().addClass('focused'); 1737 }); 1738 1739 $('header .dropdown-submenu a').focus(function () { 1740 if ($(this).parent().siblings('.dropdown-submenu').hasClass('focused')) 1741 $(this).parent().siblings('.dropdown-submenu').removeClass('focused'); 1742 $(this).siblings('.dropdown-menu').parent().addClass('focused'); 1743 }); 1744 1745 $("header .navbar-collapse ul.nav-pills li").last().focusout(function () { 1746 $(".btn-responsive-nav").trigger('click'); 1747 }); 1748 1749 //Header Animate in Mobile 1750 function animateHeader() { 1751 1752 if ($(window).width() < 992) { 1753 1754 if ($('header').hasClass('ddrheader')) { 1755 1756 $('header .navbar-collapse').on('show.bs.collapse', function () { 1757 1758 $('header .header-body').css('max-height', $('header').outerHeight() + 330); 1759 1760 $('.header-body').animate({ 1761 'min-height': ($('.navbar-collapse').height() + $('.header-body').outerHeight()), 1762 }, 500); 1763 1764 $('.header-body').css("overflow", "hidden"); 1765 $("header .search-block").removeClass("show"); 1766 }); 1767 1768 $('header .navbar-collapse').on('hide.bs.collapse', function () { 1769 $('.header-body').animate({ 1770 'min-height': headerBodyHeight 1771 }, 250); 1772 }); 1773 1774 $('header .navbar-collapse').on('hidden.bs.collapse', function () { 1775 setTimeout(function () { 1776 $('.header-body').removeAttr("style"); 1777 }, 270); 1778 }); 1779 1780 } 1781
1782 else if ($('header').hasClass('pushdownHeader')) { 1783 $('header .navbar-collapse').on('show.bs.collapse', function () { 1784 1785 $('header .header-body').css('max-height', $('header').outerHeight() + 330); 1786 1787 $('.header-body').animate({ 1788 'min-height': ($('.pushdown.nav-main-collapse-push').height() + $('.header-body').outerHeight()) 1789 }, 500); 1790 1791 $('.header-body .nav-main-collapse').animate({ 1792 'height': '100%' 1793 }); 1794 1795 $('.header-body').css("overflow", "hidden"); 1796 $("header .search-block").removeClass("show"); 1797 }); 1798 1799 $('header .navbar-collapse').on('hide.bs.collapse', function () { 1800 $('.header-body').animate({ 1801 'min-height': headerBodyHeight 1802 }, 250); 1803 }); 1804 1805 $('header .navbar-collapse').on('hidden.bs.collapse', function () { 1806 setTimeout(function () { 1807 $('.header-body').removeAttr("style"); 1808 }, 270); 1809 }); 1810 } 1811 } 1812 else { 1813 $('.header-body').css('height', 'auto'); 1814 } 1815 } 1816 1817 animateHeader(); 1818 1819 // Setup Menu 1820 $('.btn-responsive-nav').click(function () { 1821 1822 if ($('header').hasClass('overlayHeader')) { 1823 1824 $body.addClass('overlay-effect'); 1825 1826 if ($('header .close-btn').length == 0) { 1827 var close = $('<button type="button" class="close-btn"><em class="fas fa-times"></em></button>'); 1828 $('header .btn-responsive-nav').before(close); 1829 } 1830 1831 $('.overlay-effect .overlayHeader .close-btn').click(function () { 1832 if ($('body').hasClass('overlay-effect')) 1833 overlayHeader($('.overlayHeader'), false); 1834 }); 1835 } else 1836 $(this).find('.fas').toggleClass('fa-bars fa-times'); 1837 1838 if ($nav.hasClass('push-down')) 1839 inlineHeader(false); 1840 1841 }); 1842 1843 //Overlay Menu 1844 1845 $('.overlayHeader .overlay-dropdown a .fa-caret-right').click(function (e) { 1846 e.preventDefault(); 1847 }); 1848 1849 $('.overlayHeader .overlay-dropdown > a').click(function () { 1850 1851 $('.overlayHeader .overlay').removeClass('animate-menu'); 1852 1853 $('.overlayHeader .overlay .nav').hide("drop", { 1854 direction: "right" 1855 }, 50); 1856 $('.overlayHeader .overlay .nav').show("drop", { 1857 direction: "right" 1858 }).delay(100); 1859 1860 $('.overlayHeader .overlay .nav').addClass('dl-subview'); 1861 $(this).parent().addClass('dl-subviewopen'); 1862 }); 1863 1864 $('.overlayHeader .overlay-dropdown-submenu > a').click(function () { 1865 1866 $('.overlayHeader .overlay').removeClass('animate-menu'); 1867 1868 $(this).parents().removeClass('dl-subviewopen'); 1869 1870 $('.overlayHeader .overlay .nav').hide("drop", { 1871 direction: "right" 1872 }, 50); 1873 $('.overlayHeader .overlay .nav').show("drop", { 1874 direction: "right" 1875 }).delay(100); 1876 1877 $('.overlayHeader .overlay-menu').addClass('dl-menu'); 1878 $(this).parent().addClass('dl-submenu'); 1879 $(this).parent().parent().parent().addClass('dl-menuopen dl-subview'); 1880 }); 1881 1882 $('.overlayHeader .overlay .icon-back').click(function () { 1883 1884 if ($('.overlayHeader .overlay li').hasClass('dl-menuopen')) { 1885 1886 $('.overlayHeader .overlay li.dl-subview').addClass('dl-subviewopen').removeClass('dl-subview dl-menuopen'); 1887 $('.overlayHeader .overlay ul').removeClass('dl-menu'); 1888 $('.overlayHeader .overlay li').removeClass('dl-submenu'); 1889 $('.overlayHeader .overlay').addClass('animate-menu'); 1890 } else if ($('.overlayHeader .overlay li').hasClass('dl-subviewopen')) { 1891 1892 $('.overlayHeader').find(".animate-menu").removeClass('animate-menu'); 1893 1894 setTimeout(function () { 1895 $('.overlayHeader .overlay ul').removeClass('dl-subview'); 1896 $('.overlayHeader .overlay li').removeClass('dl-subviewopen'); 1897 $('.overlayHeader .overlay').addClass('animate-menu'); 1898 }, 50); 1899 } 1900 }); 1901 1902 //Inline Menu 1903 1904 $(".inline-menu.nav-main .nav").hide(); 1905 1906 $('.inlineHeader .push-menu a .fa-caret-right').click(function (e) { 1907 e.preventDefault(); 1908 }); 1909 1910 $('.menu-set > a').click(function () { 1911 1912 $('.push-menu').removeClass('push-animate'); 1913 1914 $('.push-menu .nav').hide("drop", { 1915 direction: "right" 1916 }, 50); 1917 $('.push-menu .nav').show("drop", { 1918 direction: "right" 1919 }).delay(100); 1920 1921 $('.push-menu ul.nav').addClass('dl-subview'); 1922 $(this).parent().addClass('dl-subviewopen'); 1923 }); 1924 1925 $('li.menu-set > ul.pushdown-menu > li.pushdown-sub > a').click(function () { 1926 1927 $('.push-menu .push-down').removeClass('push-animate'); 1928 1929 $('ul.pushdown-menu').addClass('subview'); 1930 $(this).parent().addClass('subviewopen'); 1931 1932 $('.push-menu .nav').hide("drop", { 1933 direction: "right" 1934 }, 50); 1935 $('.push-menu .nav').show("drop", { 1936 direction: "right" 1937 }).delay(100); 1938 }); 1939 1940 $('li.pushdown-sub-menu > a').click(function () { 1941 1942 $('.push-menu .push-down').removeClass('push-animate'); 1943 1944 $(this).parent().parent().addClass('sub-view'); 1945 $(this).parent().addClass('open'); 1946 1947 $('.push-menu .nav').hide("drop", { 1948 direction: "right" 1949 }, 50); 1950 $('.push-menu .nav').show("drop", { 1951 direction: "right" 1952 }).delay(100); 1953 }); 1954 1955 $('.backicon').click(function () { 1956 1957 if ($('li.pushdown-sub').hasClass('subviewopen')) { 1958 1959 $('li.pushdown-sub').removeClass('subviewopen'); 1960 $('ul.pushdown-menu').removeClass('subview'); 1961 $('.push-down').addClass('push-animate'); 1962 } else if ($('li').hasClass('dl-subviewopen')) { 1963 1964 $('.push-menu').find(".push-animate").removeClass('push-animate'); 1965 1966 setTimeout(function () { 1967 $('ul').removeClass('dl-subview'); 1968 $('li').removeClass('dl-subviewopen'); 1969 $('.push-down').addClass('push-animate'); 1970 }, 100); 1971 } 1972 }); 1973 1974 //Pushdown Menu 1975
1976 $(".pushdownHeader .btn-responsive-nav").hide(); 1977 $(".pushdown .scrollbar").hide(); 1978 1979 $(".nav-main.pushdown").addClass("collapse"); 1980 1981 if ($(".pushdownHeader").length > 0) 1982 $(".nav-main-collapse").removeClass("collapse"); 1983 1984 if ($nav.hasClass('pushdown')) { 1985 $(".btn-push-nav").click(function () { 1986 pushdownMenu(); 1987 $(".pushdown .scrollbar").show(); 1988 }); 1989 } 1990 1991 $('nav.pushdown ul.nav-main li a').click(function () { 1992 $(this).parent().toggleClass('resp-active'); 1993 }); 1994 1995 $(window).on('scroll resize', function () { 1996 $(".pushdownHeader .btn-responsive-nav").hide(); 1997 }); 1998 1999 if ($(".pushdownHeader").length > 0) { 2000 2001 if (($header.hasClass('flat-header')) || ($header.hasClass('newHeader'))) { 2002 $('header div.social-icons').css('margin-right', '40px'); 2003 } 2004 } 2005 2006 //Resize 2007 $(window).on('resize', function () { 2008 changeVerticalMenu(); 2009 showSearch(); 2010 animateSearch(); 2011 animateHeader(); 2012 changeWidgets(); 2013 2014 $('header').find(".btn-responsive-nav").removeAttr('style'); 2015 }); 2016 2017 // Add Arrows 2018 if ($(window).width() > 991) 2019 $header.find('.dropdown-toggle, .dropdown:not(.mega-menu-item) .dropdown-submenu > a').append($('<i />').addClass('fas fa-caret-down')); 2020 else 2021 $header.find('.dropdown-toggle, .dropdown .dropdown-submenu > a').append($('<i />').addClass('fas fa-caret-down')); 2022 2023 if ($(window).width() < 992) { 2024 $(".navbar-collapse ul li.mega-menu-item").each(function () { 2025 if (!$(this).find(".dropdown-menu > li").length) 2026 $(this).find(".fa-caret-down").hide(); 2027 }); 2028 } 2029 2030 // Mobile Arrows 2031 $header.find('.dropdown-toggle[href="#"], .dropdown-submenu [href="#"], .dropdown-toggle[href!="#"] .fa-caret-down, .dropdown-submenu a[href!="#"] .fa-caret-down').on('click', function (e) { 2032 e.preventDefault(); 2033 2034 if ($(window).width() < 992) { 2035 2036 $(this).closest('li').toggleClass('opened'); 2037 2038 if ($(this).closest('li').hasClass('opened')) { 2039 $('header.ddrheader .header-body').css({ 2040 "height": $(this).closest('li').height() + $('.header-body').height(), 2041 "max-height": parseInt($('header').css('min-height')) + 330 2042 }); 2043 } 2044 else { 2045 setTimeout(function () { 2046 $('header.ddrheader .header-body').css({ 2047 "height": "auto", 2048 "min-height": $('.navbar-collapse').height() + parseInt($('header').css('min-height')), 2049 "max-height": $('.navbar-collapse').height() + parseInt($('header').css('min-height')) 2050 });
2051 }, 100); 2052 } 2053 } 2054 }); 2055 2056 // Anchors Position 2057 $('[data-hash]').each(function () { 2058 2059 var target = $(this).attr('href'), 2060 offset = ($(this).is("[data-hash-offset]") ? $(this).data('hash-offset') : 0); 2061 2062 if ($(target).get(0)) { 2063 $(this).on('click', function (e) { 2064 e.preventDefault(); 2065 2066 if (!$(e.target).is('i')) { 2067 2068 // Close Collapse if Opened 2069 $(this).parents('.collapse.show').collapse('hide'); 2070 2071 self.scrollToTarget(target, offset); 2072 } 2073 return; 2074 }); 2075 } 2076 }); 2077 2078 // Mobile Redirect - (Ignores the Dropdown from Bootstrap) 2079 $('.mobile-redirect').on('click', function () { 2080 if ($(window).width() < 992) { 2081 self.location = $(this).attr('href'); 2082 } 2083 }); 2084 2085 // Dropdown Menu Check Visible Space 2086 $("#mainMenu li.dropdown").hover(function () { 2087 2088 if ($(window).width() < 767) return; 2089 2090 var menuItem = $(this); 2091 var subMenu = $(this).find("> ul.dropdown-menu"); 2092 2093 var screenWidth = $(window).width(), 2094 menuItemWidth = menuItem.width(), 2095 subMenuWidth = subMenu.width(), 2096 menuItemPosRight = subMenu.offset().left + subMenu.width(); 2097 2098 if (menuItemPosRight > screenWidth) { 2099 subMenu.css("margin-left", "-" + ((subMenuWidth - menuItemWidth) + 10) + "px"); 2100 subMenu.css('border-radius', '0'); 2101 } else 2102 subMenu.css("margin-left", '2px'); 2103 }); 2104 2105 // Submenu Check Visible Space 2106 $("#mainMenu li.dropdown-submenu").hover(function () { 2107 2108 if ($(window).width() < 767) return; 2109 2110 var subMenu = $(this).find("ul.dropdown-menu"); 2111 2112 if (!subMenu.get(0)) return; 2113 2114 var screenWidth = $(window).width(), 2115 subMenuWidth = subMenu.width(), 2116 subMenuParentWidth = $(this).parent().width(), 2117 subMenuPosRight = subMenu.offset().left + subMenu.width(); 2118 2119 if (subMenuPosRight > screenWidth) 2120 subMenu.css("margin-left", "-" + (subMenuParentWidth + subMenuWidth + 10) + "px"); 2121 else 2122 subMenu.css("margin-left", 0); 2123 }); 2124 2125 return this; 2126 }, 2127 2128 scrollToTarget: function (target, offset) { 2129 var self = this; 2130 2131 $('body').addClass('scrolling'); 2132 2133 $('html, body').animate({ 2134 scrollTop: $(target).offset().top - offset 2135 }, self.options.scrollDelay, self.options.scrollAnimation, function () { 2136 $('body').removeClass('scrolling'); 2137 }); 2138 2139 return this; 2140 2141 } 2142 2143 } 2144 2145 }); 2146 2147}).apply(this, [window.theme, jQuery]); 2148 2149// Sticky Menu 2150(function (theme, $) { 2151 2152 theme = theme || {}; 2153 2154 var initialized = false; 2155 2156 $.extend(theme, { 2157 2158 StickyMenu: { 2159 2160 defaults: { 2161 wrapper: $('header'), 2162 stickyEnabled: true, 2163 stickyEnableOnBoxed: true, 2164 stickyEnableOnMobile: true, 2165 stickyWithGap: true, 2166 stickyChangeLogoSize: true, 2167 stickyBodyPadding: false, 2168 menuAfterHeader: false, 2169 alwaysStickyEnabled: false, 2170 stickyForceHeaderTop: false, 2171 logoPaddingTop: 28, 2172 logoSmallHeight: 40 2173 }, 2174 2175 initialize: function ($wrapper, opts, sw) { 2176 if (!sw && initialized) { 2177 return this; 2178 } 2179 2180 initialized = true; 2181 this.$wrapper = ($wrapper || this.defaults.wrapper); 2182 2183 this 2184 .setOptions(opts) 2185 .build() 2186 .events(); 2187 2188 return this; 2189 }, 2190 2191 setOptions: function (opts) { 2192 this.options = $.extend(true, {}, this.defaults, opts, this.$wrapper.data('plugin-options')); 2193 2194 return this; 2195 }, 2196 2197 build: function () { 2198 if (!this.options.stickyEnableOnBoxed && $('body').hasClass('boxed') || !this.options.stickyEnabled) { 2199 return this; 2200 } 2201 2202 var self = this, 2203 $window = $(window); 2204 $body = $('body'), 2205 $header = self.$wrapper, 2206 $headerContainer = $header.parent(), 2207 $headerNavItems = $header.find('ul.nav-main > li > a'), 2208 $logoWrapper = $header.find('.logo'), 2209 $logo = $logoWrapper.find('img'), 2210 logoHeight = $logo.height(), 2211 logoPaddingTop = parseInt($logo.attr('data-sticky-padding') ? $logo.attr('data-sticky-padding') : self.options.logoPaddingTop), 2212 logoSmallHeight = parseInt($logo.attr('data-sticky-height') ? $logo.attr('data-sticky-height') : self.options.logoSmallHeight), 2213 headerHeight = $header.height(), 2214 stickyGap = 0; 2215 2216 if (logoHeight == 0) { 2217 setTimeout(function () { 2218 logoHeight = $logo.height(); 2219 }, 400); 2220 } else { 2221 2222 if ($('header').outerHeight() > 0) 2223 $('header').css('min-height', $('header').outerHeight()); 2224 } 2225 2226 if (this.options.menuAfterHeader) { 2227 $headerContainer.css('min-height', $header.height()); 2228 } 2229 2230 $window.afterResize(function () { 2231 $headerContainer.css('min-height', $header.height()); 2232 }); 2233 2234 self.checkStickyMenu = function () { 2235 2236 if ((!self.options.stickyEnableOnBoxed && $body.hasClass('boxed')) || ($window.width() < 991 && !self.options.stickyEnableOnMobile)) { 2237 self.stickyMenuDeactivate(); 2238 $header.removeClass('fixed') 2239 return false; 2240 } 2241 2242 if (self.options.stickyWithGap && headerHeight > 0) { 2243 stickyGap = ((headerHeight - 15) - logoSmallHeight); 2244 } else { 2245 stickyGap = 0; 2246 } 2247 2248 // Menu After Header 2249 if (!this.options.menuAfterHeader) { 2250 2251 if ($window.scrollTop() > stickyGap) { 2252 self.stickyMenuActivate(); 2253 } else { 2254 self.stickyMenuDeactivate(); 2255 } 2256 2257 } else { 2258 2259 if ($window.scrollTop() > $headerContainer.offset().top) { 2260 $header.addClass('fixed'); 2261 } else { 2262 $header.removeClass('fixed'); 2263 } 2264 2265 } 2266 2267 } 2268 2269 self.stickyMenuActivate = function () { 2270 2271 if ($body.hasClass('sticky-menu-active')) { 2272 return false; 2273 } 2274 2275 logoHeight = $logo.height(); 2276 2277 $logo.stop(true, true); 2278 2279 $body.addClass('sticky-menu-active').removeClass('sticky-menu-deactive'); 2280 2281 if (self.options.stickyBodyPadding) { 2282 $body.css('padding-top', headerHeight); 2283 } 2284 2285 // Flat Menu Items 2286 if ($header.hasClass('flat-menu')) { 2287 $headerNavItems.addClass('sticky-menu-active'); 2288 } 2289 2290 if (self.options.stickyChangeLogoSize) { 2291 2292 $logoWrapper.addClass('logo-sticky-active'); 2293 2294 $logo.animate({ 2295 height: logoSmallHeight, 2296 top: logoPaddingTop + 'px' 2297 }, 200, function () { 2298 $.event.trigger({ 2299 type: 'stickyMenu.active' 2300 });
2301 }); 2302 2303 } else { 2304 $.event.trigger({ 2305 type: 'stickyMenu.active' 2306 }); 2307 } 2308 2309 if (self.options.stickyForceHeaderTop) { 2310 $header.css('top', self.options.stickyForceHeaderTop); 2311 } 2312 2313 } 2314 2315 self.stickyMenuDeactivate = function () { 2316 2317 if ($body.hasClass('sticky-menu-active')) { 2318 2319 $body.removeClass('sticky-menu-active').addClass('sticky-menu-deactive'); 2320 2321 if (self.options.stickyBodyPadding) { 2322 $body.css('padding-top', 0); 2323 } 2324 2325 // Flat Menu Items 2326 if ($header.hasClass('flat-menu')) { 2327 $headerNavItems.removeClass('sticky-menu-active'); 2328 } 2329 2330 if (self.options.stickyChangeLogoSize) { 2331 2332 $logoWrapper.removeClass('logo-sticky-active'); 2333 2334 $logo.animate({ 2335 height: logoHeight, 2336 top: '0px' 2337 }, 200, function () { 2338 $.event.trigger({ 2339 type: 'stickyMenu.deactive' 2340 }); 2341 $window.trigger('resize'); 2342 }); 2343 2344 } else { 2345 $.event.trigger({ 2346 type: 'stickyMenu.deactive' 2347 }); 2348 } 2349 2350 } 2351 2352 if (self.options.stickyForceHeaderTop) { 2353 $header.css('top', '0'); 2354 } 2355 2356 } 2357 2358 if (!self.options.alwaysStickyEnabled) { 2359 2360 $body.addClass('sticky-menu-deactive'); 2361 2362 self.checkStickyMenu(); 2363 2364 } else { 2365 2366 $body.addClass('sticky-menu-active always-sticky').removeClass('sticky-menu-deactive'); 2367 2368 if (self.options.stickyBodyPadding) { 2369 $body.css('padding-top', $header.height() + ($header.hasClass('narrow') ? 0 : 22)); 2370 } 2371 2372 } 2373 2374 return this; 2375 }, 2376 2377 events: function () { 2378 var self = this; 2379 2380 if (!this.options.stickyEnableOnBoxed && $('body').hasClass('boxed')) { 2381 return this; 2382 } 2383 2384 if (!self.options.alwaysStickyEnabled) { 2385 $(window).on('scroll resize', function () { 2386 if (self.options.stickyEnabled) 2387 self.checkStickyMenu(); 2388 else { 2389 if ($(window).scrollTop() > 0) 2390 $('body').addClass('sticky-disable'); 2391 else 2392 $('body').removeClass('sticky-disable'); 2393 } 2394 }); 2395 } 2396 $('.btn-responsive-nav').on('click', function (e) { 2397 e.preventDefault(); 2398 }); 2399 2400 return this; 2401 } 2402 2403 } 2404 2405 }); 2406 2407}).apply(this, [window.theme, jQuery]); 2408 2409// Scroll to Top 2410(function (theme, $) { 2411 2412 theme = theme || {}; 2413 2414 $.extend(theme, { 2415 2416 PluginScrollToTop: { 2417 2418 defaults: { 2419 wrapper: $('body'), 2420 offset: 150, 2421 buttonClass: 'scroll-to-top', 2422 iconClass: 'fa fa-chevron-up', 2423 delay: 500, 2424 visibleMobile: false, 2425 label: false 2426 }, 2427 2428 initialize: function (opts) { 2429 initialized = true; 2430 2431 this 2432 .setOptions(opts) 2433 .build() 2434 .events(); 2435 2436 return this; 2437 }, 2438 2439 setOptions: function (opts) { 2440 this.options = $.extend(true, {}, this.defaults, opts); 2441 2442 return this; 2443 }, 2444 2445 build: function () { 2446 var self = this, 2447 $el; 2448 2449 // Base HTML Markup 2450 $el = $('<a />') 2451 .addClass(self.options.buttonClass) 2452 .attr({ 2453 'href': '#', 2454 }) 2455 .append( 2456 $('<i />') 2457 .addClass(self.options.iconClass).html('<span class="scroll-indent">scroller</span>') 2458 ); 2459 2460 // Visible Mobile 2461 if (!self.options.visibleMobile) { 2462 $el.addClass('hidden-mobile'); 2463 } 2464 2465 // Label 2466 if (self.options.label) { 2467 $el.append( 2468 $('<span />').html(self.options.label) 2469 ); 2470 } 2471 2472 this.options.wrapper.append($el); 2473 2474 this.$el = $el; 2475 2476 return this; 2477 }, 2478 2479 events: function () { 2480 var self = this, 2481 _isScrolling = false; 2482 2483 // Click Element Action 2484 self.$el.on('click', function (e) { 2485 e.preventDefault(); 2486 $('body, html').animate({ 2487 scrollTop: 0 2488 }, self.options.delay); 2489 return false; 2490 }); 2491 2492 // Show/Hide Button on Window Scroll event. 2493 $(window).scroll(function () { 2494 2495 if (!_isScrolling) { 2496 2497 _isScrolling = true; 2498 2499 if ($(window).scrollTop() > self.options.offset) { 2500 2501 self.$el.stop(true, true).addClass('visible'); 2502 _isScrolling = false; 2503 2504 } else { 2505 2506 self.$el.stop(true, true).removeClass('visible'); 2507 _isScrolling = false; 2508 2509 } 2510 2511 } 2512 2513 }); 2514 2515 return this; 2516 } 2517 2518 } 2519 2520 }); 2521 2522}).apply(this, [window.theme, jQuery]); 2523 2524// Parallax 2525(function (theme, $) { 2526 2527 theme = theme || {}; 2528 2529 $.extend(theme, { 2530 2531 PluginParallax: { 2532 2533 defaults: { 2534 itemsSelector: '.parallax-background', 2535 offset: 0, 2536 horizontalPosition: '50%', 2537 speed: 1.5, 2538 horizontalScrolling: false 2539 }, 2540 2541 initialize: function (opts) { 2542 2543 this 2544 .setOptions(opts) 2545 .build(); 2546 2547 return this; 2548 }, 2549 2550 setOptions: function (opts) { 2551 this.options = $.extend(true, {}, this.defaults, opts); 2552 2553 return this; 2554 }, 2555 2556 build: function () { 2557 if (!($.isFunction($.fn.stellar)) || typeof (Modernizr.touch) == 'undefined') { 2558 return this; 2559 } 2560 2561 var self = this; 2562 2563 $(window).load(function () { 2564 2565 if (!Modernizr.touch) { 2566 $.stellar(self.options).addClass('parallax-ready'); 2567 } else { 2568 $(self.options.itemsSelector).addClass('parallax-touch'); 2569 $(window).on('scroll resize', function () { 2570 yPos = -($(window).scrollTop()) / ((self.options.speed + 2)); 2571 plxPos = (yPos < 0) ? Math.abs(yPos) : -Math.abs(yPos); 2572 bgpos = self.options.horizontalPosition + ' ' + yPos + 'px'; 2573 $(self.options.itemsSelector).css('background-position', bgpos); 2574 });
2575 } 2576 2577 }); 2578 2579 return this; 2580 } 2581 2582 } 2583 2584 }); 2585 2586}).apply(this, [window.theme, jQuery]); 2587 2588// Commom Plugins 2589(function ($) { 2590 2591 'use strict'; 2592 2593 // Scroll to Top Button. 2594 if (typeof theme.PluginScrollToTop !== 'undefined') { 2595 theme.PluginScrollToTop.initialize(); 2596 } 2597 2598 // Parallax 2599 if (typeof theme.PluginParallax !== 'undefined') { 2600 theme.PluginParallax.initialize(); 2601 } 2602 2603 // Tooltips 2604 if ($.isFunction($.fn['tooltip'])) { 2605 2606 var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"], [data-toggle="tooltip"], [data-tooltip]:not(.manual), [data-plugin-tooltip]:not(.manual), a[rel=tooltip]')) 2607 tooltipTriggerList.map(function (tooltipTriggerEl) { 2608 return new bootstrap.Tooltip(tooltipTriggerEl) 2609 }); 2610 } 2611 2612 // Popover 2613 if ($.isFunction($.fn['popover'])) { 2614 $(function () { 2615 $('[data-plugin-popover]:not(.manual)').each(function () { 2616 var $this = $(this), 2617 opts; 2618 2619 var pluginOptions = $this.data('plugin-options'); 2620 if (pluginOptions) 2621 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2622 2623 $this.popover(opts); 2624 }); 2625 }); 2626 } 2627 2628 var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); 2629 popoverTriggerList.map(function (popoverTriggerEl) { 2630 return new bootstrap.Popover(popoverTriggerEl) 2631 }); 2632 2633 // Match Height 2634 if ($.isFunction($.fn['matchHeight'])) { 2635 2636 $('.match-height').matchHeight(); 2637 2638 // Featured Boxes 2639 $('.featured-boxes .featured-box').matchHeight(); 2640 2641 // Featured Box Full 2642 $('.featured-box-full').matchHeight(); 2643 2644 } 2645 2646}).apply(this, [jQuery]); 2647 2648// Before / After 2649(function ($) { 2650 2651 'use strict'; 2652 2653 if ($.isFunction($.fn['themePluginBeforeAfter']) && $('[data-plugin-before-after]').length) { 2654 theme.fn.intObsInit('[data-plugin-before-after]:not(.manual)', 'themePluginBeforeAfter'); 2655 } 2656 2657}).apply(this, [jQuery]); 2658 2659// Countdown 2660(function ($) { 2661 2662 'use strict'; 2663 2664 if ($.isFunction($.fn['themePluginCountdown'])) { 2665 2666 $(function () { 2667 $('[data-plugin-countdown]').each(function () { 2668 var $this = $(this), 2669 opts; 2670 2671 var pluginOptions = $this.data('plugin-options'); 2672 if (pluginOptions) 2673 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2674 2675 $this.themePluginCountdown(opts); 2676 }); 2677 }); 2678 2679 } 2680 2681}).apply(this, [jQuery]); 2682 2683// Counter 2684(function ($) { 2685 2686 'use strict'; 2687 2688 if ($.isFunction($.fn['themePluginCounter'])) { 2689 2690 $(function () { 2691 $('[data-plugin-counter]:not(.manual), .counters [data-to]').each(function () { 2692 var $this = $(this), 2693 opts; 2694 2695 var pluginOptions = $this.data('plugin-options'); 2696 if (pluginOptions) 2697 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2698 2699 $this.themePluginCounter(opts); 2700 }); 2701 }); 2702 2703 } 2704 2705}).apply(this, [jQuery]); 2706 2707// Match Height 2708(function ($) { 2709 2710 'use strict'; 2711 2712 if ($.isFunction($.fn['themePluginMatchHeight'])) { 2713 2714 $(function () { 2715 $('[data-plugin-match-height]:not(.manual)').each(function () { 2716 var $this = $(this), 2717 opts; 2718 2719 var pluginOptions = $this.data('plugin-options'); 2720 if (pluginOptions) 2721 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2722 2723 $this.themePluginMatchHeight(opts); 2724 }); 2725 }); 2726 2727 } 2728 2729}).apply(this, [jQuery]); 2730 2731// Sticky 2732(function ($) { 2733 2734 'use strict'; 2735 2736 if ($.isFunction($.fn['themePluginSticky'])) { 2737 2738 $(function () { 2739 $('[data-plugin-sticky]:not(.manual)').each(function () { 2740 var $this = $(this), 2741 opts; 2742 2743 var pluginOptions = $this.data('plugin-options'); 2744 if (pluginOptions) 2745 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2746 2747 $this.themePluginSticky(opts); 2748 }); 2749 }); 2750 2751 } 2752 2753}).apply(this, [jQuery]); 2754 2755// Move Cloud 2756(function ($) { 2757 2758 'use strict'; 2759 2760 if ($('.cloud').get(0)) { 2761 var moveCloud = function () { 2762 $('.cloud').animate({ 2763 'top': '+=20px' 2764 }, 3000, 'linear', function () { 2765 $('.cloud').animate({ 2766 'top': '-=20px' 2767 }, 3000, 'linear', function () { 2768 moveCloud(); 2769 }); 2770 }); 2771 }; 2772 2773 moveCloud(); 2774 } 2775 2776}).apply(this, [jQuery]); 2777 2778// Toggle 2779(function ($) { 2780 2781 'use strict'; 2782 2783 if ($.isFunction($.fn['themePluginToggle'])) { 2784 2785 $(function () { 2786 2787 //Added toogle class to support backward compatibility 2788 $('[data-plugin-toggle]:not(.manual), .toogle').each(function () { 2789 var $this = $(this), 2790 opts; 2791 2792 var pluginOptions = $this.data('plugin-options'); 2793 if (pluginOptions) 2794 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2795 2796 $this.themePluginToggle(opts); 2797 }); 2798 2799 //Added toggle class to support backward compatibility 2800 $('section.toggle').parent(':not([class])').each(function () { 2801 var $this = $(this), 2802 opts; 2803 2804 var pluginOptions = $this.data('plugin-options'); 2805 if (pluginOptions) 2806 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2807 2808 $this.themePluginToggle(opts); 2809 }); 2810 }); 2811 2812 } 2813 2814}).apply(this, [jQuery]); 2815 2816// Word Rotate 2817(function ($) { 2818 2819 'use strict'; 2820 2821 if ($.isFunction($.fn['themePluginwordRotate'])) { 2822 2823 $(function () { 2824 $('[data-plugin-word-rotate]:not(.manual), .word-rotate:not(.manual)').each(function () { 2825 var $this = $(this), 2826 opts; 2827 2828 var pluginOptions = $this.data('plugin-options'); 2829 if (pluginOptions) 2830 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 2831 2832 $this.themePluginwordRotate(opts); 2833 }); 2834 }); 2835 2836 } 2837 2838}).apply(this, [jQuery]); 2839 2840 2841 2842// Commom Partials 2843(function ($) { 2844 2845 'use strict'; 2846 2847 // Sticky Menu 2848 if (typeof theme.StickyMenu !== 'undefined') { 2849 theme.StickyMenu.initialize(); 2850 } 2851 2852 // Nav Menu 2853 if (typeof theme.Nav !== 'undefined') { 2854 theme.Nav.initialize(); 2855 } 2856 2857 if ($(window).width() < 992) 2858 fixedHeader(); 2859 2860 $(window).on('resize', function () { 2861 fixedHeader(); 2862 }); 2863 2864}).apply(this, [jQuery]); 2865 2866// Fixed Header 2867function fixedHeader() { 2868 2869 var hasFixed = $('header').hasClass('fixedheader'); 2870 var $header = $('header'); 2871 if ($(window).width() < 992) 2872 $header.addClass('fixedheader'); 2873 else { 2874 if (!hasFixed) 2875 $header.removeClass('fixedheader'); 2876 } 2877} 2878 2879// Overlay Menu 2880function overlayHeader($overlayHeader, onePage) { 2881 2882 $('body').removeClass('overlay-effect'); 2883 $overlayHeader.find('button.close-btn').remove(); 2884 $overlayHeader.find('.overlay ul').removeClass('dl-menu, dl-subview'); 2885 $overlayHeader.find('.overlay li').removeClass('dl-submenu, dl-subviewopen'); 2886 2887 if (onePage) { 2888 $overlayHeader.find('.overlay').addClass('one-menu'); 2889 $('.btn-responsive-nav').click(function () { 2890 $overlayHeader.find('.overlay').removeClass('one-menu'); 2891 }); 2892 } 2893 2894 if (!onePage) { 2895 $overlayHeader.find('.overlay').removeClass('animate-menu'); 2896 2897 } 2898} 2899 2900// Pushdown & Inline Menu 2901function inlineHeader(onePage) { 2902 2903 if (!onePage) 2904 $body.toggleClass('show-menu'); 2905 2906 else { 2907 $('body').removeClass('show-menu'); 2908 $body.find('.push-down ul').removeClass('dl-subview'); 2909 $('.btn-responsive-nav').find('.fas').switchClass('fa-close', 'fa-bars'); 2910 } 2911} 2912 2913function pushdownMenu(onePage) { 2914 $(".pushdown.collapse").addClass("nav-main-collapse-push"); 2915 $("header").toggleClass("pushdownshow"); 2916} 2917
2918var pushMenu = $(".pushdownHeader"); 2919if (pushMenu.length > 0) 2920 $(".nav-main-collapse").removeClass("collapse"); 2921$(".nav-main.pushdown").addClass("collapse"); 2922$(".pushdown .scrollbar").hide(); 2923 2924// Added below code to support backward compatibility 2925/* Circular Bars - Knob */ 2926if (typeof ($.fn.knob) != "undefined") { 2927 $(".knob").knob({}); 2928} 2929 2930$(document).on('click.bs.modal.data-api', '[data-bs-toggle="modal"]', function (e) { 2931 e.preventDefault(); 2932}); 2933 2934//Google Map 2935$(window).load(function () { 2936 $('.google-map img:not([alt])').attr('alt', 'Google Map'); 2937}); 2938 2939//Slide Menu 2940$('.nav-main-collapse.slidebar nav ul.nav-main li a').click(function () { 2941 $(this).parent().toggleClass('sub-open'); 2942}); 2943 2944$('.nav-main').find('.dropdown-toggle[href="#"], .dropdown-submenu [href="#"], .dropdown-toggle[href!="#"] .fa-caret-down, .dropdown-submenu a[href!="#"] .fa-caret-down').on('click', function (e) { 2945 2946 e.preventDefault(); 2947 2948 if ($(window).width() > 991 && $(this).parents('.slidebar').length < 0) 2949 return this; 2950 2951 return this; 2952}); 2953 2954(function ($) { 2955 2956 // Create a new instance of Slidebars 2957 var controller = new slidebars(); 2958 2959 // Initialize Slidebars 2960 controller.init(); 2961 2962 // Left Slidebar controls 2963 $('.btn-responsive-nav').on('click', function (event) { 2964 controller.toggle('slidebar'); 2965 }); 2966 2967 $('.close-icon .fa-times-circle').on('click', function (event) { 2968 $SideClose = $(".btn-responsive-nav .fa-times"); 2969 if ($SideClose.length > 0) 2970 $(".btn-responsive-nav .fas").removeClass('fa-times').addClass('fa-bars'); 2971 controller.close('slidebar'); 2972 }); 2973 2974})(jQuery); 2975// Chart Circular 2976(function (theme, $) { 2977 2978 theme = theme || {}; 2979 2980 var instanceName = '__chartCircular'; 2981 2982 var PluginChartCircular = function ($el, opts) { 2983 return this.initialize($el, opts); 2984 }; 2985 2986 PluginChartCircular.defaults = { 2987 accX: 0, 2988 accY: -150, 2989 delay: 1, 2990 barColor: '#0088CC', 2991 trackColor: '#f2f2f2', 2992 scaleColor: false, 2993 scaleLength: 5, 2994 lineCap: 'round', 2995 lineWidth: 13, 2996 size: 175, 2997 rotate: 0, 2998 animate: ({ 2999 duration: 2500, 3000 enabled: true 3001 }) 3002 }; 3003 3004 PluginChartCircular.prototype = { 3005 initialize: function ($el, opts) { 3006 if ($el.data(instanceName)) { 3007 return this; 3008 } 3009 3010 this.$el = $el; 3011 3012 this 3013 .setData() 3014 .setOptions(opts) 3015 .build(); 3016 3017 return this; 3018 }, 3019 3020 setData: function () { 3021 this.$el.data(instanceName, this); 3022 3023 return this; 3024 }, 3025 3026 setOptions: function (opts) { 3027 this.options = $.extend(true, {}, PluginChartCircular.defaults, opts, { 3028 wrapper: this.$el 3029 }); 3030 3031 return this; 3032 }, 3033 3034 build: function () { 3035 if (!($.isFunction($.fn.appear)) || !($.isFunction($.fn.easyPieChart))) { 3036 return this; 3037 } 3038 3039 var self = this, 3040 $el = this.options.wrapper, 3041 value = ($el.attr('data-percent') ? $el.attr('data-percent') : 0), 3042 percentEl = $el.find('.percent'); 3043 3044 $.extend(true, self.options, { 3045 onStep: function (from, to, currentValue) { 3046 percentEl.html(parseInt(currentValue)); 3047 } 3048 }); 3049 3050 $el.attr('data-percent', 0); 3051 3052 $el.appear(function () { 3053 3054 $el.easyPieChart(self.options); 3055 3056 setTimeout(function () { 3057 3058 $el.data('easyPieChart').update(value); 3059 $el.attr('data-percent', value); 3060 3061 }, self.options.delay); 3062 3063 }, { 3064 accX: self.options.accX, 3065 accY: self.options.accY 3066 }); 3067 3068 return this; 3069 } 3070 }; 3071 3072 // expose to scope 3073 $.extend(theme, { 3074 PluginChartCircular: PluginChartCircular 3075 }); 3076 3077 // jquery plugin 3078 $.fn.themePluginChartCircular = function (opts) { 3079 return this.map(function () { 3080 var $this = $(this); 3081 3082 if ($this.data(instanceName)) { 3083 return $this.data(instanceName); 3084 } else { 3085 return new PluginChartCircular($this, opts); 3086 } 3087 3088 }); 3089 } 3090 3091}).apply(this, [window.theme, jQuery]); 3092 3093// Chart.Circular 3094(function ($) { 3095 3096 'use strict'; 3097 3098 if ($.isFunction($.fn['themePluginChartCircular'])) { 3099 3100 $(function () { 3101 $('[data-plugin-chart-circular]:not(.manual), .circular-bar-chart:not(.manual)').each(function () { 3102 var $this = $(this), 3103 opts; 3104 3105 var pluginOptions = $this.data('plugin-options'); 3106 if (pluginOptions) 3107 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 3108 3109 $this.themePluginChartCircular(opts); 3110 }); 3111 }); 3112 3113 } 3114 3115}).apply(this, [jQuery]);// Sort 3116(function (theme, $) { 3117 3118 theme = theme || {}; 3119 3120 var instanceName = '__sort'; 3121 3122 var PluginSort = function ($el, opts) { 3123 return this.initialize($el, opts); 3124 }; 3125 3126 PluginSort.defaults = { 3127 useHash: true, 3128 itemSelector: 'li', 3129 layoutMode: 'masonry', 3130 filter: '*', 3131 isOriginLeft: ($('html').attr('dir') == 'rtl' ? false : true) 3132 }; 3133 3134 PluginSort.prototype = { 3135 initialize: function ($el, opts) { 3136 if ($el.data(instanceName)) { 3137 return this; 3138 } 3139 3140 this.$el = $el; 3141 3142 this 3143 .setData() 3144 .setOptions(opts) 3145 .build(); 3146 3147 return this; 3148 }, 3149 3150 setData: function () { 3151 this.$el.data(instanceName, this); 3152 3153 return this; 3154 }, 3155 3156 setOptions: function (opts) { 3157 this.options = $.extend(true, {}, PluginSort.defaults, opts, { 3158 wrapper: this.$el 3159 }); 3160 3161 return this; 3162 }, 3163 3164 build: function () { 3165 if (!($.isFunction($.fn.isotope))) { 3166 return this; 3167 } 3168 3169 var self = this, 3170 $source = this.options.wrapper, 3171 $destination = $('.sort-destination[data-sort-id="' + $source.attr('data-sort-id') + '"]'); 3172 3173 if ($destination.get(0)) { 3174 3175 self.$source = $source; 3176 self.$destination = $destination; 3177 3178 self.setParagraphHeight($destination); 3179 3180 $(window).load(function () { 3181 3182 $destination.isotope(self.options).isotope('layout'); 3183 3184 self.$destination.isotope('on', 'layoutComplete', function (isoInstance, laidOutItems) { 3185 if (self.options.useHash && typeof isoInstance.options != 'undefined' && typeof isoInstance.options.filter != 'undefined') { 3186 if (window.location.hash != '' || isoInstance.options.filter.replace('.', '') != '*') { 3187 window.location.hash = isoInstance.options.filter.replace('.', ''); 3188 } 3189 } 3190 }); 3191 3192 self.events(); 3193 3194 }); 3195 3196 } 3197 3198 return this; 3199 }, 3200 3201 events: function () { 3202 var self = this, 3203 filter = null; 3204 3205 self.$source.find('a').click(function (e) { 3206 e.preventDefault(); 3207 3208 filter = $(this).parent().attr('data-option-value'); 3209 3210 self.setFilter(filter); 3211 3212 return this; 3213 }); 3214 3215 if (self.options.useHash) { 3216 self.hashEvents(); 3217 } 3218 3219 return this; 3220 }, 3221 3222 setFilter: function (filter) { 3223 var self = this; 3224 3225 //if (self.filter == filter) { 3226 // return this; 3227 //} 3228 3229 self.$source.find('li.active').removeClass('active'); 3230 self.$source.find('li[data-option-value="' + filter + '"]').addClass('active'); 3231 3232 self.$destination.isotope({ 3233 filter: filter 3234 }); 3235
3236 self.filter = filter; 3237 3238 return this; 3239 }, 3240 3241 hashEvents: function () { 3242 var self = this, 3243 hash = null, 3244 hashFilter = null, 3245 initHashFilter = '.' + location.hash.replace('#', ''); 3246 3247 if (initHashFilter != '.' && initHashFilter != '.*') { 3248 self.setFilter(initHashFilter); 3249 } 3250 3251 $(window).bind('hashchange', function (e) { 3252 3253 hashFilter = '.' + location.hash.replace('#', ''); 3254 hash = (hashFilter == '.' || hashFilter == '.*' ? '*' : hashFilter); 3255 3256 self.setFilter(hash); 3257 3258 }); 3259 3260 return this; 3261 }, 3262 3263 setParagraphHeight: function () { 3264 var self = this, 3265 minParagraphHeight = 0, 3266 paragraphs = $('span.thumb-info-caption p', self.$destination); 3267 3268 paragraphs.each(function () { 3269 if ($(this).height() > minParagraphHeight) { 3270 minParagraphHeight = ($(this).height() + 10);
3271 } 3272 }); 3273 3274 paragraphs.height(minParagraphHeight); 3275 3276 return this; 3277 } 3278 3279 }; 3280 3281 // expose to scope 3282 $.extend(theme, { 3283 PluginSort: PluginSort 3284 }); 3285 3286 // jquery plugin 3287 $.fn.themePluginSort = function (opts) { 3288 return this.map(function () { 3289 var $this = $(this); 3290 3291 if ($this.data(instanceName)) { 3292 return $this.data(instanceName); 3293 } else { 3294 return new PluginSort($this, opts); 3295 } 3296 3297 }); 3298 } 3299 3300}).apply(this, [window.theme, jQuery]); 3301 3302// Sort 3303(function ($) { 3304 3305 'use strict'; 3306 3307 if ($.isFunction($.fn['themePluginSort'])) { 3308 3309 $(function () { 3310 $('[data-plugin-sort]:not(.manual), .sort-source:not(.manual)').each(function () { 3311 var $this = $(this), 3312 opts; 3313 3314 var pluginOptions = $this.data('plugin-options'); 3315 if (pluginOptions) 3316 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 3317 3318 $this.themePluginSort(opts); 3319 }); 3320 }); 3321 3322 } 3323 3324}).apply(this, [jQuery]); 3325 3326// Masonry 3327(function (theme, $) { 3328 3329 theme = theme || {}; 3330 3331 var instanceName = '__masonry'; 3332 3333 var PluginMasonry = function ($el, opts) { 3334 return this.initialize($el, opts); 3335 }; 3336 3337 PluginMasonry.defaults = { 3338 itemSelector: 'li' 3339 }; 3340 3341 PluginMasonry.prototype = { 3342 initialize: function ($el, opts) { 3343 if ($el.data(instanceName)) { 3344 return this; 3345 } 3346 3347 this.$el = $el; 3348 3349 this 3350 .setData() 3351 .setOptions(opts) 3352 .build(); 3353 3354 return this; 3355 }, 3356 3357 setData: function () { 3358 this.$el.data(instanceName, this); 3359 3360 return this; 3361 }, 3362 3363 setOptions: function (opts) { 3364 this.options = $.extend(true, {}, PluginMasonry.defaults, opts, { 3365 wrapper: this.$el 3366 }); 3367 3368 return this; 3369 }, 3370 3371 build: function () { 3372 if (!($.isFunction($.fn.isotope))) { 3373 return this; 3374 } 3375 3376 this.options.wrapper.isotope(this.options); 3377 3378 return this; 3379 } 3380 }; 3381 3382 // expose to scope 3383 $.extend(theme, { 3384 PluginMasonry: PluginMasonry 3385 }); 3386 3387 // jquery plugin 3388 $.fn.themePluginMasonry = function (opts) { 3389 return this.map(function () { 3390 var $this = $(this); 3391 3392 $this.waitForImages(function () { 3393 if ($this.data(instanceName)) { 3394 return $this.data(instanceName); 3395 } else { 3396 return new PluginMasonry($this, opts); 3397 } 3398 }); 3399 3400 }); 3401 } 3402 3403}).apply(this, [window.theme, jQuery]); 3404 3405// Masonry 3406(function ($) { 3407 3408 'use strict'; 3409 3410 if ($.isFunction($.fn['themePluginMasonry'])) { 3411 3412 $(function () { 3413 $('[data-plugin-masonry]:not(.manual)').each(function () { 3414 var $this = $(this), 3415 opts; 3416 3417 var pluginOptions = $this.data('plugin-options'); 3418 if (pluginOptions) 3419 opts = jQuery.parseJSON(pluginOptions.replace(/'/g, '\"')); 3420 3421 $this.themePluginMasonry(opts); 3422 }); 3423 }); 3424 3425 } 3426 3427}).apply(this, [jQuery]);// Circle Slider 3428(function ($) { 3429 3430 'use strict'; 3431 3432 if ($.isFunction($.fn.flipshow)) { 3433 var circleContainer = $('#fcSlideshow'); 3434 3435 if (circleContainer.get(0)) { 3436 circleContainer.flipshow(); 3437 3438 setTimeout(function circleFlip() { 3439 circleContainer.data().flipshow._navigate(circleContainer.find('div.fc-right span:first'), 'right'); 3440 setTimeout(circleFlip, 3000); 3441 }, 3000); 3442 } 3443 } 3444 3445}).apply(this, [jQuery]);
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.