PageSourceSearch

https://as-far.ma/site_assets/js/functions.js

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