PageSourceSearch

https://saint-sebastien.net/js/functions.js

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