PageSourceSearch

https://www.injoy-graz-nord.at/fileadmin/simtemplate2/assets/js/functions.js?1693558765

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