PageSourceSearch

https://www.lpude.in/js/functions.js

js lpude.in collected 2026-10-02 22:52:03 UTC 167,741 bytes, 3,521 lines download raw bytes

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

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.