PageSourceSearch

https://stagingabc.org/Portals/_default/skins/porto/ABCRedesignHome.js?cdv=3798

js stagingabc.org collected 2026-09-29 16:59:15 UTC 86,311 bytes, 3,445 lines download raw bytes

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.