PageSourceSearch

https://frontnews.eu/themes/application/Components/js/functions.js

js frontnews.eu collected 2026-10-02 04:51:26 UTC 132,774 bytes, 3,816 lines download raw bytes

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