PageSourceSearch

https://bantulkab.go.id/resource/themes/canvas/js/functions.js

js bantulkab.go.id collected 2026-09-24 09:24:29 UTC 134,719 bytes, 3,730 lines download raw bytes

1var $ = jQuery.noConflict();
2
3$.fn.inlineStyle = function (prop) {
4	return this.prop("style")[$.camelCase(prop)];
5};
6
7$.fn.doOnce = function( func ) {
8	this.length && func.apply( this );
9	return this;
10};
11
12(function() {
13	var lastTime = 0;
14	var vendors = ['ms', 'moz', 'webkit', 'o'];
15	for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
16		window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
17		window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
18									|| window[vendors[x]+'CancelRequestAnimationFrame'];
19	}
20
21	if (!window.requestAnimationFrame)
22		window.requestAnimationFrame = function(callback, element) {
23			var currTime = new Date().getTime();
24			var timeToCall = Math.max(0, 16 - (currTime - lastTime));
25			var id = window.setTimeout(function() { callback(currTime + timeToCall); },
26			  timeToCall);
27			lastTime = currTime + timeToCall;
28			return id;
29		};
30
31	if (!window.cancelAnimationFrame)
32		window.cancelAnimationFrame = function(id) {
33			clearTimeout(id);
34		};
35}());
36
37
38
39function debounce(func, wait, immediate) {
40	var timeout, args, context, timestamp, result;
41	return function() {
42		context = this;
43		args = arguments;
44		timestamp = new Date();
45		var later = function() {
46			var last = (new Date()) - timestamp;
47			if (last < wait) {
48				timeout = setTimeout(later, wait - last);
49			} else {
50				timeout = null;
51				if (!immediate) result = func.apply(context, args);
52			}
53		};
54		var callNow = immediate && !timeout;
55		if (!timeout) {
56			timeout = setTimeout(later, wait);
57		}
58		if (callNow) result = func.apply(context, args);
59		return result;
60	};
61}
62
63
64var requesting = false;
65
66var killRequesting = debounce(function () {
67	requesting = false;
68}, 100);
69
70function onScrollSliderParallax() {
71	if (!requesting) {
72		requesting = true;
73		requestAnimationFrame(function(){
74			SEMICOLON.slider.sliderParallax();
75			SEMICOLON.slider.sliderElementsFade();
76		});
77	}
78	killRequesting();
79}
80
81
82
83var SEMICOLON = SEMICOLON || {};
84
85(function($){
86
87	// USE STRICT
88	"use strict";
89
90	SEMICOLON.initialize = {
91
92		init: function(){
93
94			SEMICOLON.initialize.responsiveClasses();
95			SEMICOLON.initialize.stickyElements();
96			SEMICOLON.initialize.goToTop();
97			SEMICOLON.initialize.lazyLoad();
98			SEMICOLON.initialize.fullScreen();
99			SEMICOLON.initialize.verticalMiddle();
100			SEMICOLON.initialize.lightbox();
101			SEMICOLON.initialize.resizeVideos();
102			SEMICOLON.initialize.imageFade();
103			SEMICOLON.initialize.pageTransition();
104			SEMICOLON.initialize.dataResponsiveClasses();
105			SEMICOLON.initialize.dataResponsiveHeights();
106			SEMICOLON.initialize.stickFooterOnSmall();
107			SEMICOLON.initialize.stickyFooter();
108
109			$('.fslider').addClass('preloader2');
110
111		},
112
113		responsiveClasses: function(){
114
115			if( typeof jRespond === 'undefined' ) {
116				console.log('responsiveClasses: jRespond not Defined.');
117				return true;
118			}
119
120			var jRes = jRespond([
121				{
122					label: 'smallest',
123					enter: 0,
124					exit: 575
125				},{
126					label: 'handheld',
127					enter: 576,
128					exit: 767
129				},{
130					label: 'tablet',
131					enter: 768,
132					exit: 991
133				},{
134					label: 'laptop',
135					enter: 992,
136					exit: 1199
137				},{
138					label: 'desktop',
139					enter: 1200,
140					exit: 10000
141				}
142			]);
143			jRes.addFunc([
144				{
145					breakpoint: 'desktop',
146					enter: function() { $body.addClass('device-xl'); },
147					exit: function() { $body.removeClass('device-xl'); }
148				},{
149					breakpoint: 'laptop',
150					enter: function() { $body.addClass('device-lg'); },
151					exit: function() { $body.removeClass('device-lg'); }
152				},{
153					breakpoint: 'tablet',
154					enter: function() { $body.addClass('device-md'); },
155					exit: function() { $body.removeClass('device-md'); }
156				},{
157					breakpoint: 'handheld',
158					enter: function() { $body.addClass('device-sm'); },
159					exit: function() { $body.removeClass('device-sm'); }
160				},{
161					breakpoint: 'smallest',
162					enter: function() { $body.addClass('device-xs'); },
163					exit: function() { $body.removeClass('device-xs'); }
164				}
165			]);
166		},
167
168		verticalMiddle: function(){
169			if( $verticalMiddleEl.length > 0 ) {
170				$verticalMiddleEl.each( function(){
171					var element = $(this),
172						verticalMiddleH = element.outerHeight(),
173						headerHeight = $header.outerHeight();
174
175					if( element.parents('#slider').length > 0 && !element.hasClass('ignore-header') ) {
176						if( $header.hasClass('transparent-header') && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) {
177							verticalMiddleH = verticalMiddleH - 70;
178							if( $slider.next('#header').length > 0 ) { verticalMiddleH = verticalMiddleH + headerHeight; }
179						}
180					}
181
182					if( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) {
183						if( element.parents('.full-screen').length && !element.parents('.force-full-screen').length ){
184							if( element.children('.col-padding').length > 0 ) {
185								element.css({ position: 'relative', top: '0', width: 'auto', marginTop: '0' }).addClass('clearfix');
186							} else {
187								element.css({ position: 'relative', top: '0', width: 'auto', marginTop: '0', paddingTop: '60px', paddingBottom: '60px' }).addClass('clearfix');
188							}
189						} else {
190							element.css({ position: 'absolute', top: '50%', width: '100%', paddingTop: '0', paddingBottom: '0', marginTop: -(verticalMiddleH/2)+'px' });
191						}
192					} else {
193						element.css({ position: 'absolute', top: '50%', width: '100%', paddingTop: '0', paddingBottom: '0', marginTop: -(verticalMiddleH/2)+'px' });
194					}
195				});
196			}
197		},
198
199		stickyElements: function(){
200			if( $siStickyEl.length > 0 ) {
201				var siStickyH = $siStickyEl.outerHeight();
202				$siStickyEl.css({ marginTop: -(siStickyH/2)+'px' });
203			}
204
205			if( $dotsMenuEl.length > 0 ) {
206				var opmdStickyH = $dotsMenuEl.outerHeight();
207				$dotsMenuEl.css({ marginTop: -(opmdStickyH/2)+'px' });
208			}
209		},
210
211		goToTop: function(){
212			var elementScrollSpeed = $goToTopEl.attr('data-speed'),
213				elementScrollEasing = $goToTopEl.attr('data-easing');
214
215			if( !elementScrollSpeed ) { elementScrollSpeed = 700; }
216			if( !elementScrollEasing ) { elementScrollEasing = 'easeOutQuad'; }
217
218			$goToTopEl.off( 'click' ).on( 'click', function() {
219				$('body,html').stop(true).animate({
220					'scrollTop': 0
221				}, Number( elementScrollSpeed ), elementScrollEasing );
222				return false;
223			});
224		},
225
226		goToTopScroll: function(){
227			var elementMobile = $goToTopEl.attr('data-mobile'),
228				elementOffset = $goToTopEl.attr('data-offset');
229
230			if( !elementOffset ) { elementOffset = 450; }
231
232			if( elementMobile != 'true' && ( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) { return true; }
233
234			if( $window.scrollTop() > Number(elementOffset) ) {
235				$goToTopEl.fadeIn();
236				$body.addClass('gototop-active');
237			} else {
238				$goToTopEl.fadeOut();
239				$body.removeClass('gototop-active');
240			}
241		},
242
243		fullScreen: function(){
244			if( $fullScreenEl.length > 0 ) {
245				$fullScreenEl.each( function(){
246					var element = $(this),
247						scrHeight = window.innerHeight ? window.innerHeight : $window.height(),
248						negativeHeight = element.attr('data-negative-height');
249
250					if( element.attr('id') == 'slider' ) {
251						var sliderHeightOff = $slider.offset().top;
252						scrHeight = scrHeight - sliderHeightOff;
253						if( element.find('.slider-parallax-inner').length > 0 ) {
254							var transformVal = element.find('.slider-parallax-inner').css('transform'),
255								transformX = transformVal.match(/-?[\d\.]+/g);
256							if( !transformX ) { var transformXvalue = 0; } else { var transformXvalue = transformX[5]; }
257							scrHeight = ( ( window.innerHeight ? window.innerHeight : $window.height() ) + Number( transformXvalue ) ) - sliderHeightOff;
258						}
259						if( $('#slider.with-header').next('#header:not(.transparent-header)').length > 0 && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) {
260							var headerHeightOff = $header.outerHeight();
261							scrHeight = scrHeight - headerHeightOff;
262						}
263					}
264					if( element.parents('.full-screen').length > 0 ) { scrHeight = element.parents('.full-screen').height(); }
265
266					if( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) {
267						if( !element.hasClass('force-full-screen') ){ scrHeight = 'auto'; }
268					}
269
270					if( negativeHeight ){ scrHeight = scrHeight - Number(negativeHeight); }
271
272					element.css('height', scrHeight);
273					if( element.attr('id') == 'slider' && !element.hasClass('canvas-slider-grid') ) { if( element.has('.swiper-slide') ) { element.find('.swiper-slide').css('height', scrHeight); } }
274				});
275			}
276		},
277
278		testimonialsGrid: function(){
279			if( $testimonialsGridEl.length > 0 ) {
280				if( $body.hasClass('device-md') || $body.hasClass('device-lg') || $body.hasClass('device-xl') ) {
281					var maxHeight = 0;
282					$testimonialsGridEl.each( function(){
283						$(this).find("li > .testimonial").each(function(){
284						   if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
285						});
286						$(this).find("li").height(maxHeight);
287						maxHeight = 0;
288					});
289				} else {
290					$testimonialsGridEl.find("li").css({ 'height': 'auto' });
291				}
292			}
293		},
294
295		lightbox: function(){
296
297			if( !$().magnificPopup ) {
298				console.log('lightbox: Magnific Popup not Defined.');
299				return true;
300			}
301
302			var $lightboxImageEl = $('[data-lightbox="image"]'),
303				$lightboxGalleryEl = $('[data-lightbox="gallery"]'),
304				$lightboxIframeEl = $('[data-lightbox="iframe"]'),
305				$lightboxInlineEl = $('[data-lightbox="inline"]'),
306				$lightboxAjaxEl = $('[data-lightbox="ajax"]'),
307				$lightboxAjaxGalleryEl = $('[data-lightbox="ajax-gallery"]');
308
309			if( $lightboxImageEl.length > 0 ) {
310				$lightboxImageEl.magnificPopup({
311					type: 'image',
312					closeOnContentClick: true,
313					closeBtnInside: false,
314					fixedContentPos: true,
315					mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side
316					image: {
317						verticalFit: true
318					}
319				});
320			}
321
322			if( $lightboxGalleryEl.length > 0 ) {
323				$lightboxGalleryEl.each(function() {
324					var element = $(this);
325
326					if( element.find('a[data-lightbox="gallery-item"]').parent('.clone').hasClass('clone') ) {
327						element.find('a[data-lightbox="gallery-item"]').parent('.clone').find('a[data-lightbox="gallery-item"]').attr('data-lightbox','');
328					}
329
330					if( element.find('a[data-lightbox="gallery-item"]').parents('.cloned').hasClass('cloned') ) {
331						element.find('a[data-lightbox="gallery-item"]').parents('.cloned').find('a[data-lightbox="gallery-item"]').attr('data-lightbox','');
332					}
333
334					element.magnificPopup({
335						delegate: 'a[data-lightbox="gallery-item"]',
336						type: 'image',
337						closeOnContentClick: true,
338						closeBtnInside: false,
339						fixedContentPos: true,
340						mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side
341						image: {
342							verticalFit: true
343						},
344						gallery: {
345							enabled: true,
346							navigateByImgClick: true,
347							preload: [0,1] // Will preload 0 - before current, and 1 after the current image
348						}
349					});
350				});
351			}
352
353			if( $lightboxIframeEl.length > 0 ) {
354				$lightboxIframeEl.magnificPopup({
355					disableOn: 600,
356					type: 'iframe',
357					removalDelay: 160,
358					preloader: false,
359					fixedContentPos: false
360				});
361			}
362
363			if( $lightboxInlineEl.length > 0 ) {
364				$lightboxInlineEl.magnificPopup({
365					type: 'inline',
366					mainClass: 'mfp-no-margins mfp-fade',
367					closeBtnInside: false,
368					fixedContentPos: true,
369					overflowY: 'scroll'
370				});
371			}
372
373			if( $lightboxAjaxEl.length > 0 ) {
374				$lightboxAjaxEl.magnificPopup({
375					type: 'ajax',
376					closeBtnInside: false,
377					autoFocusLast: false,
378					callbacks: {
379						ajaxContentAdded: function(mfpResponse) {
380							SEMICOLON.widget.loadFlexSlider();
381							SEMICOLON.initialize.resizeVideos();
382							SEMICOLON.widget.masonryThumbs();
383						},
384						open: function() {
385							$body.addClass('ohidden');
386						},
387						close: function() {
388							$body.removeClass('ohidden');
389						}
390					}
391				});
392			}
393
394			if( $lightboxAjaxGalleryEl.length > 0 ) {
395				$lightboxAjaxGalleryEl.magnificPopup({
396					delegate: 'a[data-lightbox="ajax-gallery-item"]',
397					type: 'ajax',
398					closeBtnInside: false,
399					autoFocusLast: false,
400					gallery: {
401						enabled: true,
402						preload: 0,
403						navigateByImgClick: false
404					},
405					callbacks: {
406						ajaxContentAdded: function(mfpResponse) {
407							SEMICOLON.widget.loadFlexSlider();
408							SEMICOLON.initialize.resizeVideos();
409							SEMICOLON.widget.masonryThumbs();
410						},
411						open: function() {
412							$body.addClass('ohidden');
413						},
414						close: function() {
415							$body.removeClass('ohidden');
416						}
417					}
418				});
419			}
420
421			$('[data-lightbox]').on( 'mfpOpen', function(){
422				var lightboxItem	= $.magnificPopup.instance.currItem.el,
423					lightboxClass	= $( lightboxItem ).attr('data-lightbox-class'),
424					lightboxBgClass	= $( lightboxItem ).attr('data-lightbox-bg-class');
425
426				if( lightboxClass != '' ) {
427					$( $.magnificPopup.instance.container ).addClass( lightboxClass );
428				}
429
430				if( lightboxBgClass != '' ) {
431					$( $.magnificPopup.instance.bgOverlay ).addClass( lightboxBgClass );
432				}
433			});
434
435		},
436
437		modal: function(){
438
439			if( !$().magnificPopup ) {
440				console.log('modal: Magnific Popup not Defined.');
441				return true;
442			}
443
444			if( Cookies === 'undefined' ) {
445				console.log('cookieNotify: Cookie Function not defined.');
446				return true;
447			}
448
449			var $modal = $('.modal-on-load:not(.customjs)');
450			if( $modal.length > 0 ) {
451				$modal.each( function(){
452					var element				= $(this),
453						elementTarget		= element.attr('data-target'),
454						elementTargetValue	= elementTarget.split('#')[1],
455						elementDelay		= element.attr('data-delay'),
456						elementTimeout		= element.attr('data-timeout'),
457						elementAnimateIn	= element.attr('data-animate-in'),
458						elementAnimateOut	= element.attr('data-animate-out');
459
460					if( !element.hasClass('enable-cookie') ) { Cookies.remove( elementTargetValue ); }
461
462					if( element.hasClass('enable-cookie') ) {
463						var elementCookie = Cookies.get( elementTargetValue );
464
465						if( typeof elementCookie !== 'undefined' && elementCookie == '0' ) {
466							return true;
467						}
468					}
469
470					if( !elementDelay ) {
471						elementDelay = 1500;
472					} else {
473						elementDelay = Number(elementDelay) + 1500;
474					}
475
476					var t = setTimeout(function() {
477						$.magnificPopup.open({
478							items: { src: elementTarget },
479							type: 'inline',
480							mainClass: 'mfp-no-margins mfp-fade',
481							closeBtnInside: false,
482							fixedContentPos: true,
483							removalDelay: 500,
484							callbacks: {
485								open: function(){
486									if( elementAnimateIn != '' ) {
487										$(elementTarget).addClass( elementAnimateIn + ' animated' );
488									}
489								},
490								beforeClose: function(){
491									if( elementAnimateOut != '' ) {
492										$(elementTarget).removeClass( elementAnimateIn ).addClass( elementAnimateOut );
493									}
494								},
495								afterClose: function() {
496									if( elementAnimateIn != '' || elementAnimateOut != '' ) {
497										$(elementTarget).removeClass( elementAnimateIn + ' ' + elementAnimateOut + ' animated' );
498									}
499									if( element.hasClass('enable-cookie') ) {
500										Cookies.set( elementTargetValue, '0' );
501									}
502								}
503							}
504						}, 0);
505					}, Number(elementDelay) );
506
507					if( elementTimeout != '' ) {
508						var to = setTimeout(function() {
509							$.magnificPopup.close();
510						}, Number(elementDelay) + Number(elementTimeout) );
511					}
512				});
513			}
514		},
515
516		resizeVideos: function(){
517
518			if( !$().fitVids ) {
519				console.log('resizeVideos: FitVids not Defined.');
520				return true;
521			}
522
523			$("#content,#footer,.slider-element:not(.revslider-wrap),.landing-offer-media,.portfolio-ajax-modal,.mega-menu-column").fitVids({
524				customSelector: "iframe[src^='//www.dailymotion.com/embed'], iframe[src*='maps.google.com'], iframe[src*='google.com/maps'], iframe[src*='facebook.com/plugins/video']",
525				ignore: '.no-fv'
526			});
527		},
528
529		imageFade: function(){
530			$('.image_fade').hover( function(){
531				$(this).filter(':not(:animated)').animate({opacity: 0.8}, 400);
532			}, function() {
533				$(this).animate({opacity: 1}, 400);
534			});
535		},
536
537		blogTimelineEntries: function(){
538			$('.post-timeline.grid-2').find('.entry').each( function(){
539				var position = $(this).inlineStyle('left');
540				if( position == '0px' ) {
541					$(this).removeClass('alt');
542				} else {
543					$(this).addClass('alt');
544				}
545				$(this).find('.entry-timeline').fadeIn();
546			});
547
548			$('.entry.entry-date-section').next().next().find('.entry-timeline').css({ 'top': '70px' });
549		},
550
551		pageTransition: function(){
552			if( $body.hasClass('no-transition') ) { return true; }
553
554			if( !$().animsition ) {
555				$body.addClass('no-transition');
556				console.log('pageTransition: Animsition not Defined.');
557				return true;
558			}
559
560			window.onpageshow = function(event) {
561				if(event.persisted) {
562					window.location.reload();
563				}
564			};
565
566			var animationIn = $body.attr('data-animation-in'),
567				animationOut = $body.attr('data-animation-out'),
568				durationIn = $body.attr('data-speed-in'),
569				durationOut = $body.attr('data-speed-out'),
570				timeOutActive = false,
571				loaderTimeOut = $body.attr('data-loader-timeout'),
572				loaderStyle = $body.attr('data-loader'),
573				loaderColor = $body.attr('data-loader-color'),
574				loaderHtml = $body.attr('data-loader-html'),
575				loaderStyleHtml = '',
576				loaderBefore = '<div class="css3-spinner">',
577				loaderAfter = '</div>',
578				loaderBgStyle = '',
579				loaderBorderStyle = '',
580				loaderBgClass = '',
581				loaderBorderClass = '',
582				loaderBgClass2 = '',
583				loaderBorderClass2 = '';
584
585			if( !animationIn ) { animationIn = 'fadeIn'; }
586			if( !animationOut ) { animationOut = 'fadeOut'; }
587			if( !durationIn ) { durationIn = 1500; }
588			if( !durationOut ) { durationOut = 800; }
589			if( !loaderHtml ) { loaderStyleHtml = '<div class="css3-spinner-bounce1"></div><div class="css3-spinner-bounce2"></div><div class="css3-spinner-bounce3"></div>'; }
590
591			if( !loaderTimeOut ) {
592				timeOutActive = false;
593				loaderTimeOut = false;
594			} else {
595				timeOutActive = true;
596				loaderTimeOut = Number(loaderTimeOut);
597			}
598
599			if( loaderColor ) {
600				if( loaderColor == 'theme' ) {
601					loaderBgClass = ' bgcolor';
602					loaderBorderClass = ' border-color';
603					loaderBgClass2 = ' class="bgcolor"';
604					loaderBorderClass2 = ' class="border-color"';
605				} else {
606					loaderBgStyle = ' style="background-color:'+ loaderColor +';"';
607					loaderBorderStyle = ' style="border-color:'+ loaderColor +';"';
608				}
609				loaderStyleHtml = '<div class="css3-spinner-bounce1'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-bounce2'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-bounce3'+ loaderBgClass +'"'+ loaderBgStyle +'></div>'
610			}
611
612			if( loaderStyle == '2' ) {
613				loaderStyleHtml = '<div class="css3-spinner-flipper'+ loaderBgClass +'"'+ loaderBgStyle +'></div>';
614			} else if( loaderStyle == '3' ) {
615				loaderStyleHtml = '<div class="css3-spinner-double-bounce1'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-double-bounce2'+ loaderBgClass +'"'+ loaderBgStyle +'></div>';
616			} else if( loaderStyle == '4' ) {
617				loaderStyleHtml = '<div class="css3-spinner-rect1'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-rect2'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-rect3'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-rect4'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-rect5'+ loaderBgClass +'"'+ loaderBgStyle +'></div>';
618			} else if( loaderStyle == '5' ) {
619				loaderStyleHtml = '<div class="css3-spinner-cube1'+ loaderBgClass +'"'+ loaderBgStyle +'></div><div class="css3-spinner-cube2'+ loaderBgClass +'"'+ loaderBgStyle +'></div>';
620			} else if( loaderStyle == '6' ) {
621				loaderStyleHtml = '<div class="css3-spinner-scaler'+ loaderBgClass +'"'+ loaderBgStyle +'></div>';
622			} else if( loaderStyle == '7' ) {
623				loaderStyleHtml = '<div class="css3-spinner-grid-pulse"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
624			} else if( loaderStyle == '8' ) {
625				loaderStyleHtml = '<div class="css3-spinner-clip-rotate"><div'+ loaderBorderClass2 + loaderBorderStyle +'></div></div>';
626			} else if( loaderStyle == '9' ) {
627				loaderStyleHtml = '<div class="css3-spinner-ball-rotate"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
628			} else if( loaderStyle == '10' ) {
629				loaderStyleHtml = '<div class="css3-spinner-zig-zag"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
630			} else if( loaderStyle == '11' ) {
631				loaderStyleHtml = '<div class="css3-spinner-triangle-path"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
632			} else if( loaderStyle == '12' ) {
633				loaderStyleHtml = '<div class="css3-spinner-ball-scale-multiple"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
634			} else if( loaderStyle == '13' ) {
635				loaderStyleHtml = '<div class="css3-spinner-ball-pulse-sync"><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div><div'+ loaderBgClass2 + loaderBgStyle +'></div></div>';
636			} else if( loaderStyle == '14' ) {
637				loaderStyleHtml = '<div class="css3-spinner-scale-ripple"><div'+ loaderBorderClass2 + loaderBorderStyle +'></div><div'+ loaderBorderClass2 + loaderBorderStyle +'></div><div'+ loaderBorderClass2 + loaderBorderStyle +'></div></div>';
638			}
639
640			if( !loaderHtml ) {
641				loaderHtml = loaderStyleHtml;
642			}
643
644			loaderHtml = loaderBefore + loaderHtml + loaderAfter;
645
646			$wrapper.css({ 'opacity': 1 });
647
648			$wrapper.animsition({
649				inClass: animationIn,
650				outClass: animationOut,
651				inDuration: Number(durationIn),
652				outDuration: Number(durationOut),
653				linkElement: 'body:not(.device-md):not(.device-sm):not(.device-xs) #primary-menu:not(.on-click) ul li a:not([target="_blank"]):not([href*="#"]):not([data-lightbox]):not([href^="mailto"]):not([href^="tel"]):not([href^="sms"]):not([href^="call"])',
654				loading: true,
655				loadingParentElement: 'body',
656				loadingClass: 'page-transition-wrap',
657				loadingInner: loaderHtml,
658				timeout: timeOutActive,
659				timeoutCountdown: loaderTimeOut,
660				onLoadEvent: true,
661				browser: [ 'animation-duration', '-webkit-animation-duration'],
662				overlay: false,
663				overlayClass: 'animsition-overlay-slide',
664				overlayParentElement: 'body'
665			});
666
667		},
668
669		lazyLoad: function() {
670			var lazyLoadEl = $('[data-lazyload]');
671
672			if( !$().appear ) {
673				console.log('lazyLoad: Appear not Defined.');
674				return true;
675			}
676
677			if( lazyLoadEl.length > 0 ) {
678				lazyLoadEl.each( function(){
679					var element = $(this),
680						elementImg = element.attr( 'data-lazyload' );
681
682					element.attr( 'src', 'images/blank.svg' ).css({ 'background': 'url(images/preloader.gif) no-repeat center center #FFF' });
683
684					element.appear(function () {
685						element.css({ 'background': 'none' }).removeAttr( 'width' ).removeAttr( 'height' ).attr('src', elementImg);
686					},{accX: 0, accY: 120},'easeInCubic');
687				});
688			}
689		},
690
691		topScrollOffset: function() {
692			var topOffsetScroll = 0;
693
694			if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) {
695				if( $header.hasClass('sticky-header') ) {
696					if( $pagemenu.hasClass('dots-menu') ) { topOffsetScroll = 100; } else { topOffsetScroll = 144; }
697				} else {
698					if( $pagemenu.hasClass('dots-menu') ) { topOffsetScroll = 140; } else { topOffsetScroll = 184; }
699				}
700
701				if( !$pagemenu.length ) {
702					if( $header.hasClass('sticky-header') ) { topOffsetScroll = 100; } else { topOffsetScroll = 140; }
703				}
704			} else {
705				topOffsetScroll = 40;
706			}
707
708			return topOffsetScroll;
709		},
710
711		defineColumns: function( element ){
712			var column = 4,
713				xlCol = element.attr('data-xl-col'),
714				lgCol = element.attr('data-lg-col'),
715				mdCol = element.attr('data-md-col'),
716				smCol = element.attr('data-sm-col'),
717				xsCol = element.attr('data-xs-col');
718
719			if( element.hasClass('portfolio-full') ) {
720				if( element.hasClass('portfolio-3') ) column = 3;
721				else if( element.hasClass('portfolio-5') ) column = 5;
722				else if( element.hasClass('portfolio-6') ) column = 6;
723				else column = 4;
724
725				if( $body.hasClass('device-md') && ( column == 4 || column == 5 || column == 6 ) ) {
726					column = 3;
727				} else if( $body.hasClass('device-sm') && ( column == 3 || column == 4 || column == 5 || column == 6 ) ) {
728					column = 2;
729				} else if( $body.hasClass('device-xs') ) {
730					column = 1;
731				}
732
733			} else if( element.hasClass('masonry-thumbs') ) {
734
735				if( element.hasClass('grid-2') ) column = 2;
736				else if( element.hasClass('grid-3') ) column = 3;
737				else if( element.hasClass('grid-5') ) column = 5;
738				else if( element.hasClass('grid-6') ) column = 6;
739				else column = 4;
740
741			}
742
743			if( $body.hasClass('device-xl') ) {
744				if( xlCol ) { column = Number(xlCol); }
745			} else if( $body.hasClass('device-lg') ) {
746				if( lgCol ) { column = Number(lgCol); }
747			} else if( $body.hasClass('device-md') ) {
748				if( mdCol ) { column = Number(mdCol); }
749			} else if( $body.hasClass('device-sm') ) {
750				if( smCol ) { column = Number(smCol); }
751			} else if( $body.hasClass('device-xs') ) {
752				if( xsCol ) { column = Number(xsCol); }
753			}
754
755			return column;
756		},
757
758		setFullColumnWidth: function( element ){
759
760			if( !$().isotope ) {
761				console.log('setFullColumnWidth: Isotope not Defined.');
762				return true;
763			}
764
765			element.css({ 'width': '' });
766
767			if( element.hasClass('portfolio-full') ) {
768				var columns = SEMICOLON.initialize.defineColumns( element ),
769					containerWidth = element.width(),
770					postWidth = Math.floor(containerWidth/columns);
771				if( $body.hasClass('device-xs') ) { var deviceSmallest = 1; } else { var deviceSmallest = 0; }
772				element.find(".portfolio-item").each(function(index){
773					if( deviceSmallest == 0 && $(this).hasClass('wide') ) { var elementSize = ( postWidth*2 ); } else { var elementSize = postWidth; }
774					$(this).css({"width":elementSize+"px"});
775				});
776			} else if( element.hasClass('masonry-thumbs') ) {
777				var columns = SEMICOLON.initialize.defineColumns( element ),
778					containerWidth = element.innerWidth();
779
780				if( containerWidth == windowWidth ){
781					containerWidth = windowWidth*1.005;
782					element.css({ 'width': containerWidth+'px' });
783				}
784
785				var postWidth = (containerWidth/columns);
786
787				postWidth = Math.floor(postWidth);
788
789				if( ( postWidth * columns ) >= containerWidth ) { element.css({ 'margin-right': '-1px' }); }
790
791				element.children('a').css({"width":postWidth+"px"});
792
793				var firstElementWidth = element.find('a:eq(0)').outerWidth();
794
795				element.isotope({
796					masonry: {
797						columnWidth: firstElementWidth
798					}
799				});
800
801				var bigImageNumbers = element.attr('data-big');
802				if( bigImageNumbers ) {
803					bigImageNumbers = bigImageNumbers.split(",");
804					var bigImageNumber = '',
805						bigi = '';
806					for( bigi = 0; bigi < bigImageNumbers.length; bigi++ ){
807						bigImageNumber = Number(bigImageNumbers[bigi]) - 1;
808						element.find('a:eq('+bigImageNumber+')').css({ width: firstElementWidth*2 + 'px' });
809					}
810					var t = setTimeout( function(){
811						element.isotope('layout');
812					}, 1000 );
813				}
814			}
815
816		},
817
818		aspectResizer: function(){
819			var $aspectResizerEl = $('.aspect-resizer');
820			if( $aspectResizerEl.length > 0 ) {
821				$aspectResizerEl.each( function(){
822					var element = $(this),
823						elementW = element.inlineStyle('width'),
824						elementH = element.inlineStyle('height'),
825						elementPW = element.parent().innerWidth();
826				});
827			}
828		},
829
830		dataResponsiveClasses: function(){
831			var $dataClassXs = $('[data-class-xs]'),
832				$dataClassSm = $('[data-class-sm]'),
833				$dataClassMd = $('[data-class-md]'),
834				$dataClassLg = $('[data-class-lg]'),
835				$dataClassXl = $('[data-class-xl]');
836
837			if( $dataClassXs.length > 0 ) {
838				$dataClassXs.each( function(){
839					var element = $(this),
840						elementClass = element.attr('data-class-xs'),
841						elementClassDelete = element.attr('data-class-sm') + ' ' + element.attr('data-class-md') + ' ' + element.attr('data-class-lg') + ' ' + element.attr('data-class-xl');
842
843					if( $body.hasClass('device-xs') ) {
844						element.removeClass( elementClassDelete );
845						element.addClass( elementClass );
846					}
847				});
848			}
849
850			if( $dataClassSm.length > 0 ) {
851				$dataClassSm.each( function(){
852					var element = $(this),
853						elementClass = element.attr('data-class-sm'),
854						elementClassDelete = element.attr('data-class-xs') + ' ' + element.attr('data-class-md') + ' ' + element.attr('data-class-lg') + ' ' + element.attr('data-class-xl');
855
856					if( $body.hasClass('device-sm') ) {
857						element.removeClass( elementClassDelete );
858						element.addClass( elementClass );
859					}
860				});
861			}
862
863			if( $dataClassMd.length > 0 ) {
864				$dataClassMd.each( function(){
865					var element = $(this),
866						elementClass = element.attr('data-class-md'),
867						elementClassDelete = element.attr('data-class-xs') + ' ' + element.attr('data-class-sm') + ' ' + element.attr('data-class-lg') + ' ' + element.attr('data-class-xl');
868
869					if( $body.hasClass('device-md') ) {
870						element.removeClass( elementClassDelete );
871						element.addClass( elementClass );
872					}
873				});
874			}
875
876			if( $dataClassLg.length > 0 ) {
877				$dataClassLg.each( function(){
878					var element = $(this),
879						elementClass = element.attr('data-class-lg'),
880						elementClassDelete = element.attr('data-class-xs') + ' ' + element.attr('data-class-sm') + ' ' + element.attr('data-class-md') + ' ' + element.attr('data-class-xl');
881
882					if( $body.hasClass('device-lg') ) {
883						element.removeClass( elementClassDelete );
884						element.addClass( elementClass );
885					}
886				});
887			}
888
889			if( $dataClassXl.length > 0 ) {
890				$dataClassXl.each( function(){
891					var element = $(this),
892						elementClass = element.attr('data-class-xl'),
893						elementClassDelete = element.attr('data-class-xs') + ' ' + element.attr('data-class-sm') + ' ' + element.attr('data-class-md') + ' ' + element.attr('data-class-lg');
894
895					if( $body.hasClass('device-xl') ) {
896						element.removeClass( elementClassDelete );
897						element.addClass( elementClass );
898					}
899				});
900			}
901		},
902
903		dataResponsiveHeights: function(){
904			var $dataHeightXs = $('[data-height-xs]'),
905				$dataHeightSm = $('[data-height-sm]'),
906				$dataHeightMd = $('[data-height-md]'),
907				$dataHeightLg = $('[data-height-lg]'),
908				$dataHeightXl = $('[data-height-xl]');
909
910			if( $dataHeightXs.length > 0 ) {
911				$dataHeightXs.each( function(){
912					var element = $(this),
913						elementHeight = element.attr('data-height-xs');
914
915					if( $body.hasClass('device-xs') ) {
916						if( elementHeight != '' ) { element.css( 'height', elementHeight ); }
917					}
918				});
919			}
920
921			if( $dataHeightSm.length > 0 ) {
922				$dataHeightSm.each( function(){
923					var element = $(this),
924						elementHeight = element.attr('data-height-sm');
925
926					if( $body.hasClass('device-sm') ) {
927						if( elementHeight != '' ) { element.css( 'height', elementHeight ); }
928					}
929				});
930			}
931
932			if( $dataHeightMd.length > 0 ) {
933				$dataHeightMd.each( function(){
934					var element = $(this),
935						elementHeight = element.attr('data-height-md');
936
937					if( $body.hasClass('device-md') ) {
938						if( elementHeight != '' ) { element.css( 'height', elementHeight ); }
939					}
940				});
941			}
942
943			if( $dataHeightLg.length > 0 ) {
944				$dataHeightLg.each( function(){
945					var element = $(this),
946						elementHeight = element.attr('data-height-lg');
947
948					if( $body.hasClass('device-lg') ) {
949						if( elementHeight != '' ) { element.css( 'height', elementHeight ); }
950					}
951				});
952			}
953
954			if( $dataHeightXl.length > 0 ) {
955				$dataHeightXl.each( function(){
956					var element = $(this),
957						elementHeight = element.attr('data-height-xl');
958
959					if( $body.hasClass('device-xl') ) {
960						if( elementHeight != '' ) { element.css( 'height', elementHeight ); }
961					}
962				});
963			}
964		},
965
966		stickFooterOnSmall: function(){
967			$footer.css({ 'margin-top': '' });
968			var windowH = $window.height(),
969				wrapperH = $wrapper.height();
970
971			if( !$body.hasClass('sticky-footer') && $footer.length > 0 && $wrapper.has('#footer') ) {
972				if( windowH > wrapperH ) {
973					$footer.css({ 'margin-top': ( windowH - wrapperH ) });
974				}
975			}
976		},
977
978		stickyFooter: function(){
979			if( $body.hasClass('sticky-footer') && $footer.length > 0 && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) {
980				var stickyFooter = $footer.outerHeight();
981				$content.css({ 'margin-bottom': stickyFooter });
982			} else {
983				$content.css({ 'margin-bottom': 0 });
984			}
985		}
986
987	};
988
989	SEMICOLON.header = {
990
991		init: function(){
992
993			SEMICOLON.header.superfish();
994			SEMICOLON.header.menufunctions();
995			SEMICOLON.header.fullWidthMenu();
996			SEMICOLON.header.overlayMenu();
997			SEMICOLON.header.stickyMenu();
998			SEMICOLON.header.stickyPageMenu();
999			SEMICOLON.header.sideHeader();
1000			SEMICOLON.header.sidePanel();
1001			SEMICOLON.header.onePageScroll();
1002			SEMICOLON.header.onepageScroller();
1003			SEMICOLON.header.logo();
1004			SEMICOLON.header.topsearch();
1005			SEMICOLON.header.topcart();
1006
1007		},
1008
1009		superfish: function(){
1010
1011			if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) {
1012				$('#primary-menu ul ul, #primary-menu ul .mega-menu-content').css('display', 'block');
1013				SEMICOLON.header.menuInvert();
1014				$('#primary-menu ul ul, #primary-menu ul .mega-menu-content').css('display', '');
1015
1016				if( !$().superfish ) {
1017					$body.addClass('no-superfish');
1018					console.log('superfish: Superfish not Defined.');
1019					return true;
1020				}
1021
1022				$('body:not(.side-header) #primary-menu:not(.on-click) > ul, body:not(.side-header) #primary-menu:not(.on-click) > div > ul:not(.dropdown-menu), .top-links:not(.on-click) > ul').superfish({
1023					popUpSelector: 'ul,.mega-menu-content,.top-link-section',
1024					delay: 250,
1025					speed: 350,
1026					animation: {opacity:'show'},
1027					animationOut:  {opacity:'hide'},
1028					cssArrows: false,
1029					onShow: function(){
1030						var megaMenuContent = $(this);
1031						if( megaMenuContent.find('.owl-carousel.customjs').length > 0 ) {
1032							megaMenuContent.find('.owl-carousel').removeClass('customjs');
1033							SEMICOLON.widget.carousel();
1034						}
1035						if( megaMenuContent.find('.grid-container').length > 0 ) {
1036							megaMenuContent.find('.grid-container').isotope('layout');
1037						}
1038					}
1039				});
1040
1041				$('body.side-header #primary-menu:not(.on-click) > ul').superfish({
1042					popUpSelector: 'ul',
1043					delay: 250,
1044					speed: 350,
1045					animation: {opacity:'show',height:'show'},
1046					animationOut:  {opacity:'hide',height:'hide'},
1047					cssArrows: false
1048				});
1049			}
1050
1051		},
1052
1053		menuInvert: function() {
1054
1055			$('#primary-menu .mega-menu-content, #primary-menu ul ul').each( function( index, element ){
1056				var $menuChildElement = $(element),
1057					menuChildOffset = $menuChildElement.offset(),
1058					menuChildWidth = $menuChildElement.width(),
1059					menuChildLeft = menuChildOffset.left;
1060
1061				if(windowWidth - (menuChildWidth + menuChildLeft) < 0) {
1062					$menuChildElement.addClass('menu-pos-invert');
1063				}
1064			});
1065
1066		},
1067
1068		menufunctions: function(){
1069
1070			$( '#primary-menu ul li:has(ul)' ).addClass('sub-menu');
1071			$( '.top-links ul li:has(ul) > a:not(:has(.icon-angle-down)), #primary-menu.with-arrows > ul > li:has(ul) > a > div:not(:has(.icon-angle-down)), #primary-menu.with-arrows > div > ul > li:has(ul) > a > div:not(:has(.icon-angle-down)), #page-menu nav ul li:has(ul) > a > div:not(:has(.icon-angle-down))' ).append( '<i class="icon-angle-down"></i>' );
1072			$( '.top-links > ul' ).addClass( 'clearfix' );
1073
1074			if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) {
1075				$('#primary-menu.sub-title > ul > li').hover(function() {
1076					$(this).prev().css({ backgroundImage : 'none' });
1077				}, function() {
1078					$(this).prev().css({ backgroundImage : 'url("../images/icons/menu-divider.png")' });
1079				});
1080
1081				$('#primary-menu.sub-title').children('ul').children('.current').prev().css({ backgroundImage : 'none' });
1082			}
1083
1084			if( $('#primary-menu').hasClass('on-click') || ( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) {
1085				$('#primary-menu li:has(ul) > a').on( 'click touchend', function(e){
1086					$(this).parents('.sub-menu').siblings().find('ul,.mega-menu-content').removeClass('d-block');
1087					$(this).parent('li').children('ul,.mega-menu-content').toggleClass('d-block');
1088					e.preventDefault();
1089				});
1090			}
1091
1092			if( $('.top-links').hasClass('on-click') || ( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) {
1093				$('.top-links li:has(ul,.top-link-section) > a').on( 'click touchend', function(e){
1094					$(this).parents('li').siblings().find('ul,.top-link-section').removeClass('d-block');
1095					$(this).parent('li').children('ul,.top-link-section').toggleClass('d-block');
1096					e.preventDefault();
1097				});
1098			}
1099
1100		},
1101
1102		fullWidthMenu: function(){
1103			if( $body.hasClass('stretched') ) {
1104				if( $header.find('.container-fullwidth').length > 0 ) { $('.mega-menu .mega-menu-content').css({ 'width': $wrapper.width() - 120 }); }
1105				if( $header.hasClass('full-header') ) { $('.mega-menu .mega-menu-content').css({ 'width': $wrapper.width() - 60 }); }
1106			} else {
1107				if( $header.find('.container-fullwidth').length > 0 ) { $('.mega-menu .mega-menu-content').css({ 'width': $wrapper.width() - 120 }); }
1108				if( $header.hasClass('full-header') ) { $('.mega-menu .mega-menu-content').css({ 'width': $wrapper.width() - 80 }); }
1109			}
1110		},
1111
1112		overlayMenu: function(){
1113			if( $body.hasClass('overlay-menu') ) {
1114				var overlayMenuItem = $('#primary-menu').children('ul').children('li'),
1115					overlayMenuItemHeight = overlayMenuItem.outerHeight(),
1116					overlayMenuItemTHeight = overlayMenuItem.length * overlayMenuItemHeight,
1117					firstItemOffset = ( $window.height() - overlayMenuItemTHeight ) / 2;
1118
1119				$('#primary-menu').children('ul').children('li:first-child').css({ 'margin-top': firstItemOffset+'px' });
1120			}
1121		},
1122
1123		stickyMenu: function( headerOffset ){
1124			if ($window.scrollTop() > headerOffset) {
1125				if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) {
1126					$('body:not(.side-header) #header:not(.no-sticky)').addClass('sticky-header');
1127					if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); }
1128					SEMICOLON.header.stickyMenuClass();
1129				} else if( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ) {
1130					if( $body.hasClass('sticky-responsive-menu') ) {
1131						$('#header:not(.no-sticky)').addClass('responsive-sticky-header');
1132						SEMICOLON.header.stickyMenuClass();
1133					}
1134				}
1135			} else {
1136				SEMICOLON.header.removeStickyness();
1137			}
1138		},
1139
1140		stickyPageMenu: function( pageMenuOffset ){
1141			if ($window.scrollTop() > pageMenuOffset) {
1142				if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) {
1143					$('#page-menu:not(.dots-menu,.no-sticky)').addClass('sticky-page-menu');
1144				} else if( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ) {
1145					if( $body.hasClass('sticky-responsive-pagemenu') ) {
1146						$('#page-menu:not(.dots-menu,.no-sticky)').addClass('sticky-page-menu');
1147					}
1148				}
1149			} else {
1150				$('#page-menu:not(.dots-menu,.no-sticky)').removeClass('sticky-page-menu');
1151			}
1152		},
1153
1154		removeStickyness: function(){
1155			if( $header.hasClass('sticky-header') ){
1156				$('body:not(.side-header) #header:not(.no-sticky)').removeClass('sticky-header');
1157				$header.removeClass().addClass(oldHeaderClasses);
1158				$headerWrap.removeClass().addClass(oldHeaderWrapClasses);
1159				if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); }
1160				SEMICOLON.slider.swiperSliderMenu();
1161				SEMICOLON.slider.revolutionSliderMenu();
1162			}
1163			if( $header.hasClass('responsive-sticky-header') ){
1164				$('body.sticky-responsive-menu #header').removeClass('responsive-sticky-header');
1165			}
1166			if( ( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ) && ( typeof responsiveMenuClasses === 'undefined' ) ) {
1167				$header.removeClass().addClass(oldHeaderClasses);
1168				$headerWrap.removeClass().addClass(oldHeaderWrapClasses);
1169				if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); }
1170			}
1171		},
1172
1173		sideHeader: function(){
1174			$("#header-trigger").off( 'click' ).on( 'click', function(){
1175				$('body.open-header').toggleClass("side-header-open");
1176				return false;
1177			});
1178		},
1179
1180		sidePanel: function(){
1181			$(".side-panel-trigger").off( 'click' ).on( 'click', function(){
1182				$body.toggleClass("side-panel-open");
1183				if( $body.hasClass('device-touch') && $body.hasClass('side-push-panel') ) {
1184					$body.toggleClass("ohidden");
1185				}
1186				return false;
1187			});
1188		},
1189
1190		onePageScroll: function(){
1191			if( $onePageMenuEl.length > 0 ){
1192				var onePageSpeed = $onePageMenuEl.attr('data-speed'),
1193					onePageOffset = $onePageMenuEl.attr('data-offset'),
1194					onePageEasing = $onePageMenuEl.attr('data-easing');
1195
1196				if( !onePageSpeed ) { onePageSpeed = 1000; }
1197				if( !onePageEasing ) { onePageEasing = 'easeOutQuad'; }
1198
1199				$onePageMenuEl.find('a[data-href]').off( 'click' ).on( 'click', function(){
1200					var element = $(this),
1201						divScrollToAnchor = element.attr('data-href'),
1202						divScrollSpeed = element.attr('data-speed'),
1203						divScrollOffset = element.attr('data-offset'),
1204						divScrollEasing = element.attr('data-easing');
1205
1206					if( $( divScrollToAnchor ).length > 0 ) {
1207
1208						if( !onePageOffset ) {
1209							var onePageOffsetG = SEMICOLON.initialize.topScrollOffset();
1210						} else {
1211							var onePageOffsetG = onePageOffset;
1212						}
1213
1214						if( !divScrollSpeed ) { divScrollSpeed = onePageSpeed; }
1215						if( !divScrollOffset ) { divScrollOffset = onePageOffsetG; }
1216						if( !divScrollEasing ) { divScrollEasing = onePageEasing; }
1217
1218						if( $onePageMenuEl.hasClass('no-offset') ) { divScrollOffset = 0; }
1219
1220						onePageGlobalOffset = Number(divScrollOffset);
1221
1222						$onePageMenuEl.find('li').removeClass('current');
1223						$onePageMenuEl.find('a[data-href="' + divScrollToAnchor + '"]').parent('li').addClass('current');
1224
1225						if( windowWidth < 768 || $body.hasClass('overlay-menu') ) {
1226							if( $('#primary-menu').find('ul.mobile-primary-menu').length > 0 ) {
1227								$('#primary-menu > ul.mobile-primary-menu, #primary-menu > div > ul.mobile-primary-menu').toggleClass('d-block', false);
1228							} else {
1229								$('#primary-menu > ul, #primary-menu > div > ul').toggleClass('d-block', false);
1230							}
1231							$pagemenu.toggleClass('pagemenu-active', false);
1232							$body.toggleClass('primary-menu-open', false);
1233						}
1234
1235						$('html,body').stop(true).animate({
1236							'scrollTop': $( divScrollToAnchor ).offset().top - Number(divScrollOffset)
1237						}, Number(divScrollSpeed), divScrollEasing);
1238
1239						onePageGlobalOffset = Number(divScrollOffset);
1240					}
1241
1242					return false;
1243				});
1244			}
1245		},
1246
1247		onepageScroller: function(){
1248			$onePageMenuEl.find('li').removeClass('current');
1249			$onePageMenuEl.find('a[data-href="#' + SEMICOLON.header.onePageCurrentSection() + '"]').parent('li').addClass('current');
1250		},
1251
1252		onePageCurrentSection: function(){
1253			var currentOnePageSection = 'home',
1254				headerHeight = $headerWrap.outerHeight();
1255
1256			if( $body.hasClass('side-header') ) { headerHeight = 0; }
1257
1258			$pageSectionEl.each(function(index) {
1259				var h = $(this).offset().top;
1260				var y = $window.scrollTop();
1261
1262				var offsetScroll = headerHeight + onePageGlobalOffset;
1263
1264				if( y + offsetScroll >= h && y < h + $(this).height() && $(this).attr('id') != currentOnePageSection ) {
1265					currentOnePageSection = $(this).attr('id');
1266				}
1267			});
1268
1269			return currentOnePageSection;
1270		},
1271
1272		logo: function(){
1273			if( ( $header.hasClass('dark') || $body.hasClass('dark') ) && !$headerWrap.hasClass('not-dark') ) {
1274				if( defaultDarkLogo ){ defaultLogo.find('img').attr('src', defaultDarkLogo); }
1275				if( retinaDarkLogo ){ retinaLogo.find('img').attr('src', retinaDarkLogo); }
1276			} else {
1277				if( defaultLogoImg ){ defaultLogo.find('img').attr('src', defaultLogoImg); }
1278				if( retinaLogoImg ){ retinaLogo.find('img').attr('src', retinaLogoImg); }
1279			}
1280			if( $header.hasClass('sticky-header') ) {
1281				if( defaultStickyLogo ){ defaultLogo.find('img').attr('src', defaultStickyLogo); }
1282				if( retinaStickyLogo ){ retinaLogo.find('img').attr('src', retinaStickyLogo); }
1283			}
1284			if( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) {
1285				if( defaultMobileLogo ){ defaultLogo.find('img').attr('src', defaultMobileLogo); }
1286				if( retinaMobileLogo ){ retinaLogo.find('img').attr('src', retinaMobileLogo); }
1287			}
1288		},
1289
1290		stickyMenuClass: function(){
1291			if( stickyMenuClasses ) { var newClassesArray = stickyMenuClasses.split(/ +/); } else { var newClassesArray = ''; }
1292			var noOfNewClasses = newClassesArray.length;
1293
1294			if( noOfNewClasses > 0 ) {
1295				var i = 0;
1296				for( i=0; i<noOfNewClasses; i++ ) {
1297					if( newClassesArray[i] == 'not-dark' ) {
1298						$header.removeClass('dark');
1299						$headerWrap.addClass('not-dark');
1300					}
1300 else if( newClassesArray[i] == 'dark' ) {
1301						$headerWrap.removeClass('not-dark force-not-dark');
1302						if( !$header.hasClass( newClassesArray[i] ) ) {
1303							$header.addClass( newClassesArray[i] );
1304						}
1305					} else if( !$header.hasClass( newClassesArray[i] ) ) {
1306						$header.addClass( newClassesArray[i] );
1307					}
1308				}
1309			}
1310		},
1311
1312		responsiveMenuClass: function(){
1313			if( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ){
1314				if( responsiveMenuClasses ) { var newClassesArray = responsiveMenuClasses.split(/ +/); } else { var newClassesArray = ''; }
1315				var noOfNewClasses = newClassesArray.length;
1316
1317				if( noOfNewClasses > 0 ) {
1318					var i = 0;
1319					for( i=0; i<noOfNewClasses; i++ ) {
1320						if( newClassesArray[i] == 'not-dark' ) {
1321							$header.removeClass('dark');
1322							$headerWrap.addClass('not-dark');
1323						} else if( newClassesArray[i] == 'dark' ) {
1324							$headerWrap.removeClass('not-dark force-not-dark');
1325							if( !$header.hasClass( newClassesArray[i] ) ) {
1326								$header.addClass( newClassesArray[i] );
1327							}
1328						} else if( !$header.hasClass( newClassesArray[i] ) ) {
1329							$header.addClass( newClassesArray[i] );
1330						}
1331					}
1332				}
1333				SEMICOLON.header.logo();
1334			}
1335		},
1336
1337		topsocial: function(){
1338			if( $topSocialEl.length > 0 ){
1339				if( $body.hasClass('device-lg') || $body.hasClass('device-xl') ) {
1340					$topSocialEl.show();
1341					$topSocialEl.find('a').css({width: 40});
1342
1343					$topSocialEl.find('.ts-text').each( function(){
1344						var $clone = $(this).clone().css({'visibility': 'hidden', 'display': 'inline-block', 'font-size': '13px', 'font-weight':'bold'}).appendTo($body),
1345							cloneWidth = $clone.innerWidth() + 52;
1346						$(this).parent('a').attr('data-hover-width',cloneWidth);
1347						$clone.remove();
1348					});
1349
1350					$topSocialEl.find('a').hover(function() {
1351						if( $(this).find('.ts-text').length > 0 ) {
1352							$(this).css({width: $(this).attr('data-hover-width')});
1353						}
1354					}, function() {
1355						$(this).css({width: 40});
1356					});
1357				} else {
1358					$topSocialEl.show();
1359					$topSocialEl.find('a').css({width: 40});
1360
1361					$topSocialEl.find('a').each(function() {
1362						var topIconTitle = $(this).find('.ts-text').text();
1363						$(this).attr('title', topIconTitle);
1364					});
1365
1366					$topSocialEl.find('a').hover(function() {
1367						$(this).css({width: 40});
1368					}, function() {
1369						$(this).css({width: 40});
1370					});
1371
1372					if( $body.hasClass('device-xs') ) {
1373						$topSocialEl.hide();
1374						$topSocialEl.slice(0, 8).show();
1375					}
1376				}
1377			}
1378		},
1379
1380		topsearch: function(){
1381
1382			$(document).on('click', function(event) {
1383				if (!$(event.target).closest('#top-search').length) { $body.toggleClass('top-search-open', false); }
1384				if (!$(event.target).closest('#top-cart').length) { $topCart.toggleClass('top-cart-open', false); }
1385				if (!$(event.target).closest('#page-menu').length) { $pagemenu.toggleClass('pagemenu-active', false); }
1386				if (!$(event.target).closest('#side-panel').length) { $body.toggleClass('side-panel-open', false); }
1387				if (!$(event.target).closest('#primary-menu').length) { $('#primary-menu.on-click > ul').find('.d-block').removeClass('d-block'); }
1388				if (!$(event.target).closest('#primary-menu.mobile-menu-off-canvas > ul').length) { $('#primary-menu.mobile-menu-off-canvas > ul').toggleClass('d-block', false); }
1389				if (!$(event.target).closest('#primary-menu.mobile-menu-off-canvas > div > ul').length) { $('#primary-menu.mobile-menu-off-canvas > div > ul').toggleClass('d-block', false); }
1390			});
1391
1392			$("#top-search-trigger").off( 'click' ).on( 'click', function(e){
1393				$body.toggleClass('top-search-open');
1394				$topCart.toggleClass('top-cart-open', false);
1395				$( '#primary-menu > ul, #primary-menu > div > ul' ).toggleClass('d-block', false);
1396				$pagemenu.toggleClass('pagemenu-active', false);
1397				if ($body.hasClass('top-search-open')){
1398					$topSearch.find('input').focus();
1399				}
1400				e.stopPropagation();
1401				e.preventDefault();
1402			});
1403
1404		},
1405
1406		topcart: function(){
1407
1408			$("#top-cart-trigger").off( 'click' ).on( 'click', function(e){
1409				$pagemenu.toggleClass('pagemenu-active', false);
1410				$topCart.toggleClass('top-cart-open');
1411				e.stopPropagation();
1412				e.preventDefault();
1413			});
1414
1415		}
1416
1417	};
1418
1419	SEMICOLON.slider = {
1420
1421		init: function() {
1422
1423			SEMICOLON.slider.sliderParallaxDimensions();
1424			SEMICOLON.slider.sliderRun();
1425			SEMICOLON.slider.sliderParallax();
1426			SEMICOLON.slider.sliderElementsFade();
1427			SEMICOLON.slider.captionPosition();
1428
1429		},
1430
1431		sliderParallaxDimensions: function(){
1432			if( $sliderParallaxEl.find('.slider-parallax-inner').length < 1 ) { return true; }
1433
1434			if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || $body.hasClass('device-md') ) {
1435				var parallaxElHeight = $sliderParallaxEl.outerHeight(),
1436					parallaxElWidth = $sliderParallaxEl.outerWidth();
1437
1438				if( $sliderParallaxEl.hasClass('revslider-wrap') || $sliderParallaxEl.find('.carousel-widget').length > 0 ) {
1439					parallaxElHeight = $sliderParallaxEl.find('.slider-parallax-inner').children().first().outerHeight();
1440					$sliderParallaxEl.height( parallaxElHeight );
1441				}
1442
1443				$sliderParallaxEl.find('.slider-parallax-inner').height( parallaxElHeight );
1444
1445				if( $body.hasClass('side-header') ) {
1446					$sliderParallaxEl.find('.slider-parallax-inner').width( parallaxElWidth );
1447				}
1448
1449				if( !$body.hasClass('stretched') ) {
1450					parallaxElWidth = $wrapper.outerWidth();
1451					$sliderParallaxEl.find('.slider-parallax-inner').width( parallaxElWidth );
1452				}
1453			} else {
1454				$sliderParallaxEl.find('.slider-parallax-inner').css({ 'width': '', height: '' });
1455			}
1456
1457			if( swiperSlider != '' ) { swiperSlider.update(); }
1458		},
1459
1460		sliderRun: function(){
1461
1462			if( typeof Swiper === 'undefined' ) {
1463				console.log('sliderRun: Swiper not Defined.');
1464				return true;
1465			}
1466
1467			var $sliderEl = $sliderElement.filter(':not(.customjs)');
1468
1469			$sliderEl.each( function(){
1470				if( $(this).hasClass('swiper_wrapper') ) {
1471
1472					if( $(this).find('.swiper-slide').length < 1 ) { return true; }
1473
1474					var element = $(this).filter('.swiper_wrapper'),
1475						elementDirection = element.attr('data-direction'),
1476						elementSpeed = element.attr('data-speed'),
1477						elementAutoPlay = element.attr('data-autoplay'),
1478						elementLoop = element.attr('data-loop'),
1479						elementEffect = element.attr('data-effect'),
1480						elementGrabCursor = element.attr('data-grab'),
1481						slideNumberTotal = element.find('.slide-number-total'),
1482						slideNumberCurrent = element.find('.slide-number-current'),
1483						sliderVideoAutoPlay = element.attr('data-video-autoplay'),
1484						sliderSettings = element.attr('data-settings');
1485
1486					if( !elementSpeed ) { elementSpeed = 300; }
1487					if( !elementDirection ) { elementDirection = 'horizontal'; }
1488					if( elementAutoPlay ) { elementAutoPlay = Number( elementAutoPlay ); } else { elementAutoPlay = 999999999; }
1489					if( elementLoop == 'true' ) { elementLoop = true; } else { elementLoop = false; }
1490					if( !elementEffect ) { elementEffect = 'slide'; }
1491					if( elementGrabCursor == 'false' ) { elementGrabCursor = false; } else { elementGrabCursor = true; }
1492					if( sliderVideoAutoPlay == 'false' ) { sliderVideoAutoPlay = false; } else { sliderVideoAutoPlay = true; }
1493
1494					if( element.find('.swiper-pagination').length > 0 ) {
1495						var elementPagination = element.find('.swiper-pagination'),
1496							elementPaginationClickable = true;
1497					} else {
1498						var elementPagination = '',
1499							elementPaginationClickable = false;
1500					}
1501
1502					var elementNavNext = element.find('.slider-arrow-right'),
1503						elementNavPrev = element.find('.slider-arrow-left'),
1504						elementScollBar = element.find('.swiper-scrollbar');
1505
1506					swiperSlider = new Swiper( element.find('.swiper-parent') ,{
1507						direction: elementDirection,
1508						speed: Number( elementSpeed ),
1509						autoplay: {
1510							delay: elementAutoPlay
1511						},
1512						loop: elementLoop,
1513						effect: elementEffect,
1514						slidesPerView: 1,
1515						grabCursor: elementGrabCursor,
1516						pagination: {
1517							el: elementPagination,
1518							clickable: elementPaginationClickable
1519						},
1520						navigation: {
1521							prevEl: elementNavPrev,
1522							nextEl: elementNavNext
1523						},
1524						scrollbar: {
1525							el: elementScollBar
1526						},
1527						on: {
1528							init: function(swiper){
1529								SEMICOLON.slider.sliderParallaxDimensions();
1530								element.find('.yt-bg-player').attr('data-autoplay', 'false').removeClass('customjs');
1531								SEMICOLON.widget.youtubeBgVideo();
1532								$('.swiper-slide-active [data-animate]').each(function(){
1533									var $toAnimateElement = $(this),
1534										toAnimateDelay = $toAnimateElement.attr('data-delay'),
1535										toAnimateDelayTime = 0;
1536									if( toAnimateDelay ) { toAnimateDelayTime = Number( toAnimateDelay ) + 750; } else { toAnimateDelayTime = 750; }
1537									if( !$toAnimateElement.hasClass('animated') ) {
1538										$toAnimateElement.addClass('not-animated');
1539										var elementAnimation = $toAnimateElement.attr('data-animate');
1540										setTimeout(function() {
1541											$toAnimateElement.removeClass('not-animated').addClass( elementAnimation + ' animated');
1542										}, toAnimateDelayTime);
1543									}
1544								});
1545								element.find('[data-animate]').each(function(){
1546									var $toAnimateElement = $(this),
1547										elementAnimation = $toAnimateElement.attr('data-animate');
1548									if( $toAnimateElement.parents('.swiper-slide').hasClass('swiper-slide-active') ) { return true; }
1549									$toAnimateElement.removeClass('animated').removeClass(elementAnimation).addClass('not-animated');
1550								});
1551								SEMICOLON.slider.swiperSliderMenu();
1552							},
1553							transitionStart: function(swiper){
1554								if( slideNumberCurrent.length > 0 ){
1555									if( elementLoop == true ) {
1556										slideNumberCurrent.html( Number( element.find('.swiper-slide.swiper-slide-active').attr('data-swiper-slide-index') ) + 1 );
1557									} else {
1558										slideNumberCurrent.html( swiperSlider.activeIndex + 1 );
1559									}
1560								}
1561								element.find('[data-animate]').each(function(){
1562									var $toAnimateElement = $(this),
1563										elementAnimation = $toAnimateElement.attr('data-animate');
1564									if( $toAnimateElement.parents('.swiper-slide').hasClass('swiper-slide-active') ) { return true; }
1565									$toAnimateElement.removeClass('animated').removeClass(elementAnimation).addClass('not-animated');
1566								});
1567								SEMICOLON.slider.swiperSliderMenu();
1568							},
1569							transitionEnd: function(swiper){
1570								element.find('.swiper-slide').each(function(){
1571									var slideEl = $(this);
1572									if( slideEl.find('video').length > 0 && sliderVideoAutoPlay == true ) {
1573										slideEl.find('video').get(0).pause();
1574									}
1575									if( slideEl.find('.yt-bg-player.mb_YTPlayer:not(.customjs)').length > 0 ) {
1576										slideEl.find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPause();
1577									}
1578								});
1579								element.find('.swiper-slide:not(".swiper-slide-active")').each(function(){
1580									var slideEl = $(this);
1581									if( slideEl.find('video').length > 0 ) {
1582										if( slideEl.find('video').get(0).currentTime != 0 ) {
1583											slideEl.find('video').get(0).currentTime = 0;
1584										}
1585									}
1586									if( slideEl.find('.yt-bg-player.mb_YTPlayer:not(.customjs)').length > 0 ) {
1587										slideEl.find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPSeekTo( slideEl.find('.yt-bg-player.mb_YTPlayer:not(.customjs)').attr('data-start') );
1588									}
1589								});
1590								if( element.find('.swiper-slide.swiper-slide-active').find('video').length > 0 && sliderVideoAutoPlay == true ) {
1591									element.find('.swiper-slide.swiper-slide-active').find('video').get(0).play();
1592								}
1593								if( element.find('.swiper-slide.swiper-slide-active').find('.yt-bg-player.mb_YTPlayer:not(.customjs)').length > 0 && sliderVideoAutoPlay == true ) {
1594									element.find('.swiper-slide.swiper-slide-active').find('.yt-bg-player.mb_YTPlayer:not(.customjs)').YTPPlay();
1595								}
1596
1597								element.find('.swiper-slide.swiper-slide-active [data-animate]').each(function(){
1598									var $toAnimateElement = $(this),
1599										toAnimateDelay = $toAnimateElement.attr('data-delay'),
1600										toAnimateDelayTime = 0;
1601									if( toAnimateDelay ) { toAnimateDelayTime = Number( toAnimateDelay ) + 300; } else { toAnimateDelayTime = 300; }
1602									if( !$toAnimateElement.hasClass('animated') ) {
1603										$toAnimateElement.addClass('not-animated');
1604										var elementAnimation = $toAnimateElement.attr('data-animate');
1605										setTimeout(function() {
1606											$toAnimateElement.removeClass('not-animated').addClass( elementAnimation + ' animated');
1607										}, toAnimateDelayTime);
1608									}
1609								});
1610							}
1611						}
1612					});
1613
1614					if( slideNumberCurrent.length > 0 ) {
1615						if( elementLoop == true ) {
1616							slideNumberCurrent.html( swiperSlider.realIndex + 1 );
1617						} else {
1618							slideNumberCurrent.html( swiperSlider.activeIndex + 1 );
1619						}
1620					}
1621
1622					if( slideNumberTotal.length > 0 ) {
1623						slideNumberTotal.html( element.find('.swiper-slide:not(.swiper-slide-duplicate)').length );
1624					}
1625
1626					if( sliderSettings ){
1627						sliderSettings = eval( '(' + sliderSettings + ')' );
1628						for (var prop in sliderSettings) {
1629							swiperSlider.params[prop] = sliderSettings[prop];
1630							swiperSlider.update();
1631						}
1632					}
1633
1634				}
1635			});
1636		},
1637
1638		sliderParallaxOffset: function(){
1639			var sliderParallaxOffsetTop = 0;
1640			var headerHeight = $header.outerHeight();
1641			if( $body.hasClass('side-header') || $header.hasClass('transparent-header') ) { headerHeight = 0; }
1642			if( $pageTitle.length > 0 ) {
1643				var pageTitleHeight = $pageTitle.outerHeight();
1644				sliderParallaxOffsetTop = pageTitleHeight + headerHeight;
1645			} else {
1646				sliderParallaxOffsetTop = headerHeight;
1647			}
1648
1649			if( $slider.next('#header').length > 0 ) { sliderParallaxOffsetTop = 0; }
1650
1651			return sliderParallaxOffsetTop;
1652		},
1653
1654		sliderParallax: function(){
1655
1656			if( $sliderParallaxEl.length < 1 ) { return true; }
1657
1658			var parallaxOffsetTop = SEMICOLON.slider.sliderParallaxOffset(),
1659				parallaxElHeight = $sliderParallaxEl.outerHeight();
1660
1661			if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) {
1662				if( ( parallaxElHeight + parallaxOffsetTop + 50 ) > $window.scrollTop() ){
1663					$sliderParallaxEl.addClass('slider-parallax-visible').removeClass('slider-parallax-invisible');
1664					if ($window.scrollTop() > parallaxOffsetTop) {
1665						if( $sliderParallaxEl.find('.slider-parallax-inner').length > 0 ) {
1666							var tranformAmount = (($window.scrollTop()-parallaxOffsetTop) *-.4 ).toFixed(0),
1667								tranformAmount2 = (($window.scrollTop()-parallaxOffsetTop) *-.15 ).toFixed(0);
1668							$sliderParallaxEl.find('.slider-parallax-inner').css({'transform':'translateY('+ tranformAmount +'px)'});
1669							$('.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY('+ tranformAmount2 +'px)'});
1670						} else {
1671							var tranformAmount = (($window.scrollTop()-parallaxOffsetTop) / 1.5 ).toFixed(0),
1672								tranformAmount2 = (($window.scrollTop()-parallaxOffsetTop) / 7 ).toFixed(0);
1673							$sliderParallaxEl.css({'transform':'translateY('+ tranformAmount +'px)'});
1674							$('.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY('+ -tranformAmount2 +'px)'});
1675						}
1676					} else {
1677						if( $sliderParallaxEl.find('.slider-parallax-inner').length > 0 ) {
1678							$('.slider-parallax-inner,.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY(0px)'});
1679						} else {
1680							$('.slider-parallax,.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY(0px)'});
1681						}
1682					}
1683				} else {
1684					$sliderParallaxEl.addClass('slider-parallax-invisible').removeClass('slider-parallax-visible');
1685				}
1686				if(requesting) {
1687					requestAnimationFrame(function(){
1688						SEMICOLON.slider.sliderParallax();
1689						SEMICOLON.slider.sliderElementsFade();
1690					});
1691				}
1692			} else {
1693				if( $sliderParallaxEl.find('.slider-parallax-inner').length > 0 ) {
1694					$('.slider-parallax-inner,.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY(0px)'});
1695				} else {
1696					$('.slider-parallax,.slider-parallax .slider-caption,.ei-title').css({'transform':'translateY(0px)'});
1697				}
1698			}
1699		},
1700
1701		sliderElementsFade: function(){
1702
1703			if( $sliderParallaxEl.length > 0 ) {
1704				if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) {
1705					var parallaxOffsetTop = SEMICOLON.slider.sliderParallaxOffset(),
1706						parallaxElHeight = $sliderParallaxEl.outerHeight();
1707					if( $slider.length > 0 ) {
1708						if( $header.hasClass('transparent-header') || $('body').hasClass('side-header') ) { var tHeaderOffset = 100; } else { var tHeaderOffset = 0; }
1709						$sliderParallaxEl.find('.slider-arrow-left,.slider-arrow-right,.vertical-middle:not(.no-fade),.slider-caption,.ei-title,.camera_prev,.camera_next').css({'opacity': 1 - ( ( ( $window.scrollTop() - tHeaderOffset ) *1.85 ) / parallaxElHeight ) });
1710					}
1711				} else {
1712					$sliderParallaxEl.find('.slider-arrow-left,.slider-arrow-right,.vertical-middle:not(.no-fade),.slider-caption,.ei-title,.camera_prev,.camera_next').css({'opacity': 1});
1713				}
1714			}
1715		},
1716
1717		captionPosition: function(){
1718			$sliderElement.find('.slider-caption:not(.custom-caption-pos)').each(function(){
1719				var scapHeight = $(this).outerHeight();
1720				var scapSliderHeight = $sliderElement.outerHeight();
1721				if( $(this).parents('#slider').prev('#header').hasClass('transparent-header') && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) {
1722					if( $(this).parents('#slider').prev('#header').hasClass('floating-header') ) {
1723						$(this).css({ top: ( scapSliderHeight + 160 - scapHeight ) / 2 + 'px' });
1724					} else {
1725						$(this).css({ top: ( scapSliderHeight + 100 - scapHeight ) / 2 + 'px' });
1726					}
1727				} else {
1728					$(this).css({ top: ( scapSliderHeight - scapHeight ) / 2 + 'px' });
1729				}
1730			});
1731		},
1732
1733		swiperSliderMenu: function( onWinLoad ){
1734			onWinLoad = typeof onWinLoad !== 'undefined' ? onWinLoad : false;
1735			if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || ( $header.hasClass('transparent-header-responsive') && !$body.hasClass('primary-menu-open') ) ) {
1736				var activeSlide = $slider.find('.swiper-slide.swiper-slide-active');
1737				SEMICOLON.slider.headerSchemeChanger(activeSlide, onWinLoad);
1738			}
1739		},
1740
1741		revolutionSliderMenu: function( onWinLoad ){
1742			onWinLoad = typeof onWinLoad !== 'undefined' ? onWinLoad : false;
1743			if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || ( $header.hasClass('transparent-header-responsive') && !$body.hasClass('primary-menu-open') ) ) {
1744				var activeSlide = $slider.find('.active-revslide');
1745				SEMICOLON.slider.headerSchemeChanger(activeSlide, onWinLoad);
1746			}
1747		},
1748
1749		headerSchemeChanger: function( activeSlide, onWinLoad ){
1750			if( activeSlide.length > 0 ) {
1751				var darkExists = false;
1752				if( activeSlide.hasClass('dark') ){
1753					if( oldHeaderClasses ) { var oldClassesArray = oldHeaderClasses.split(/ +/); } else { var oldClassesArray = ''; }
1754					var noOfOldClasses = oldClassesArray.length;
1755
1756					if( noOfOldClasses > 0 ) {
1757						var i = 0;
1758						for( i=0; i<noOfOldClasses; i++ ) {
1759							if( oldClassesArray[i] == 'dark' && onWinLoad == true ) {
1760								darkExists = true;
1761								break;
1762							}
1763						}
1764					}
1765					$('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)').addClass('dark');
1766					if( !darkExists ) {
1767						$('#header.transparent-header.sticky-header,#header.transparent-header.semi-transparent.sticky-header,#header.transparent-header.floating-header.sticky-header').removeClass('dark');
1768					}
1769					$headerWrap.removeClass('not-dark');
1770				} else {
1771					if( $body.hasClass('dark') ) {
1772						activeSlide.addClass('not-dark');
1773						$('#header.transparent-header:not(.semi-transparent,.floating-header)').removeClass('dark');
1774						$('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)').find('#header-wrap').addClass('not-dark');
1775					} else {
1776						$('#header.transparent-header:not(.semi-transparent,.floating-header)').removeClass('dark');
1777						$headerWrap.removeClass('not-dark');
1778					}
1779				}
1780				if( $header.hasClass('sticky-header') ) {
1781					SEMICOLON.header.stickyMenuClass();
1782				}
1783				SEMICOLON.header.logo();
1784			}
1785		},
1786
1787		owlCaptionInit: function(){
1788			if( $owlCarouselEl.length > 0 ){
1789				$owlCarouselEl.each( function(){
1790					var element = $(this);
1791					if( element.find('.owl-dot').length > 0 ) {
1792						element.addClass('with-carousel-dots');
1793					}
1794				});
1795			}
1796		}
1797
1798	};
1799
1800	SEMICOLON.portfolio = {
1801
1802		init: function(){
1803
1804			SEMICOLON.portfolio.ajaxload();
1805
1806		},
1807
1808		gridInit: function( $container ){
1809
1810			if( !$().isotope ) {
1811				console.log('gridInit: Isotope not Defined.');
1812				return true;
1813			}
1814
1815			if( $container.length < 1 ) { return true; }
1816			if( $container.hasClass('customjs') ) { return true; }
1817
1818			$container.each( function(){
1819				var element = $(this),
1820					elementTransition = element.attr('data-transition'),
1821					elementLayoutMode = element.attr('data-layout'),
1822					elementStagger = element.attr('data-stagger'),
1823					elementOriginLeft = true;
1824
1825				if( !elementTransition ) { elementTransition = '0.65s'; }
1826				if( !elementLayoutMode ) { elementLayoutMode = 'masonry'; }
1827				if( !elementStagger ) { elementStagger = 0; }
1828				if( $body.hasClass('rtl') ) { elementOriginLeft = false; }
1829
1830				setTimeout( function(){
1831					if( element.hasClass('portfolio') ){
1832						element.isotope({
1833							layoutMode: elementLayoutMode,
1834							isOriginLeft: elementOriginLeft,
1835							transitionDuration: elementTransition,
1836							stagger: Number( elementStagger ),
1837							masonry: {
1838								columnWidth: element.find('.portfolio-item:not(.wide)')[0]
1839							}
1840						});
1841					} else {
1842						element.isotope({
1843							layoutMode: elementLayoutMode,
1844							isOriginLeft: elementOriginLeft,
1845							transitionDuration: elementTransition
1846						});
1847					}
1848				}, 300);
1849			});
1850		},
1851
1852		filterInit: function(){
1853
1854			if( !$().isotope ) {
1855				console.log('filterInit: Isotope not Defined.');
1856				return true;
1857			}
1858
1859			if( $portfolioFilter.length < 1 ) { return true; }
1860			if( $portfolioFilter.hasClass('customjs') ) { return true; }
1861
1862			$portfolioFilter.each( function(){
1863				var element = $(this),
1864					elementContainer = element.attr('data-container'),
1865					elementActiveClass = element.attr('data-active-class'),
1866					elementDefaultFilter = element.attr('data-default');
1867
1868				if( !elementActiveClass ) { elementActiveClass = 'activeFilter'; }
1869
1870				element.find('a').off( 'click' ).on( 'click', function(){
1871					element.find('li').removeClass( elementActiveClass );
1872					$(this).parent('li').addClass( elementActiveClass );
1873					var selector = $(this).attr('data-filter');
1874					$(elementContainer).isotope({ filter: selector });
1875					return false;
1876				});
1877
1878				if( elementDefaultFilter ) {
1879					element.find('li').removeClass( elementActiveClass );
1880					element.find('[data-filter="'+ elementDefaultFilter +'"]').parent('li').addClass( elementActiveClass );
1881					$(elementContainer).isotope({ filter: elementDefaultFilter });
1882				}
1883			});
1884		},
1885
1886		shuffleInit: function(){
1887
1888			if( !$().isotope ) {
1889				console.log('shuffleInit: Isotope not Defined.');
1890				return true;
1891			}
1892
1893			if( $('.portfolio-shuffle').length < 1 ) { return true; }
1894
1895			$('.portfolio-shuffle').off( 'click' ).on( 'click', function(){
1896				var element = $(this),
1897					elementContainer = element.attr('data-container');
1898
1899				$(elementContainer).isotope('shuffle');
1900			});
1901		},
1902
1903		portfolioDescMargin: function(){
1904			var $portfolioOverlayEl = $('.portfolio-overlay');
1905			if( $portfolioOverlayEl.length > 0 ){
1906				$portfolioOverlayEl.each(function() {
1907					var element = $(this);
1908					if( element.find('.portfolio-desc').length > 0 ) {
1909						var portfolioOverlayHeight = element.outerHeight();
1910						var portfolioOverlayDescHeight = element.find('.portfolio-desc').outerHeight();
1911						if( element.find('a.left-icon').length > 0 || element.find('a.right-icon').length > 0 || element.find('a.center-icon').length > 0 ) {
1912							var portfolioOverlayIconHeight = 40 + 20;
1913						} else {
1914							var portfolioOverlayIconHeight = 0;
1915						}
1916						var portfolioOverlayMiddleAlign = ( portfolioOverlayHeight - portfolioOverlayDescHeight - portfolioOverlayIconHeight ) / 2
1917						element.find('.portfolio-desc').css({ 'margin-top': portfolioOverlayMiddleAlign });
1918					}
1919				});
1920			}
1921		},
1922
1923		arrange: function(){
1924			if( $portfolio.length > 0 ) {
1925				$portfolio.each( function(){
1926					var element = $(this);
1927					SEMICOLON.initialize.setFullColumnWidth( element );
1928				});
1929			}
1930		},
1931
1932		ajaxload: function(){
1933			$('.portfolio-ajax .portfolio-item a.center-icon').off( 'click' ).on( 'click', function(e) {
1934				var portPostId = $(this).parents('.portfolio-item').attr('id');
1935				if( !$(this).parents('.portfolio-item').hasClass('portfolio-active') ) {
1936					SEMICOLON.portfolio.loadItem(portPostId, prevPostPortId);
1937				}
1938				e.preventDefault();
1939			});
1940		},
1941
1942		newNextPrev: function( portPostId ){
1943			var portNext = SEMICOLON.portfolio.getNextItem(portPostId);
1944			var portPrev = SEMICOLON.portfolio.getPrevItem(portPostId);
1945			$('#next-portfolio').attr('data-id', portNext);
1946			$('#prev-portfolio').attr('data-id', portPrev);
1947		},
1948
1949		loadItem: function( portPostId, prevPostPortId, getIt ){
1950			if(!getIt) { getIt = false; }
1951			var portNext = SEMICOLON.portfolio.getNextItem(portPostId);
1952			var portPrev = SEMICOLON.portfolio.getPrevItem(portPostId);
1953			if(getIt == false) {
1954				SEMICOLON.portfolio.closeItem();
1955				$portfolioAjaxLoader.fadeIn();
1956				var portfolioDataLoader = $('#' + portPostId).attr('data-loader');
1957				$portfolioDetailsContainer.load(portfolioDataLoader, { portid: portPostId, portnext: portNext, portprev: portPrev },
1958				function(){
1959					SEMICOLON.portfolio.initializeAjax(portPostId);
1960					SEMICOLON.portfolio.openItem();
1961					$portfolioItems.removeClass('portfolio-active');
1962					$('#' + portPostId).addClass('portfolio-active');
1963				});
1964			}
1965		},
1966
1967		closeItem: function(){
1968			if( $portfolioDetails && $portfolioDetails.height() > 32 ) {
1969				$portfolioAjaxLoader.fadeIn();
1970				$portfolioDetails.find('#portfolio-ajax-single').fadeOut('600', function(){
1971					$(this).remove();
1972				});
1973				$portfolioDetails.removeClass('portfolio-ajax-opened');
1974			}
1975		},
1976
1977		openItem: function(){
1978			var noOfImages = $portfolioDetails.find('img').length;
1979			var noLoaded = 0;
1980
1981			if( noOfImages > 0 ) {
1982				$portfolioDetails.find('img').on('load', function(){
1983					noLoaded++;
1984					var topOffsetScroll = SEMICOLON.initialize.topScrollOffset();
1985					if(noOfImages === noLoaded) {
1986						$portfolioDetailsContainer.css({ 'display': 'block' });
1987						$portfolioDetails.addClass('portfolio-ajax-opened');
1988						$portfolioAjaxLoader.fadeOut();
1989						var t=setTimeout(function(){
1990							SEMICOLON.widget.loadFlexSlider();
1991							SEMICOLON.initialize.lightbox();
1992							SEMICOLON.initialize.resizeVideos();
1993							SEMICOLON.widget.masonryThumbs();
1994							$('html,body').stop(true).animate({
1995								'scrollTop': $portfolioDetails.offset().top - topOffsetScroll
1996							}, 900, 'easeOutQuad');
1997						},500);
1998					}
1999				});
2000			} else {
2001				var topOffsetScroll = SEMICOLON.initialize.topScrollOffset();
2002				$portfolioDetailsContainer.css({ 'display': 'block' });
2003				$portfolioDetails.addClass('portfolio-ajax-opened');
2004				$portfolioAjaxLoader.fadeOut();
2005				var t=setTimeout(function(){
2006					SEMICOLON.widget.loadFlexSlider();
2007					SEMICOLON.initialize.lightbox();
2008					SEMICOLON.initialize.resizeVideos();
2009					SEMICOLON.widget.masonryThumbs();
2010					$('html,body').stop(true).animate({
2011						'scrollTop': $portfolioDetails.offset().top - topOffsetScroll
2012					}, 900, 'easeOutQuad');
2013				},500);
2014			}
2015		},
2016
2017		getNextItem: function( portPostId ){
2018			var portNext = '';
2019			var hasNext = $('#' + portPostId).next();
2020			if(hasNext.length != 0) {
2021				portNext = hasNext.attr('id');
2022			}
2023			return portNext;
2024		},
2025
2026		getPrevItem: function( portPostId ){
2027			var portPrev = '';
2028			var hasPrev = $('#' + portPostId).prev();
2029			if(hasPrev.length != 0) {
2030				portPrev = hasPrev.attr('id');
2031			}
2032			return portPrev;
2033		},
2034
2035		initializeAjax: function( portPostId ){
2036			prevPostPortId = $('#' + portPostId);
2037
2038			$('#next-portfolio, #prev-portfolio').off( 'click' ).on( 'click', function() {
2039				var portPostId = $(this).attr('data-id');
2040				$portfolioItems.removeClass('portfolio-active');
2041				$('#' + portPostId).addClass('portfolio-active');
2042				SEMICOLON.portfolio.loadItem(portPostId,prevPostPortId);
2043				return false;
2044			});
2045
2046			$('#close-portfolio').off( 'click' ).on( 'click', function() {
2047				$portfolioDetailsContainer.fadeOut('600', function(){
2048					$portfolioDetails.find('#portfolio-ajax-single').remove();
2049				});
2050				$portfolioDetails.removeClass('portfolio-ajax-opened');
2051				$portfolioItems.removeClass('portfolio-active');
2052				return false;
2053			});
2054		}
2055
2056	};
2057
2058	SEMICOLON.widget = {
2059
2060		init: function(){
2061
2062			SEMICOLON.widget.animations();
2063			SEMICOLON.widget.youtubeBgVideo();
2064			SEMICOLON.widget.tabs();
2065			SEMICOLON.widget.tabsJustify();
2066			SEMICOLON.widget.tabsResponsive();
2067			SEMICOLON.widget.tabsResponsiveResize();
2068			SEMICOLON.widget.toggles();
2069			SEMICOLON.widget.accordions();
2070			SEMICOLON.widget.counter();
2071			SEMICOLON.widget.roundedSkill();
2072			SEMICOLON.widget.progress();
2073			SEMICOLON.widget.twitterFeed();
2074			SEMICOLON.widget.flickrFeed();
2075			SEMICOLON.widget.instagramPhotos( '5834720953.1677ed0.a0a26ba4c90845f9a844d64c316bf77a', '8e000fefe3024b2ead6a50ff005bf036' );
2076			SEMICOLON.widget.dribbbleShots( '012d3d72d12f93e1d41a19195d7da2fc87e6b5afa48a184256e398eb793cfe56' );
2077			SEMICOLON.widget.navTree();
2078			SEMICOLON.widget.textRotater();
2079			SEMICOLON.widget.carousel();
2080			SEMICOLON.widget.linkScroll();
2081			SEMICOLON.widget.ajaxForm();
2082			SEMICOLON.widget.subscription();
2083			SEMICOLON.widget.stickySidebar();
2084			SEMICOLON.widget.cookieNotify();
2085			SEMICOLON.widget.cartQuantity();
2086			SEMICOLON.widget.extras();
2087
2088		},
2089
2090		parallax: function(){
2091
2092			if( typeof skrollr !== 'undefined' && $.isFunction(skrollr) ) {
2093				console.log('parallax: skrollr not Defined.');
2094				return true;
2095			}
2096
2097			if( $parallaxEl.length > 0 || $parallaxPageTitleEl.length > 0 || $parallaxPortfolioEl.length > 0 ) {
2098				if( !SEMICOLON.isMobile.any() ){
2099					skrollr.init({forceHeight: false});
2100				} else {
2101					$parallaxEl.addClass('mobile-parallax');
2102					$parallaxPageTitleEl.addClass('mobile-parallax');
2103					$parallaxPortfolioEl.addClass('mobile-parallax');
2104				}
2105			}
2106		},
2107
2108		animations: function(){
2109
2110			if( !$().appear ) {
2111				console.log('animations: Appear not Defined.');
2112				return true;
2113			}
2114
2115			var $dataAnimateEl = $('[data-animate]');
2116			if( $dataAnimateEl.length > 0 ){
2117				if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || $body.hasClass('device-md') ){
2118					$dataAnimateEl.each(function(){
2119						var element = $(this),
2120							animationOut = element.attr('data-animate-out'),
2121							animationDelay = element.attr('data-delay'),
2122							animationDelayOut = element.attr('data-delay-out'),
2123							animationDelayTime = 0,
2124							animationDelayOutTime = 3000;
2125
2126						if( element.parents('.fslider.no-thumbs-animate').length > 0 ) { return true; }
2127						if( element.parents('.swiper-slide').length > 0 ) { return true; }
2128
2129						if( animationDelay ) { animationDelayTime = Number( animationDelay ) + 500; } else { animationDelayTime = 500; }
2130						if( animationOut && animationDelayOut ) { animationDelayOutTime = Number( animationDelayOut ) + animationDelayTime; }
2131
2132						if( !element.hasClass('animated') ) {
2133							element.addClass('not-animated');
2134							var elementAnimation = element.attr('data-animate');
2135							element.appear(function () {
2136								setTimeout(function() {
2137									element.removeClass('not-animated').addClass( elementAnimation + ' animated');
2138								}, animationDelayTime);
2139
2140								if( animationOut ) {
2141									setTimeout( function() {
2142										element.removeClass( elementAnimation ).addClass( animationOut );
2143									}, animationDelayOutTime );
2144								}
2145							},{accX: 0, accY: -120},'easeInCubic');
2146						}
2147					});
2148				}
2149			}
2150		},
2151
2152		loadFlexSlider: function(){
2153
2154			if( !$().flexslider ) {
2155				console.log('loadFlexSlider: FlexSlider not Defined.');
2156				return true;
2157			}
2158
2159			var $flexSliderEl = $('.fslider:not(.customjs)').find('.flexslider');
2160			if( $flexSliderEl.length > 0 ){
2161				$flexSliderEl.each(function() {
2162					var $flexsSlider = $(this),
2163						flexsAnimation = $flexsSlider.parent('.fslider').attr('data-animation'),
2164						flexsEasing = $flexsSlider.parent('.fslider').attr('data-easing'),
2165						flexsDirection = $flexsSlider.parent('.fslider').attr('data-direction'),
2166						flexsReverse = $flexsSlider.parent('.fslider').attr('data-reverse'),
2167						flexsSlideshow = $flexsSlider.parent('.fslider').attr('data-slideshow'),
2168						flexsPause = $flexsSlider.parent('.fslider').attr('data-pause'),
2169						flexsSpeed = $flexsSlider.parent('.fslider').attr('data-speed'),
2170						flexsVideo = $flexsSlider.parent('.fslider').attr('data-video'),
2171						flexsPagi = $flexsSlider.parent('.fslider').attr('data-pagi'),
2172						flexsArrows = $flexsSlider.parent('.fslider').attr('data-arrows'),
2173						flexsThumbs = $flexsSlider.parent('.fslider').attr('data-thumbs'),
2174						flexsHover = $flexsSlider.parent('.fslider').attr('data-hover'),
2175						flexsSheight = $flexsSlider.parent('.fslider').attr('data-smooth-height'),
2176						flexsTouch = $flexsSlider.parent('.fslider').attr('data-touch'),
2177						flexsUseCSS = false;
2178
2179					if( !flexsAnimation ) { flexsAnimation = 'slide'; }
2180					if( !flexsEasing || flexsEasing == 'swing' ) {
2181						flexsEasing = 'swing';
2182						flexsUseCSS = true;
2183					}
2184					if( !flexsDirection ) { flexsDirection = 'horizontal'; }
2185					if( flexsReverse == 'true' ) { flexsReverse = true; } else { flexsReverse = false; }
2186					if( !flexsSlideshow ) { flexsSlideshow = true; } else { flexsSlideshow = false; }
2187					if( !flexsPause ) { flexsPause = 5000; }
2188					if( !flexsSpeed ) { flexsSpeed = 600; }
2189					if( !flexsVideo ) { flexsVideo = false; }
2190					if( flexsSheight == 'false' ) { flexsSheight = false; } else { flexsSheight = true; }
2191					if( flexsDirection == 'vertical' ) { flexsSheight = false; }
2192					if( flexsPagi == 'false' ) { flexsPagi = false; } else { flexsPagi = true; }
2193					if( flexsThumbs == 'true' ) { flexsPagi = 'thumbnails'; } else { flexsPagi = flexsPagi; }
2194					if( flexsArrows == 'false' ) { flexsArrows = false; } else { flexsArrows = true; }
2195					if( flexsHover == 'false' ) { flexsHover = false; } else { flexsHover = true; }
2196					if( flexsTouch == 'false' ) { flexsTouch = false; } else { flexsTouch = true; }
2197
2198					$flexsSlider.flexslider({
2199						selector: ".slider-wrap > .slide",
2200						animation: flexsAnimation,
2201						easing: flexsEasing,
2202						direction: flexsDirection,
2203						reverse: flexsReverse,
2204						slideshow: flexsSlideshow,
2205						slideshowSpeed: Number(flexsPause),
2206						animationSpeed: Number(flexsSpeed),
2207						pauseOnHover: flexsHover,
2208						video: flexsVideo,
2209						controlNav: flexsPagi,
2210						directionNav: flexsArrows,
2211						smoothHeight: flexsSheight,
2212						useCSS: flexsUseCSS,
2213						touch: flexsTouch,
2214						start: function(slider){
2215							SEMICOLON.widget.animations();
2216							SEMICOLON.initialize.verticalMiddle();
2217							slider.parent().removeClass('preloader2');
2218							var t = setTimeout( function(){ $('.grid-container').isotope('layout'); }, 1200 );
2219							SEMICOLON.initialize.lightbox();
2220							$('.flex-prev').html('<i class="icon-angle-left"></i>');
2221							$('.flex-next').html('<i class="icon-angle-right"></i>');
2222							SEMICOLON.portfolio.portfolioDescMargin();
2223						},
2224						after: function(){
2225							if( $('.grid-container').hasClass('portfolio-full') ) {
2226								$('.grid-container.portfolio-full').isotope('layout');
2227								SEMICOLON.portfolio.portfolioDescMargin();
2228							}
2229							if( $('.post-grid').hasClass('post-masonry-full') ) {
2230								$('.post-grid.post-masonry-full').isotope('layout');
2231							}
2232						}
2233					});
2234				});
2235			}
2236		},
2237
2238		html5Video: function(){
2239			var videoEl = $('.video-wrap:has(video)');
2240			if( videoEl.length > 0 ) {
2241				videoEl.each(function(){
2242					var element = $(this),
2243						elementVideo = element.find('video'),
2244						divWidth = element.outerWidth(),
2245						divHeight = element.outerHeight(),
2246						videoWidth = ( (16*divHeight)/9 ),
2247						videoHeight = divHeight;
2248
2249					if( videoWidth < divWidth ) {
2250						videoWidth = divWidth;
2251						videoHeight = ( (9*divWidth)/16 );
2252					}
2253
2254					elementVideo.css({ width: videoWidth+'px', height: videoHeight+'px' });
2255
2256					if( videoHeight > divHeight ) {
2257						elementVideo.css({ 'left': '', 'top': -( ( videoHeight - divHeight )/2 )+'px' });
2258					}
2259
2260					if( videoWidth > divWidth ) {
2261						elementVideo.css({ 'top': '', 'left': -( ( videoWidth - divWidth )/2 )+'px' });
2262					}
2263
2264					if( SEMICOLON.isMobile.any() && !element.hasClass('no-placeholder') ) {
2265						var placeholderImg = elementVideo.attr('poster');
2266
2267						if( placeholderImg != '' ) {
2268							element.append('<div class="video-placeholder" style="background-image: url('+ placeholderImg +');"></div>')
2269						}
2270
2271						elementVideo.hide();
2272					}
2273				});
2274			}
2275		},
2276
2277		youtubeBgVideo: function(){
2278
2279			if( !$().YTPlayer ) {
2280				console.log('youtubeBgVideo: YoutubeBG Plugin not Defined.');
2281				return true;
2282			}
2283
2284			var $youtubeBgPlayerEl = $('.yt-bg-player');
2285			if( $youtubeBgPlayerEl.hasClass('customjs') ) { return true; }
2286
2287			if( $youtubeBgPlayerEl.length > 0 ){
2288				$youtubeBgPlayerEl.each( function(){
2289					var element = $(this),
2290						ytbgVideo = element.attr('data-video'),
2291						ytbgMute = element.attr('data-mute'),
2292						ytbgRatio = element.attr('data-ratio'),
2293						ytbgQuality = element.attr('data-quality'),
2294						ytbgOpacity = element.attr('data-opacity'),
2295						ytbgContainer = element.attr('data-container'),
2296						ytbgOptimize = element.attr('data-optimize'),
2297						ytbgLoop = element.attr('data-loop'),
2298						ytbgVolume = element.attr('data-volume'),
2299						ytbgStart = element.attr('data-start'),
2300						ytbgStop = element.attr('data-stop'),
2301						ytbgAutoPlay = element.attr('data-autoplay'),
2302						ytbgFullScreen = element.attr('data-fullscreen');
2303
2304					if( ytbgMute == 'false' ) { ytbgMute = false; } else { ytbgMute = true; }
2305					if( !ytbgRatio ) { ytbgRatio = '16/9'; }
2306					if( !ytbgQuality ) { ytbgQuality = 'hd720'; }
2307					if( !ytbgOpacity ) { ytbgOpacity = 1; }
2308					if( !ytbgContainer ) { ytbgContainer = 'self'; }
2309					if( ytbgOptimize == 'false' ) { ytbgOptimize = false; } else { ytbgOptimize = true; }
2310					if( ytbgLoop == 'false' ) { ytbgLoop = false; } else { ytbgLoop = true; }
2311					if( !ytbgVolume ) { ytbgVolume = 1; }
2312					if( !ytbgStart ) { ytbgStart = 0; }
2313					if( !ytbgStop ) { ytbgStop = 0; }
2314					if( ytbgAutoPlay == 'false' ) { ytbgAutoPlay = false; } else { ytbgAutoPlay = true; }
2315					if( ytbgFullScreen == 'true' ) { ytbgFullScreen = true; } else { ytbgFullScreen = false; }
2316
2317					element.YTPlayer({
2318						videoURL: ytbgVideo,
2319						mute: ytbgMute,
2320						ratio: ytbgRatio,
2321						quality: ytbgQuality,
2322						opacity: Number(ytbgOpacity),
2323						containment: ytbgContainer,
2324						optimizeDisplay: ytbgOptimize,
2325						loop: ytbgLoop,
2326						vol: Number(ytbgVolume),
2327						startAt: Number(ytbgStart),
2328						stopAt: Number(ytbgStop),
2329						autoPlay: ytbgAutoPlay,
2330						realfullscreen: ytbgFullScreen,
2331						showYTLogo: false,
2332						showControls: false
2333					});
2334				});
2335			}
2336		},
2337
2338		tabs: function(){
2339
2340			if( !$().tabs ) {
2341				console.log('tabs: Tabs not Defined.');
2342				return true;
2343			}
2344
2345			var $tabs = $('.tabs:not(.customjs)');
2346			if( $tabs.length > 0 ) {
2347				$tabs.each( function(){
2348					var element = $(this),
2349						elementSpeed = element.attr('data-speed'),
2350						tabActive = element.attr('data-active');
2351
2352					if( !elementSpeed ) { elementSpeed = 400; }
2353					if( !tabActive ) { tabActive = 0; } else { tabActive = tabActive - 1; }
2354
2355					var windowHash = window.location.hash;
2356					if( jQuery(windowHash).length > 0 ) {
2357						var windowHashText = windowHash.split('#'),
2358							tabItem = document.getElementById( windowHashText[1] );
2359						tabActive = jQuery( ".tab-content" ).index( tabItem );
2360					}
2361
2362					element.tabs({
2363						active: Number(tabActive),
2364						show: {
2365							effect: "fade",
2366							duration: Number(elementSpeed)
2367						}
2368					});
2369				});
2370			}
2371		},
2372
2373		tabsJustify: function(){
2374			if( !$('body').hasClass('device-xs') && !$('body').hasClass('device-sm') ){
2375				var $tabsJustify = $('.tabs.tabs-justify');
2376				if( $tabsJustify.length > 0 ) {
2377					$tabsJustify.each( function(){
2378						var element = $(this),
2379							elementTabs = element.find('.tab-nav > li'),
2380							elementTabsNo = elementTabs.length,
2381							elementContainer = 0,
2382							elementWidth = 0;
2383
2384						if( element.hasClass('tabs-bordered') || element.hasClass('tabs-bb') ) {
2385							elementContainer = element.find('.tab-nav').outerWidth();
2386						} else {
2387							if( element.find('tab-nav').hasClass('tab-nav2') ) {
2388								elementContainer = element.find('.tab-nav').outerWidth() - (elementTabsNo * 10);
2389							} else {
2390								elementContainer = element.find('.tab-nav').outerWidth() - 30;
2391							}
2392						}
2393
2394						elementWidth = Math.floor(elementContainer/elementTabsNo);
2395						elementTabs.css({ 'width': elementWidth + 'px' });
2396
2397					});
2398				}
2399			} else { $('.tabs.tabs-justify').find('.tab-nav > li').css({ 'width': '' }); }
2400		},
2401
2402		tabsResponsive: function(){
2403
2404			if( !$().tabs ) {
2405				console.log('tabs: Tabs not Defined.');
2406				return true;
2407			}
2408
2409			var $tabsResponsive = $('.tabs.tabs-responsive');
2410			if( $tabsResponsive.length < 1 ) { return true; }
2411
2412			$tabsResponsive.each( function(){
2413				var element = $(this),
2414					elementNav = element.find('.tab-nav'),
2415					elementContent = element.find('.tab-container');
2416
2417				elementNav.children('li').each( function(){
2418					var navEl = $(this),
2419						navElAnchor = navEl.children('a'),
2420						navElTarget = navElAnchor.attr('href'),
2421						navElContent = navElAnchor.html();
2422
2423					elementContent.find(navElTarget).before('<div class="acctitle d-none"><i class="acc-closed icon-ok-circle"></i><i class="acc-open icon-remove-circle"></i>'+navElContent+'</div>');
2424				});
2425			});
2426		},
2427
2428		tabsResponsiveResize: function(){
2429
2430			if( !$().tabs ) {
2431				console.log('tabs: Tabs not Defined.');
2432				return true;
2433			}
2434
2435			var $tabsResponsive = $('.tabs.tabs-responsive');
2436			if( $tabsResponsive.length < 1 ) { return true; }
2437
2438			$tabsResponsive.each( function(){
2439				var element = $(this),
2440					tabActive = element.tabs( 'option', 'active' ) + 1,
2441					elementAccStyle = element.attr('data-accordion-style');
2442
2443				if( $('body').hasClass('device-sm') || $('body').hasClass('device-xs') ) {
2444
2445					element.find('.tab-nav').addClass('d-none');
2446					element.find('.tab-container').addClass('accordion '+ elementAccStyle +' clearfix').attr('data-active', tabActive);
2447					element.find('.tab-content').addClass('acc_content');
2448					element.find('.acctitle').removeClass('d-none');
2449					SEMICOLON.widget.accordions();
2450
2451				} else if( $('body').hasClass('device-md') || $('body').hasClass('device-lg') || $('body').hasClass('device-xl') ) {
2452
2453					element.find('.tab-nav').removeClass('d-none');
2454					element.find('.tab-container').removeClass('accordion '+ elementAccStyle +' clearfix').attr('data-active', '');
2455					element.find('.tab-content').removeClass('acc_content');
2456					element.find('.acctitle').addClass('d-none');
2457					element.tabs('refresh');
2458
2459				}
2460			});
2461		},
2462
2463		toggles: function(){
2464			var $toggle = $('.toggle');
2465			if( $toggle.length > 0 ) {
2466				$toggle.each( function(){
2467					var element = $(this),
2468						elementState = element.attr('data-state');
2469
2470					if( elementState != 'open' ){
2471						element.children('.togglec').hide();
2472					} else {
2473						element.children('.togglet').addClass("toggleta");
2474					}
2475
2476					element.children('.togglet').off( 'click' ).on( 'click', function(){
2477						$(this).toggleClass('toggleta').next('.togglec').slideToggle(300);
2478						return true;
2479					});
2480				});
2481			}
2482		},
2483
2484		accordions: function(){
2485			var $accordionEl = $('.accordion');
2486			if( $accordionEl.length > 0 ){
2487				$accordionEl.each( function(){
2488					var element = $(this),
2489						elementState = element.attr('data-state'),
2490						accordionActive = element.attr('data-active');
2491
2492					if( !accordionActive ) { accordionActive = 0; } else { accordionActive = accordionActive - 1; }
2493
2494					element.find('.acc_content').hide();
2495
2496					if( elementState != 'closed' ) {
2497						element.find('.acctitle:eq('+ Number(accordionActive) +')').addClass('acctitlec').next().show();
2498					}
2499
2500					element.find('.acctitle').off( 'click' ).on( 'click', function(){
2501						if( $(this).next().is(':hidden') ) {
2502							element.find('.acctitle').removeClass('acctitlec').next().slideUp("normal");
2503							var clickTarget = $(this);
2504							$(this).toggleClass('acctitlec').next().stop().slideDown("normal", function(){
2505								if( ( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) && element.hasClass('scroll-on-open') ) {
2506									$('html,body').stop(true).animate({
2507										'scrollTop': clickTarget.offset().top - ( SEMICOLON.initialize.topScrollOffset() - 40 )
2508									}, 800, 'easeOutQuad' );
2509								}
2510							});
2511						}
2512						return false;
2513					});
2514				});
2515			}
2516		},
2517
2518		counter: function(){
2519
2520			if( !$().appear ) {
2521				console.log('counter: Appear not Defined.');
2522				return true;
2523			}
2524
2525			if( !$().countTo ) {
2526				console.log('counter: countTo not Defined.');
2527				return true;
2528			}
2529
2530			var $counterEl = $('.counter:not(.counter-instant)');
2531			if( $counterEl.length > 0 ){
2532				$counterEl.each(function(){
2533					var element = $(this);
2534					var counterElementComma = $(this).find('span').attr('data-comma');
2535					if( !counterElementComma ) { counterElementComma = false; } else { counterElementComma = true; }
2536					if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ){
2537						element.appear( function(){
2538							SEMICOLON.widget.runCounter( element, counterElementComma );
2539						},{accX: 0, accY: -120},'easeInCubic');
2540					} else {
2541						SEMICOLON.widget.runCounter( element, counterElementComma );
2542					}
2543				});
2544			}
2545		},
2546
2547		runCounter: function( counterElement,counterElementComma ){
2548			if( counterElementComma == true ) {
2549				counterElement.find('span').countTo({
2550					formatter: function (value, options) {
2551						value = value.toFixed(options.decimals);
2552						value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
2553						return value;
2554					}
2555				});
2556			} else {
2557				counterElement.find('span').countTo();
2558			}
2559		},
2560
2561		roundedSkill: function(){
2562
2563			if( !$().appear ) {
2564				console.log('roundedSkill: Appear not Defined.');
2565				return true;
2566			}
2567
2568			if( !$().easyPieChart ) {
2569				console.log('roundedSkill: EasyPieChart not Defined.');
2570				return true;
2571			}
2572
2573			var $roundedSkillEl = $('.rounded-skill');
2574			if( $roundedSkillEl.length > 0 ){
2575				$roundedSkillEl.each(function(){
2576					var element = $(this);
2577
2578					var roundSkillSize = element.attr('data-size');
2579					var roundSkillSpeed = element.attr('data-speed');
2580					var roundSkillWidth = element.attr('data-width');
2581					var roundSkillColor = element.attr('data-color');
2582					var roundSkillTrackColor = element.attr('data-trackcolor');
2583
2584					if( !roundSkillSize ) { roundSkillSize = 140; }
2585					if( !roundSkillSpeed ) { roundSkillSpeed = 2000; }
2586					if( !roundSkillWidth ) { roundSkillWidth = 8; }
2587					if( !roundSkillColor ) { roundSkillColor = '#0093BF'; }
2588					if( !roundSkillTrackColor ) { roundSkillTrackColor = 'rgba(0,0,0,0.04)'; }
2589
2590					var properties = {roundSkillSize:roundSkillSize, roundSkillSpeed:roundSkillSpeed, roundSkillWidth:roundSkillWidth, roundSkillColor:roundSkillColor, roundSkillTrackColor:roundSkillTrackColor};
2591
2592					if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ){
2593						element.css({'width':roundSkillSize+'px','height':roundSkillSize+'px','line-height':roundSkillSize+'px'}).animate({opacity:0}
2593, 10);
2594						element.appear( function(){
2595							if (!element.hasClass('skills-animated')) {
2596								var t = setTimeout( function(){ element.css({opacity: 1}); }, 100 );
2597								SEMICOLON.widget.runRoundedSkills( element, properties );
2598								element.addClass('skills-animated');
2599							}
2600						},{accX: 0, accY: -120},'easeInCubic');
2601					} else {
2602						SEMICOLON.widget.runRoundedSkills( element, properties );
2603					}
2604				});
2605			}
2606		},
2607
2608		runRoundedSkills: function( element, properties ){
2609			element.easyPieChart({
2610				size: Number(properties.roundSkillSize),
2611				animate: Number(properties.roundSkillSpeed),
2612				scaleColor: false,
2613				trackColor: properties.roundSkillTrackColor,
2614				lineWidth: Number(properties.roundSkillWidth),
2615				lineCap: 'square',
2616				barColor: properties.roundSkillColor
2617			});
2618		},
2619
2620		progress: function(){
2621
2622			if( !$().appear ) {
2623				console.log('progress: Appear not Defined.');
2624				return true;
2625			}
2626
2627			var $progressEl = $('.progress');
2628			if( $progressEl.length > 0 ){
2629				$progressEl.each(function(){
2630					var element = $(this),
2631						skillsBar = element.parent('li'),
2632						skillValue = skillsBar.attr('data-percent');
2633
2634					if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ){
2635						element.appear( function(){
2636							if (!skillsBar.hasClass('skills-animated')) {
2637								element.find('.counter-instant span').countTo();
2638								skillsBar.find('.progress').css({width: skillValue + "%"}).addClass('skills-animated');
2639							}
2640						},{accX: 0, accY: -120},'easeInCubic');
2641					} else {
2642						element.find('.counter-instant span').countTo();
2643						skillsBar.find('.progress').css({width: skillValue + "%"});
2644					}
2645				});
2646			}
2647		},
2648
2649		twitterFeed: function(){
2650
2651			if( typeof sm_format_twitter === 'undefined' ) {
2652				console.log('twitterFeed: sm_format_twitter() not Defined.');
2653				return true;
2654			}
2655
2656			if( typeof sm_format_twitter3 === 'undefined' ) {
2657				console.log('twitterFeed: sm_format_twitter3() not Defined.');
2658				return true;
2659			}
2660
2661			var $twitterFeedEl = $('.twitter-feed');
2662			if( $twitterFeedEl.length > 0 ){
2663				$twitterFeedEl.each(function() {
2664					var element = $(this),
2665						twitterFeedUser = element.attr('data-username'),
2666						twitterFeedCount = element.attr('data-count'),
2667						twitterFeedLoader = element.attr('data-loader');
2668
2669					if( !twitterFeedUser ) { twitterFeedUser = 'twitter' }
2670					if( !twitterFeedCount ) { twitterFeedCount = 3 }
2671					if( !twitterFeedLoader ) { twitterFeedLoader = 'include/twitter/tweets.php'; }
2672
2673					$.getJSON( twitterFeedLoader + '?username='+ twitterFeedUser +'&count='+ twitterFeedCount, function(tweets){
2674						if( element.hasClass('fslider') ) {
2675							element.find(".slider-wrap").html(sm_format_twitter3(tweets)).promise().done( function(){
2676								var timer = setInterval(function(){
2677									if( element.find('.slide').length > 1 ) {
2678										element.removeClass('customjs');
2679										var t = setTimeout( function(){ SEMICOLON.widget.loadFlexSlider(); }, 500);
2680										clearInterval(timer);
2681									}
2682								},500);
2683							});
2684						} else {
2685							element.html(sm_format_twitter(tweets));
2686						}
2687					});
2688				});
2689			}
2690		},
2691
2692		flickrFeed: function(){
2693
2694			if( !$().jflickrfeed ) {
2695				console.log('flickrFeed: jflickrfeed not Defined.');
2696				return true;
2697			}
2698
2699			var $flickrFeedEl = $('.flickr-feed');
2700			if( $flickrFeedEl.length > 0 ){
2701				$flickrFeedEl.each(function() {
2702					var element = $(this),
2703						flickrFeedID = element.attr('data-id'),
2704						flickrFeedCount = element.attr('data-count'),
2705						flickrFeedType = element.attr('data-type'),
2706						flickrFeedTypeGet = 'photos_public.gne';
2707
2708					if( flickrFeedType == 'group' ) { flickrFeedTypeGet = 'groups_pool.gne'; }
2709					if( !flickrFeedCount ) { flickrFeedCount = 9; }
2710
2711					element.jflickrfeed({
2712						feedapi: flickrFeedTypeGet,
2713						limit: Number(flickrFeedCount),
2714						qstrings: {
2715							id: flickrFeedID
2716						},
2717						itemTemplate: '<a href="{{image_b}}" title="{{title}}" data-lightbox="gallery-item">' +
2718											'<img src="{{image_s}}" alt="{{title}}" />' +
2719									  '</a>'
2720					}, function(data) {
2721						SEMICOLON.initialize.lightbox();
2722					});
2723				});
2724			}
2725		},
2726
2727		instagramPhotos: function( c_accessToken, c_clientID ){
2728
2729			if( typeof Instafeed === 'undefined' ) {
2730				console.log('Instafeed not Defined.');
2731				return true;
2732			}
2733
2734			var $instagramPhotosEl = $('.instagram-photos');
2735			if( $instagramPhotosEl.length > 0 ){
2736
2737				$instagramPhotosEl.each(function() {
2738					var element = $(this),
2739						instaGramTarget = element.attr('id'),
2740						instaGramUserId = element.attr('data-user'),
2741						instaGramTag = element.attr('data-tag'),
2742						instaGramLocation = element.attr('data-location'),
2743						instaGramCount = element.attr('data-count'),
2744						instaGramType = element.attr('data-type'),
2745						instaGramSortBy = element.attr('data-sortBy'),
2746						instaGramRes = element.attr('data-resolution');
2747
2748					if( !instaGramCount ) { instaGramCount = 9; }
2749					if( !instaGramSortBy ) { instaGramSortBy = 'none'; }
2750					if( !instaGramRes ) { instaGramRes = 'thumbnail'; }
2751
2752					if( instaGramType == 'user' ) {
2753
2754						var feed = new Instafeed({
2755							target: instaGramTarget,
2756							get: instaGramType,
2757							userId: Number(instaGramUserId),
2758							limit: Number(instaGramCount),
2759							sortBy: instaGramSortBy,
2760							resolution: instaGramRes,
2761							accessToken: c_accessToken,
2762							clientId: c_clientID
2763						});
2764
2765					} else if( instaGramType == 'tagged' ) {
2766
2767						var feed = new Instafeed({
2768							target: instaGramTarget,
2769							get: instaGramType,
2770							tagName: instaGramTag,
2771							limit: Number(instaGramCount),
2772							sortBy: instaGramSortBy,
2773							resolution: instaGramRes,
2774							clientId: c_clientID
2775						});
2776
2777					} else if( instaGramType == 'location' ) {
2778
2779						var feed = new Instafeed({
2780							target: instaGramTarget,
2781							get: instaGramType,
2782							locationId: Number(instaGramUserId),
2783							limit: Number(instaGramCount),
2784							sortBy: instaGramSortBy,
2785							resolution: instaGramRes,
2786							clientId: c_clientID
2787						});
2788
2789					} else {
2790
2791						var feed = new Instafeed({
2792							target: instaGramTarget,
2793							get: 'popular',
2794							limit: Number(instaGramCount),
2795							sortBy: instaGramSortBy,
2796							resolution: instaGramRes,
2797							clientId: c_clientID
2798						});
2799
2800					}
2801
2802					feed.run();
2803				});
2804			}
2805		},
2806
2807		dribbbleShots: function( c_accessToken ){
2808
2809			if( !$.jribbble ) {
2810				console.log('dribbbleShots: Jribbble not Defined.');
2811				return true;
2812			}
2813
2814			if( !$().imagesLoaded ) {
2815				console.log('dribbbleShots: imagesLoaded not Defined.');
2816				return true;
2817			}
2818
2819			var $dribbbleShotsEl = $('.dribbble-shots');
2820			if( $dribbbleShotsEl.length > 0 ){
2821
2822				$.jribbble.setToken( c_accessToken );
2823
2824				$dribbbleShotsEl.each(function() {
2825					var element = $(this),
2826						dribbbleUsername = element.attr('data-user'),
2827						dribbbleCount = element.attr('data-count'),
2828						dribbbleList = element.attr('data-list'),
2829						dribbbleType = element.attr('data-type');
2830
2831					element.addClass('customjs');
2832
2833					if( !dribbbleCount ) { dribbbleCount = 9; }
2834
2835					if( dribbbleType == 'user' ) {
2836
2837						$.jribbble.users( dribbbleUsername ).shots({
2838							'sort': 'recent',
2839							'page': 1,
2840							'per_page': Number(dribbbleCount)
2841						}).then( function(res) {
2842							var html = [];
2843							res.forEach( function(shot) {
2844								html.push('<a href="' + shot.html_url + '" target="_blank">');
2845								html.push('<img src="' + shot.images.teaser + '" ');
2846								html.push('alt="' + shot.title + '"></a>');
2847							});
2848							element.html(html.join(''));
2849
2850							element.imagesLoaded().done( function() {
2851								element.removeClass('customjs');
2852								SEMICOLON.widget.masonryThumbs();
2853							});
2854						});
2855
2856					} else if( dribbbleType == 'list' ) {
2857
2858						$.jribbble.shots( dribbbleList, {
2859							'sort': 'recent',
2860							'page': 1,
2861							'per_page': Number(dribbbleCount)
2862						}).then( function(res) {
2863							var html = [];
2864							res.forEach( function(shot) {
2865								html.push('<a href="' + shot.html_url + '" target="_blank">');
2866								html.push('<img src="' + shot.images.teaser + '" ');
2867								html.push('alt="' + shot.title + '"></a>');
2868							});
2869							element.html(html.join(''));
2870
2871							element.imagesLoaded().done( function() {
2872								element.removeClass('customjs');
2873								SEMICOLON.widget.masonryThumbs();
2874							});
2875						});
2876					}
2877
2878				});
2879			}
2880		},
2881
2882		navTree: function(){
2883			var $navTreeEl = $('.nav-tree');
2884			if( $navTreeEl.length > 0 ){
2885				$navTreeEl.each( function(){
2886					var element = $(this),
2887						elementSpeed = element.attr('data-speed'),
2888						elementEasing = element.attr('data-easing');
2889
2890					if( !elementSpeed ) { elementSpeed = 250; }
2891					if( !elementEasing ) { elementEasing = 'swing'; }
2892
2893					element.find( 'ul li:has(ul)' ).addClass('sub-menu');
2894					element.find( 'ul li:has(ul) > a' ).append( ' <i class="icon-angle-down"></i>' );
2895
2896					if( element.hasClass('on-hover') ){
2897						element.find( 'ul li:has(ul):not(.active)' ).hover( function(e){
2898							$(this).children('ul').stop(true, true).slideDown( Number(elementSpeed), elementEasing);
2899						}, function(){
2900							$(this).children('ul').delay(250).slideUp( Number(elementSpeed), elementEasing);
2901						});
2902					} else {
2903						element.find( 'ul li:has(ul) > a' ).off( 'click' ).on( 'click', function(e){
2904							var childElement = $(this);
2905							element.find( 'ul li' ).not(childElement.parents()).removeClass('active');
2906							childElement.parent().children('ul').slideToggle( Number(elementSpeed), elementEasing, function(){
2907								$(this).find('ul').hide();
2908								$(this).find('li.active').removeClass('active');
2909							});
2910							element.find( 'ul li > ul' ).not(childElement.parent().children('ul')).not(childElement.parents('ul')).slideUp( Number(elementSpeed), elementEasing );
2911							childElement.parent('li:has(ul)').toggleClass('active');
2912							e.preventDefault();
2913						});
2914					}
2915				});
2916			}
2917		},
2918
2919		carousel: function(){
2920
2921			if( !$().owlCarousel ) {
2922				console.log('carousel: Owl Carousel not Defined.');
2923				return true;
2924			}
2925
2926			var $carousel = $('.carousel-widget:not(.customjs)');
2927			if( $carousel.length < 1 ){ return true; }
2928
2929			$carousel.each( function(){
2930				var element = $(this),
2931					elementItems = element.attr('data-items'),
2932					elementItemsXl = element.attr('data-items-xl'),
2933					elementItemsLg = element.attr('data-items-lg'),
2934					elementItemsMd = element.attr('data-items-md'),
2935					elementItemsSm = element.attr('data-items-sm'),
2936					elementItemsXs = element.attr('data-items-xs'),
2937					elementLoop = element.attr('data-loop'),
2938					elementAutoPlay = element.attr('data-autoplay'),
2939					elementSpeed = element.attr('data-speed'),
2940					elementAnimateIn = element.attr('data-animate-in'),
2941					elementAnimateOut = element.attr('data-animate-out'),
2942					elementNav = element.attr('data-nav'),
2943					elementPagi = element.attr('data-pagi'),
2944					elementMargin = element.attr('data-margin'),
2945					elementStage = element.attr('data-stage-padding'),
2946					elementMerge = element.attr('data-merge'),
2947					elementStart = element.attr('data-start'),
2948					elementRewind = element.attr('data-rewind'),
2949					elementSlideBy = element.attr('data-slideby'),
2950					elementCenter = element.attr('data-center'),
2951					elementLazy = element.attr('data-lazyload'),
2952					elementVideo = element.attr('data-video'),
2953					elementRTL = element.attr('data-rtl'),
2954					elementAutoPlayTime = 5000,
2955					elementAutoPlayHoverPause = true;
2956
2957				if( !elementItems ) { elementItems = 4; }
2958				if( !elementItemsXl ) { elementItemsXl = Number(elementItems); }
2959				if( !elementItemsLg ) { elementItemsLg = Number(elementItemsXl); }
2960				if( !elementItemsMd ) { elementItemsMd = Number(elementItemsLg); }
2961				if( !elementItemsSm ) { elementItemsSm = Number(elementItemsMd); }
2962				if( !elementItemsXs ) { elementItemsXs = Number(elementItemsSm); }
2963				if( !elementSpeed ) { elementSpeed = 250; }
2964				if( !elementMargin ) { elementMargin = 20; }
2965				if( !elementStage ) { elementStage = 0; }
2966				if( !elementStart ) { elementStart = 0; }
2967
2968				if( !elementSlideBy ) { elementSlideBy = 1; }
2969				if( elementSlideBy == 'page' ) {
2970					elementSlideBy = 'page';
2971				} else {
2972					elementSlideBy = Number(elementSlideBy);
2973				}
2974
2975				if( elementLoop == 'true' ){ elementLoop = true; } else { elementLoop = false; }
2976				if( !elementAutoPlay ){
2977					elementAutoPlay = false;
2978					elementAutoPlayHoverPause = false;
2979				} else {
2980					elementAutoPlayTime = Number(elementAutoPlay);
2981					elementAutoPlay = true;
2982				}
2983				if( !elementAnimateIn ) { elementAnimateIn = false; }
2984				if( !elementAnimateOut ) { elementAnimateOut = false; }
2985				if( elementNav == 'false' ){ elementNav = false; } else { elementNav = true; }
2986				if( elementPagi == 'false' ){ elementPagi = false; } else { elementPagi = true; }
2987				if( elementRewind == 'true' ){ elementRewind = true; } else { elementRewind = false; }
2988				if( elementMerge == 'true' ){ elementMerge = true; } else { elementMerge = false; }
2989				if( elementCenter == 'true' ){ elementCenter = true; } else { elementCenter = false; }
2990				if( elementLazy == 'true' ){ elementLazy = true; } else { elementLazy = false; }
2991				if( elementVideo == 'true' ){ elementVideo = true; } else { elementVideo = false; }
2992				if( elementRTL == 'true' || $body.hasClass('rtl') ){ elementRTL = true; } else { elementRTL = false; }
2993
2994				element.owlCarousel({
2995					margin: Number(elementMargin),
2996					loop: elementLoop,
2997					stagePadding: Number(elementStage),
2998					merge: elementMerge,
2999					startPosition: Number(elementStart),
3000					rewind: elementRewind,
3001					slideBy: elementSlideBy,
3002					center: elementCenter,
3003					lazyLoad: elementLazy,
3004					nav: elementNav,
3005					navText: ['<i class="icon-angle-left"></i>','<i class="icon-angle-right"></i>'],
3006					autoplay: elementAutoPlay,
3007					autoplayTimeout: elementAutoPlayTime,
3008					autoplayHoverPause: elementAutoPlayHoverPause,
3009					dots: elementPagi,
3010					smartSpeed: Number(elementSpeed),
3011					fluidSpeed: Number(elementSpeed),
3012					video: elementVideo,
3013					animateIn: elementAnimateIn,
3014					animateOut: elementAnimateOut,
3015					rtl: elementRTL,
3016					responsive:{
3017						0:{ items:Number(elementItemsXs) },
3018						576:{ items:Number(elementItemsSm) },
3019						768:{ items:Number(elementItemsMd) },
3020						992:{ items:Number(elementItemsLg) },
3021						1200:{ items:Number(elementItemsXl) }
3022					},
3023					onInitialized: function(){
3024						SEMICOLON.slider.owlCaptionInit();
3025						SEMICOLON.slider.sliderParallaxDimensions();
3026						SEMICOLON.initialize.lightbox();
3027					}
3028				});
3029			});
3030		},
3031
3032		masonryThumbs: function(){
3033			var $masonryThumbsEl = $('.masonry-thumbs:not(.customjs)');
3034			if( $masonryThumbsEl.length > 0 ){
3035				$masonryThumbsEl.each( function(){
3036					var masonryItemContainer = $(this);
3037					SEMICOLON.widget.masonryThumbsArrange( masonryItemContainer );
3038				});
3039			}
3040		},
3041
3042		masonryThumbsArrange: function( element ){
3043
3044			if( !$().isotope ) {
3045				console.log('masonryThumbsArrange: Isotope not Defined.');
3046				return true;
3047			}
3048
3049			SEMICOLON.initialize.setFullColumnWidth( element );
3050			element.isotope('layout');
3051		},
3052
3053		notifications: function( element ){
3054
3055			if( typeof toastr === 'undefined' ) {
3056				console.log('notifications: Toastr not Defined.');
3057				return true;
3058			}
3059
3060			toastr.remove();
3061			var notifyElement = $(element),
3062				notifyPosition = notifyElement.attr('data-notify-position'),
3063				notifyType = notifyElement.attr('data-notify-type'),
3064				notifyMsg = notifyElement.attr('data-notify-msg'),
3065				notifyTimeout = notifyElement.attr('data-notify-timeout'),
3066				notifyCloseButton = notifyElement.attr('data-notify-close');
3067
3068			if( !notifyPosition ) { notifyPosition = 'toast-top-right'; } else { notifyPosition = 'toast-' + notifyElement.attr('data-notify-position'); }
3069			if( !notifyMsg ) { notifyMsg = 'Please set a message!'; }
3070			if( !notifyTimeout ) { notifyTimeout = 5000; }
3071			if( notifyCloseButton == 'true' ) { notifyCloseButton = true; } else { notifyCloseButton = false; }
3072
3073			toastr.options.positionClass = notifyPosition;
3074			toastr.options.timeOut = Number( notifyTimeout );
3075			toastr.options.closeButton = notifyCloseButton;
3076			toastr.options.closeHtml = '<button><i class="icon-remove"></i></button>';
3077
3078			if( notifyType == 'warning' ) {
3079				toastr.warning(notifyMsg);
3080			} else if( notifyType == 'error' ) {
3081				toastr.error(notifyMsg);
3082			} else if( notifyType == 'success' ) {
3083				toastr.success(notifyMsg);
3084			} else {
3085				toastr.info(notifyMsg);
3086			}
3087
3088			return false;
3089		},
3090
3091		textRotater: function(){
3092
3093			if( !$().Morphext ) {
3094				console.log('textRotater: Morphext not Defined.');
3095				return true;
3096			}
3097
3098			if( $textRotaterEl.length > 0 ){
3099				$textRotaterEl.each(function(){
3100					var element = $(this),
3101						trRotate = $(this).attr('data-rotate'),
3102						trSpeed = $(this).attr('data-speed'),
3103						trSeparator = $(this).attr('data-separator');
3104
3105					if( !trRotate ) { trRotate = "fade"; }
3106					if( !trSpeed ) { trSpeed = 1200; }
3107					if( !trSeparator ) { trSeparator = ","; }
3108
3109					var tRotater = $(this).find('.t-rotate');
3110
3111					var pluginData = tRotater.Morphext({
3112						animation: trRotate,
3113						separator: trSeparator,
3114						speed: Number(trSpeed)
3115					});
3116				});
3117			}
3118		},
3119
3120		linkScroll: function(){
3121			$("a[data-scrollto]").off( 'click' ).on( 'click', function(){
3122				var element = $(this),
3123					divScrollToAnchor = element.attr('data-scrollto'),
3124					divScrollSpeed = element.attr('data-speed'),
3125					divScrollOffset = element.attr('data-offset'),
3126					divScrollEasing = element.attr('data-easing'),
3127					divScrollHighlight = element.attr('data-highlight');
3128
3129				if( element.parents('#primary-menu').hasClass('on-click') ) { return true; }
3130
3131				if( !divScrollSpeed ) { divScrollSpeed = 750; }
3132				if( !divScrollOffset ) { divScrollOffset = SEMICOLON.initialize.topScrollOffset(); }
3133				if( !divScrollEasing ) { divScrollEasing = 'easeOutQuad'; }
3134
3135				$('html,body').stop(true).animate({
3136					'scrollTop': $( divScrollToAnchor ).offset().top - Number(divScrollOffset)
3137				}, Number(divScrollSpeed), divScrollEasing, function(){
3138					if( divScrollHighlight ) {
3139						if( $(divScrollToAnchor).find('.highlight-me').length > 0 ) {
3140							$(divScrollToAnchor).find('.highlight-me').animate({'backgroundColor': divScrollHighlight}, 300);
3141							var t = setTimeout( function(){ $(divScrollToAnchor).find('.highlight-me').animate({'backgroundColor': 'transparent'}, 300); }, 500 );
3142						} else {
3143							$(divScrollToAnchor).animate({'backgroundColor': divScrollHighlight}, 300);
3144							var t = setTimeout( function(){ $(divScrollToAnchor).animate({'backgroundColor': 'transparent'}, 300); }, 500 );
3145						}
3146					}
3147				});
3148
3149				return false;
3150			});
3151		},
3152
3153		ajaxForm: function(){
3154
3155			if( !$().validate ) {
3156				console.log('ajaxForm: Form Validate not Defined.');
3157				return true;
3158			}
3159
3160			if( !$().ajaxSubmit ) {
3161				console.log('ajaxForm: jQuery Form not Defined.');
3162				return true;
3163			}
3164
3165			var $ajaxForm = $('.form-widget:not(.customjs)');
3166			if( $ajaxForm.length < 1 ){ return true; }
3167
3168			$ajaxForm.each( function(){
3169				var element = $(this),
3170					elementForm = element.find('form'),
3171					elementFormId = elementForm.attr('id'),
3172					elementAlert = element.attr('data-alert-type'),
3173					elementLoader = element.attr('data-loader'),
3174					elementResult = element.find('.form-result'),
3175					elementRedirect = element.attr('data-redirect');
3176
3177				if( !elementAlert ) { elementAlert = 'notify'; }
3178
3179				if( elementFormId ) {
3180					$body.addClass( elementFormId + '-ready' );
3181				}
3182
3183				element.find('form').validate({
3184					errorPlacement: function(error, elementItem) {
3185						if( elementItem.parents('.form-group').length > 0 ) {
3186							error.appendTo( elementItem.parents('.form-group') );
3187						} else {
3188							error.insertAfter( elementItem );
3189						}
3190					},
3191					focusCleanup: true,
3192					submitHandler: function(form) {
3193
3194						elementResult.hide();
3195
3196						if( elementLoader == 'button' ) {
3197							var defButton = $(form).find('button'),
3198								defButtonText = defButton.html();
3199
3200							defButton.html('<i class="icon-line-loader icon-spin nomargin"></i>');
3201						} else {
3202							$(form).find('.form-process').fadeIn();
3203						}
3204
3205						if( elementFormId ) {
3206							$body.removeClass( elementFormId + '-ready ' + elementFormId + '-complete ' + elementFormId + '-success ' + elementFormId + '-error' ).addClass( elementFormId + '-processing' );
3207						}
3208
3209						$(form).ajaxSubmit({
3210							target: elementResult,
3211							dataType: 'json',
3212							success: function( data ) {
3213								if( elementLoader == 'button' ) {
3214									defButton.html( defButtonText );
3215								} else {
3216									$(form).find('.form-process').fadeOut();
3217								}
3218
3219								if( data.alert != 'error' && elementRedirect ){
3220									window.location.replace( elementRedirect );
3221									return true;
3222								}
3223
3224								if( elementAlert == 'inline' ) {
3225									if( data.alert == 'error' ) {
3226										var alertType = 'alert-danger';
3227									} else {
3228										var alertType = 'alert-success';
3229									}
3230
3231									elementResult.removeClass( 'alert-danger alert-success' ).addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 );
3232								} else if( elementAlert == 'notify' ) {
3233									elementResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html('');
3234									SEMICOLON.widget.notifications( elementResult );
3235								}
3236
3237								if( data.alert != 'error' ) {
3238									$(form).resetForm();
3239									$(form).find('.btn-group > .btn').removeClass('active');
3240
3241									if( (typeof tinyMCE != 'undefined') && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden() ){
3242										tinymce.activeEditor.setContent('');
3243									}
3244
3245									var rangeSlider = $(form).find('.input-range-slider');
3246									if( rangeSlider.length > 0 ) {
3247										rangeSlider.each( function(){
3248											var range = $(this).data('ionRangeSlider');
3249											range.reset();
3250										});
3251									}
3252
3253									var ratings = $(form).find('.input-rating');
3254									if( ratings.length > 0 ) {
3255										ratings.each( function(){
3256											$(this).rating('reset');
3257										});
3258									}
3259
3260									var selectPicker = $(form).find('.selectpicker');
3261									if( selectPicker.length > 0 ) {
3262										selectPicker.each( function(){
3263											$(this).selectpicker('val', '');
3264											$(this).selectpicker('deselectAll');
3265										});
3266									}
3267
3268									$(form).find('.input-select2,select[data-selectsplitter-firstselect-selector]').change();
3269
3270									$(form).trigger( 'formSubmitSuccess' );
3271									$body.removeClass( elementFormId + '-error' ).addClass( elementFormId + '-success' );
3272								} else {
3273									$(form).trigger( 'formSubmitError' );
3274									$body.removeClass( elementFormId + '-success' ).addClass( elementFormId + '-error' );
3275								}
3276
3277								if( elementFormId ) {
3278									$body.removeClass( elementFormId + '-processing' ).addClass( elementFormId + '-complete' );
3279								}
3280
3281								if( $(form).find('.g-recaptcha').children('div').length > 0 ) { grecaptcha.reset(); }
3282							}
3283						});
3284					}
3285				});
3286
3287			});
3288		},
3289
3290		subscription: function(){
3291
3292			if( !$().validate ) {
3293				console.log('subscription: Form Validate not Defined.');
3294				return true;
3295			}
3296
3297			if( !$().ajaxSubmit ) {
3298				console.log('subscription: jQuery Form not Defined.');
3299				return true;
3300			}
3301
3302			var $subscribeForm = $('.subscribe-widget:not(.customjs)');
3303			if( $subscribeForm.length < 1 ){ return true; }
3304
3305			$subscribeForm.each( function(){
3306				var element = $(this),
3307					elementAlert = element.attr('data-alert-type'),
3308					elementLoader = element.attr('data-loader'),
3309					elementResult = element.find('.widget-subscribe-form-result'),
3310					elementRedirect = element.attr('data-redirect');
3311
3312				element.find('form').validate({
3313					submitHandler: function(form) {
3314
3315						elementResult.hide();
3316
3317						if( elementLoader == 'button' ) {
3318							var defButton = $(form).find('button'),
3319								defButtonText = defButton.html();
3320
3321							defButton.html('<i class="icon-line-loader icon-spin nomargin"></i>');
3322						} else {
3323							$(form).find('.icon-email2').removeClass('icon-email2').addClass('icon-line-loader icon-spin');
3324						}
3325
3326						$(form).ajaxSubmit({
3327							target: elementResult,
3328							dataType: 'json',
3329							resetForm: true,
3330							success: function( data ) {
3331								if( elementLoader == 'button' ) {
3332									defButton.html( defButtonText );
3333								} else {
3334									$(form).find('.icon-line-loader').removeClass('icon-line-loader icon-spin').addClass('icon-email2');
3335								}
3336								if( data.alert != 'error' && elementRedirect ){
3337									window.location.replace( elementRedirect );
3338									return true;
3339								}
3340								if( elementAlert == 'inline' ) {
3341									if( data.alert == 'error' ) {
3342										var alertType = 'alert-danger';
3343									} else {
3344										var alertType = 'alert-success';
3345									}
3346
3347									elementResult.addClass( 'alert ' + alertType ).html( data.message ).slideDown( 400 );
3348								} else {
3349									elementResult.attr( 'data-notify-type', data.alert ).attr( 'data-notify-msg', data.message ).html('');
3350									SEMICOLON.widget.notifications( elementResult );
3351								}
3352							}
3353						});
3354					}
3355				});
3356
3357			});
3358		},
3359
3360		stickySidebar: function(){
3361
3362			if( !$().scwStickySidebar ) {
3363				console.log('stickySidebar: Sticky Sidebar is not Defined.');
3364				return true;
3365			}
3366
3367			var $stickySidebar = jQuery('.sticky-sidebar-wrap');
3368			if( $stickySidebar.length < 1 ){ return true; }
3369
3370			$stickySidebar.each( function(){
3371				var element = $(this),
3372					elementTop = element.attr('data-offset-top'),
3373					elementBottom = element.attr('data-offset-bottom');
3374
3375				if( !elementTop ) { elementTop = 110; }
3376				if( !elementBottom ) { elementBottom = 50; }
3377
3378				element.scwStickySidebar({
3379					additionalMarginTop: Number( elementTop ),
3380					additionalMarginBottom: Number( elementBottom )
3381				});
3382			});
3383		},
3384
3385		cookieNotify: function(){
3386
3387			if( Cookies === 'undefined' ) {
3388				console.log('cookieNotify: Cookie Function not defined.');
3389				return true;
3390			}
3391
3392			if( $cookieNotification.length > 0 ) {
3393				var cookieNotificationHeight = $cookieNotification.outerHeight();
3394
3395				$cookieNotification.css({ bottom: -cookieNotificationHeight });
3396
3397				if( Cookies.get('websiteUsesCookies') != 'yesConfirmed' ) {
3398					$cookieNotification.css({ bottom: 0, opacity: 1 });
3399				}
3400
3401				$('.cookie-accept').off( 'click' ).on( 'click', function(){
3402					$cookieNotification.css({ bottom: -cookieNotificationHeight, opacity: 0 });
3403					Cookies.set('websiteUsesCookies', 'yesConfirmed', { expires: 30 });
3404					return false;
3405				});
3406			}
3407		},
3408
3409		cartQuantity: function(){
3410
3411			$(".plus").off( 'click' ).on( 'click', function(){
3412				var productQuantity = $(this).parents('.quantity').find('.qty').val(),
3413					quantityStep = $(this).parents('.quantity').find('.qty').attr('step'),
3414					intRegex = /^\d+$/;
3415
3416				if( !quantityStep ) { quantityStep = 1; }
3417
3418				if( intRegex.test( productQuantity ) ) {
3419					var productQuantityPlus = Number(productQuantity) + Number(quantityStep);
3420					$(this).parents('.quantity').find('.qty').val( productQuantityPlus );
3421				} else {
3422					$(this).parents('.quantity').find('.qty').val( Number(quantityStep) );
3423				}
3424
3425				return false;
3426			});
3427
3428			$(".minus").off( 'click' ).on( 'click', function(){
3429				var productQuantity = $(this).parents('.quantity').find('.qty').val(),
3430					quantityStep = $(this).parents('.quantity').find('.qty').attr('step'),
3431					intRegex = /^\d+$/;
3432
3433				if( !quantityStep ) { quantityStep = 1; }
3434
3435				if( intRegex.test( productQuantity ) ) {
3436					if( Number(productQuantity) > 1 ) {
3437						var productQuantityMinus = Number(productQuantity) - Number(quantityStep);
3438						$(this).parents('.quantity').find('.qty').val( productQuantityMinus );
3439					}
3440				} else {
3441					$(this).parents('.quantity').find('.qty').val( Number(quantityStep) );
3442				}
3443
3444				return false;
3445			});
3446
3447		},
3448
3449		extras: function(){
3450
3451			if( $().tooltip ) {
3452				$('[data-toggle="tooltip"]').tooltip({container: 'body'});
3453			} else {
3454				console.log('extras: Bootstrap Tooltip not defined.');
3455			}
3456
3457			if( $().popover ) {
3458				$('[data-toggle=popover]').popover();
3459			} else {
3460				console.log('extras: Bootstrap Popover not defined.');
3461			}
3462
3463			$('.style-msg').on( 'click', '.close', function(e){
3464				$( this ).parents( '.style-msg' ).slideUp();
3465				e.preventDefault();
3466			});
3467
3468			$('#primary-menu-trigger,#overlay-menu-close').off( 'click' ).on( 'click', function() {
3469				if( $('#primary-menu').find('ul.mobile-primary-menu').length > 0 ) {
3470					$( '#primary-menu > ul.mobile-primary-menu, #primary-menu > div > ul.mobile-primary-menu' ).toggleClass('d-block');
3471				} else {
3472					$( '#primary-menu > ul, #primary-menu > div > ul' ).toggleClass('d-block');
3473				}
3474				$body.toggleClass("primary-menu-open");
3475				return false;
3476			});
3477			$('#page-submenu-trigger').off( 'click' ).on( 'click', function() {
3478				$body.toggleClass('top-search-open', false);
3479				$pagemenu.toggleClass("pagemenu-active");
3480				return false;
3481			});
3482			$pagemenu.find('nav').off( 'click' ).on( 'click', function(e){
3483				$body.toggleClass('top-search-open', false);
3484				$topCart.toggleClass('top-cart-open', false);
3485			});
3486			if( SEMICOLON.isMobile.any() ){
3487				$body.addClass('device-touch');
3488			}
3489			// var el = {
3490			//     darkLogo : $("<img>", {src: defaultDarkLogo}),
3491			//     darkRetinaLogo : $("<img>", {src: retinaDarkLogo})
3492			// };
3493			// el.darkLogo.prependTo("body");
3494			// el.darkRetinaLogo.prependTo("body");
3495			// el.darkLogo.css({'position':'absolute','z-index':'-100'});
3496			// el.darkRetinaLogo.css({'position':'absolute','z-index':'-100'});
3497		}
3498
3499	};
3500
3501	SEMICOLON.isMobile = {
3502		Android: function() {
3503			return navigator.userAgent.match(/Android/i);
3504		},
3505		BlackBerry: function() {
3506			return navigator.userAgent.match(/BlackBerry/i);
3507		},
3508		iOS: function() {
3509			return navigator.userAgent.match(/iPhone|iPad|iPod/i);
3510		},
3511		Opera: function() {
3512			return navigator.userAgent.match(/Opera Mini/i);
3513		},
3514		Windows: function() {
3515			return navigator.userAgent.match(/IEMobile/i);
3516		},
3517		any: function() {
3518			return (SEMICOLON.isMobile.Android() || SEMICOLON.isMobile.BlackBerry() || SEMICOLON.isMobile.iOS() || SEMICOLON.isMobile.Opera() || SEMICOLON.isMobile.Windows());
3519		}
3520	};
3521
3522	SEMICOLON.documentOnResize = {
3523
3524		init: function(){
3525
3526			var t = setTimeout( function(){
3527				SEMICOLON.header.topsocial();
3528				SEMICOLON.header.fullWidthMenu();
3529				SEMICOLON.header.overlayMenu();
3530				SEMICOLON.initialize.fullScreen();
3531				SEMICOLON.initialize.dataResponsiveHeights();
3532				SEMICOLON.initialize.verticalMiddle();
3533				SEMICOLON.initialize.testimonialsGrid();
3534				SEMICOLON.initialize.stickFooterOnSmall();
3535				SEMICOLON.initialize.stickyFooter();
3536				SEMICOLON.slider.sliderParallaxDimensions();
3537				SEMICOLON.slider.captionPosition();
3538				SEMICOLON.portfolio.arrange();
3539				SEMICOLON.portfolio.portfolioDescMargin();
3540				SEMICOLON.widget.tabsResponsiveResize();
3541				SEMICOLON.widget.tabsJustify();
3542				SEMICOLON.widget.html5Video();
3543				SEMICOLON.widget.masonryThumbs();
3544				SEMICOLON.initialize.dataResponsiveClasses();
3545				if( $gridContainer.length > 0 ) {
3546					if( !$gridContainer.hasClass('.customjs') ) {
3547						if( $().isotope ) {
3548							$gridContainer.isotope('layout');
3549						} else {
3550							console.log('documentOnResize > init: Isotope not defined.');
3551						}
3552					}
3553				}
3554				if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) {
3555					$('#primary-menu').find('ul.mobile-primary-menu').removeClass('d-block');
3556				}
3557			}, 500 );
3558
3559			windowWidth = $window.width();
3560
3561		}
3562
3563	};
3564
3565	SEMICOLON.documentOnReady = {
3566
3567		init: function(){
3568			SEMICOLON.initialize.init();
3569			SEMICOLON.header.init();
3570			if( $slider.length > 0 || $sliderElement.length > 0 ) { SEMICOLON.slider.init(); }
3571			if( $portfolio.length > 0 ) { SEMICOLON.portfolio.init(); }
3572			SEMICOLON.widget.init();
3573			SEMICOLON.documentOnReady.windowscroll();
3574		},
3575
3576		windowscroll: function(){
3577
3578			var headerOffset = 0,
3579				headerWrapOffset = 0,
3580				pageMenuOffset = 0;
3581
3582			if( $header.length > 0 ) { headerOffset = $header.offset().top; }
3583			if( $header.length > 0 ) { headerWrapOffset = $headerWrap.offset().top; }
3584			if( $pagemenu.length > 0 ) {
3585				if( $header.length > 0 && !$header.hasClass('no-sticky') ) {
3586					if( $header.hasClass('sticky-style-2') || $header.hasClass('sticky-style-3') ) {
3587						pageMenuOffset = $pagemenu.offset().top - $headerWrap.outerHeight();
3588					} else {
3589						pageMenuOffset = $pagemenu.offset().top - $header.outerHeight();
3590					}
3591				} else {
3592					pageMenuOffset = $pagemenu.offset().top;
3593				}
3594			}
3595
3596			var headerDefinedOffset = $header.attr('data-sticky-offset');
3597			if( typeof headerDefinedOffset !== 'undefined' ) {
3598				if( headerDefinedOffset == 'full' ) {
3599					headerWrapOffset = $window.height();
3600					var headerOffsetNegative = $header.attr('data-sticky-offset-negative');
3601					if( typeof headerOffsetNegative !== 'undefined' ) { headerWrapOffset = headerWrapOffset - headerOffsetNegative - 1; }
3602				} else {
3603					headerWrapOffset = Number(headerDefinedOffset);
3604				}
3605			} else {
3606				if( $header.hasClass('sticky-style-2') || $header.hasClass('sticky-style-3') ) {
3607					if( headerWrapOffset === 'undefined' ) {
3608						headerWrapOffset = headerOffset;
3609					}
3610				} else {
3611					headerWrapOffset = headerOffset;
3612				}
3613			}
3614
3615			SEMICOLON.header.stickyMenu( headerWrapOffset );
3616			SEMICOLON.header.stickyPageMenu( pageMenuOffset );
3617
3618			$window.on( 'scroll', function(){
3619
3620				SEMICOLON.initialize.goToTopScroll();
3621				$('body.open-header.close-header-on-scroll').removeClass("side-header-open");
3622				SEMICOLON.header.stickyMenu( headerWrapOffset );
3623				SEMICOLON.header.stickyPageMenu( pageMenuOffset );
3624				SEMICOLON.header.logo();
3625
3626			});
3627
3628			window.addEventListener('scroll', onScrollSliderParallax, false);
3629
3630			if( $onePageMenuEl.length > 0 ){
3631				if( $().scrolled ) {
3632					$window.scrolled(function() {
3633						SEMICOLON.header.onepageScroller();
3634					});
3635				} else {
3636					console.log('windowscroll: Scrolled Function not defined.');
3637				}
3638			}
3639		}
3640
3641	};
3642
3643	SEMICOLON.documentOnLoad = {
3644
3645		init: function(){
3646			SEMICOLON.slider.captionPosition();
3647			SEMICOLON.slider.swiperSliderMenu(true);
3648			SEMICOLON.slider.revolutionSliderMenu(true);
3649			SEMICOLON.initialize.testimonialsGrid();
3650			SEMICOLON.initialize.verticalMiddle();
3651			SEMICOLON.initialize.stickFooterOnSmall();
3652			SEMICOLON.initialize.stickyFooter();
3653			SEMICOLON.portfolio.gridInit( $gridContainer );
3654			SEMICOLON.portfolio.filterInit();
3655			SEMICOLON.portfolio.shuffleInit();
3656			SEMICOLON.portfolio.arrange();
3657			SEMICOLON.portfolio.portfolioDescMargin();
3658			SEMICOLON.widget.parallax();
3659			SEMICOLON.widget.loadFlexSlider();
3660			SEMICOLON.widget.html5Video();
3661			SEMICOLON.widget.masonryThumbs();
3662			SEMICOLON.header.topsocial();
3663			SEMICOLON.header.responsiveMenuClass();
3664			SEMICOLON.initialize.modal();
3665		}
3666
3667	};
3668
3669	var $window = $(window),
3670		$body = $('body'),
3671		$wrapper = $('#wrapper'),
3672		$header = $('#header'),
3673		$headerWrap = $('#header-wrap'),
3674		$content = $('#content'),
3675		$footer = $('#footer'),
3676		windowWidth = $window.width(),
3677		oldHeaderClasses = $header.attr('class'),
3678		oldHeaderWrapClasses = $headerWrap.attr('class'),
3679		stickyMenuClasses = $header.attr('data-sticky-class'),
3680		responsiveMenuClasses = $header.attr('data-responsive-class'),
3681		defaultLogo = $('#logo').find('.standard-logo'),
3682		defaultLogoWidth = defaultLogo.find('img').outerWidth(),
3683		retinaLogo = $('#logo').find('.retina-logo'),
3684		defaultLogoImg = defaultLogo.find('img').attr('src'),
3685		retinaLogoImg = retinaLogo.find('img').attr('src'),
3686		defaultDarkLogo = defaultLogo.attr('data-dark-logo'),
3687		retinaDarkLogo = retinaLogo.attr('data-dark-logo'),
3688		defaultStickyLogo = defaultLogo.attr('data-sticky-logo'),
3689		retinaStickyLogo = retinaLogo.attr('data-sticky-logo'),
3690		defaultMobileLogo = defaultLogo.attr('data-mobile-logo'),
3691		retinaMobileLogo = retinaLogo.attr('data-mobile-logo'),
3692		$pagemenu = $('#page-menu'),
3693		$onePageMenuEl = $('.one-page-menu'),
3694		onePageGlobalOffset = 0,
3695		$portfolio = $('.portfolio'),
3696		$shop = $('.shop'),
3697		$gridContainer = $('.grid-container'),
3698		$slider = $('#slider'),
3699		$sliderParallaxEl = $('.slider-parallax'),
3700		$sliderElement = $('.slider-element'),
3701		swiperSlider = '',
3702		$pageTitle = $('#page-title'),
3703		$portfolioItems = $('.portfolio-ajax').find('.portfolio-item'),
3704		$portfolioDetails = $('#portfolio-ajax-wrap'),
3705		$portfolioDetailsContainer = $('#portfolio-ajax-container'),
3706		$portfolioAjaxLoader = $('#portfolio-ajax-loader'),
3707		$portfolioFilter = $('.portfolio-filter,.custom-filter'),
3708		prevPostPortId = '',
3709		$topSearch = $('#top-search'),
3710		$topCart = $('#top-cart'),
3711		$verticalMiddleEl = $('.vertical-middle'),
3712		$topSocialEl = $('#top-social').find('li'),
3713		$siStickyEl = $('.si-sticky'),
3714		$dotsMenuEl = $('.dots-menu'),
3715		$goToTopEl = $('#gotoTop'),
3716		$fullScreenEl = $('.full-screen'),
3717		$testimonialsGridEl = $('.testimonials-grid'),
3718		$pageSectionEl = $('.page-section'),
3719		$owlCarouselEl = $('.owl-carousel'),
3720		$parallaxEl = $('.parallax'),
3721		$parallaxPageTitleEl = $('.page-title-parallax'),
3722		$parallaxPortfolioEl = $('.portfolio-parallax').find('.portfolio-image'),
3723		$textRotaterEl = $('.text-rotater'),
3724		$cookieNotification = $('#cookie-notification');
3725
3726	$(document).ready( SEMICOLON.documentOnReady.init );
3727	$window.on( 'load', SEMICOLON.documentOnLoad.init );
3728	$window.on( 'resize', SEMICOLON.documentOnResize.init );
3729
3730})(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.