PageSourceSearch

https://consellodacultura.gal/especiais/CCG40/js/functions.js

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