PageSourceSearch

https://rotaryclubofbombay.org/wp-content/themes/rcb2024/assets/js/modules.js?ver=7.0.6

js rotaryclubofbombay.org collected 2026-10-02 13:16:32 UTC 277,375 bytes, 7,019 lines download raw bytes

1(function($) {
2    "use strict";
3
4    window.edgtf = {};
5    edgtf.modules = {};
6
7    edgtf.scroll = 0;
8    edgtf.window = $(window);
9    edgtf.document = $(document);
10    edgtf.windowWidth = $(window).width();
11    edgtf.windowHeight = $(window).height();
12    edgtf.body = $('body');
13    edgtf.html = $('html, body');
14    edgtf.htmlEl = $('html');
15    edgtf.menuDropdownHeightSet = false;
16    edgtf.defaultHeaderStyle = '';
17    edgtf.minVideoWidth = 1500;
18    edgtf.videoWidthOriginal = 1280;
19    edgtf.videoHeightOriginal = 720;
20    edgtf.videoRatio = 1280/720;
21
22    edgtf.edgtfOnDocumentReady = edgtfOnDocumentReady;
23    edgtf.edgtfOnWindowResize = edgtfOnWindowResize;
24    edgtf.edgtfOnWindowScroll = edgtfOnWindowScroll;
25
26    $(document).ready(edgtfOnDocumentReady);
27    $(window).resize(edgtfOnWindowResize);
28    $(window).scroll(edgtfOnWindowScroll);
29    
30    /* 
31        All functions to be called on $(document).ready() should be in this function
32    */
33    function edgtfOnDocumentReady() {
34        edgtf.scroll = $(window).scrollTop();
35
36        //set global variable for header style which we will use in various functions
37        if(edgtf.body.hasClass('edgtf-dark-header')){ edgtf.defaultHeaderStyle = 'edgtf-dark-header';}
38        if(edgtf.body.hasClass('edgtf-light-header')){ edgtf.defaultHeaderStyle = 'edgtf-light-header';}
39
40    }
41
42    /* 
43        All functions to be called on $(window).resize() should be in this function
44    */
45    function edgtfOnWindowResize() {
46        edgtf.windowWidth = $(window).width();
47        edgtf.windowHeight = $(window).height();
48    }
49
50    /* 
51        All functions to be called on $(window).scroll() should be in this function
52    */
53    function edgtfOnWindowScroll() {
54        edgtf.scroll = $(window).scrollTop();
55    }
56
57
58
59    //set boxed layout width variable for various calculations
60
61    switch(true){
62        case edgtf.body.hasClass('edgtf-grid-1300'):
63            edgtf.boxedLayoutWidth = 1350;
64            break;
65        case edgtf.body.hasClass('edgtf-grid-1200'):
66            edgtf.boxedLayoutWidth = 1250;
67            break;
68        case edgtf.body.hasClass('edgtf-grid-1000'):
69            edgtf.boxedLayoutWidth = 1050;
70            break;
71        case edgtf.body.hasClass('edgtf-grid-800'):
72            edgtf.boxedLayoutWidth = 850;
73            break;
74        default :
75            edgtf.boxedLayoutWidth = 1150;
76            break;
77    }
78
79})(jQuery);
80(function($) {
81	"use strict";
82
83    var common = {};
84    edgtf.modules.common = common;
85
86    common.edgtfIsTouchDevice = edgtfIsTouchDevice;
87    common.edgtfDisableSmoothScrollForMac = edgtfDisableSmoothScrollForMac;
88    common.edgtfFluidVideo = edgtfFluidVideo;
89    common.edgtfPreloadBackgrounds = edgtfPreloadBackgrounds;
90    common.edgtfPrettyPhoto = edgtfPrettyPhoto;
91    common.edgtfCheckHeaderStyleOnScroll = edgtfCheckHeaderStyleOnScroll;
92    common.edgtfInitParallax = edgtfInitParallax;
93    //common.edgtfSmoothScroll = edgtfSmoothScroll;
94    common.edgtfEnableScroll = edgtfEnableScroll;
95    common.edgtfDisableScroll = edgtfDisableScroll;
96    common.edgtfWheel = edgtfWheel;
97    common.edgtfKeydown = edgtfKeydown;
98    common.edgtfPreventDefaultValue = edgtfPreventDefaultValue;
99   // common.edgtfOwlSlider = edgtfOwlSlider;
100    common.edgtfSlickSlider = edgtfSlickSlider;
101    common.edgtfInitSelfHostedVideoPlayer = edgtfInitSelfHostedVideoPlayer;
102    common.edgtfSelfHostedVideoSize = edgtfSelfHostedVideoSize;
103    common.edgtfInitBackToTop = edgtfInitBackToTop;
104    common.edgtfBackButtonShowHide = edgtfBackButtonShowHide;
105    common.edgtfSmoothTransition = edgtfSmoothTransition;
106
107    common.edgtfOnDocumentReady = edgtfOnDocumentReady;
108    common.edgtfOnWindowLoad = edgtfOnWindowLoad;
109    common.edgtfOnWindowResize = edgtfOnWindowResize;
110    common.edgtfOnWindowScroll = edgtfOnWindowScroll;
111
112    $(document).ready(edgtfOnDocumentReady);
113    $(window).on('load', edgtfOnWindowLoad);
114    $(window).resize(edgtfOnWindowResize);
115    $(window).scroll(edgtfOnWindowScroll);
116    
117    /* 
118        All functions to be called on $(document).ready() should be in this function
119    */
120    function edgtfOnDocumentReady() {
121        edgtfIsTouchDevice();
122        edgtfDisableSmoothScrollForMac();
123        edgtfFluidVideo();
124        edgtfPreloadBackgrounds();
125        edgtfPrettyPhoto();
126	    edgtfInitAnchor().init();
127        edgtfInitVideoBackground();
128        edgtfInitVideoBackgroundSize();
129        edgtfSetContentBottomMargin();
130        //edgtfSmoothScroll();
131        //edgtfOwlSlider();
132		edgtfSlickSlider();
133        edgtfInitSelfHostedVideoPlayer();
134        edgtfSelfHostedVideoSize();
135        edgtfInitBackToTop();
136        edgtfBackButtonShowHide();
137    }
138
139    /* 
140        All functions to be called on $(window).load() should be in this function
141    */
142    function edgtfOnWindowLoad() {
143        edgtfCheckHeaderStyleOnScroll(); //called on load since all content needs to be loaded in order to calculate row's position right
144        edgtfInitParallax();
145        edgtfSmoothTransition();
146        edgtfInitElementsAnimations();
147        edgtfInitOverlapingAnimation();
148        edgtfElementorGlobal();
149    }
150
151    /* 
152        All functions to be called on $(window).resize() should be in this function
153    */
154    function edgtfOnWindowResize() {
155        edgtfInitVideoBackgroundSize();
156        edgtfSelfHostedVideoSize();
157    }
158
159    /* 
160        All functions to be called on $(window).scroll() should be in this function
161    */
162    function edgtfOnWindowScroll() {
163        
164    }
165
166    /*
167     ** Disable shortcodes animation on appear for touch devices
168     */
169    function edgtfIsTouchDevice() {
170        if(Modernizr.touch && !edgtf.body.hasClass('edgtf-no-animations-on-touch')) {
171            edgtf.body.addClass('edgtf-no-animations-on-touch');
172        }
173    }
174
175    /*
176     ** Disable smooth scroll for mac if smooth scroll is enabled
177     */
178    function edgtfDisableSmoothScrollForMac() {
179        var os = navigator.appVersion.toLowerCase();
180
181        if (os.indexOf('mac') > -1 && edgtf.body.hasClass('edgtf-smooth-scroll')) {
182            edgtf.body.removeClass('edgtf-smooth-scroll');
183        }
184    }
185
186	function edgtfFluidVideo() {
187        fluidvids.init({
188			selector: ['iframe'],
189			players: ['www.youtube.com', 'player.vimeo.com']
190		});
191	}
192
193    /**
194     * Init Owl Carousel
195     */
196    /*function edgtfOwlSlider() {
197
198        var sliders = $('.edgtf-owl-slider');
199
200        if (sliders.length) {
201            sliders.each(function(){
202
203                var slider = $(this);
204                slider.owlCarousel({
205                    singleItem: true,
206                    transitionStyle: 'fadeUp',
207                    navigation: true,
208                    autoHeight: true,
209                    pagination: false,
210                    navigationText: [
211                        '<span class="edgtf-prev-icon"><i class="fa fa-angle-left"></i></span>',
212                        '<span class="edgtf-next-icon"><i class="fa fa-angle-right"></i></span>'
213                    ]
214                });
215
216            });
217        }
218
219    }*/
220
221	/**
222     * Init Slick Carousel
223     */
224    function edgtfSlickSlider() {
225
226        var sliders = $('.edgtf-slick-slider');
227
228        if (sliders.length) {
229            sliders.each(function(){
230                var slider = $(this);
231				slider.waitForImages(function(){
232                    slider.slick({
233                        infinite: true,
234                        autoplay: true,
235                        slidesToShow : 1,
236                        arrows: true,
237                        dots: false,
238                        adaptiveHeight: true,
239                        prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
240                        nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
241                        customPaging: function(slider, i) {
242                            return '<span class="edgtf-slick-dot-inner"></span>';
243                        }
244                    });
245                });
246            });
247        }
248
249    }
250
251
252    /*
253     *	Preload background images for elements that have 'edgtf-preload-background' class
254     */
255    function edgtfPreloadBackgrounds(){
256
257        $(".edgtf-preload-background").each(function() {
258            var preloadBackground = $(this);
259            if(preloadBackground.css("background-image") !== "" && preloadBackground.css("background-image") != "none") {
260
261                var bgUrl = preloadBackground.attr('style');
262
263                bgUrl = bgUrl.match(/url\(["']?([^'")]+)['"]?\)/);
264                bgUrl = bgUrl ? bgUrl[1] : "";
265
266                if (bgUrl) {
267                    var backImg = new Image();
268                    backImg.src = bgUrl;
269                    $(backImg).on('load', function(){
270                        preloadBackground.removeClass('edgtf-preload-background');
271                    });
272                }
273            }else{
274                $(window).on('load', function(){ preloadBackground.removeClass('edgtf-preload-background'); }); //make sure that edgtf-preload-background class is removed from elements with forced background none in css
275            }
276        });
277    }
278
279    function edgtfPrettyPhoto() {
280        /*jshint multistr: true */
281        var markupWhole = '<div class="pp_pic_holder"> \
282                        <div class="ppt">&nbsp;</div> \
283                        <div class="pp_top"> \
284                            <div class="pp_left"></div> \
285                            <div class="pp_middle"></div> \
286                            <div class="pp_right"></div> \
287                        </div> \
288                        <div class="pp_content_container"> \
289                            <div class="pp_left"> \
290                            <div class="pp_right"> \
291                                <div class="pp_content"> \
292                                    <div class="pp_loaderIcon"></div> \
293                                    <div class="pp_fade"> \
294                                        <a href="#" class="pp_expand" title="Expand the image">Expand</a> \
295                                        <div class="pp_hoverContainer"> \
296                                            <a class="pp_next" href="#"><span class="fa fa-angle-right"></span></a> \
297                                            <a class="pp_previous" href="#"><span class="fa fa-angle-left"></span></a> \
298                                        </div> \
299                                        <div id="pp_full_res"></div> \
300                                        <div class="pp_details"> \
301                                            <div class="pp_nav"> \
302                                                <a href="#" class="pp_arrow_previous">Previous</a> \
303                                                <p class="currentTextHolder">0/0</p> \
304                                                <a href="#" class="pp_arrow_next">Next</a> \
305                                            </div> \
306                                            <p class="pp_description"></p> \
307                                            {pp_social} \
308                                            <a class="pp_close" href="#">Close</a> \
309                                        </div> \
310                                    </div> \
311                                </div> \
312                            </div> \
313                            </div> \
314                        </div> \
315                        <div class="pp_bottom"> \
316                            <div class="pp_left"></div> \
317                            <div class="pp_middle"></div> \
318                            <div class="pp_right"></div> \
319                        </div> \
320                    </div> \
321                    <div class="pp_overlay"></div>';
322
323        $("a[data-rel^='prettyPhoto']").prettyPhoto({
324            hook: 'data-rel',
325            animation_speed: 'normal', /* fast/slow/normal */
326            slideshow: false, /* false OR interval time in ms */
327            autoplay_slideshow: false, /* true/false */
328            opacity: 0.80, /* Value between 0 and 1 */
329            show_title: true, /* true/false */
330            allow_resize: true, /* Resize the photos bigger than viewport. true/false */
331            horizontal_padding: 0,
332            default_width: 960,
333            default_height: 540,
334            counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
335            theme: 'pp_default', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
336            hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
337            wmode: 'opaque', /* Set the flash wmode attribute */
338            autoplay: true, /* Automatically start videos: True/False */
339            modal: false, /* If set to true, only the close button will close the window */
340            overlay_gallery: false, /* If set to true, a gallery will overlay the fullscreen image on mouse over */
341            keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */
342            deeplinking: false,
343            custom_markup: '',
344            social_tools: false,
345            markup: markupWhole
346        });
347    }
348
349    /*
350     *	Check header style on scroll, depending on row settings
351     */
352    function edgtfCheckHeaderStyleOnScroll(){
353
354        if($('[data-edgtf_header_style]').length > 0 && edgtf.body.hasClass('edgtf-header-style-on-scroll')) {
355
356            var waypointSelectors = $('.wpb_row.edgtf-section');
357            var changeStyle = function(element){
358                (element.data("edgtf_header_style") !== undefined) ? edgtf.body.removeClass('edgtf-dark-header edgtf-light-header').addClass(element.data("edgtf_header_style")) : edgtf.body.removeClass('edgtf-dark-header edgtf-light-header').addClass(''+edgtf.defaultHeaderStyle);
359            };
360
361            waypointSelectors.waypoint( function(direction) {
362                if(direction === 'down') { changeStyle($(this.element)); }
363            }, { offset: 0});
364
365            waypointSelectors.waypoint( function(direction) {
366                if(direction === 'up') { changeStyle($(this.element)); }
367            }, { offset: function(){
368                return -$(this.element).outerHeight();
369            } });
370        }
371    }
372
373    /*
374     *	Start animations on elements
375     */
376    function edgtfInitElementsAnimations(){
377
378        var touchClass = $('.edgtf-no-animations-on-touch'),
379            noAnimationsOnTouch = true,
380            elements = $('.edgtf-grow-in, .edgtf-fade-in-down, .edgtf-element-from-fade, .edgtf-element-from-left, .edgtf-element-from-right, .edgtf-element-from-top, .edgtf-element-from-bottom, .elementor-editor-active .edgtf-elementor-admin-edgtf-element-from-fade, .elementor-editor-active .edgtf-elementor-admin-edgtf-element-from-left, .elementor-editor-active .edgtf-elementor-admin-edgtf-element-from-right, .elementor-editor-active .edgtf-elementor-admin-edgtf-element-from-top, .elementor-editor-active .edgtf-elementor-admin-edgtf-element-from-bottom, .edgtf-flip-in, .edgtf-x-rotate, .edgtf-z-rotate, .edgtf-y-translate, .edgtf-fade-in, .edgtf-fade-in-left-x-rotate'),
381            clasess,
382            animationClass,
383            animationData,
384            helperHolder,
385            delay = 0;
386
387        if (touchClass.length) {
388            noAnimationsOnTouch = false;
389        }
390
391        if(elements.length > 0 && noAnimationsOnTouch){
392            elements.each(function(){
393
394                //Elementor admin fx
395                helperHolder = $(this).find('.edgtf-section-animation-helper-holder');
396                if( helperHolder.length ){
397                    delay = helperHolder.data('delay');
398                    var elementorAnimationDiv = $(this).find('.elementor-container > div');
399                    if( typeof delay !== 'undefined' && elementorAnimationDiv.length){
400                        delay += 'ms';
401                        elementorAnimationDiv.css({'transition-delay':delay, '-webkit-animation-delay':delay, 'animation-delay':delay})
402                    }
403                }
404				$(this).appear(function() {
405				    if(helperHolder.length){
406                        animationData = helperHolder.data('animation');
407                    } else{
408                        animationData = $(this).data('animation');
409                    }
410
411					if(typeof animationData !== 'undefined' && animationData !== '') {
412						animationClass = animationData;
413						$(this).addClass(animationClass+'-on');
414					}
415                },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
416            });
417        }
418
419    }
420
421
422/*
423 **	Sections with parallax background image
424 */
425function edgtfInitParallax(){
426
427    if($('.edgtf-parallax-section-holder').length){
428        $('.edgtf-parallax-section-holder').each(function() {
429            var parallaxElement = $(this),
430                helperHolder = parallaxElement.find('.edgtf-parallax-helper-holder'),
431                speed;
432
433            if(parallaxElement.hasClass('edgtf-full-screen-height-parallax')){
434                parallaxElement.height(edgtf.windowHeight);
435                parallaxElement.find('.edgtf-parallax-content-outer').css('padding',0);
436            }
437
438            if( helperHolder.length ){
439                speed = helperHolder.data('parallax-bg-speed') * 0.4;
440            } else{
441                speed = parallaxElement.data('edgtf-parallax-speed')*0.4;
442            }
443
444            parallaxElement.parallax("50%", speed);
445        });
446    }
447}
448
449/*
450 **	Anchor functionality
451 */
452var edgtfInitAnchor = edgtf.modules.common.edgtfInitAnchor = function() {
453
454    /**
455     * Set active state on clicked anchor
456     * @param anchor, clicked anchor
457     */
458    var setActiveState = function(anchor){
459
460        $('.edgtf-main-menu .edgtf-active-item, .edgtf-mobile-nav .edgtf-active-item, .edgtf-vertical-menu .edgtf-active-item, .edgtf-fullscreen-menu .edgtf-active-item').removeClass('edgtf-active-item');
461        anchor.parent().addClass('edgtf-active-item');
462
463        $('.edgtf-main-menu a, .edgtf-mobile-nav a, .edgtf-vertical-menu a, .edgtf-fullscreen-menu a').removeClass('current');
464        anchor.addClass('current');
465    };
466
467    /**
468     * Check anchor active state on scroll
469     */
470    var checkActiveStateOnScroll = function(){
471
472        $('[data-edgtf-anchor]').waypoint( function(direction) {
473            if(direction === 'down') {
474                setActiveState($("a[href='"+window.location.href.split('#')[0]+"#"+$(this.element).data("edgtf-anchor")+"']"));
475            }
476        }, { offset: '50%' });
477
478        $('[data-edgtf-anchor]').waypoint( function(direction) {
479            if(direction === 'up') {
480                setActiveState($("a[href='"+window.location.href.split('#')[0]+"#"+$(this.element).data("edgtf-anchor")+"']"));
481            }
482        }, { offset: function(){
483            return -($(this.element).outerHeight() - 150);
484        } });
485
486    };
487
488    /**
489     * Check anchor active state on load
490     */
491    var checkActiveStateOnLoad = function(){
492        var hash = window.location.hash.split('#')[1];
493
494        if(hash !== "" && $('[data-edgtf-anchor="'+hash+'"]').length > 0){
495            //triggers click which is handled in 'anchorClick' function
496            var linkURL = window.location.href.split('#')[0]+"#"+hash;
497            if($("a[href='"+linkURL+"']").length){ //if there is a link on page with such href
498                $("a[href='"+linkURL+"']").trigger( "click" );
499            }else{ //than create a fake link and click it
500                var link = $('<a/>').attr({'href':linkURL,'class':'edgtf-anchor'}).appendTo('body');
501                link.trigger('click');
502            }
503        }
504    };
505
506    /**
507     * Calculate header height to be substract from scroll amount
508     * @param anchoredElementOffset, anchorded element offest
509     */
510    var headerHeihtToSubtract = function(anchoredElementOffset, anchoredElementPosition){
511
512        var headerHeight;
513        if(edgtf.windowWidth > 1000) {
514
515            if (edgtf.modules.header.behaviour == 'edgtf-sticky-header-on-scroll-down-up') {
516                (anchoredElementOffset > edgtf.modules.header.stickyAppearAmount) ? edgtf.modules.header.isStickyVisible = true : edgtf.modules.header.isStickyVisible = false;
517            }
518
519            if (edgtf.modules.header.behaviour == 'edgtf-sticky-header-on-scroll-up') {
520                (anchoredElementOffset > edgtf.scroll) ? edgtf.modules.header.isStickyVisible = false : '';
521            }
522
523            headerHeight = edgtf.modules.header.isStickyVisible ? edgtfGlobalVars.vars.edgtfStickyHeaderTransparencyHeight :edgtfPerPageVars.vars.edgtfHeaderTransparencyHeight;
524        }
525
526        else {
527            if (anchoredElementPosition === 'down') {
528                headerHeight = anchoredElementOffset > edgtf.modules.header.stickyMobileAppearAmount ? 0 : edgtf.modules.header.stickyMobileAppearAmount;
529            }
530            else {
531                headerHeight = edgtfGlobalVars.vars.edgtfMobileHeaderHeight;
532            }
533        }
534        return headerHeight;
535    };
536
537    /**
538     * Handle anchor click
539     */
540    var anchorClick = function() {
541        edgtf.document.on("click", ".edgtf-main-menu a, .edgtf-vertical-menu a, .edgtf-fullscreen-menu a, .edgtf-btn, .edgtf-anchor, .edgtf-mobile-nav a", function() {
542            var scrollAmount;
543            var anchor = $(this);
544            var hash = anchor.prop("hash").split('#')[1];
545
546            if(hash !== "" && $('[data-edgtf-anchor="' + hash + '"]').length > 0 /*&& anchor.attr('href').split('#')[0] == window.location.href.split('#')[0]*/) {
547
548                var anchoredElementOffset = $('[data-edgtf-anchor="' + hash + '"]').offset().top;
549                var anchoredElementPosition = anchoredElementOffset > edgtf.scroll ? 'down' : 'up';
550                scrollAmount = $('[data-edgtf-anchor="' + hash + '"]').offset().top - headerHeihtToSubtract(anchoredElementOffset, anchoredElementPosition);
551
552                setActiveState(anchor);
553
554                edgtf.html.stop().animate({
555                    scrollTop: Math.round(scrollAmount)
556                }, 2000, 'easeInOutCubic', function() {
557                    //change hash tag in url
558                    if(history.pushState) { history.pushState(null, null, '#'+hash); }
559                });
560                return false;
561            }
562        });
563    };
564
565    return {
566        init: function() {
567            if($('[data-edgtf-anchor]').length) {
568                anchorClick();
569                checkActiveStateOnScroll();
570                $(window).on('load', function() { checkActiveStateOnLoad(); });
571            }
572        }
573    };
574
575};
576
577/*
578 **	Video background initialization
579 */
580function edgtfInitVideoBackground(){
581
582    $('.edgtf-section .edgtf-video-wrap .edgtf-video').mediaelementplayer({
583        enableKeyboard: false,
584        iPadUseNativeControls: false,
585        pauseOtherPlayers: false,
586        // force iPhone's native controls
587        iPhoneUseNativeControls: false,
588        // force Android's native controls
589        AndroidUseNativeControls: false
590    });
591
592    //mobile check
593    if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){
594        edgtfInitVideoBackgroundSize();
595        $('.edgtf-section .edgtf-mobile-video-image').show();
596        $('.edgtf-section .edgtf-video-wrap').remove();
597    }
598}
599
600    /*
601     **	Calculate video background size
602     */
603    function edgtfInitVideoBackgroundSize(){
604
605        $('.edgtf-section .edgtf-video-wrap').each(function(){
606
607            var element = $(this);
608            var sectionWidth = element.closest('.edgtf-section').outerWidth();
609            element.width(sectionWidth);
610
611            var sectionHeight = element.closest('.edgtf-section').outerHeight();
612            edgtf.minVideoWidth = edgtf.videoRatio * (sectionHeight+20);
613            element.height(sectionHeight);
614
615            var scaleH = sectionWidth / edgtf.videoWidthOriginal;
616            var scaleV = sectionHeight / edgtf.videoHeightOriginal;
617            var scale =  scaleV;
618            if (scaleH > scaleV)
619                scale =  scaleH;
620            if (scale * edgtf.videoWidthOriginal < edgtf.minVideoWidth) {scale = edgtf.minVideoWidth / edgtf.videoWidthOriginal;}
621
622            element.find('video, .mejs-overlay, .mejs-poster').width(Math.ceil(scale * edgtf.videoWidthOriginal +2));
623            element.find('video, .mejs-overlay, .mejs-poster').height(Math.ceil(scale * edgtf.videoHeightOriginal +2));
624            element.scrollLeft((element.find('video').width() - sectionWidth) / 2);
625            element.find('.mejs-overlay, .mejs-poster').scrollTop((element.find('video').height() - (sectionHeight)) / 2);
626            element.scrollTop((element.find('video').height() - sectionHeight) / 2);
627        });
628
629    }
630
631    /*
632     **	Set content bottom margin because of the uncovering footer
633     */
634     function edgtfSetContentBottomMargin() {
635         var uncoverFooter = $('body:not(.error404) .edgtf-footer-uncover');
636
637         if(uncoverFooter.length && edgtf.windowWidth > 1024){
638             var footer = $('footer'),
639                 footerHeight = footer.find('.edgtf-footer-inner').outerHeight(),
640                 content = $('.edgtf-content');
641
642             var uncoveringCalcs = function() {
643                 content.css('margin-bottom', footerHeight);
644                 footer.css('height', footerHeight);
645             };
646             
647             //set
648             uncoveringCalcs();
649             content.css('background-color', edgtf.body.css('background-color'));
650
651             $(window).resize(function(){
652                 //recalc
653                 footerHeight = footer.find('.edgtf-footer-inner').outerHeight();
654                 uncoveringCalcs();
655             });
656        }
657    }
658
659    function edgtfDisableScroll() {
660
661        if (window.addEventListener) {
662            window.addEventListener('wheel', edgtfWheel, {passive: false});
663        }
664        // window.onmousewheel = document.onmousewheel = edgtfWheel;
665        document.onkeydown = edgtfKeydown;
666
667        if(edgtf.body.hasClass('edgtf-smooth-scroll')){
668            window.removeEventListener('mousewheel', smoothScrollListener, false);
669            window.removeEventListener('wheel', smoothScrollListener, {passive: false});
670        }
671    }
672
673    function edgtfEnableScroll() {
674        if (window.removeEventListener) {
675            window.removeEventListener('wheel', edgtfWheel, {passive: false});
676        }
677        window.onmousewheel = document.onmousewheel = document.onkeydown = null;
678
679        if(edgtf.body.hasClass('edgtf-smooth-scroll')){
680            window.addEventListener('mousewheel', smoothScrollListener, false);
681            window.addEventListener('wheel', smoothScrollListener, {passive: false});
682        }
683    }
684
685    function edgtfWheel(e) {
686        edgtfPreventDefaultValue(e);
687    }
688
689    function edgtfKeydown(e) {
690        var keys = [37, 38, 39, 40];
691
692        for (var i = keys.length; i--;) {
693            if (e.keyCode === keys[i]) {
694                edgtfPreventDefaultValue(e);
695                return;
696            }
697        }
698    }
699
700    function edgtfPreventDefaultValue(e) {
701        e = e || window.event;
702        if (e.preventDefault) {
703            e.preventDefault();
704        }
705        e.returnValue = false;
706    }
707
708    function edgtfInitSelfHostedVideoPlayer() {
709
710        var players = $('.edgtf-self-hosted-video');
711            players.mediaelementplayer({
712                audioWidth: '100%'
713            });
714    }
715
716	function edgtfSelfHostedVideoSize(){
717
718		$('.edgtf-self-hosted-video-holder .edgtf-video-wrap').each(function(){
719			var thisVideo = $(this);
720
721			var videoWidth = thisVideo.closest('.edgtf-self-hosted-video-holder').outerWidth();
722			var videoHeight = videoWidth / edgtf.videoRatio;
723
724			if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){
725				thisVideo.parent().width(videoWidth);
726				thisVideo.parent().height(videoHeight);
727			}
728
729			thisVideo.width(videoWidth);
730			thisVideo.height(videoHeight);
731
732			thisVideo.find('video, .mejs-overlay, .mejs-poster').width(videoWidth);
733			thisVideo.find('video, .mejs-overlay, .mejs-poster').height(videoHeight);
734		});
735	}
736
737    function edgtfToTopButton(a) {
738
739        var b = $("#edgtf-back-to-top");
740        b.removeClass('off on');
741        if (a === 'on') { b.addClass('on'); } else { b.addClass('off'); }
742    }
743
744    function edgtfBackButtonShowHide(){
745        edgtf.window.scroll(function () {
746            var b = $(this).scrollTop();
747            var c = $(this).height();
748            var d;
749            if (b > 0) { d = b + c / 2; } else { d = 1; }
750            if (d < 1e3) { edgtfToTopButton('off'); } else { edgtfToTopButton('on'); }
751        });
752    }
753
754    function edgtfInitBackToTop(){
755        var backToTopButton = $('#edgtf-back-to-top');
756        backToTopButton.on('click',function(e){
757            e.preventDefault();
758            edgtf.html.animate({scrollTop: 0}, edgtf.window.scrollTop()/2, 'easeInOutCubic');
759        });
760    }
761
762   function edgtfSmoothTransition() {
763
764        if (edgtf.body.hasClass('edgtf-smooth-page-transitions')) {
765
766            //check for preload animation
767            if (edgtf.body.hasClass('edgtf-smooth-page-transitions-preloader')) {
768                var loader = $('body > .edgtf-smooth-transition-loader.edgtf-mimic-ajax');
769                loader.fadeOut(500);
770                $(window).on("pageshow", function (event) {
771                    if (event.originalEvent.persisted) {
772                        loader.fadeOut(500);
773                    }
774                });
775            }
776
777            // if back button is pressed, than reload page to avoid state where content is on display:none
778
779            window.addEventListener( "pageshow", function ( event ) {
780                var historyPath = event.persisted || ( typeof window.performance != "undefined" && window.performance.navigation.type === 2 );
781                if ( historyPath ) {
782                    window.location.reload();
783                }
784            });
785
786            //check for fade out animation
787            if(edgtf.body.hasClass('edgtf-smooth-page-transitions-fadeout')) {
788                if ($('a').parent().hasClass('edgtf-blog-load-more-button') || $('a').parent().hasClass('edgtf-ptf-list-load-more')) {
789                    return false;
790                }
791                $('a').on('click',function (e) {
792                    var a = $(this);
793                    if (
794                        e.which == 1 && // check if the left mouse button has been pressed
795                        a.attr('href').indexOf(window.location.host) >= 0 && // check if the link is to the same domain
796                        (typeof a.data('rel') === 'undefined') && //Not pretty photo link
797                        (typeof a.attr('rel') === 'undefined') && //Not VC pretty photo link
798                        !a.hasClass('edgtf-like') && //Not like link
799                        !a.hasClass('edgtf-no-link') && //Not edgtf-no-link class
800                        (typeof a.attr('target') === 'undefined' || a.attr('target') === '_self') && // check if the link opens in the same window
801                        (a.attr('href').split('#')[0] !== window.location.href.split('#')[0]) // check if it is an anchor aiming for a different page
802                    ) {
803                        e.preventDefault();
804                        $('.edgtf-wrapper-inner').fadeOut(1000, function () {
805                            window.location = a.attr('href');
806                        });
807                    }
808                });
809            }
810        }
811    }
812	/*
813	 *	Animations for overlapping content
814	 */
815	function edgtfInitOverlapingAnimation(){
816
817		var touchClass = $('.edgtf-no-animations-on-touch'),
818			noAnimationsOnTouch = true,
819			elements = $('.edgtf-overlapping-content-holder');
820
821		if (touchClass.length) {
822			noAnimationsOnTouch = false;
823		}
824
825		if(elements.length){
826			elements.each(function(){
827                var element = $(this);
828                if(noAnimationsOnTouch) {
829                    element.appear(function() {
830                        setTimeout(function(){
831                            element.addClass('edgtf-animated');
832                        },100);
833                    },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount + 200});
834                } else {
835                    element.addClass('edgtf-appeared');
836                }
837			});
838		}
839
840	}
841
842    function edgtfElementorGlobal(){
843        $(window).on('elementor/frontend/init', function () {
844            elementorFrontend.hooks.addAction( 'frontend/element_ready/global', function() {
845                edgtfInitParallax();
846                edgtfInitElementsAnimations();
847            });
848        });
849    }
850
851})(jQuery);
852
853
854
855(function($) {
856    'use strict';
857
858    var ajax = {};
859
860    edgtf.modules.ajax = ajax;
861
862    var animation = {};
863    ajax.animation = animation;
864
865    ajax.edgtfFetchPage = edgtfFetchPage;
866    ajax.edgtfInitAjax = edgtfInitAjax;
867    ajax.edgtfHandleLinkClick = edgtfHandleLinkClick;
868    ajax.edgtfInsertFetchedContent = edgtfInsertFetchedContent;
869    ajax.edgtfInitBackBehavior = edgtfInitBackBehavior;
870    ajax.edgtfSetActiveState = edgtfSetActiveState;
871    ajax.edgtfReinitiateAll = edgtfReinitiateAll;
872    ajax.edgtfHandleMeta = edgtfHandleMeta;
873
874    ajax.edgtfOnDocumentReady = edgtfOnDocumentReady;
875    ajax.edgtfOnWindowLoad = edgtfOnWindowLoad;
876    ajax.edgtfOnWindowResize = edgtfOnWindowResize;
877    ajax.edgtfOnWindowScroll = edgtfOnWindowScroll;
878
879    $(document).ready(edgtfOnDocumentReady);
880    $(window).on('load', edgtfOnWindowLoad);
881    $(window).resize(edgtfOnWindowResize);
882    $(window).scroll(edgtfOnWindowScroll);
883    
884    /* 
885        All functions to be called on $(document).ready() should be in this function
886    */
887    function edgtfOnDocumentReady() {
888        edgtfInitAjax();
889    }
890
891    /* 
892        All functions to be called on $(window).load() should be in this function
893    */
894    function edgtfOnWindowLoad() {
895        edgtfHandleAjaxFader();
896    }
897
898    /* 
899        All functions to be called on $(window).resize() should be in this function
900    */
901    function edgtfOnWindowResize() {
902    }
903
904    /* 
905        All functions to be called on $(window).scroll() should be in this function
906    */
907    function edgtfOnWindowScroll() {
908    }
909
910
911    var loadedPageFlag = true; // Indicates whether the page is loaded
912    var firstLoad = true; // Indicates whether this is the first loaded page, for back button functionality
913    animation.type = null;
914    animation.time = 500; // Duration of animation for the content to be changed
915    animation.simultaneous = true; // False indicates that the new content should wait for the old content to disappear, true means that it appears at the same time as the old content disappears
916    animation.loader = null;
917    animation.loaderTime = 500;
918
919    /**
920     * Fetching the targeted page
921     */
922    function edgtfFetchPage(params, destinationSelector, targetSelector) {
923
924        function setDefaultParam(key,value) {
925            params[key] = typeof params[key] !== 'undefined' ? params[key] : value;
926        }
927
928        destinationSelector = typeof destinationSelector !== 'undefined' ? destinationSelector : '.edgtf-content';
929        targetSelector = typeof targetSelector !== 'undefined' ? targetSelector : '.edgtf-content';
930        
931        // setting default ajax parameters
932        params = typeof params !== 'undefined' ? params : {};
933
934        setDefaultParam('url', window.location.href);
935        setDefaultParam('type', 'POST');
936        setDefaultParam('success', function(response) {
937            var jResponse = $(response);
938
939            var meta = jResponse.find('.edgtf-meta');
940            if (meta.length) { edgtfHandleMeta(meta); }
941
942            var new_content = jResponse.find(targetSelector);
943            if (!new_content.length) {
944                loadedPageFlag = true;
945                return false;
946            }
947            else {
948                edgtfInsertFetchedContent(params.url, new_content, destinationSelector);
949            }
950        });
951
952        // setting data parameters
953        setDefaultParam('ajaxReq', 'yes');
954        //setDefaultParam('hasHeader', edgtf.body.find('header').length ? true : false);
955        //setDefaultParam('hasFooter', edgtf.body.find('footer').length ? true : false);
956
957        $.ajax({
958            url: params.url,
959            type: params.type,
960            data: {
961                ajaxReq: params.ajaxReq
962                //hasHeader: params.hasHeader,
963                //hasFooter: params.hasFooter
964            },
965            success: params.success
966        });
967    }
968
969    function edgtfHandleAjaxFader() {
970        var isElementorEditMode = false;
971
972        if( typeof elementorFrontend !== 'undefined'){
973            isElementorEditMode = Boolean(elementorFrontend.isEditMode());
974        }
975
976        if (animation.loader !== null && animation.loader.length) {
977            animation.loader.fadeOut(animation.loaderTime);
978            $(window).on("pageshow", function(event) {
979                if (event.originalEvent.persisted) {
980                    animation.loader.fadeOut(animation.loaderTime);
981                }
982            });
983        }
984
985        if(isElementorEditMode && animation.loader !== null){
986            animation.loader.fadeOut(animation.loaderTime);
987        }
988    }
989
990    function edgtfInitAjax() {
991        edgtf.body.removeClass('page-not-loaded'); // Might be necessary for ajax calls
992        animation.loader = $('body > .edgtf-smooth-transition-loader.edgtf-ajax');
993        if (animation.loader !== null && animation.loader.length) {
994
995            if(edgtf.body.hasClass('woocommerce') || edgtf.body.hasClass('woocommerce-page')) {
996                return false;
997            }
998            else {
999                edgtfInitBackBehavior();
1000                $(document).on('click', 'a[target!="_blank"]:not(.no-ajax):not(.no-link)', function(click) {
1001                    var link = $(this);
1002
1003                    if(click.ctrlKey == 1) { // Check if CTRL key is held with the click
1004                        window.open(link.attr('href'), '_blank');
1005                        return false;
1006                    }
1007
1008                    if(link.parents('.edgtf-ptf-load-more').length){ return false; } // Don't initiate ajax for portfolio load more link
1009
1010                    if(link.parents('.edgtf-blog-load-more-button').length){ return false; } // Don't initiate ajax for blog load more link
1011
1012                    if(link.parents('edgtf-post-info-comments').length){ // If it's a comment link, don't load any content, just scroll to the comments section
1013                        var hash = link.attr('href').split("#")[1];  
1014                        $('html, body').scrollTop( $("#"+hash).offset().top );  
1015                        return false;  
1016                    }
1017
1018                    if(window.location.href.split('#')[0] == link.attr('href').split('#')[0]){ return false; } //  If the link leads to the same page, don't use ajax
1019
1020                    if(link.closest('.edgtf-no-animation').length === 0){ // If no parents are set to no-animation...
1021
1022                        if(document.location.href.indexOf("?s=") >= 0){ // Don't use ajax if currently on search page
1023                            return true;
1024                        }
1025                        if(link.attr('href').indexOf("wp-admin") >= 0){ // Don't use ajax for wp-admin
1026                            return true;
1027                        }
1028                        if(link.attr('href').indexOf("wp-content") >= 0){ // Don't use ajax for wp-content
1029                            return true;
1030                        }
1031
1032                        if(jQuery.inArray(link.attr('href').split('#')[0], edgtfGlobalVars.vars.no_ajax_pages) !== -1){ // If the target page is a no-ajax page, don't use ajax
1033                            document.location.href = link.attr('href');
1034                            return false;
1035                        }
1036
1037                        if((link.attr('href') !== "http://#") && (link.attr('href') !== "#")){ // Don't use ajax if the link is empty
1038                            //disableHashChange = true;
1039
1040                            var url = link.attr('href');
1041                            var start = url.indexOf(window.location.protocol + '//' + window.location.host); // Check if the link leads to the same domain
1042                            if(start === 0){
1043                                if(!loadedPageFlag){ return false; } //if page is not loaded don't load next one
1044                                click.preventDefault();
1045                                click.stopImmediatePropagation();
1046                                click.stopPropagation();
1047                                if (!link.is('.current')) {
1048                                    edgtfHandleLinkClick(link);
1049                                }
1050                            }
1051
1052                        }else{
1053                            return false;
1054                        }
1055                    }
1056                });
1057            }
1058        }
1059    }
1060
1061    function edgtfInitBackBehavior() {
1062        if (window.history.pushState) {
1063            /* the below code is to override back button to get the ajax content without reload*/
1064            $(window).on('popstate', function() {
1065                "use strict";
1066
1067                var url = location.href;
1068                if (!firstLoad && loadedPageFlag) {
1069                    loadedPageFlag = false;
1070                    edgtfFetchPage({
1071                        url: url
1072                    });
1073                }
1074            });
1075        }
1076    }
1077
1078    function edgtfHandleLinkClick(link) {
1079        loadedPageFlag = false;
1080        animation.loader.fadeIn(animation.loaderTime);
1081        edgtfFetchPage({
1082            url: link.attr('href')
1083        });
1084    }
1085
1086    function edgtfSetActiveState(url) {
1087        var me = $("nav a[href='"+url+"'], .widget_nav_menu a[href='"+url+"']");
1088
1089        $('.edgtf-main-menu a, .edgtf-mobile-nav a, .edgtf-mobile-nav h4, .edgtf-vertical-menu a, .popup_menu a, .widget_nav_menu a').removeClass('current').parent().removeClass('edgtf-active-item');
1090        //$('.main_menu a, .mobile_menu a, .mobile_menu h4, .vertical_menu a, .popup_menu a').parent().removeClass('active');
1091        $('.widget_nav_menu ul.menu > li').removeClass('current-menu-item');
1092
1093        me.each(function() {
1094            var me = $(this);
1095
1096            if(me.closest('.edgtf-menu-second').length === 0){
1097                me.parent().addClass('edgtf-active-item');
1098            }else{
1099                me.closest('.edgtf-menu-second').parent().addClass('edgtf-active-item');
1100            }
1101
1102            if(me.closest('.edgtf-mobile-nav').length > 0){
1103                me.closest('.level0').addClass('edgtf-active-item');
1104                me.closest('.level1').addClass('edgtf-active-item');
1105                me.closest('.level2').addClass('edgtf-active-item');
1106            }
1107
1108            if(me.closest('.widget_nav_menu').length > 0){
1109                me.closest('.widget_nav_menu').find('.menu-item').addClass('current-menu-item');
1110            }
1111
1112
1113            //$('.edgtf-main-menu a, .edgtf-mobile-nav a, .edgtf-vertical-menu a, .popup_menu a').removeClass('current');
1114            me.addClass('current');
1115        });
1116    }
1117
1118    /**
1119     * Reinitialize all functions
1120     *
1121     * @param modulesToExclude - array of modules to exclude from reinitialization
1122     */
1123    function edgtfReinitiateAll( modulesToExclude ) {
1124        $(document).off(); // Remove all event handlers before reinitialization
1125        $(window).off();
1126        edgtf.body.off().find('*').off(); // Remove all event handlers before reinitialization
1127
1128        edgtf.edgtfOnDocumentReady(); // Trigger all functions upon new page load
1129        edgtf.edgtfOnWindowLoad(); // Trigger all functions upon new page load
1130        $(window).resize(edgtf.edgtfOnWindowResize); // Reassign handles for resize and scroll events
1131        $(window).scroll(edgtf.edgtfOnWindowScroll); // Reassign handles for resize and scroll events
1132
1133        var defaultModules = ['common', 'ajax', 'header', 'title', 'shortcodes', 'woocommerce', 'portfolio', 'blog', 'like'];
1134        var modules = [];
1135
1136        if ( typeof modulesToExclude !== 'undefined' && modulesToExclude.length ) {
1137            defaultModules.forEach(function(key) {
1138                if (-1 === modulesToExclude.indexOf(key)) {
1139                    modules.push(key);
1140                }
1141            }, this);
1142        } else {
1143            modules = defaultModules;
1144        }
1145
1146        for (var i=0; i<modules.length; i++) {
1147            if (typeof edgtf.modules[modules[i]] !== 'undefined') {
1148                edgtf.modules[modules[i]].edgtfOnDocumentReady(); // Trigger all functions upon new page load
1149                edgtf.modules[modules[i]].edgtfOnWindowLoad(); // Trigger all functions upon new page load
1150                $(window).resize(edgtf.modules[modules[i]].edgtfOnWindowResize); // Reassign handles for resize and scroll events
1151                $(window).scroll(edgtf.modules[modules[i]].edgtfOnWindowScroll); // Reassign handles for resize and scroll events
1152            }
1153        }
1154    }
1155
1156    function edgtfHandleMeta(meta_data) {
1157        // set up title, meta description and meta keywords
1158        var newTitle = meta_data.find(".edgtf-seo-title").text();
1159        var pageTransition = meta_data.find(".edgtf-page-transition").text();
1160        var newDescription = meta_data.find(".edgtf-seo-description").text();
1161        var newKeywords = meta_data.find(".edgtf-seo-keywords").text();
1162        if (typeof pageTransition !== 'undefined') {
1163            animation.type = pageTransition;
1164        } 
1165        if ($('head meta[name="description"]').length) {
1166            $('head meta[name="description"]').attr('content', newDescription);
1167        } else if (typeof newDescription !== 'undefined') {
1168            $('<meta name="description" content="'+newDescription+'">').prependTo($('head'));
1169        } 
1170        if ($('head meta[name="keywords"]').length) {
1171            $('head meta[name="keywords"]').attr('content', newKeywords);
1172        } else if (typeof newKeywords !== 'undefined') {
1173            $('<meta name="keywords" content="'+newKeywords+'">').prependTo($('head'));
1174        } 
1175        document.title = newTitle;
1176
1177        var newBodyClasses = meta_data.find(".edgtf-body-classes").text();
1178        var myArray = newBodyClasses.split(',');
1179        edgtf.body.removeClass();
1180        for(var i=0;i<myArray.length;i++){
1181            if (myArray[i] !== "edgtf-page-not-loaded"){
1182                edgtf.body.addClass(myArray[i]);
1183            }
1184        }
1185
1186        if($("#wp-admin-bar-edit").length > 0){
1187            // set up edit link when wp toolbar is enabled
1188            var pageId = meta_data.find("#edgtf-page-id").text();
1189            var old_link = $('#wp-admin-bar-edit a').attr("href");
1190            var new_link = old_link.replace(/(post=).*?(&)/,'$1' + pageId + '$2');
1191            $('#wp-admin-bar-edit a').attr("href", new_link);
1192        }
1193    }
1194
1195    function edgtfInsertFetchedContent(url, new_content, destinationSelector) {
1196        destinationSelector = typeof destinationSelector !== 'undefined' ? destinationSelector : '.edgtf-content';
1197        var destination = edgtf.body.find(destinationSelector);
1198        
1199        new_content.height(destination.height()).css({'position': 'absolute', 'opacity': 0, 'overflow': 'hidden'}).insertBefore(destination);
1200       
1201        new_content.waitForImages(function() {
1202            if (url.indexOf('#') !== -1) {
1203                $('<a class="edgtf-temp-anchor edgtf-anchor" href="'+url+'" style="display: none"></a>').appendTo('body');
1204            }
1205            edgtfReinitiateAll();
1206
1207            if (animation.type == "fade") {
1208                destination.stop().fadeTo(animation.time, 0, function() {
1209                    destination.remove();
1210                    if (window.history.pushState) {
1211                        if(url!==window.location.href){
1212                            window.history.pushState({path:url},'',url);
1213                        }
1214
1215                        //does Google Analytics code exists on page?
1216                        if(typeof _gaq !== 'undefined') {
1217                            //add new url to Google Analytics so it can be tracked
1218                            _gaq.push(['_trackPageview', url]);
1219                        }
1220                    } else {
1221                        document.location.href = window.location.protocol + '//' + window.location.host + '#' + url.split(window.location.protocol + '//' + window.location.host)[1];
1222                    }
1223                    edgtfSetActiveState(url);
1224                    edgtf.body.animate({scrollTop: 0}, animation.time, 'swing');
1225                });
1226                setTimeout(function() {
1227                    new_content.css('position','relative').height('').stop().fadeTo(animation.time, 1, function() {
1228                        loadedPageFlag = true;
1229                        firstLoad = false;
1230                        animation.loader.fadeOut(animation.loaderTime, function() {
1231                            var anch = $('.edgtf-temp-anchor');
1232                            if (anch.length) {
1233                                anch.trigger('click').remove();
1234                            }
1235                        });
1236                    });
1237                }, !animation.simultaneous * animation.time);
1238            }
1239        });
1240    }
1241
1242
1243})(jQuery);
1244(function($) {
1245    "use strict";
1246
1247    var header = {};
1248    edgtf.modules.header = header;
1249
1250    header.isStickyVisible = false;
1251    header.stickyAppearAmount = 0;
1252    header.stickyMobileAppearAmount = 0;
1253    header.behaviour;
1254    header.edgtfSideArea = edgtfSideArea;
1255    header.edgtfSideAreaScroll = edgtfSideAreaScroll;
1256    header.edgtfFullscreenMenu = edgtfFullscreenMenu;
1257    header.edgtfInitMobileNavigation = edgtfInitMobileNavigation;
1258    header.edgtfMobileHeaderBehavior = edgtfMobileHeaderBehavior;
1259    header.edgtfSetDropDownMenuPosition = edgtfSetDropDownMenuPosition;
1260    header.edgtfDropDownMenu = edgtfDropDownMenu;
1261    header.edgtfSearch = edgtfSearch;
1262
1263    header.edgtfOnDocumentReady = edgtfOnDocumentReady;
1264    header.edgtfOnWindowLoad = edgtfOnWindowLoad;
1265    header.edgtfOnWindowResize = edgtfOnWindowResize;
1266    header.edgtfOnWindowScroll = edgtfOnWindowScroll;
1267
1268    $(document).ready(edgtfOnDocumentReady);
1269    $(window).on('load', edgtfOnWindowLoad);
1270    $(window).resize(edgtfOnWindowResize);
1271    $(window).scroll(edgtfOnWindowScroll);
1272    
1273    /* 
1274        All functions to be called on $(document).ready() should be in this function
1275    */
1276    function edgtfOnDocumentReady() {
1277        edgtfHeaderBehaviour();
1278        edgtfSideArea();
1279        edgtfSideAreaScroll();
1280        edgtfFullscreenMenu();
1281        edgtfInitMobileNavigation();
1282        edgtfMobileHeaderBehavior();
1283        edgtfSetDropDownMenuPosition();
1284        edgtfSearch();
1285        edgtfVerticalMenu().init();
1286        edgtfShopDropDownMenu();
1287    }
1288
1289    /* 
1290        All functions to be called on $(window).load() should be in this function
1291    */
1292    function edgtfOnWindowLoad() {
1293        edgtfSetDropDownMenuPosition();
1294        edgtfDropDownMenu();
1295    }
1296
1297    /* 
1298        All functions to be called on $(window).resize() should be in this function
1299    */
1300    function edgtfOnWindowResize() {
1301        edgtfDropDownMenu();
1302    }
1303
1304    /* 
1305        All functions to be called on $(window).scroll() should be in this function
1306    */
1307    function edgtfOnWindowScroll() {
1308        
1309    }
1310
1311
1312
1313    /*
1314     **	Show/Hide sticky header on window scroll
1315     */
1316    function edgtfHeaderBehaviour() {
1317
1318        var header = $('.edgtf-page-header');
1319        var stickyHeader = $('.edgtf-sticky-header');
1320        var fixedHeaderWrapper = $('.edgtf-fixed-wrapper');
1321
1322        var headerMenuAreaOffset = $('.edgtf-page-header').find('.edgtf-fixed-wrapper').length ? $('.edgtf-page-header').find('.edgtf-fixed-wrapper').offset().top : null;
1323
1324        var stickyAppearAmount;
1325
1326
1327        switch(true) {
1328            // sticky header that will be shown when user scrolls up
1329            case edgtf.body.hasClass('edgtf-sticky-header-on-scroll-up'):
1330                edgtf.modules.header.behaviour = 'edgtf-sticky-header-on-scroll-up';
1331                var docYScroll1 = $(document).scrollTop();
1332                stickyAppearAmount = edgtfGlobalVars.vars.edgtfTopBarHeight + edgtfGlobalVars.vars.edgtfLogoAreaHeight + edgtfGlobalVars.vars.edgtfMenuAreaHeight + edgtfGlobalVars.vars.edgtfStickyHeaderHeight;
1333
1334                var headerAppear = function(){
1335                    var docYScroll2 = $(document).scrollTop();
1336
1337                    if((docYScroll2 > docYScroll1 && docYScroll2 > stickyAppearAmount) || (docYScroll2 < stickyAppearAmount)) {
1338                        edgtf.modules.header.isStickyVisible= false;
1339                        stickyHeader.removeClass('header-appear').find('.edgtf-main-menu .edgtf-menu-second').removeClass('edgtf-drop-down-start');
1340                    }else {
1341                        edgtf.modules.header.isStickyVisible = true;
1342                        stickyHeader.addClass('header-appear');
1343                    }
1344
1345                    docYScroll1 = $(document).scrollTop();
1346                };
1347                headerAppear();
1348
1349                $(window).scroll(function() {
1350                    headerAppear();
1351                });
1352
1353                break;
1354
1355            // sticky header that will be shown when user scrolls both up and down
1356            case edgtf.body.hasClass('edgtf-sticky-header-on-scroll-down-up'):
1357                edgtf.modules.header.behaviour = 'edgtf-sticky-header-on-scroll-down-up';
1358
1359                if(edgtfPerPageVars.vars.edgtfStickyScrollAmount !== 0){
1360                    edgtf.modules.header.stickyAppearAmount = edgtfPerPageVars.vars.edgtfStickyScrollAmount;
1361                }else{
1362                    edgtf.modules.header.stickyAppearAmount = edgtfGlobalVars.vars.edgtfStickyScrollAmount !== 0 ? edgtfGlobalVars.vars.edgtfStickyScrollAmount : edgtfGlobalVars.vars.edgtfTopBarHeight + edgtfGlobalVars.vars.edgtfLogoAreaHeight + edgtfGlobalVars.vars.edgtfMenuAreaHeight;
1363                }
1364
1365                var headerAppear = function(){
1366                    if(edgtf.scroll < edgtf.modules.header.stickyAppearAmount) {
1367                        edgtf.modules.header.isStickyVisible = false;
1368                        stickyHeader.removeClass('header-appear').find('.edgtf-main-menu .edgtf-menu-second').removeClass('edgtf-drop-down-start');
1369                    }else{
1370                        edgtf.modules.header.isStickyVisible = true;
1371                        stickyHeader.addClass('header-appear');
1372                    }
1373                };
1374
1375                headerAppear();
1376
1377                $(window).scroll(function() {
1378                    headerAppear();
1379                });
1380
1381                break;
1382
1383            // on scroll down, part of header will be sticky
1384            case edgtf.body.hasClass('edgtf-fixed-on-scroll'):
1385                edgtf.modules.header.behaviour = 'edgtf-fixed-on-scroll';
1386                var headerFixed = function(){
1387                    if(edgtf.scroll < headerMenuAreaOffset){
1388                        fixedHeaderWrapper.removeClass('fixed');
1389                        header.css('margin-bottom',0);}
1390                    else{
1391                        fixedHeaderWrapper.addClass('fixed');
1392                        header.css('margin-bottom',fixedHeaderWrapper.height());
1393                    }
1394                };
1395
1396                headerFixed();
1397
1398                $(window).scroll(function() {
1399                    headerFixed();
1400                });
1401
1402                break;
1403        }
1404    }
1405
1406    /**
1407     * Show/hide side area
1408     */
1409    function edgtfSideArea() {
1410
1411        var wrapper = $('.edgtf-wrapper'),
1412            sideMenu = $('.edgtf-side-menu'),
1413            sideMenuButtonOpen = $('a.edgtf-side-menu-button-opener'),
1414            cssClass,
1415        //Flags
1416            slideFromRight = false,
1417            slideWithContent = false,
1418            slideUncovered = false;
1419
1420        if (edgtf.body.hasClass('edgtf-side-menu-slide-from-right')) {
1421            $('.edgtf-cover').remove();
1422            cssClass = 'edgtf-right-side-menu-opened';
1423            wrapper.prepend('<div class="edgtf-cover"/>');
1424            slideFromRight = true;
1425
1426        } else if (edgtf.body.hasClass('edgtf-side-menu-slide-with-content')) {
1427
1428            cssClass = 'edgtf-side-menu-open';
1429            slideWithContent = true;
1430
1431        } else if (edgtf.body.hasClass('edgtf-side-area-uncovered-from-content')) {
1432
1433            cssClass = 'edgtf-right-side-menu-opened';
1434            slideUncovered = true;
1435
1436        }
1437
1438        $('a.edgtf-side-menu-button-opener, a.edgtf-close-side-menu').on('click', function(e) {
1439            e.preventDefault();
1440
1441            if(!sideMenuButtonOpen.hasClass('opened')) {
1442
1443                sideMenuButtonOpen.addClass('opened');
1444                edgtf.body.addClass(cssClass);
1445
1446                if (slideFromRight) {
1447                    $('.edgtf-wrapper .edgtf-cover').on('click',function() {
1448                        edgtf.body.removeClass('edgtf-right-side-menu-opened');
1449                        sideMenuButtonOpen.removeClass('opened');
1450                    });
1451                }
1452
1453                if (slideUncovered) {
1454                    sideMenu.css({
1455                        'visibility' : 'visible'
1456                    });
1457                }
1458
1459                var currentScroll = $(window).scrollTop();
1460                $(window).scroll(function() {
1461                    if(Math.abs(edgtf.scroll - currentScroll) > 400){
1462                        edgtf.body.removeClass(cssClass);
1463                        sideMenuButtonOpen.removeClass('opened');
1464                        if (slideUncovered) {
1465                            var hideSideMenu = setTimeout(function(){
1466                                sideMenu.css({'visibility':'hidden'});
1467                                clearTimeout(hideSideMenu);
1468                            },400);
1469                        }
1470                    }
1471                });
1472
1473            } else {
1474
1475                sideMenuButtonOpen.removeClass('opened');
1476                edgtf.body.removeClass(cssClass);
1477                if (slideUncovered) {
1478                    var hideSideMenu = setTimeout(function(){
1479                        sideMenu.css({'visibility':'hidden'});
1480                        clearTimeout(hideSideMenu);
1481                    },400);
1482                }
1483
1484            }
1485
1486            if (slideWithContent) {
1487
1488                e.stopPropagation();
1489                wrapper.on('click',function() {
1490                    e.preventDefault();
1491                    sideMenuButtonOpen.removeClass('opened');
1492                    edgtf.body.removeClass('edgtf-side-menu-open');
1493                });
1494
1495            }
1496
1497        });
1498
1499    }
1500
1501    /*
1502    **  Smooth scroll functionality for Side Area
1503    */
1504    function edgtfSideAreaScroll(){
1505
1506        var sideMenu = $('.edgtf-side-menu');
1507
1508        if(sideMenu.length){    
1509            sideMenu.niceScroll({ 
1510                scrollspeed: 60,
1511                mousescrollstep: 40,
1512                cursorwidth: 0, 
1513                cursorborder: 0,
1514                cursorborderradius: 0,
1515                cursorcolor: "transparent",
1516                autohidemode: false, 
1517                horizrailenabled: false 
1518            });
1519        }
1520    }
1521
1522    /**
1523     * Init Fullscreen Menu
1524     */
1525    function edgtfFullscreenMenu() {
1526
1527        if ($('a.edgtf-fullscreen-menu-opener').length) {
1528
1529            var popupMenuOpener = $( 'a.edgtf-fullscreen-menu-opener'),
1530                popupMenuHolderOuter = $(".edgtf-fullscreen-menu-holder-outer"),
1531                cssClass,
1532            //Flags for type of animation
1533                fadeRight = false,
1534                fadeTop = false,
1535            //Widgets
1536                widgetAboveNav = $('.edgtf-fullscreen-above-menu-widget-holder'),
1537                widgetBelowNav = $('.edgtf-fullscreen-below-menu-widget-holder'),
1538            //Menu
1539                menuItems = $('.edgtf-fullscreen-menu-holder-outer nav > ul > li > a'),
1540                menuItemWithChild =  $('.edgtf-fullscreen-menu > ul li.edgtf-has-sub > a'),
1541                menuItemWithoutChild = $('.edgtf-fullscreen-menu ul li:not(.edgtf-has-sub) a');
1542
1543
1544            //set height of popup holder and initialize nicescroll
1545            popupMenuHolderOuter.height(edgtf.windowHeight).niceScroll({
1546                scrollspeed: 30,
1547                mousescrollstep: 20,
1548                cursorwidth: 0,
1549                cursorborder: 0,
1550                cursorborderradius: 0,
1551                cursorcolor: "transparent",
1552                autohidemode: false,
1553                horizrailenabled: false
1554            }); //200 is top and bottom padding of holder
1555
1556            //set height of popup holder on resize
1557            $(window).resize(function() {
1558                popupMenuHolderOuter.height(edgtf.windowHeight);
1559            });
1560
1561            if (edgtf.body.hasClass('edgtf-fade-push-text-right')) {
1562                cssClass = 'edgtf-push-nav-right';
1563                fadeRight = true;
1564            } else if (edgtf.body.hasClass('edgtf-fade-push-text-top')) {
1565                cssClass = 'edgtf-push-text-top';
1566                fadeTop = true;
1567            }
1568
1569            //Appearing animation
1570            if (fadeRight || fadeTop) {
1571                if (widgetAboveNav.length) {
1572                    widgetAboveNav.children().css({
1573                        '-webkit-animation-delay' : 0 + 'ms',
1574                        '-moz-animation-delay' : 0 + 'ms',
1575                        'animation-delay' : 0 + 'ms'
1576                    });
1577                }
1578                menuItems.each(function(i) {
1579                    $(this).css({
1580                        '-webkit-animation-delay': (i+1) * 70 + 'ms',
1581                        '-moz-animation-delay': (i+1) * 70 + 'ms',
1582                        'animation-delay': (i+1) * 70 + 'ms'
1583                    });
1584                });
1585                if (widgetBelowNav.length) {
1586                    widgetBelowNav.children().css({
1587                        '-webkit-animation-delay' : (menuItems.length + 1)*70 + 'ms',
1588                        '-moz-animation-delay' : (menuItems.length + 1)*70 + 'ms',
1589                        'animation-delay' : (menuItems.length + 1)*70 + 'ms'
1590                    });
1591                }
1592            }
1593
1594            // Open popup menu
1595            popupMenuOpener.on('click',function(e){
1596                e.preventDefault();
1597
1598                if (!popupMenuOpener.hasClass('opened')) {
1599                    popupMenuOpener.addClass('opened');
1600                    edgtf.body.addClass('edgtf-fullscreen-menu-opened');
1601                    edgtf.body.removeClass('edgtf-fullscreen-fade-out').addClass('edgtf-fullscreen-fade-in');
1602                    edgtf.body.removeClass(cssClass);
1603                    if(!edgtf.body.hasClass('page-template-full_screen-php')){
1604                        edgtf.modules.common.edgtfDisableScroll();
1605                    }
1606                    $(document).keyup(function(e){
1607                        if (e.keyCode == 27 ) {
1608                            popupMenuOpener.removeClass('opened');
1609                            edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
1610                            edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
1611                            edgtf.body.addClass(cssClass);
1612                            if(!edgtf.body.hasClass('page-template-full_screen-php')){
1613                                edgtf.modules.common.edgtfEnableScroll();
1614                            }
1615                            $("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
1616                                $('nav.popup_menu').getNiceScroll().resize();
1617                            });
1618                        }
1619                    });
1620                } else {
1621                    popupMenuOpener.removeClass('opened');
1622                    edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
1623                    edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
1624                    edgtf.body.addClass(cssClass);
1625                    if(!edgtf.body.hasClass('page-template-full_screen-php')){
1626                        edgtf.modules.common.edgtfEnableScroll();
1627                    }
1628                    $("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
1629                        $('nav.popup_menu').getNiceScroll().resize();
1630                    });
1631                }
1632            });
1633
1634            //logic for open sub menus in popup menu
1635            menuItemWithChild.on('tap click', function(e) {
1636                e.preventDefault();
1637
1638                if ($(this).parent().hasClass('edgtf-has-sub')) {
1639                    var submenu = $(this).parent().find('> ul.sub_menu');
1640                    if (submenu.is(':visible')) {
1641                        submenu.slideUp(200, function() {
1642                            popupMenuHolderOuter.getNiceScroll().resize();
1643                        });
1644                        $(this).parent().removeClass('open_sub');
1645                    } else {
1646                        if($(this).parent().siblings().hasClass('open_sub')) {
1647                            $(this).parent().siblings().each(function() {
1648                                var sibling = $(this);
1649                                if(sibling.hasClass('open_sub')) {
1650                                    var openedUl = sibling.find('> ul.sub_menu')
1651                                    openedUl.slideUp(200, function () {
1652                                        popupMenuHolderOuter.getNiceScroll().resize();
1653                                    });
1654                                    sibling.removeClass('open_sub');
1655                                }
1656                                if(sibling.find('.open_sub')) {
1657                                    var openedUlUl = sibling.find('.open_sub').find('> ul.sub_menu')
1658                                    openedUlUl.slideUp(200, function () {
1659                                        popupMenuHolderOuter.getNiceScroll().resize();
1660                                    });
1661                                    sibling.find('.open_sub').removeClass('open_sub');
1662                                }
1663                            });
1664                        }
1665
1666                        $(this).parent().addClass('open_sub');
1667                        submenu.slideDown(200, function() {
1668                            popupMenuHolderOuter.getNiceScroll().resize();
1669                        });
1670                    }
1671                }
1672                return false;
1673            });
1674
1675            //if link has no submenu and if it's not dead, than open that link
1676            menuItemWithoutChild.on('click',function (e) {
1677
1678                if(($(this).attr('href') !== "http://#") && ($(this).attr('href') !== "#")){
1679
1680                    if (e.which == 1) {
1681                        popupMenuOpener.removeClass('opened');
1682                        edgtf.body.removeClass('edgtf-fullscreen-menu-opened');
1683                        edgtf.body.removeClass('edgtf-fullscreen-fade-in').addClass('edgtf-fullscreen-fade-out');
1684                        edgtf.body.addClass(cssClass);
1685                        $("nav.edgtf-fullscreen-menu ul.sub_menu").slideUp(200, function(){
1686                            $('nav.popup_menu').getNiceScroll().resize();
1687                        });
1688                        edgtf.modules.common.edgtfEnableScroll();
1689                    }
1690                }else{
1691                    return false;
1692                }
1693
1694            });
1695
1696        }
1697
1698
1699
1700    }
1701
1702    function edgtfInitMobileNavigation() {
1703        var navigationOpener = $('.edgtf-mobile-header .edgtf-mobile-menu-opener');
1704        var navigationHolder = $('.edgtf-mobile-header .edgtf-mobile-nav');
1705        var dropdownOpener = $('.edgtf-mobile-nav .mobile_arrow, .edgtf-mobile-nav h4, .edgtf-mobile-nav a[href*="#"]');
1706        var animationSpeed = 200;
1707
1708        //whole mobile menu opening / closing
1709        if(navigationOpener.length && navigationHolder.length) {
1710            navigationOpener.on('tap click', function(e) {
1711                e.stopPropagation();
1712                e.preventDefault();
1713
1714                if(navigationHolder.is(':visible')) {
1715                    navigationHolder.slideUp(animationSpeed);
1716                } else {
1717                    navigationHolder.slideDown(animationSpeed);
1718                }
1719            });
1720        }
1721
1722        //dropdown opening / closing
1723        if(dropdownOpener.length) {
1724            dropdownOpener.each(function() {
1725                $(this).on('tap click', function(e) {
1726                    var dropdownToOpen = $(this).nextAll('ul').first();
1727
1728                    if(dropdownToOpen.length) {
1729                        e.preventDefault();
1730                        e.stopPropagation();
1731
1732                        var openerParent = $(this).parent('li');
1733                        if(dropdownToOpen.is(':visible')) {
1734                            dropdownToOpen.slideUp(animationSpeed);
1735                            openerParent.removeClass('edgtf-opened');
1736                        } else {
1737                            dropdownToOpen.slideDown(animationSpeed);
1738                            openerParent.addClass('edgtf-opened');
1739                        }
1740                    }
1741
1742                });
1743            });
1744        }
1745
1746        $('.edgtf-mobile-nav a, .edgtf-mobile-logo-wrapper a').on('click tap', function(e) {
1747            if($(this).attr('href') !== 'http://#' && $(this).attr('href') !== '#') {
1748                navigationHolder.slideUp(animationSpeed);
1749            }
1750        });
1751    }
1752
1753    function edgtfMobileHeaderBehavior() {
1754        if(edgtf.body.hasClass('edgtf-sticky-up-mobile-header')) {
1755            var stickyAppearAmount;
1756            var topBar = $('.edgtf-top-bar');
1757            var mobileHeader = $('.edgtf-mobile-header');
1758            var adminBar     = $('#wpadminbar');
1759            var mobileHeaderHeight = mobileHeader.length ? mobileHeader.height() : 0;
1760            var topBarHeight = topBar.is(':visible') ? topBar.height() : 0;
1761            var adminBarHeight = adminBar.length ? adminBar.height() : 0;
1762
1763            var docYScroll1 = $(document).scrollTop();
1764            edgtf.modules.header.stickyMobileAppearAmount = topBarHeight + mobileHeaderHeight + adminBarHeight;
1765            stickyAppearAmount = edgtf.modules.header.stickyMobileAppearAmount;
1766
1767            $(window).scroll(function() {
1768                var docYScroll2 = $(document).scrollTop();
1769
1770                if(docYScroll2 > stickyAppearAmount) {
1771                    mobileHeader.addClass('edgtf-animate-mobile-header');
1772                    mobileHeader.css('margin-bottom',  mobileHeaderHeight);
1773                } else {
1774                    mobileHeader.removeClass('edgtf-animate-mobile-header');
1775                    mobileHeader.css('margin-bottom', 0);
1776                }
1777
1778                if((docYScroll2 > docYScroll1 && docYScroll2 > stickyAppearAmount) || (docYScroll2 < stickyAppearAmount)) {
1779                    mobileHeader.removeClass('mobile-header-appear');
1780                    if(adminBar.length) {
1781                        mobileHeader.find('.edgtf-mobile-header-inner').css('top', 0);
1782                    }
1783                } else {
1784                    mobileHeader.addClass('mobile-header-appear');
1785
1786                }
1787
1788                docYScroll1 = $(document).scrollTop();
1789            });
1790        }
1791    }
1792
1793    /**
1794     * Set dropdown position
1795     */
1796    function edgtfSetDropDownMenuPosition(){
1797
1798        var menuItems = $(".edgtf-drop-down > ul >
1798 li.edgtf-menu-narrow");
1799        menuItems.each( function(i) {
1800
1801            var browserWidth = edgtf.windowWidth-16; // 16 is width of scroll bar
1802            var menuItemPosition = $(this).offset().left;
1803            var dropdownMenuWidth = $(this).find('.edgtf-menu-second .edgtf-menu-inner ul').width();
1804
1805            var menuItemFromLeft = 0;
1806            if(edgtf.body.hasClass('boxed')){
1807                menuItemFromLeft = edgtf.boxedLayoutWidth  - (menuItemPosition - (browserWidth - edgtf.boxedLayoutWidth )/2);
1808            } else {
1809                menuItemFromLeft = browserWidth - menuItemPosition;
1810            }
1811
1812            var dropDownMenuFromLeft; //has to stay undefined beacuse 'dropDownMenuFromLeft < dropdownMenuWidth' condition will be true
1813
1814            if($(this).find('li.edgtf-sub').length > 0){
1815                dropDownMenuFromLeft = menuItemFromLeft - dropdownMenuWidth;
1816            }
1817
1818            if(menuItemFromLeft < dropdownMenuWidth || dropDownMenuFromLeft < dropdownMenuWidth){
1819                $(this).find('.edgtf-menu-second').addClass('right');
1820                $(this).find('.edgtf-menu-second .edgtf-menu-inner ul').addClass('right');
1821            }
1822        });
1823
1824    }
1825
1826
1827    function edgtfDropDownMenu() {
1828
1829        var menu_items = $('.edgtf-drop-down > ul > li');
1830
1831        menu_items.each(function(i) {
1832            if($(menu_items[i]).find('.edgtf-menu-second').length > 0) {
1833
1834                var dropDownSecondDiv = $(menu_items[i]).find('.edgtf-menu-second');
1835
1836                if($(menu_items[i]).hasClass('edgtf-menu-wide')) {
1837
1838                    var dropdown = $(this).find('.edgtf-menu-inner > ul');
1839                    var dropdownPadding = parseInt(dropdown.css('padding-left').slice(0, -2)) + parseInt(dropdown.css('padding-right').slice(0, -2));
1840                    var dropdownWidth = dropdown.outerWidth();
1841
1842                    if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
1843                        dropDownSecondDiv.css('left', 0);
1844                    }
1845
1846                    //set columns to be same height - start
1847                    var tallest = 0;
1848                    $(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').each(function() {
1849                        var thisHeight = $(this).height();
1850                        if(thisHeight > tallest) {
1851                            tallest = thisHeight;
1852                        }
1853                    });
1854                    $(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').css("height", ""); // delete old inline css - via resize
1855                    $(this).find('.edgtf-menu-second > .edgtf-menu-inner > ul > li').height(tallest);
1856                    //set columns to be same height - end
1857
1858                    if(!$(this).hasClass('wide-background')) {
1859                        if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
1860                            var left_position = (edgtf.windowWidth - 2 * (edgtf.windowWidth - dropdown.offset().left)) / 2 + (dropdownWidth + dropdownPadding) / 2;
1861                            dropDownSecondDiv.css('left', -left_position);
1862                        }
1863                    } else {
1864                        if(!$(this).hasClass('edgtf-menu-left-position') && !$(this).hasClass('edgtf-menu-right-position')) {
1865                            var left_position = dropdown.offset().left;
1866
1867                            dropDownSecondDiv.css('left', -left_position);
1868                            dropDownSecondDiv.css('width', edgtf.windowWidth);
1869
1870                        }
1871                    }
1872                }
1873
1874                if(!edgtf.menuDropdownHeightSet) {
1875                    $(menu_items[i]).data('original_height', dropDownSecondDiv.height() + 'px');
1876                    dropDownSecondDiv.height(0);
1877                }
1878
1879                if(navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
1880                    $(menu_items[i]).on("touchstart mouseenter", function() {
1881                        dropDownSecondDiv.css({
1882                            'height': $(menu_items[i]).data('original_height'),
1883                            'overflow': 'visible',
1884                            'visibility': 'visible',
1885                            'opacity': '1'
1886                        });
1887                    }).on("mouseleave", function() {
1888                        dropDownSecondDiv.css({
1889                            'height': '0px',
1890                            'overflow': 'hidden',
1891                            'visibility': 'hidden',
1892                            'opacity': '0'
1893                        });
1894                    });
1895
1896                } else {
1897                    if(edgtf.body.hasClass('edgtf-dropdown-animate-height')) {
1898
1899                        $(menu_items[i]).mouseenter(function() {
1900                            dropDownSecondDiv.css({
1901                                'visibility': 'visible',
1902                                'height': '0px',
1903                                'opacity': '0'
1904                            });
1905                            dropDownSecondDiv.stop().animate({
1906                                'height': $(menu_items[i]).data('original_height'),
1907                                opacity: 1
1908                            }, 300, function() {
1909                                dropDownSecondDiv.css('overflow', 'visible');
1910                            });
1911                        }).mouseleave(function() {
1912                            dropDownSecondDiv.stop().animate({
1913                                'height': '0px' 
1914                            }, 0, function() {
1915                                dropDownSecondDiv.css({
1916                                    'overflow': 'hidden',
1917                                    'visibility': 'hidden'
1918                                });
1919                            });
1920                        });
1921
1922                    } else {
1923                        var config = {
1924                            interval: 0,
1925                            over: function() {
1926                                setTimeout(function() {
1927                                    dropDownSecondDiv.addClass('edgtf-drop-down-start');
1928                                    dropDownSecondDiv.stop().css({'height': $(menu_items[i]).data('original_height')});
1929                                }, 150);
1930                            },
1931                            timeout: 150,
1932                            out: function() {
1933                                dropDownSecondDiv.stop().css({'height': '0px'});
1934                                dropDownSecondDiv.removeClass('edgtf-drop-down-start');
1935                            }
1936                        };
1937                        $(menu_items[i]).hoverIntent(config);
1938                    }
1939                }
1940            }
1941        });
1942         $('.edgtf-drop-down ul li.edgtf-menu-wide ul li a').on('click', function(e) {
1943            if (e.which == 1){
1944                var $this = $(this);
1945                setTimeout(function() {
1946                    $this.mouseleave();
1947                }, 500);
1948            }
1949        });
1950
1951        edgtf.menuDropdownHeightSet = true;
1952    }
1953
1954    function edgtfShopDropDownMenu() {
1955        if (edgtf.body.hasClass('edgtf-dropdown-animate-height')) {
1956            var shoppingCart = $('.edgtf-shopping-cart-outer');
1957
1958            shoppingCart.mouseenter(function() {
1959            var shopMenu = $(this).find(".edgtf-shopping-cart-dropdown"),
1960                shopMenuHeight = shopMenu.height();
1961
1962            shopMenu.css({
1963                'visibility': 'visible',
1964                'height': '0px',
1965                'opacity': '0'
1966            });
1967
1968            shopMenu.stop().animate({ 
1969                'height': shopMenuHeight,
1970                'opacity': '1'
1971            }, 600 ,'easeInOutQuint');
1972
1973            }).mouseleave(function() {
1974
1975            var shopMenu = $(this).find(".edgtf-shopping-cart-dropdown");
1976
1977            shopMenu.css({
1978                'height': 'auto'
1979            });
1980
1981            var shopMenuHeight = shopMenu.height();
1982
1983                $(".edgtf-shopping-cart-dropdown").stop().animate({
1984                    'opacity': '0',
1985                    'height': shopMenuHeight
1986                }, 0, function() {
1987                    shopMenu.css({
1988                        'overflow': 'hidden',
1989                        'visibility': 'hidden'
1990                    });
1991                });
1992            });
1993        }
1994    }
1995
1996    /**
1997     * Init Search Types
1998     */
1999    function edgtfSearch() {
2000
2001        var searchOpener = $('a.edgtf-search-opener'),
2002            searchClose,
2003            touch = false;
2004
2005        if ( $('html').hasClass( 'touch' ) ) {
2006            touch = true;
2007        }
2008
2009        if ( searchOpener.length > 0 ) {
2010
2011            searchOpener.each(function(){
2012                var thisSearchOpener = $(this);
2013
2014                //Check for type of search
2015                if ( edgtf.body.hasClass( 'edgtf-fullscreen-search' ) ) {
2016
2017                    var fullscreenSearchFade = false,
2018                        fullscreenSearchFromCircle = false;
2019
2020                    searchClose = $( '.edgtf-fullscreen-search-close' );
2021
2022                    if (edgtf.body.hasClass('edgtf-search-fade')) {
2023                        fullscreenSearchFade = true;
2024                    } else if (edgtf.body.hasClass('edgtf-search-from-circle')) {
2025                        fullscreenSearchFromCircle = true;
2026                    }
2027                    edgtfFullscreenSearch( fullscreenSearchFade, fullscreenSearchFromCircle );
2028
2029                } else if ( edgtf.body.hasClass( 'edgtf-search-covers-header' ) ) {
2030
2031                    edgtfSearchCoversHeader();
2032
2033                }
2034
2035                //Check for hover color of search
2036                if(typeof thisSearchOpener.data('hover-color') !== 'undefined') {
2037                    var changeSearchColor = function(event) {
2038                        event.data.searchOpener.css('color', event.data.color);
2039                    };
2040
2041                    var originalColor = thisSearchOpener.css('color');
2042                    var hoverColor = thisSearchOpener.data('hover-color');
2043
2044                    thisSearchOpener.on('mouseenter', { searchOpener: thisSearchOpener, color: hoverColor }, changeSearchColor);
2045                    thisSearchOpener.on('mouseleave', { searchOpener: thisSearchOpener, color: originalColor }, changeSearchColor);
2046                }
2047
2048            });
2049        }
2050
2051        /**
2052         * Search covers header type of search
2053         */
2054        function edgtfSearchCoversHeader() {
2055
2056            searchOpener.on('click', function(e) {
2057                e.preventDefault();
2058                var searchFormHeight,
2059                    searchFormHolder = $('.edgtf-search-cover .edgtf-form-holder-outer'),
2060                    searchFormHolderPosition = $('.edgtf-search-cover .edgtf-form-holder-outer'),
2061                    searchClose = searchFormHolder.find('.edgtf-search-close'),
2062                    searchForm,
2063                    searchFormLandmark; // there is one more div element if header is in grid
2064
2065                if($(this).closest('.edgtf-grid').length){
2066                    searchForm = $(this).closest('.edgtf-grid').children().first();
2067                    searchFormLandmark = searchForm.parent();
2068                }
2069                else{
2070                    searchForm = $(this).closest('.edgtf-menu-area').children().first();
2071                    searchFormLandmark = searchForm;
2072                }
2073
2074                if ( $(this).closest('.edgtf-sticky-header').length > 0 ) {
2075                    searchForm = $(this).closest('.edgtf-sticky-header').children().first();
2076	                searchFormLandmark = searchForm.parent();
2077	                searchFormHolderPosition = $(this).closest('.edgtf-sticky-header').find('.edgtf-form-holder-outer');
2078                }
2079                if ( $(this).closest('.edgtf-mobile-header').length > 0 ) {
2080                    searchForm = $(this).closest('.edgtf-mobile-header').children().children().first();
2081                }
2082
2083                //Find search form position in header and height
2084                if ( searchFormLandmark.parent().hasClass('edgtf-logo-area') ) {
2085                    searchFormHeight = edgtfGlobalVars.vars.edgtfLogoAreaHeight;
2086                } else if ( searchFormLandmark.parent().hasClass('edgtf-top-bar') ) {
2087                    searchFormHeight = edgtfGlobalVars.vars.edgtfTopBarHeight;
2088                } else if ( searchFormLandmark.parent().hasClass('edgtf-menu-area') ) {
2089                    searchFormHeight = edgtfGlobalVars.vars.edgtfMenuAreaHeight - edgtfGlobalVars.vars.edgtfTopBarHeight;
2090                } else if ( searchFormLandmark.hasClass('edgtf-sticky-header') ) {
2091                    searchFormHeight = edgtfGlobalVars.vars.edgtfStickyHeaderHeight;
2092                } else if ( searchFormLandmark.parent().hasClass('edgtf-mobile-header') ) {
2093                    searchFormHeight = $('.edgtf-mobile-header-inner').height();
2094                }
2095
2096
2097                searchFormHolder.height(searchFormHeight);
2098                searchForm.stop(true).fadeIn(400, 'easeInOutQuint');
2099                
2100                searchClose.css({'left':searchOpener.offset().left - searchFormHolderPosition.offset().left,'right':'auto'});
2101                $('.edgtf-search-cover input[type="text"]').focus();
2102                $('.edgtf-search-close, .edgtf-content, footer').on('click',function(e){
2103                    e.preventDefault();
2104                    searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
2105                });
2106                searchForm.blur(function() {
2107                    searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
2108                });
2109                //Close on escape
2110                $(document).keyup(function(e){
2111                    if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
2112                        searchForm.stop(true).fadeOut(250, 'easeInOutQuint');
2113                    }
2114                });
2115            });
2116
2117        }
2118
2119        /**
2120         * Fullscreen search (two types: fade and from circle)
2121         */
2122        function edgtfFullscreenSearch( fade, fromCircle ) {
2123
2124            var searchHolder = $( '.edgtf-fullscreen-search-holder'),
2125                searchOverlay = $( '.edgtf-fullscreen-search-overlay' );
2126
2127            searchOpener.on('click', function(e) {
2128                e.preventDefault();
2129                var samePosition = false;
2130                if ( $(this).data('icon-close-same-position') === 'yes' ) {
2131                    var closeTop = $(this).offset().top;
2132                    var closeLeft = $(this).offset().left;
2133                    samePosition = true;
2134                }
2135                //Fullscreen search fade
2136                if ( fade ) {
2137                    if ( searchHolder.hasClass( 'edgtf-animate' ) ) {
2138                        edgtf.body.removeClass('edgtf-fullscreen-search-opened');
2139                        edgtf.body.addClass( 'edgtf-search-fade-out' );
2140                        edgtf.body.removeClass( 'edgtf-search-fade-in' );
2141                        searchHolder.removeClass( 'edgtf-animate' );
2142                        if(!edgtf.body.hasClass('page-template-full_screen-php')){
2143                            edgtf.modules.common.edgtfEnableScroll();
2144                        }
2145                    } else {
2146                        edgtf.body.addClass('edgtf-fullscreen-search-opened');
2147                        edgtf.body.removeClass('edgtf-search-fade-out');
2148                        edgtf.body.addClass('edgtf-search-fade-in');
2149                        searchHolder.addClass('edgtf-animate');
2150                        if (samePosition) {
2151                            searchClose.css({
2152                                'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
2153                                'left' : closeLeft
2154                            });
2155                        }
2156                        if(!edgtf.body.hasClass('page-template-full_screen-php')){
2157                            edgtf.modules.common.edgtfDisableScroll();
2158                        }
2159                    }
2160                    searchClose.on('click', function(e) {
2161                        e.preventDefault();
2162                        edgtf.body.removeClass('edgtf-fullscreen-search-opened');
2163                        searchHolder.removeClass('edgtf-animate');
2164                        edgtf.body.removeClass('edgtf-search-fade-in');
2165                        edgtf.body.addClass('edgtf-search-fade-out');
2166                        if(!edgtf.body.hasClass('page-template-full_screen-php')){
2167                            edgtf.modules.common.edgtfEnableScroll();
2168                        }
2169                    });
2170                    //Close on escape
2171                    $(document).keyup(function(e){
2172                        if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
2173                            edgtf.body.removeClass('edgtf-fullscreen-search-opened');
2174                            searchHolder.removeClass('edgtf-animate');
2175                            edgtf.body.removeClass('edgtf-search-fade-in');
2176                            edgtf.body.addClass('edgtf-search-fade-out');
2177                            if(!edgtf.body.hasClass('page-template-full_screen-php')){
2178                                edgtf.modules.common.edgtfEnableScroll();
2179                            }
2180                        }
2181                    });
2182                }
2183                //Fullscreen search from circle
2184                if ( fromCircle ) {
2185                    if( searchOverlay.hasClass('edgtf-animate') ) {
2186                        searchOverlay.removeClass('edgtf-animate');
2187                        searchHolder.css({
2188                            'opacity': 0,
2189                            'display':'none'
2190                        });
2191                        searchClose.css({
2192                            'opacity' : 0,
2193                            'visibility' : 'hidden'
2194                        });
2195                        searchOpener.css({
2196                            'opacity': 1
2197                        });
2198                    } else {
2199                        searchOverlay.addClass('edgtf-animate');
2200                        searchHolder.css({
2201                            'display':'block'
2202                        });
2203                        setTimeout(function(){
2204                            searchHolder.css('opacity','1');
2205                            searchClose.css({
2206                                'opacity' : 1,
2207                                'visibility' : 'visible',
2208                                'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
2209                                'left' : closeLeft
2210                            });
2211                            if (samePosition) {
2212                                searchClose.css({
2213                                    'top' : closeTop - edgtf.scroll, // Distance from top of viewport ( distance from top of window - scroll distance )
2214                                    'left' : closeLeft
2215                                });
2216                            }
2217                            searchOpener.css({
2218                                'opacity' : 0
2219                            });
2220                        },200);
2221                        if(!edgtf.body.hasClass('page-template-full_screen-php')){
2222                            edgtf.modules.common.edgtfDisableScroll();
2223                        }
2224                    }
2225                    searchClose.on('click',function(e) {
2226                        e.preventDefault();
2227                        searchOverlay.removeClass('edgtf-animate');
2228                        searchHolder.css({
2229                            'opacity' : 0,
2230                            'display' : 'none'
2231                        });
2232                        searchClose.css({
2233                            'opacity':0,
2234                            'visibility' : 'hidden'
2235                        });
2236                        searchOpener.css({
2237                            'opacity' : 1
2238                        });
2239                        if(!edgtf.body.hasClass('page-template-full_screen-php')){
2240                            edgtf.modules.common.edgtfEnableScroll();
2241                        }
2242                    });
2243                    //Close on escape
2244                    $(document).keyup(function(e){
2245                        if (e.keyCode == 27 ) { //KeyCode for ESC button is 27
2246                            searchOverlay.removeClass('edgtf-animate');
2247                            searchHolder.css({
2248                                'opacity' : 0,
2249                                'display' : 'none'
2250                            });
2251                            searchClose.css({
2252                                'opacity':0,
2253                                'visibility' : 'hidden'
2254                            });
2255                            searchOpener.css({
2256                                'opacity' : 1
2257                            });
2258                            if(!edgtf.body.hasClass('page-template-full_screen-php')){
2259                                edgtf.modules.common.edgtfEnableScroll();
2260                            }
2261                        }
2262                    });
2263                }
2264            });
2265
2266            //Text input focus change
2267            $('.edgtf-fullscreen-search-holder .edgtf-search-field').focus(function(){
2268                $('.edgtf-fullscreen-search-holder .edgtf-field-holder .edgtf-line').css("width","100%");
2269            });
2270
2271            $('.edgtf-fullscreen-search-holder .edgtf-search-field').blur(function(){
2272                $('.edgtf-fullscreen-search-holder .edgtf-field-holder .edgtf-line').css("width","0");
2273            });
2274
2275        }
2276
2277    }
2278
2279    /**
2280     * Function object that represents vertical menu area.
2281     * @returns {{init: Function}}
2282     */
2283    var edgtfVerticalMenu = function() {
2284        /**
2285         * Main vertical area object that used through out function
2286         * @type {jQuery object}
2287         */
2288        var verticalMenuObject = $('.edgtf-vertical-menu-area');
2289
2290        /**
2291         * Resizes vertical area. Called whenever height of navigation area changes
2292         * It first check if vertical area is scrollable, and if it is resizes scrollable area
2293         */
2294        //var resizeVerticalArea = function() {
2295        //    if(verticalAreaScrollable()) {
2296        //        verticalMenuObject.getNiceScroll().resize();
2297        //    }
2298        //};
2299
2300        /**
2301         * Checks if vertical area is scrollable (if it has edgtf-with-scroll class)
2302         *
2303         * @returns {bool}
2304         */
2305        //var verticalAreaScrollable = function() {
2306        //    return verticalMenuObject.hasClass('.edgtf-with-scroll');
2307        //};
2308
2309        /**
2310         * Initialzes navigation functionality. It checks navigation type data attribute and calls proper functions
2311         */
2312        var initNavigation = function() {
2313            var verticalNavObject = verticalMenuObject.find('.edgtf-vertical-menu');
2314            var navigationType = typeof verticalNavObject.data('navigation-type') !== 'undefined' ? verticalNavObject.data('navigation-type') : '';
2315
2316            switch(navigationType) {
2317                default:
2318                    dropdownFloat();
2319                    break;
2320            }
2321
2322            /**
2323             * Initializes floating navigation type (it comes from the side as a dropdown)
2324             */
2325            function dropdownFloat() {
2326                var menuItems = verticalNavObject.find('ul li.menu-item-has-children');
2327                var allDropdowns = menuItems.find(' > .edgtf-menu-second, > ul');
2328
2329                menuItems.each(function() {
2330                    var elementToExpand = $(this).find(' > .edgtf-menu-second, > ul');
2331                    var menuItem = this;
2332
2333                    if(Modernizr.touch) {
2334                        var dropdownOpener = $(this).find('> a');
2335
2336                        dropdownOpener.on('click tap', function(e) {
2337                            e.preventDefault();
2338                            e.stopPropagation();
2339
2340                            if(elementToExpand.hasClass('edgtf-float-open')) {
2341                                elementToExpand.removeClass('edgtf-float-open');
2342                                $(menuItem).removeClass('open');
2343                            } else {
2344                                if(!$(this).parents('li').hasClass('open')) {
2345                                    menuItems.removeClass('open');
2346                                    allDropdowns.removeClass('edgtf-float-open');
2347                                }
2348
2349                                elementToExpand.addClass('edgtf-float-open');
2350                                $(menuItem).addClass('open');
2351                            }
2352                        });
2353                    } else {
2354                        //must use hoverIntent because basic hover effect doesn't catch dropdown
2355                        //it doesn't start from menu item's edge
2356                        $(this).hoverIntent({
2357                            over: function() {
2358                                elementToExpand.addClass('edgtf-float-open');
2359                                $(menuItem).addClass('open');
2360                            },
2361                            out: function() {
2362                                elementToExpand.removeClass('edgtf-float-open');
2363                                $(menuItem).removeClass('open');
2364                            },
2365                            timeout: 300
2366                        });
2367                    }
2368                });
2369            }
2370
2371        };
2372
2373
2374        return {
2375            /**
2376             * Calls all necessary functionality for vertical menu area if vertical area object is valid
2377             */
2378            init: function() {
2379                if(verticalMenuObject.length) {
2380                    initNavigation();
2381                }
2382            }
2383        };
2384    };
2385
2386})(jQuery);
2387(function($) {
2388    "use strict";
2389
2390    var title = {};
2391    edgtf.modules.title = title;
2392
2393    title.edgtfParallaxTitle = edgtfParallaxTitle;
2394
2395    title.edgtfOnDocumentReady = edgtfOnDocumentReady;
2396    title.edgtfOnWindowLoad = edgtfOnWindowLoad;
2397    title.edgtfOnWindowResize = edgtfOnWindowResize;
2398    title.edgtfOnWindowScroll = edgtfOnWindowScroll;
2399
2400    $(document).ready(edgtfOnDocumentReady);
2401    $(window).on('load', edgtfOnWindowLoad);
2402    $(window).resize(edgtfOnWindowResize);
2403    $(window).scroll(edgtfOnWindowScroll);
2404    
2405    /* 
2406        All functions to be called on $(document).ready() should be in this function
2407    */
2408    function edgtfOnDocumentReady() {
2409        edgtfParallaxTitle();
2410    }
2411
2412    /* 
2413        All functions to be called on $(window).load() should be in this function
2414    */
2415    function edgtfOnWindowLoad() {
2416
2417    }
2418
2419    /* 
2420        All functions to be called on $(window).resize() should be in this function
2421    */
2422    function edgtfOnWindowResize() {
2423
2424    }
2425
2426    /* 
2427        All functions to be called on $(window).scroll() should be in this function
2428    */
2429    function edgtfOnWindowScroll() {
2430
2431    }
2432    
2433
2434    /*
2435     **	Title image with parallax effect
2436     */
2437    function edgtfParallaxTitle(){
2438        if($('.edgtf-title.edgtf-has-parallax-background').length > 0 && $('.touch').length === 0){
2439
2440            var parallaxBackground = $('.edgtf-title.edgtf-has-parallax-background');
2441            var parallaxBackgroundWithZoomOut = $('.edgtf-title.edgtf-has-parallax-background.edgtf-zoom-out');
2442
2443            var backgroundSizeWidth = parseInt(parallaxBackground.data('background-width').match(/\d+/));
2444            var titleHolderHeight = parallaxBackground.data('height');
2445            var titleRate = (titleHolderHeight / 10000) * 7;
2446            var titleYPos = -(edgtf.scroll * titleRate);
2447
2448            //set position of background on doc ready
2449            parallaxBackground.css({'background-position': 'center '+ (titleYPos+edgtfGlobalVars.vars.edgtfAddForAdminBar) +'px' });
2450            parallaxBackgroundWithZoomOut.css({'background-size': backgroundSizeWidth-edgtf.scroll + 'px auto'});
2451
2452            //set position of background on window scroll
2453            $(window).scroll(function() {
2454                titleYPos = -(edgtf.scroll * titleRate);
2455                parallaxBackground.css({'background-position': 'center ' + (titleYPos+edgtfGlobalVars.vars.edgtfAddForAdminBar) + 'px' });
2456                parallaxBackgroundWithZoomOut.css({'background-size': backgroundSizeWidth-edgtf.scroll + 'px auto'});
2457            });
2458
2459        }
2460    }
2461
2462})(jQuery);
2463
2464(function($) {
2465    'use strict';
2466
2467    var shortcodes = {};
2468
2469    edgtf.modules.shortcodes = shortcodes;
2470
2471    shortcodes.edgtfInitCounter = edgtfInitCounter;
2472    shortcodes.edgtfInitProgressBars = edgtfInitProgressBars;
2473    shortcodes.edgtfInitCountdown = edgtfInitCountdown;
2474    shortcodes.edgtfInitMessages = edgtfInitMessages;
2475    shortcodes.edgtfInitMessageHeight = edgtfInitMessageHeight;
2476    shortcodes.edgtfInitTestimonials = edgtfInitTestimonials;
2477    shortcodes.edgtfInitCarousels = edgtfInitCarousels;
2478    shortcodes.edgtfInitPieChart = edgtfInitPieChart;
2479    shortcodes.edgtfInitPieChartDoughnut = edgtfInitPieChartDoughnut;
2480    shortcodes.edgtfInitTabs = edgtfInitTabs;
2481    shortcodes.edgtfInitTabIcons = edgtfInitTabIcons;
2482    shortcodes.edgtfInitBlogListMasonry = edgtfInitBlogListMasonry;
2483    shortcodes.edgtfInitBlogSlider = edgtfInitBlogSlider;
2484    shortcodes.edgtfCustomFontTypeOut = edgtfCustomFontTypeOut;
2485    shortcodes.edgtfCustomFontResize = edgtfCustomFontResize;
2486    shortcodes.edgtfInitImageGallery = edgtfInitImageGallery;
2487    shortcodes.edgtfProjectPresentationSlider = edgtProjectPresentationSlider;
2488    shortcodes.edgtfInitAccordions = edgtfInitAccordions;
2489    shortcodes.edgtfShowGoogleMap = edgtfShowGoogleMap;
2490    shortcodes.edgtfInitPortfolioListMasonry = edgtfInitPortfolioListMasonry;
2491    shortcodes.edgtfInitPortfolioListPinterest = edgtfInitPortfolioListPinterest;
2492    shortcodes.edgtfInitPortfolio = edgtfInitPortfolio;
2493    shortcodes.edgtfInitPortfolioMasonryFilter = edgtfInitPortfolioMasonryFilter;
2494    shortcodes.edgtfInitPortfolioSlider = edgtfInitPortfolioSlider;
2495    shortcodes.edgtfInitPortfolioLoadMore = edgtfInitPortfolioLoadMore;
2496    shortcodes.edgtfCheckSliderForHeaderStyle = edgtfCheckSliderForHeaderStyle;
2497    shortcodes.edgtfInitShopListMasonry = edgtfInitShopListMasonry;
2498    shortcodes.edgtfItemShowcase = edgtfItemShowcase;
2499    shortcodes.edgtfAnimationsHolder = edgtfAnimationsHolder;
2500    shortcodes.edgtfInitImageGalleryMasonry = edgtfInitImageGalleryMasonry;
2501    shortcodes.edgtfReservationFormDatePicker = edgtfReservationFormDatePicker;
2502    shortcodes.edgtfBanner = edgtfBanner;
2503    shortcodes.edgtfInitGiveSlider = edgtfInitGiveSlider;
2504    shortcodes.edgtfInitMasonryGallery = edgtfInitMasonryGallery;
2505
2506    shortcodes.edgtfOnDocumentReady = edgtfOnDocumentReady;
2507    shortcodes.edgtfOnWindowLoad = edgtfOnWindowLoad;
2508    shortcodes.edgtfOnWindowResize = edgtfOnWindowResize;
2509    shortcodes.edgtfOnWindowScroll = edgtfOnWindowScroll;
2510
2511    $(document).ready(edgtfOnDocumentReady);
2512    $(window).on('load', edgtfOnWindowLoad);
2513    $(window).resize(edgtfOnWindowResize);
2514    $(window).scroll(edgtfOnWindowScroll);
2515
2516    /* 
2517        All functions to be called on $(document).ready() should be in this function
2518    */
2519    function edgtfOnDocumentReady() {
2520        edgtfInitCounter();
2521        edgtfInitProgressBars();
2522        edgtfInitCountdown();
2523        edgtfIcon().init();
2524        edgtfInitMessages();
2525        edgtfInitMessageHeight();
2526        edgtfInitTestimonials();
2527        edgtfInitCarousels();
2528        edgtfInitPieChart();
2529        edgtfInitPieChartDoughnut();
2530        edgtfInitTabs();
2531        edgtfInitElementsHolderResponsiveStyle();
2532        edgtfInitTabIcons();
2533        edgtfButton().init();
2534        edgtfInitBlogListMasonry();
2535		edgtfInitBlogSlider();
2536        edgtfCustomFontResize();
2537        edgtfInitImageGallery();
2538        edgtProjectPresentationSlider();
2539        edgtfInitAccordions();
2540        edgtfShowGoogleMap();
2541        edgtfInitPortfolioListMasonry();
2542        edgtfInitPortfolioListPinterest();
2543        edgtfInitPortfolio();
2544        edgtfInitPortfolioMasonryFilter();
2545        edgtfInitPortfolioSlider();
2546        edgtfInitPortfolioLoadMore();
2547        edgtfSlider().init();
2548        edgtfSocialIconWidget().init();
2549        edgtfInitIconList().init();
2550        edgtfInitShopListMasonry();
2551        edgtfInitMasonryGallery();
2552        edgtfItemShowcase();
2553        edgtfCustomFontTypeOut();
2554        edgtfInitImageGalleryMasonry();
2555        edgtfReservationFormDatePicker();
2556        edgtfBanner();
2557    }
2558
2559    /* 
2560        All functions to be called on $(window).load() should be in this function
2561    */
2562    function edgtfOnWindowLoad() {
2563        edgtfAnimationsHolder();
2564        edgtfInitGiveSlider();
2565    }
2566
2567    /* 
2568        All functions to be called on $(window).resize() should be in this function
2569    */
2570    function edgtfOnWindowResize() {
2571        edgtfInitBlogListMasonry();
2572		//edgtfInitBlogSlider();
2573        edgtfCustomFontResize();
2574        edgtfInitPortfolioListMasonry();
2575        edgtfInitPortfolioListPinterest();
2576        edgtfInitMessageHeight();
2577    }
2578
2579    /* 
2580        All functions to be called on $(window).scroll() should be in this function
2581    */
2582    function edgtfOnWindowScroll() {
2583        
2584    }
2585    
2586
2587    /**
2588     * Counter Shortcode
2589     */
2590    function edgtfInitCounter() {
2591
2592        var counters = $('.edgtf-counter');
2593
2594
2595        if (counters.length) {
2596            counters.each(function() {
2597                var counter = $(this);
2598                counter.appear(function() {
2599                    counter.parent().addClass('edgtf-counter-holder-show');
2600
2601                    //Counter zero type
2602                    if (counter.hasClass('zero')) {
2603                        var max = parseFloat(counter.text());
2604                        counter.countTo({
2605                            from: 0,
2606                            to: max,
2607                            speed: 1500,
2608                            refreshInterval: 100
2609                        });
2610                    } else {
2611                        counter.absoluteCounter({
2612                            speed: 2000,
2613                            fadeInDelay: 1000
2614                        });
2615                    }
2616
2617                },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
2618            });
2619
2620            var counterTitle = $('.edgtf-counter-title');
2621            if(counterTitle.length){
2622                counterTitle.each(function(){
2623                    var thisTitle = $(this);
2624                    if(typeof thisTitle.data('hover-color') !== 'undefined') {
2625                        var changeTitleColor = function(event) {
2626                            event.data.thisTitle.css('color', event.data.color);
2627                        };
2628
2629                        var originalColor = thisTitle.css('color');
2630                        var hoverColor = thisTitle.data('hover-color');
2631
2632                        thisTitle.on('mouseenter', { thisTitle: thisTitle, color: hoverColor }, changeTitleColor);
2633                        thisTitle.on('mouseleave', { thisTitle: thisTitle, color: originalColor }, changeTitleColor);
2634                    }
2635                });
2636            }
2637        }
2638
2639    }
2640
2641    /*
2642     **	Elements Holder responsive style
2643     */
2644    function edgtfInitElementsHolderResponsiveStyle(){
2645
2646        var elementsHolder = $('.edgtf-elements-holder');
2647
2648        if(elementsHolder.length){
2649            elementsHolder.each(function() {
2650                var thisElementsHolder = $(this),
2651                    elementsHolderItem = thisElementsHolder.children('.edgtf-elements-holder-item'),
2652                    style = '',
2653                    responsiveStyle = '';
2654
2655                elementsHolderItem.each(function() {
2656                    var thisItem = $(this),
2657                        itemClass = '',
2658                        largeLaptop = '',
2659                        smallLaptop = '',
2660                        ipadLandscape = '',
2661                        ipadPortrait = '',
2662                        mobileLandscape = '',
2663                        mobilePortrait = '';
2664
2665                    if (typeof thisItem.data('item-class') !== 'undefined' && thisItem.data('item-class') !== false) {
2666                        itemClass = thisItem.data('item-class');
2667                    }
2668                    if (typeof thisItem.data('1280-1600') !== 'undefined' && thisItem.data('1280-1600') !== false) {
2669                        largeLaptop = thisItem.data('1280-1600');
2670                    }
2671                    if (typeof thisItem.data('1024-1280') !== 'undefined' && thisItem.data('1024-1280') !== false) {
2672                        smallLaptop = thisItem.data('1024-1280');
2673                    }
2674                    if (typeof thisItem.data('768-1024') !== 'undefined' && thisItem.data('768-1024') !== false) {
2675                        ipadLandscape = thisItem.data('768-1024');
2676                    }
2677                    if (typeof thisItem.data('600-768') !== 'undefined' && thisItem.data('600-768') !== false) {
2678                        ipadPortrait = thisItem.data('600-768');
2679                    }
2680                    if (typeof thisItem.data('480-600') !== 'undefined' && thisItem.data('480-600') !== false) {
2681                        mobileLandscape = thisItem.data('480-600');
2682                    }
2683                    if (typeof thisItem.data('480') !== 'undefined' && thisItem.data('480') !== false) {
2684                        mobilePortrait = thisItem.data('480');
2685                    }
2686
2687                    if(largeLaptop.length || smallLaptop.length || ipadLandscape.length || ipadPortrait.length || mobileLandscape.length || mobilePortrait.length) {
2688
2689                        if(largeLaptop.length) {
2690                            responsiveStyle += "@media only screen and (min-width: 1280px) and (max-width: 1600px) {.edgtf-elements-holder-item-content."+item
2690Class+" { padding: "+largeLaptop+" !important; } }";
2691                        }
2692                        if(smallLaptop.length) {
2693                            responsiveStyle += "@media only screen and (min-width: 1024px) and (max-width: 1280px) {.edgtf-elements-holder-item-content."+itemClass+" { padding: "+smallLaptop+" !important; } }";
2694                        }
2695                        if(ipadLandscape.length) {
2696                            responsiveStyle += "@media only screen and (min-width: 768px) and (max-width: 1024px) {.edgtf-elements-holder-item-content."+itemClass+" { padding: "+ipadLandscape+" !important; } }";
2697                        }
2698                        if(ipadPortrait.length) {
2699                            responsiveStyle += "@media only screen and (min-width: 600px) and (max-width: 768px) {.edgtf-elements-holder-item-content."+itemClass+" { padding: "+ipadPortrait+" !important; } }";
2700                        }
2701                        if(mobileLandscape.length) {
2702                            responsiveStyle += "@media only screen and (min-width: 480px) and (max-width: 600px) {.edgtf-elements-holder-item-content."+itemClass+" { padding: "+mobileLandscape+" !important; } }";
2703                        }
2704                        if(mobilePortrait.length) {
2705                            responsiveStyle += "@media only screen and (max-width: 480px) {.edgtf-elements-holder-item-content."+itemClass+" { padding: "+mobilePortrait+" !important; } }";
2706                        }
2707                    }
2708                });
2709
2710                if(responsiveStyle.length) {
2711                    style = '<style type="text/css" data-type="goodwish_style_handle_shortcodes_custom_css">'+responsiveStyle+'</style>';
2712                }
2713
2714                if(style.length) {
2715                    $('head').append(style);
2716                }
2717            });
2718        }
2719    }
2720    
2721    /*
2722    **	Horizontal progress bars shortcode
2723    */
2724    function edgtfInitProgressBars(){
2725        
2726        var progressBar = $('.edgtf-progress-bar');
2727        
2728        if(progressBar.length){
2729            
2730            progressBar.each(function() {
2731                
2732                var thisBar = $(this);
2733                
2734                thisBar.appear(function() {
2735                    edgtfInitToCounterProgressBar(thisBar);
2736                    if(thisBar.find('.edgtf-floating.edgtf-floating-inside') !== 0){
2737                        var floatingInsideMargin = thisBar.find('.edgtf-progress-content').height();
2738                        floatingInsideMargin += parseFloat(thisBar.find('.edgtf-progress-title-holder').css('padding-bottom'));
2739                        floatingInsideMargin += parseFloat(thisBar.find('.edgtf-progress-title-holder').css('margin-bottom'));
2740                        thisBar.find('.edgtf-floating-inside').css('margin-bottom',-(floatingInsideMargin)+'px');
2741                    }
2742                    var percentage = thisBar.find('.edgtf-progress-content').data('percentage'),
2743                        progressContent = thisBar.find('.edgtf-progress-content'),
2744                        progressNumber = thisBar.find('.edgtf-progress-number');
2745
2746                    progressContent.css('width', '0%');
2747                    progressContent.animate({'width': percentage+'%'}, 1500);
2748                    progressNumber.css('left', '0%');
2749                    progressNumber.animate({'left': percentage+'%'}, 1500);
2750
2751                });
2752            });
2753        }
2754    }
2755
2756    /*
2757    **	Counter for horizontal progress bars percent from zero to defined percent
2758    */
2759    function edgtfInitToCounterProgressBar(progressBar){
2760        var percentage = parseFloat(progressBar.find('.edgtf-progress-content').data('percentage'));
2761        var percent = progressBar.find('.edgtf-progress-number .edgtf-percent');
2762        if(percent.length) {
2763            percent.each(function() {
2764                var thisPercent = $(this);
2765                thisPercent.parents('.edgtf-progress-number-wrapper').css('opacity', '1');
2766                thisPercent.countTo({
2767                    from: 0,
2768                    to: percentage,
2769                    speed: 1500,
2770                    refreshInterval: 50
2771                });
2772            });
2773        }
2774    }
2775    
2776    /*
2777    **	Function to close message shortcode
2778    */
2779    function edgtfInitMessages(){
2780        var message = $('.edgtf-message');
2781        if(message.length){
2782            message.each(function(){
2783                var thisMessage = $(this);
2784                thisMessage.find('.edgtf-close').on('click',function(e){
2785                    e.preventDefault();
2786                    $(this).parent().parent().fadeOut(500);
2787                });
2788            });
2789        }
2790    }
2791    
2792    /*
2793    **	Init message height
2794    */
2795    function edgtfInitMessageHeight(){
2796       var message = $('.edgtf-message.edgtf-with-icon');
2797       if(message.length){
2798           message.each(function(){
2799               var thisMessage = $(this);
2800               var textHolderHeight = thisMessage.find('.edgtf-message-text-holder').height();
2801               var iconHolderHeight = thisMessage.find('.edgtf-message-icon-holder').height();
2802               
2803               if(textHolderHeight > iconHolderHeight) {
2804                   thisMessage.find('.edgtf-message-icon-holder').height(textHolderHeight);
2805               } else {
2806                   thisMessage.find('.edgtf-message-text-holder').height(iconHolderHeight);
2807               }
2808           });
2809       }
2810    }
2811
2812    /**
2813     * Countdown Shortcode
2814     */
2815    function edgtfInitCountdown() {
2816
2817        var countdowns = $('.edgtf-countdown'),
2818            date = new Date(),
2819            currentMonth = date.getMonth(),
2820            currentYear = date.getFullYear(),
2821            year,
2822            month,
2823            day,
2824            hour,
2825            minute,
2826            timezone,
2827            monthLabel,
2828            dayLabel,
2829            hourLabel,
2830            minuteLabel,
2831            secondLabel;
2832
2833        if (countdowns.length) {
2834
2835            countdowns.each(function(){
2836
2837                //Find countdown elements by id-s
2838                var countdownId = $(this).attr('id'),
2839                    countdown = $('#'+countdownId),
2840                    digitFontSize,
2841                    labelFontSize,
2842	                digitColor,
2843	                labelColor;
2844
2845                //Get data for countdown
2846                year = countdown.data('year');
2847                month = countdown.data('month');
2848                day = countdown.data('day');
2849                hour = countdown.data('hour');
2850                minute = countdown.data('minute');
2851                timezone = countdown.data('timezone');
2852                monthLabel = countdown.data('month-label');
2853                dayLabel = countdown.data('day-label');
2854                hourLabel = countdown.data('hour-label');
2855                minuteLabel = countdown.data('minute-label');
2856                secondLabel = countdown.data('second-label');
2857                digitFontSize = countdown.data('digit-size');
2858                labelFontSize = countdown.data('label-size');
2859                digitColor = countdown.data('digit-color');
2860                labelColor = countdown.data('label-color');
2861    
2862                if( currentMonth !== month || currentYear !== year ) {
2863                    month = month - 1;
2864                }
2865                
2866                //Initialize countdown
2867                countdown.countdown({
2868                    until: new Date(year, month, day, hour, minute, 44),
2869                    labels: ['Years', monthLabel, 'Weeks', dayLabel, hourLabel, minuteLabel, secondLabel],
2870                    format: 'ODHMS',
2871                    timezone: timezone,
2872                    padZeroes: true,
2873                    onTick: setCountdownStyle
2874                });
2875
2876                function setCountdownStyle() {
2877                    countdown.find('.countdown-amount').css({
2878                        'font-size' : digitFontSize+'px'
2879                    });
2880	                countdown.find('.countdown-amount').css({
2881                        'color' : digitColor
2882                    });
2883                    countdown.find('.countdown-period').css({
2884                        'font-size' : labelFontSize+'px'
2885                    });
2886	                countdown.find('.countdown-period').css({
2887                        'color' : labelColor
2888                    });
2889                }
2890
2891            });
2892
2893        }
2894
2895    }
2896
2897    /**
2898     * Object that represents icon shortcode
2899     * @returns {{init: Function}} function that initializes icon's functionality
2900     */
2901    var edgtfIcon = edgtf.modules.shortcodes.edgtfIcon = function() {
2902        //get all icons on page
2903        var icons = $('.edgtf-icon-shortcode');
2904
2905        /**
2906         * Function that triggers icon animation and icon animation delay
2907         */
2908        var iconAnimation = function(icon) {
2909            if(icon.hasClass('edgtf-icon-animation')) {
2910                icon.appear(function() {
2911                    icon.parent('.edgtf-icon-animation-holder').addClass('edgtf-icon-animation-show');
2912                }, {accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
2913            }
2914        };
2915
2916        /**
2917         * Function that triggers icon hover color functionality
2918         */
2919        var iconHoverColor = function(icon) {
2920            if(typeof icon.data('hover-color') !== 'undefined') {
2921                var changeIconColor = function(event) {
2922                    event.data.icon.css('color', event.data.color);
2923                };
2924
2925                var iconElement = icon.find('.edgtf-icon-element');
2926                var hoverColor = icon.data('hover-color');
2927                var originalColor = iconElement.css('color');
2928
2929                if(hoverColor !== '') {
2930                    icon.on('mouseenter', {icon: iconElement, color: hoverColor}, changeIconColor);
2931                    icon.on('mouseleave', {icon: iconElement, color: originalColor}, changeIconColor);
2932                }
2933            }
2934        };
2935
2936        /**
2937         * Function that triggers icon holder background color hover functionality
2938         */
2939        var iconHolderBackgroundHover = function(icon) {
2940            if(typeof icon.data('hover-background-color') !== 'undefined') {
2941                var changeIconBgColor = function(event) {
2942                    event.data.icon.css('background-color', event.data.color);
2943                };
2944
2945                var hoverBackgroundColor = icon.data('hover-background-color');
2946                var originalBackgroundColor = icon.css('background-color');
2947
2948                if(hoverBackgroundColor !== '') {
2949                    icon.on('mouseenter', {icon: icon, color: hoverBackgroundColor}, changeIconBgColor);
2950                    icon.on('mouseleave', {icon: icon, color: originalBackgroundColor}, changeIconBgColor);
2951                }
2952            }
2953        };
2954
2955        /**
2956         * Function that initializes icon holder border hover functionality
2957         */
2958        var iconHolderBorderHover = function(icon) {
2959            if(typeof icon.data('hover-border-color') !== 'undefined') {
2960                var changeIconBorder = function(event) {
2961                    event.data.icon.css('border-color', event.data.color);
2962                };
2963
2964                var hoverBorderColor = icon.data('hover-border-color');
2965                var originalBorderColor = icon.css('border-color');
2966
2967                if(hoverBorderColor !== '') {
2968                    icon.on('mouseenter', {icon: icon, color: hoverBorderColor}, changeIconBorder);
2969                    icon.on('mouseleave', {icon: icon, color: originalBorderColor}, changeIconBorder);
2970                }
2971            }
2972        };
2973
2974        return {
2975            init: function() {
2976                if(icons.length) {
2977                    icons.each(function() {
2978                        iconAnimation($(this));
2979                        iconHoverColor($(this));
2980                        iconHolderBackgroundHover($(this));
2981                        iconHolderBorderHover($(this));
2982                    });
2983
2984                }
2985            }
2986        };
2987    };
2988
2989    /**
2990     * Object that represents social icon widget
2991     * @returns {{init: Function}} function that initializes icon's functionality
2992     */
2993    var edgtfSocialIconWidget = edgtf.modules.shortcodes.edgtfSocialIconWidget = function() {
2994        //get all social icons on page
2995        var icons = $('.edgtf-social-icon-widget-holder');
2996
2997        /**
2998         * Function that triggers icon hover color functionality
2999         */
3000        var socialIconHoverColor = function(icon) {
3001            if(typeof icon.data('hover-color') !== 'undefined') {
3002                var changeIconColor = function(event) {
3003                    event.data.icon.css('color', event.data.color);
3004                };
3005
3006                var iconElement = icon;
3007                var hoverColor = icon.data('hover-color');
3008                var originalColor = iconElement.css('color');
3009
3010                if(hoverColor !== '') {
3011                    icon.on('mouseenter', {icon: iconElement, color: hoverColor}, changeIconColor);
3012                    icon.on('mouseleave', {icon: iconElement, color: originalColor}, changeIconColor);
3013                }
3014            }
3015        };
3016
3017        return {
3018            init: function() {
3019                if(icons.length) {
3020                    icons.each(function() {
3021                        socialIconHoverColor($(this));
3022                    });
3023
3024                }
3025            }
3026        };
3027    };
3028
3029    /**
3030     * Init testimonials shortcode
3031     */
3032    function edgtfInitTestimonials(){
3033
3034        var testimonial = $('.edgtf-testimonials');
3035        if(testimonial.length){
3036            testimonial.each(function(){
3037
3038                var thisTestimonial = $(this);
3039
3040                thisTestimonial.waitForImages(function() {
3041                    thisTestimonial.css('visibility','visible');
3042                });
3043
3044                var auto = true;
3045                var controlNav = true;
3046                var directionNav = true;
3047                var animationSpeed = 1000;
3048				var responsive;
3049				var slidesToShow = 1;
3050
3051                if(typeof thisTestimonial.data('animation-speed') !== 'undefined' && thisTestimonial.data('animation-speed') !== false) {
3052                    animationSpeed = thisTestimonial.data('animation-speed');
3053                }
3054
3055				if(typeof thisTestimonial.data('dots-navigation') !== 'undefined') {
3056					controlNav = thisTestimonial.data('dots-navigation');
3057				}
3058				if(typeof thisTestimonial.data('arrows-navigation') !== 'undefined') {
3059					directionNav = thisTestimonial.data('arrows-navigation');
3060				}
3061
3062				if(thisTestimonial.hasClass('edgtf-testimonials-type-carousel')){
3063					slidesToShow = 3;
3064
3065					responsive = [
3066						{
3067							breakpoint: 1024,
3068							settings: {
3069								slidesToShow: 2,
3070								slidesToScroll: 1,
3071								infinite: true,
3072								dots: false
3073							}
3074						},
3075						{
3076							breakpoint: 600,
3077							settings: {
3078								slidesToShow: 1,
3079								slidesToScroll: 1
3080							}
3081						}
3082					]
3083				}
3084
3085				thisTestimonial.slick({
3086					infinite: true,
3087					autoplay: auto,
3088					slidesToShow : slidesToShow,
3089					arrows: directionNav,
3090					dots: controlNav,
3091					dotsClass: 'edgtf-slick-dots',
3092					adaptiveHeight: true,
3093                    speed: animationSpeed,
3094                    easing:'easeOutCubic',
3095					prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
3096					nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
3097					customPaging: function(slider, i) {
3098						return '<span class="edgtf-slick-dot-inner"></span>';
3099					},
3100					responsive: responsive,
3101				});
3102            });
3103
3104        }
3105
3106    }
3107
3108    /**
3109     * Init Carousel shortcode
3110     */
3111    function edgtfInitCarousels() {
3112
3113        var carouselHolders = $('.edgtf-carousel-holder'),
3114            carousel,
3115            numberOfItems,
3116			arrowsNavigation,
3117			dotsNavigation;
3118
3119        if (carouselHolders.length) {
3120            carouselHolders.each(function(){
3121                carousel = $(this).children('.edgtf-carousel');
3122                numberOfItems = carousel.data('items');
3123                arrowsNavigation = (carousel.data('arrows-navigation') == 'yes') ? true : false;
3124                dotsNavigation = (carousel.data('dots-navigation') == 'yes') ? true : false;
3125
3126                //Responsive breakpoints
3127
3128      			carousel.slick({
3129					infinite: true,
3130					autoplay: true,
3131					slidesToShow : numberOfItems,
3132					arrows: arrowsNavigation,
3133					dots: dotsNavigation,
3134					dotsClass: 'edgtf-slick-dots',
3135					adaptiveHeight: true,
3136                    easing:'easeOutCubic',
3137					prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
3138					nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
3139					customPaging: function(slider, i) {
3140						return '<span class="edgtf-slick-dot-inner"></span>';
3141					},
3142					responsive: [
3143						{
3144							breakpoint: 1024,
3145							settings: {
3146								slidesToShow: 3,
3147								slidesToScroll: 1
3148							}
3149						},
3150						{
3151							breakpoint: 600,
3152							settings: {
3153								slidesToShow: 2,
3154								slidesToScroll: 1
3155							}
3156						},
3157						{
3158							breakpoint: 480,
3159							settings: {
3160								slidesToShow: 1,
3161								slidesToScroll: 1
3162							}
3163						}
3164					]
3165				});
3166
3167
3168			});
3169        }
3170
3171    }
3172
3173    /**
3174     * Init Pie Chart and Pie Chart With Icon shortcode
3175     */
3176    function edgtfInitPieChart() {
3177
3178        var pieCharts = $('.edgtf-pie-chart-holder, .edgtf-pie-chart-with-icon-holder');
3179
3180        if (pieCharts.length) {
3181
3182            pieCharts.each(function () {
3183
3184                var pieChart = $(this),
3185                    percentageHolder = pieChart.children('.edgtf-percentage, .edgtf-percentage-with-icon'),
3186                    barColor = '#ffb422',
3187                    trackColor = '#f6f4ee',
3188                    lineWidth = 6,
3189                    size = 180;
3190
3191                if(typeof percentageHolder.data('bar-color') !== 'undefined' && percentageHolder.data('bar-color') !== '') {
3192                    barColor = percentageHolder.data('bar-color');
3193                }
3194
3195                if(typeof percentageHolder.data('track-color') !== 'undefined' && percentageHolder.data('track-color') !== '') {
3196                    trackColor = percentageHolder.data('track-color');
3197                }
3198
3199                percentageHolder.appear(function() {
3200                    initToCounterPieChart(pieChart);
3201                    percentageHolder.css('opacity', '1');
3202
3203                    percentageHolder.easyPieChart({
3204                        barColor: barColor,
3205                        trackColor: trackColor,
3206                        scaleColor: false,
3207                        lineCap: 'butt',
3208                        lineWidth: lineWidth,
3209                        animate: 1500,
3210                        size: size
3211                    });
3212                },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
3213
3214            });
3215
3216        }
3217
3218    }
3219
3220    /*
3221     **	Counter for pie chart number from zero to defined number
3222     */
3223    function initToCounterPieChart( pieChart ){
3224
3225        pieChart.css('opacity', '1');
3226        var counter = pieChart.find('.edgtf-to-counter'),
3227            max = parseFloat(counter.text());
3228        counter.countTo({
3229            from: 0,
3230            to: max,
3231            speed: 1500,
3232            refreshInterval: 50
3233        });
3234
3235    }
3236
3237    /**
3238     * Init Pie Chart shortcode
3239     */
3240    function edgtfInitPieChartDoughnut() {
3241
3242        var pieCharts = $('.edgtf-pie-chart-doughnut-holder, .edgtf-pie-chart-pie-holder');
3243
3244        pieCharts.each(function(){
3245
3246            var pieChart = $(this),
3247                canvas = pieChart.find('canvas'),
3248                chartID = canvas.attr('id'),
3249                chart = document.getElementById(chartID).getContext('2d'),
3250                type,
3251                values = [],
3252                backgroundColors = [],
3253                borderWidth = [],
3254                jqChart = $(chart.canvas); //Convert canvas to JQuery object and get data parameters
3255
3256            for (var i = 1; i <= 10; i++) {
3257
3258                var value = jqChart.data('value-' + i),
3259                    color = jqChart.data('color-' + i);
3260
3261                if (typeof value !== 'undefined' && typeof color !== 'undefined') {
3262                    values.push(value);
3263                    backgroundColors.push(color);
3264                    borderWidth.push(0);
3265                }
3266
3267            }
3268
3269            if (canvas.hasClass('edgtf-pie')) {
3270                type = 'pie';
3271            } else {
3272                type = 'doughnut';
3273            }
3274
3275            var chartOptions = {
3276                type: type,
3277                data: {
3278                    datasets: [{
3279                        data: values,
3280                        backgroundColor: backgroundColors,
3281                        borderWidth: borderWidth,
3282                    }],
3283                },
3284            }
3285
3286            if ( ! canvas.hasClass( 'edgtf--initialized' ) ) {
3287                chart = new Chart(
3288                    canvas,
3289                    chartOptions
3290                );
3291
3292                canvas.addClass( 'edgtf--initialized' );
3293            }
3294
3295        });
3296
3297    }
3298
3299    /*
3300    **	Init tabs shortcode
3301    */
3302    function edgtfInitTabs(){
3303
3304       var tabs = $('.edgtf-tabs');
3305        if(tabs.length){
3306            tabs.each(function(){
3307                var thisTabs = $(this);
3308
3309                thisTabs.children('.edgtf-tab-container').each(function(index){
3310                    index = index + 1;
3311                    var that = $(this),
3312                        link = that.attr('id'),
3313                        navItem = that.parent().find('.edgtf-tabs-nav li:nth-child('+index+') a'),
3314                        navLink = navItem.attr('href');
3315
3316                        link = '#'+link;
3317
3318                        if(link.indexOf(navLink) > -1) {
3319                            navItem.attr('href',link);
3320                        }
3321                });
3322
3323                if(thisTabs.hasClass('edgtf-horizontal-tab')){
3324                    thisTabs.tabs();
3325                } else if(thisTabs.hasClass('edgtf-vertical-tab')){
3326                    thisTabs.tabs().addClass( 'ui-tabs-vertical ui-helper-clearfix' );
3327                    thisTabs.find('.edgtf-tabs-nav > ul >li').removeClass( 'ui-corner-top' ).addClass( 'ui-corner-left' );
3328                }
3329            });
3330        }
3331    }
3332
3333    /*
3334    **	Generate icons in tabs navigation
3335    */
3336    function edgtfInitTabIcons(){
3337
3338        var tabContent = $('.edgtf-tab-container');
3339        if(tabContent.length){
3340
3341            tabContent.each(function(){
3342                var thisTabContent = $(this);
3343
3344                var id = thisTabContent.attr('id');
3345                var icon = '';
3346                if(typeof thisTabContent.data('icon-html') !== 'undefined' || thisTabContent.data('icon-html') !== 'false') {
3347                    icon = thisTabContent.data('icon-html');
3348                }
3349
3350                var tabNav = thisTabContent.parents('.edgtf-tabs').find('.edgtf-tabs-nav > li > a[href="#'+id+'"]');
3351
3352                if(typeof(tabNav) !== 'undefined') {
3353                    tabNav.children('.edgtf-icon-frame').append(icon);
3354                }
3355            });
3356        }
3357    }
3358
3359    /**
3360     * Button object that initializes whole button functionality
3361     * @type {Function}
3362     */
3363    var edgtfButton = edgtf.modules.shortcodes.edgtfButton = function() {
3364        //all buttons on the page
3365        var buttons = $('.edgtf-btn');
3366
3367        /**
3368         * Initializes button hover color
3369         * @param button current button
3370         */
3371        var buttonHoverColor = function(button) {
3372            if(typeof button.data('hover-color') !== 'undefined') {
3373                var changeButtonColor = function(event) {
3374                    event.data.button.css('color', event.data.color);
3375                };
3376
3377                var originalColor = button.css('color');
3378                var hoverColor = button.data('hover-color');
3379
3380                button.on('mouseenter', { button: button, color: hoverColor }, changeButtonColor);
3381                button.on('mouseleave', { button: button, color: originalColor }, changeButtonColor);
3382            }
3383        };
3384
3385
3386
3387        /**
3388         * Initializes button hover background color
3389         * @param button current button
3390         */
3391        var buttonHoverBgColor = function(button, hoverEl) {
3392            if(typeof button.data('hover-bg-color') !== 'undefined') {
3393                var changeButtonBg = function(event) {
3394                    event.data.button.css('background-color', event.data.color);
3395                };
3396
3397                var originalBgColor = button.css('background-color');
3398                var hoverBgColor = button.data('hover-bg-color');
3399
3400                if(hoverEl){
3401                    button.find('.edgtf-btn-hover').css('background-color',hoverBgColor);
3402                }
3403                else{
3404                    button.on('mouseenter', { button: button, color: hoverBgColor }, changeButtonBg);
3405                    button.on('mouseleave', { button: button, color: originalBgColor }, changeButtonBg);
3406                }
3407            }
3408        };
3409
3410        /**
3411         * Initializes button border color
3412         * @param button
3413         */
3414        var buttonHoverBorderColor = function(button) {
3415            if(typeof button.data('hover-border-color') !== 'undefined') {
3416                var changeBorderColor = function(event) {
3417                    event.data.button.css('border-color', event.data.color);
3418                };
3419
3420                var originalBorderColor = button.css('borderTopColor'); //take one of the four sides
3421                var hoverBorderColor = button.data('hover-border-color');
3422                button.on('mouseenter', { button: button, color: hoverBorderColor }, changeBorderColor);
3423                button.on('mouseleave', { button: button, color: originalBorderColor }, changeBorderColor);
3424            }
3425        };
3426
3427        return {
3428            init: function() {
3429                if(buttons.length) {
3430                    buttons.each(function() {
3431                        var thisBtn = $(this);
3432                        buttonHoverColor(thisBtn);
3433                        if(thisBtn.hasClass('edgtf-btn-animated')){
3434                            buttonHoverBgColor(thisBtn, true);
3435                        }else{
3436                            buttonHoverBgColor(thisBtn,false);
3437                            // border color transition exists only for non animated buttons
3438                            buttonHoverBorderColor(thisBtn);
3439                        }
3440                    });
3441                }
3442            }
3443        };
3444    };
3445
3446    /*
3447    **	Init blog list masonry type
3448    */
3449    function edgtfInitBlogListMasonry(){
3450        var blogList = $('.edgtf-blog-list-holder.edgtf-masonry .edgtf-blog-list');
3451        if(blogList.length) {
3452            blogList.each(function() {
3453                var thisBlogList = $(this);
3454                blogList.waitForImages(function() {
3455                    thisBlogList.isotope({
3456                        layoutMode: 'packery',
3457                        itemSelector: '.edgtf-blog-list-masonry-item',
3458                        packery: {
3459                            columnWidth: '.edgtf-blog-list-masonry-grid-sizer',
3460                            gutter: '.edgtf-blog-list-masonry-grid-gutter'
3461                        }
3462                    });
3463                    thisBlogList.addClass('edgtf-appeared');
3464                });
3465            });
3466
3467        }
3468    }
3469
3470	/**
3471	 * Initializes portfolio slider
3472	 */
3473
3474	function edgtfInitBlogSlider(){
3475		var blogSlider = $('.edgtf-blog-slider');
3476		if(blogSlider.length){
3477			blogSlider.each(function(){
3478				var thisBlogSlider = $(this);
3479				var navigation = true;
3480				var responsive;
3481				var slides = 1;
3482
3483				if (typeof thisBlogSlider.data('type') !== 'undefined' && thisBlogSlider.data('type') !== false && thisBlogSlider.data('type') == 'carousel') {
3484
3485					responsive = [
3486						{
3487							breakpoint: 1025,
3488							settings: {
3489								slidesToShow: 2,
3490								slidesToScroll: 1,
3491								infinite: true,
3492								dots: true
3493							}
3494						},
3495						{
3496							breakpoint: 768,
3497							settings: {
3498								slidesToShow: 1,
3499								slidesToScroll: 1
3500							}
3501						}
3502					]
3503					slides = 3;
3504				}
3505
3506				thisBlogSlider.on('init', function(slick){
3507					thisBlogSlider.css('opacity', 1);
3508				});
3509				thisBlogSlider.waitForImages(function() {
3510					thisBlogSlider.slick({
3511						infinite: true,
3512						autoplay: false,
3513						slidesToShow : slides,
3514						arrows: navigation,
3515						dots: true,
3516						dotsClass: 'edgtf-slick-dots',
3517						adaptiveHeight: true,
3518                        easing:'easeOutCubic',
3519						prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
3520						nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
3521						customPaging: function(slider, i) {
3522							return '<span class="edgtf-slick-dot-inner"></span>';
3523						},
3524						responsive: responsive
3525					});
3526				});
3527
3528			});
3529		}
3530	}
3531
3532	/*
3533	**	Custom Font resizing
3534	*/
3535	function edgtfCustomFontResize(){
3536		var customFont = $('.edgtf-custom-font-holder');
3537		if (customFont.length){
3538			customFont.each(function(){
3539				var thisCustomFont = $(this);
3540				var fontSize;
3541				var lineHeight;
3542				var coef1 = 1;
3543				var coef2 = 1;
3544
3545				if (edgtf.windowWidth < 1200){
3546					coef1 = 0.8;
3547				}
3548
3549				if (edgtf.windowWidth < 1024){
3550					coef1 = 0.7;
3551				}
3552
3553				if (edgtf.windowWidth < 768){
3554					coef1 = 0.6;
3555					coef2 = 0.7;
3556				}
3557
3558				if (edgtf.windowWidth < 600){
3559					coef1 = 0.5;
3560					coef2 = 0.6;
3561				}
3562
3563				if (edgtf.windowWidth < 480){
3564					coef1 = 0.4;
3565					coef2 = 0.5;
3566				}
3567
3568				if (typeof thisCustomFont.data('font-size') !== 'undefined' && thisCustomFont.data('font-size') !== false) {
3569					fontSize = parseInt(thisCustomFont.data('font-size'));
3570
3571					if (fontSize > 70) {
3572						fontSize = Math.round(fontSize*coef1);
3573					}
3574					else if (fontSize > 35) {
3575						fontSize = Math.round(fontSize*coef2);
3576					}
3577
3578					thisCustomFont.css('font-size',fontSize + 'px');
3579				}
3580
3581				if (typeof thisCustomFont.data('line-height') !== 'undefined' && thisCustomFont.data('line-height') !== false) {
3582					lineHeight = parseInt(thisCustomFont.data('line-height'));
3583
3584					if (lineHeight > 70 && edgtf.windowWidth < 1200) {
3585						lineHeight = '1.2em';
3586					}
3587					else if (lineHeight > 35 && edgtf.windowWidth < 768) {
3588						lineHeight = '1.2em';
3589					}
3590					else{
3591						lineHeight += 'px';
3592					}
3593
3594					thisCustomFont.css('line-height', lineHeight);
3595				}
3596			});
3597		}
3598	}
3599
3600    /*
3601     **	Show Google Map
3602     */
3603    function edgtfShowGoogleMap(){
3604
3605        if($('.edgtf-google-map').length){
3606            $('.edgtf-google-map').each(function(){
3607
3608                var element = $(this);
3609
3610                var customMapStyle;
3611                if(typeof element.data('custom-map-style') !== 'undefined') {
3612                    customMapStyle = element.data('custom-map-style');
3613                }
3614
3615                var colorOverlay;
3616                if(typeof element.data('color-overlay') !== 'undefined' && element.data('color-overlay') !== false) {
3617                    colorOverlay = element.data('color-overlay');
3618                }
3619
3620                var saturation;
3621                if(typeof element.data('saturation') !== 'undefined' && element.data('saturation') !== false) {
3622                    saturation = element.data('saturation');
3623                }
3624
3625                var lightness;
3626                if(typeof element.data('lightness') !== 'undefined' && element.data('lightness') !== false) {
3627                    lightness = element.data('lightness');
3628                }
3629
3630                var zoom;
3631                if(typeof element.data('zoom') !== 'undefined' && element.data('zoom') !== false) {
3632                    zoom = element.data('zoom');
3633                }
3634
3635                var pin;
3636                if(typeof element.data('pin') !== 'undefined' && element.data('pin') !== false) {
3637                    pin = element.data('pin');
3638                }
3639
3640                var mapHeight;
3641                if(typeof element.data('height') !== 'undefined' && element.data('height') !== false) {
3642                    mapHeight = element.data('height');
3643                }
3644
3645                var uniqueId;
3646                if(typeof element.data('unique-id') !== 'undefined' && element.data('unique-id') !== false) {
3647                    uniqueId = element.data('unique-id');
3648                }
3649
3650                var scrollWheel;
3651                if(typeof element.data('scroll-wheel') !== 'undefined') {
3652                    scrollWheel = element.data('scroll-wheel');
3653                }
3654                var addresses;
3655                if(typeof element.data('addresses') !== 'undefined' && element.data('addresses') !== false) {
3656                    addresses = element.data('addresses');
3657                }
3658
3659                var map = "map_"+ uniqueId;
3660                var geocoder = "geocoder_"+ uniqueId;
3661                var holderId = "edgtf-map-"+ uniqueId;
3662
3663                edgtfInitializeGoogleMap(customMapStyle, colorOverlay, saturation, lightness, scrollWheel, zoom, holderId, mapHeight, pin,  map, geocoder, addresses);
3664            });
3665        }
3666
3667    }
3668    /*
3669     **	Init Google Map
3670     */
3671    function edgtfInitializeGoogleMap(customMapStyle, color, saturation, lightness, wheel, zoom, holderId, height, pin,  map, geocoder, data){
3672
3673        var mapStyles = [
3674            {
3675                stylers: [
3676                    {hue: color },
3677                    {saturation: saturation},
3678                    {lightness: lightness},
3679                    {gamma: 1}
3680                ]
3681            }
3682        ];
3683
3684        var googleMapStyleId;
3685
3686        if(customMapStyle){
3687            googleMapStyleId = 'edgtf-style';
3688        } else {
3689            googleMapStyleId = google.maps.MapTypeId.ROADMAP;
3690        }
3691
3692        var qoogleMapType = new google.maps.StyledMapType(mapStyles,
3693            {name: "Edge Google Map"});
3694
3695        geocoder = new google.maps.Geocoder();
3696        var latlng = new google.maps.LatLng(-34.397, 150.644);
3697
3698        if (!isNaN(height)){
3699            height = height + 'px';
3700        }
3701
3702        var myOptions = {
3703
3704            zoom: zoom,
3705            scrollwheel: wheel,
3706            center: latlng,
3707            zoomControl: true,
3708            zoomControlOptions: {
3709                style: google.maps.ZoomControlStyle.SMALL,
3710                position: google.maps.ControlPosition.RIGHT_CENTER
3711            },
3712            scaleControl: false,
3713            scaleControlOptions: {
3714                position: google.maps.ControlPosition.LEFT_CENTER
3715            },
3716            streetViewControl: false,
3717            streetViewControlOptions: {
3718                position: google.maps.ControlPosition.LEFT_CENTER
3719            },
3720            panControl: false,
3721            panControlOptions: {
3722                position: google.maps.ControlPosition.LEFT_CENTER
3723            },
3724            mapTypeControl: false,
3725            mapTypeControlOptions: {
3726                mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'edgtf-style'],
3727                style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
3728                position: google.maps.ControlPosition.LEFT_CENTER
3729            },
3730            mapTypeId: googleMapStyleId
3731        };
3732
3733        map = new google.maps.Map(document.getElementById(holderId), myOptions);
3734        map.mapTypes.set('edgtf-style', qoogleMapType);
3735
3736        var index;
3737
3738        for (index = 0; index < data.length; ++index) {
3739            edgtfInitializeGoogleAddress(data[index], pin, map, geocoder);
3740        }
3741
3742        var holderElement = document.getElementById(holderId);
3743        holderElement.style.height = height;
3744    }
3745    /*
3746     **	Init Google Map Addresses
3747     */
3748    function edgtfInitializeGoogleAddress(data, pin,  map, geocoder){
3749        if (data === '')
3750            return;
3751        var contentString = '<div id="content">'+
3752            '<div id="siteNotice">'+
3753            '</div>'+
3754            '<div id="bodyContent">'+
3755            '<p>'+data+'</p>'+
3756            '</div>'+
3757            '</div>';
3758        var infowindow = new google.maps.InfoWindow({
3759            content: contentString
3760        });
3761        geocoder.geocode( { 'address': data}, function(results, status) {
3762            if (status === google.maps.GeocoderStatus.OK) {
3763                map.setCenter(results[0].geometry.location);
3764                var marker = new google.maps.Marker({
3765                    map: map,
3766                    position: results[0].geometry.location,
3767                    icon:  pin,
3768                    title: data['store_title']
3769                });
3770                google.maps.event.addListener(marker, 'click', function() {
3771                    infowindow.open(map,marker);
3772                });
3773    
3774                window.addEventListener('resize', function () {
3775                    map.setCenter(results[0].geometry.location);
3776                });
3777            }
3778        });
3779    }
3780
3781    function edgtfInitAccordions(){
3782        var accordion = $('.edgtf-accordion-holder');
3783        if(accordion.length){
3784            accordion.each(function(){
3785
3786               var thisAccordion = $(this);
3787
3788				if(thisAccordion.hasClass('edgtf-accordion')){
3789
3790					thisAccordion.accordion({
3791						animate: "swing",
3792						collapsible: true,
3793						active: 0,
3794						icons: "",
3795						heightStyle: "content"
3796					});
3797				}
3798
3799				if(thisAccordion.hasClass('edgtf-toggle')){
3800
3801					var toggleAccordion = $(this);
3802					var toggleAccordionTitle = toggleAccordion.find('.edgtf-title-holder');
3803					var toggleAccordionContent = toggleAccordionTitle.next();
3804
3805					toggleAccordion.addClass("accordion ui-accordion ui-accordion-icons ui-widget ui-helper-reset");
3806					toggleAccordionTitle.addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-top ui-corner-bottom");
3807					toggleAccordionContent.addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide();
3808
3809					toggleAccordionTitle.each(function(){
3810						var thisTitle = $(this);
3811						thisTitle.on('mouseenter mouseleave',function(){
3812							thisTitle.toggleClass("ui-state-hover");
3813						});
3814
3815						thisTitle.on('click',function(){
3816							thisTitle.toggleClass('ui-accordion-header-active ui-state-active ui-state-default ui-corner-bottom');
3817							thisTitle.next().toggleClass('ui-accordion-content-active').slideToggle(400);
3818						});
3819					});
3820				}
3821            });
3822        }
3823    }
3824
3825    function edgtfInitImageGallery() {
3826
3827     
3827   var galleries = $('.edgtf-image-gallery');
3828
3829        if (galleries.length) {
3830            galleries.each(function () {
3831                var gallery = $(this).children('.edgtf-image-gallery-slider'),
3832                    animation = (gallery.data('animation') == 'fade'),
3833                    navigation = (gallery.data('navigation') == 'yes'),
3834                    pagination = (gallery.data('pagination') == 'yes'),
3835                    autoPlay = false,
3836                    autoPlaySpeed = 1;
3837                    if(gallery.data('autoplay') != ''){
3838                        autoPlay = true;
3839                        autoPlaySpeed = gallery.data('autoplay') * 1000;
3840                    }
3841
3842                gallery.slick({
3843                    autoplay: autoPlay,
3844                    autoPlaySpeed: autoPlaySpeed * 1000,
3845                    arrows: navigation,
3846                    adaptiveHeight: true,
3847                    fade: animation,
3848                    dotsClass: 'edgtf-slick-dots',
3849                    dots: pagination,
3850                    speed: 600,
3851                    easing:'easeOutCubic',
3852                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
3853                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
3854                    customPaging: function(slider, i) {
3855                        return '<span class="edgtf-slick-dot-inner"></span>';
3856                    }
3857                });
3858            });
3859        }
3860
3861        var carousels = $('.edgtf-image-gallery-carousel-wrapper');
3862
3863        if (carousels.length) {
3864            carousels.each(function () {
3865                var carousel = $(this).children('.edgtf-image-gallery-carousel'),
3866                    navigation = (carousel.data('navigation') == 'yes'),
3867                    pagination = (carousel.data('pagination') == 'yes'),
3868                    autoPlay = false,
3869                    slidesToShow = 1,
3870                    centerMode = true,
3871                    variableWidth = true,
3872                    autoPlaySpeed = 1;
3873                if(carousel.data('autoplay') != ''){
3874                    autoPlay = true;
3875                    autoPlaySpeed = carousel.data('autoplay') * 1000;
3876                }
3877
3878                var responsive = [
3879                    {
3880                        breakpoint: 1024,
3881                        settings: {
3882                            slidesToShow: 3,
3883                            slidesToScroll: 1,
3884                            infinite: true,
3885                            dots: true
3886                        }
3887                    },
3888                    {
3889                        breakpoint: 768,
3890                        settings: {
3891                            slidesToShow: 2,
3892                            slidesToScroll: 1,
3893                            infinite: true,
3894                            dots: true
3895                        }
3896                    },
3897                    {
3898                        breakpoint: 600,
3899                        settings: {
3900                            slidesToShow: 1,
3901                            slidesToScroll: 1
3902                        }
3903                    }
3904                ]
3905
3906                carousel.slick({
3907                    autoplay: autoPlay,
3908                    autoPlaySpeed: autoPlaySpeed * 1000,
3909                    arrows: navigation,
3910                    dots: pagination,
3911                    dotsClass: 'edgtf-slick-dots',
3912                    speed: 600,
3913                    easing:'easeOutCubic',
3914                    slidesToShow : slidesToShow,
3915                    variableWidth: variableWidth,
3916                    centerMode: centerMode,
3917                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
3918                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
3919                    responsive:responsive,
3920                    customPaging: function(slider, i) {
3921                        return '<span class="edgtf-slick-dot-inner"></span>';
3922                    }
3923                });
3924            });
3925        }
3926
3927    }
3928
3929    /**
3930     * Init Image Masonry Gallery
3931     */
3932    function edgtfInitImageGalleryMasonry(){
3933        var masonryGallery = $('.edgtf-image-gallery-masonry');
3934
3935        if(masonryGallery.length) {
3936            masonryGallery.each(function () {
3937                var thisGallery = $(this);
3938                thisGallery.waitForImages(function () {
3939                    var size = thisGallery.find('.edgtf-image-masonry-grid-sizer').width();
3940                    edgtfImageResizeMasonry(size,thisGallery);
3941                    edgtfInitImageMasonry(thisGallery);
3942
3943                });
3944                $(window).resize(function(){
3945                    var size = thisGallery.find('.edgtf-image-masonry-grid-sizer').width();
3946                    edgtfImageResizeMasonry(size,thisGallery);
3947                    edgtfInitImageMasonry(thisGallery);
3948                });
3949            });
3950        }
3951    }
3952
3953    function edgtfInitImageMasonry(container){
3954        container.animate({opacity: 1});
3955        container.isotope({
3956            itemSelector: '.edgtf-gallery-image',
3957            masonry: {
3958                columnWidth: '.edgtf-image-masonry-grid-sizer'
3959            }
3960        });
3961    }
3962
3963
3964    function edgtfImageResizeMasonry(size,container){
3965
3966        var defaultMasonryItem = container.find('.edgtf-size-square');
3967        var largeWidthMasonryItem = container.find('.edgtf-size-landscape');
3968        var largeHeightMasonryItem = container.find('.edgtf-size-portrait');
3969        var largeWidthHeightMasonryItem = container.find('.edgtf-size-big-square');
3970
3971        defaultMasonryItem.css('height', size);
3972        largeHeightMasonryItem.css('height', Math.round(2*size));
3973
3974        if(edgtf.windowWidth > 768){
3975            largeWidthHeightMasonryItem.css('height', Math.round(2*size));
3976            largeWidthMasonryItem.css('height', size);
3977        }else{
3978            largeWidthHeightMasonryItem.css('height', size);
3979            largeWidthMasonryItem.css('height', Math.round(size/2));
3980        }
3981    }
3982
3983    /**
3984     * Initializes project presentation slider
3985     */
3986
3987    function edgtProjectPresentationSlider() {
3988
3989        var sliders = $('.edgtf-pp-gallery');
3990
3991        if (sliders.length) {
3992            sliders.each(function () {
3993                var slider = $(this).children('.edgtf-pp-gallery-slider'),
3994                    animation = (slider.data('animation') == 'fade'),
3995                    navigation = false,
3996                    pagination = (slider.data('pagination') == 'yes'),
3997                    autoPlay = false,
3998                    autoplaySpeed = 1;
3999                if(slider.data('autoplay') != 'disable'){
4000                    autoPlay = true;
4001                    autoplaySpeed = slider.data('autoplay') * 1000;
4002                }
4003
4004                slider.on('afterChange', function(slick){
4005                    $('.edgtf-project-presentation .slick-slider .slick-track').css('height', '100%');
4006                });
4007
4008                slider.slick({
4009                    autoplay: autoPlay,
4010                    autoplaySpeed: autoplaySpeed,
4011                    arrows: navigation,
4012                    adaptiveHeight: true,
4013                    fade: true,
4014                    dots: pagination,
4015                    easing:'easeOutCubic',
4016                    dotsClass: 'edgtf-slick-dots',
4017                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
4018                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
4019                    customPaging: function(slider, i) {
4020                        return '<span class="edgtf-slick-dot-inner"></span>';
4021                    }
4022                });
4023
4024            });
4025        }
4026    }
4027
4028    /**
4029     * Initializes portfolio list
4030     */
4031    function edgtfInitPortfolio(){
4032        var portList = $('.edgtf-portfolio-list-holder-outer.edgtf-ptf-standard:not(.edgtf-portfolio-slider-holder), .edgtf-portfolio-list-holder-outer.edgtf-ptf-gallery:not(.edgtf-portfolio-slider-holder), .edgtf-portfolio-list-holder-outer.edgtf-ptf-gallery-with-space:not(.edgtf-portfolio-slider-holder)');
4033        if(portList.length){            
4034            portList.each(function(){
4035                var thisPortList = $(this);
4036                edgtfInitPortMixItUp(thisPortList);
4037                if(thisPortList.hasClass('edgtf-follow')){
4038                    thisPortList.find('article').each(function(){
4039                        $(this).hoverdir({
4040                        hoverElem:'div.edgtf-item-text-overlay',
4041                        speed: 330,
4042                        hoverDelay: 35,
4043                        easing: 'ease'
4044                        });
4045                    });
4046                }
4047            });
4048        }
4049    }
4050    /**
4051     * Initializes mixItUp function for specific container
4052     */
4053    function edgtfInitPortMixItUp(container){
4054        var filterClass = '';
4055        if(container.hasClass('edgtf-ptf-has-filter')){
4056            filterClass = container.find('.edgtf-portfolio-filter-holder-inner ul li').data('class');
4057            filterClass = '.'+filterClass;
4058        }
4059        
4060        var holderInner = container.find('.edgtf-portfolio-list-holder');
4061        holderInner.mixItUp({
4062            callbacks: {
4063                onMixLoad: function(){
4064                    holderInner.find('article').css('visibility','visible');
4065                    edgtf.modules.common.edgtfInitParallax();
4066                },
4067                onMixStart: function(){
4068                    holderInner.find('article').css('visibility','visible');
4069                },
4070                onMixBusy: function(){
4071                    holderInner.find('article').css('visibility','visible');
4072                } 
4073            },           
4074            selectors: {
4075                filter: filterClass
4076            },
4077            animation: {
4078                effects: 'fade',
4079                duration: 600
4080            }
4081            
4082        });
4083        
4084    }
4085     /*
4086    **	Init portfolio list masonry type
4087    */
4088    function edgtfInitPortfolioListMasonry(){
4089        var portList = $('.edgtf-portfolio-list-holder-outer.edgtf-ptf-masonry,.edgtf-portfolio-list-holder-outer.edgtf-ptf-masonry-with-space');
4090        if(portList.length) {
4091            portList.each(function() {
4092                var thisPortList = $(this).children('.edgtf-portfolio-list-holder');
4093                var size = thisPortList.find('.edgtf-portfolio-list-masonry-grid-sizer').width();
4094                edgtfResizeMasonry(size,thisPortList);
4095                
4096                edgtfInitMasonry(thisPortList);
4097                $(window).resize(function(){
4098                    edgtfResizeMasonry(size,thisPortList);
4099                    edgtfInitMasonry(thisPortList);
4100                });
4101            });
4102        }
4103    }
4104    
4105    function edgtfInitMasonry(container){
4106        container.waitForImages(function() {
4107            container.isotope({
4108                layoutMode: 'packery',
4109                itemSelector: '.edgtf-portfolio-item',
4110                packery: {
4111                    columnWidth: '.edgtf-portfolio-list-masonry-grid-sizer'
4112                }
4113            });
4114            container.addClass('edgtf-appeared');
4115            $(window).on('load', function(){
4116                ptfListAppear(container)
4117            });
4118        });
4119    }
4120    
4121    function edgtfResizeMasonry(size,container){
4122        
4123        var defaultMasonryItem = container.find('.edgtf-default-masonry-item');
4124        var largeWidthMasonryItem = container.find('.edgtf-large-width-masonry-item');
4125        var largeHeightMasonryItem = container.find('.edgtf-large-height-masonry-item');
4126        var largeWidthHeightMasonryItem = container.find('.edgtf-large-width-height-masonry-item');
4127
4128        defaultMasonryItem.css('height', size);
4129        largeHeightMasonryItem.css('height', Math.round(2*size));
4130
4131        if(edgtf.windowWidth > 600){
4132            largeWidthHeightMasonryItem.css('height', Math.round(2*size));
4133            largeWidthMasonryItem.css('height', size);
4134        }else{
4135            largeWidthHeightMasonryItem.css('height', size);
4136            largeWidthMasonryItem.css('height', Math.round(size/2));
4137
4138        }
4139    }
4140    /**
4141     * Initializes portfolio pinterest 
4142     */
4143    function edgtfInitPortfolioListPinterest(){
4144        
4145        var portList = $('.edgtf-portfolio-list-holder-outer.edgtf-ptf-pinterest,.edgtf-portfolio-list-holder-outer.edgtf-ptf-pinterest-with-space');
4146        if(portList.length) {
4147            portList.each(function() {
4148                var thisPortList = $(this).children('.edgtf-portfolio-list-holder');
4149                edgtfInitPinterest(thisPortList);
4150                $(window).resize(function(){
4151                     edgtfInitPinterest(thisPortList);
4152                });
4153            });
4154            
4155        }
4156    }
4157    
4158    function edgtfInitPinterest(container){
4159        container.waitForImages(function() {
4160            container.isotope({
4161                itemSelector: '.edgtf-portfolio-item',
4162                masonry: {
4163                    columnWidth: '.edgtf-portfolio-list-masonry-grid-sizer',
4164                    gutter:'.edgtf-portfolio-list-masonry-grid-gutter'
4165                }
4166            });
4167        });
4168        container.addClass('edgtf-appeared');
4169        $(window).on('load', function(){
4170            ptfListAppear(container)
4171        });
4172    }
4173
4174    /*
4175    * Appear FX
4176    */
4177    function ptfListAppear(container) {
4178        if (container.parent().hasClass('edgtf-appear-fade-scale')) {
4179            var articles = container.find('article'),
4180                animateCycle = 1 + Math.floor(Math.random() * 6),
4181                animateCycleCounter = 0;
4182
4183            if (articles.length) {
4184                articles.each(function(){
4185                    var article = $(this);
4186
4187                    setTimeout(function(){
4188                        article.appear(function(){
4189                            animateCycleCounter ++;
4190
4191                            if(animateCycleCounter == animateCycle) {
4192                                animateCycleCounter = 0;
4193                            }
4194
4195                            setTimeout(function(){
4196                                if (!article.hasClass('edgtf-appeared')) {
4197                                    article.addClass('edgtf-appeared');        
4198                                }
4199                            },animateCycleCounter * 280);
4200                        },{accX: 0, accY: 0});
4201                    },30);
4202                });
4203            }
4204        }
4205    }
4206    /**
4207     * Initializes portfolio masonry filter
4208     */
4209    function edgtfInitPortfolioMasonryFilter(){
4210        
4211        var filterHolder = $('.edgtf-portfolio-filter-holder.edgtf-masonry-filter');
4212        
4213        if(filterHolder.length){
4214            filterHolder.each(function(){
4215               
4216                var thisFilterHolder = $(this);
4217                
4218                var portfolioIsotopeAnimation = null;
4219                
4220                var filter = thisFilterHolder.find('ul li').data('class');
4221                
4222                thisFilterHolder.find('.filter:first').addClass('current');
4223                
4224                thisFilterHolder.find('.filter').on('click',function(){
4225
4226                    var currentFilter = $(this);
4227                    clearTimeout(portfolioIsotopeAnimation);
4228
4229                    $('.isotope, .isotope .isotope-item').css('transition-duration','0.8s');
4230
4231                    portfolioIsotopeAnimation = setTimeout(function(){
4232                        $('.isotope, .isotope .isotope-item').css('transition-duration','0s'); 
4233                    },700);
4234
4235                    var selector = $(this).attr('data-filter');
4236                    thisFilterHolder.siblings('.edgtf-portfolio-list-holder-outer').find('.edgtf-portfolio-list-holder').isotope({ filter: selector });
4237
4238                    thisFilterHolder.find('.filter').removeClass('current');
4239                    currentFilter.addClass('current');
4240
4241                    return false;
4242
4243                });
4244                
4245            });
4246        }
4247    }
4248    /**
4249     * Initializes portfolio slider
4250     */
4251    
4252    function edgtfInitPortfolioSlider(){
4253        var portSlider = $('.edgtf-portfolio-list-holder-outer.edgtf-portfolio-slider-holder');
4254        if(portSlider.length){
4255            portSlider.each(function(){
4256                var thisPortSlider = $(this);
4257                var sliderWrapper = thisPortSlider.children('.edgtf-portfolio-list-holder');
4258                var numberOfItems = thisPortSlider.data('items');
4259                var navigation = false;
4260                
4261                //Responsive breakpoints
4262                var responsive = [
4263                    {
4264                        breakpoint: 1024,
4265                        settings: {
4266                            slidesToShow: 3,
4267                            slidesToScroll: 1,
4268                            infinite: true,
4269                        }
4270                    },
4271                    {
4272                        breakpoint: 768,
4273                        settings: {
4274                            slidesToShow: 2,
4275                            slidesToScroll: 1,
4276                            infinite: true,
4277                        }
4278                    },
4279                    {
4280                        breakpoint: 600,
4281                        settings: {
4282                            slidesToShow: 1,
4283                            slidesToScroll: 1
4284                        }
4285                    }
4286                ];
4287
4288                 sliderWrapper.on('init', function(slick){
4289                    var slides = sliderWrapper.find('.slick-slide');
4290
4291                    var dragStart, clickable = false;
4292
4293                    var handleDragStart = function(event) {
4294                        event = typeof event.originalEvent !== 'undefined' ? event.originalEvent : event;
4295                        event = event.type == 'touchstart' ? event.touches[0] : event;
4296                        dragStart = {
4297                            x: event.clientX,
4298                            y: event.clientY
4299                        };
4300                    };
4301
4302                    var handleDragStop = function(event) {
4303                        event = typeof event.originalEvent !== 'undefined' ? event.originalEvent : event;
4304                        event = event.type == 'touchend' ? event.changedTouches[0] : event;
4305                        var dragEnd = {
4306                            x: event.clientX,
4307                            y: event.clientY
4308                        };
4309                        if (Math.abs(dragEnd.x - dragStart.x) < 10) {
4310                            clickable = true;
4311                        }
4312                    };
4313
4314                    var handleClick = function(event) {
4315                        if (clickable) {
4316                            clickable = false;
4317                        }
4318                        else {
4319                            event.preventDefault();
4320                            event.stopImmediatePropagation();
4321                        }
4322                    };
4323
4324                    slides.find('a')
4325                    .on('dragstart', function(event) {
4326                        event.stopImmediatePropagation();
4327                        event.preventDefault();
4328                    })
4329                    .on('click', handleClick)
4330                    .on('mousedown touchstart', handleDragStart)
4331                    .on('mouseup touchend', handleDragStop);
4332                });
4333
4334                sliderWrapper.slick({
4335                    infinite: true,
4336                    autoplay: true,
4337                    autoplaySpeed: 3000,
4338                    arrows: navigation,
4339                    dots: false,
4340                    dotsClass: 'edgtf-slick-dots',
4341                    speed: 600,
4342                    easing:'easeOutCubic',
4343                    slidesToShow:numberOfItems,
4344                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
4345                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
4346                    responsive:responsive,
4347                    customPaging: function(slider, i) {
4348                        return '<span class="edgtf-slick-dot-inner"></span>';
4349                    }
4350                });
4351            });
4352        }
4353    }
4354    /**
4355     * Initializes portfolio load more function
4356     */
4357    function edgtfInitPortfolioLoadMore(){
4358        var portList = $('.edgtf-portfolio-list-holder-outer.edgtf-ptf-load-more');
4359        if(portList.length){
4360            portList.each(function(){
4361                
4362                var thisPortList = $(this);
4363                var thisPortListInner = thisPortList.find('.edgtf-portfolio-list-holder');
4364                var nextPage; 
4365                var maxNumPages;
4366                var loadMoreButton = thisPortList.find('.edgtf-ptf-list-load-more a');
4367                var loadMoreSpinner = thisPortList.find('.edgtf-3d-cube-holder');
4368                
4369                if (typeof thisPortList.data('max-num-pages') !== 'undefined' && thisPortList.data('max-num-pages') !== false) {  
4370                    maxNumPages = thisPortList.data('max-num-pages');
4371                }
4372                
4373                loadMoreButton.on('click', function (e) {  
4374                    var loadMoreDatta = edgtfGetPortfolioAjaxData(thisPortList);
4375                    nextPage = loadMoreDatta.nextPage;
4376                    e.preventDefault();
4377                    e.stopPropagation(); 
4378                    loadMoreButton.hide();
4379                    loadMoreSpinner.fadeIn(500);
4380                    if(nextPage <= maxNumPages){
4381                        var ajaxData = edgtfSetPortfolioAjaxData(loadMoreDatta);
4382                        $.ajax({
4383                            type: 'POST',
4384                            data: ajaxData,
4385                            url: edgtCoreAjaxUrl,
4386                            success: function (data) {
4387                                nextPage++;
4388                                thisPortList.data('next-page', nextPage);
4389                                var response = $.parseJSON(data);
4390                                var responseHtml = edgtfConvertHTML(response.html); //convert response html into jQuery collection that Mixitup can work with
4391                                setTimeout(function() {
4392                                    if(thisPortList.hasClass('edgtf-ptf-masonry') || thisPortList.hasClass('edgtf-ptf-masonry-with-space') || thisPortList.hasClass('edgtf-ptf-pinterest') || thisPortList.hasClass('edgtf-ptf-pinterest-with-space')){
4393                                        thisPortList.waitForImages(function(){
4394                                            thisPortListInner.isotope().append( responseHtml ).isotope( 'appended', responseHtml ).isotope('reloadItems');
4395                                            ptfListAppear(thisPortListInner);
4396                                            loadMoreSpinner.fadeOut(100, function() {
4397                                                loadMoreButton.show()
4398                                            });
4399                                        });
4400                                    } else {
4401                                        thisPortList.waitForImages(function(){
4402                                            thisPortListInner.mixItUp('append',responseHtml);
4403                                            loadMoreSpinner.fadeOut(100, function() {
4404                                                loadMoreButton.show()
4405                                            });
4406                                        });
4407                                    }
4408                                    if(nextPage > maxNumPages){
4409                                        loadMoreButton.hide();
4410                                        loadMoreButton.closest('.edgtf-ptf-list-paging').hide();
4411                                        loadMoreSpinner.fadeOut(0);
4412                                    }
4413                                    if(thisPortList.hasClass('edgtf-follow')){
4414                                        thisPortList.find('article').each(function(){
4415                                            $(this).hoverdir({
4416                                                hoverElem:'div.edgtf-item-text-overlay'});
4417                                        });
4418                                    }
4419                                },400);                                    
4420                            }
4421                        });
4422                    }
4423                });
4424                
4425            });
4426        }
4427    }
4428    
4429    function edgtfConvertHTML ( html ) {
4430        var newHtml = $.trim( html ),
4431                $html = $(newHtml ),
4432                $empty = $();
4433
4434        $html.each(function ( index, value ) {
4435            if ( value.nodeType === 1) {
4436                $empty = $empty.add ( this );
4437            }
4438        });
4439
4440        return $empty;
4441    }
4442
4443    /**
4444     * Initializes portfolio load more data params
4445     * @param portfolio list container with defined data params
4446     * return array
4447     */
4448    function edgtfGetPortfolioAjaxData(container){
4449        var returnValue = {};
4450        
4451        returnValue.type = '';
4452        returnValue.columns = '';
4453        returnValue.gridSize = '';
4454        returnValue.orderBy = '';
4455        returnValue.order = '';
4456        returnValue.number = '';
4457        returnValue.imageSize = '';
4458        returnValue.filter = '';
4459        returnValue.filterOrderBy = '';
4460        returnValue.category = '';
4461        returnValue.selectedProjectes = '';
4462        returnValue.showLoadMore = '';
4463        returnValue.titleTag = '';
4464        returnValue.nextPage = '';
4465        returnValue.maxNumPages = '';
4466        
4467        if (typeof container.data('type') !== 'undefined' && container.data('type') !== false) {
4468            returnValue.type = container.data('type');
4469        }
4470        if (typeof container.data('grid-size') !== 'undefined' && container.data('grid-size') !== false) {                    
4471            returnValue.gridSize = container.data('grid-size');
4472        }
4473        if (typeof container.data('columns') !== 'undefined' && container.data('columns') !== false) {                    
4474            returnValue.columns = container.data('columns');
4475        }
4476        if (typeof container.data('order-by') !== 'undefined' && container.data('order-by') !== false) {                    
4477            returnValue.orderBy = container.data('order-by');
4478        }
4479        if (typeof container.data('order') !== 'undefined' && container.data('order') !== false) {                    
4480            returnValue.order = container.data('order');
4481        }
4482        if (typeof container.data('number') !== 'undefined' && container.data('number') !== false) {                    
4483            returnValue.number = container.data('number');
4484        }
4485        if (typeof container.data('image-size') !== 'undefined' && container.data('image-size') !== false) {                    
4486            returnValue.imageSize = container.data('image-size');
4487        }
4488        if (typeof container.data('filter') !== 'undefined' && container.data('filter') !== false) {                    
4489            returnValue.filter = container.data('filter');
4490        }
4491        if (typeof container.data('filter-order-by') !== 'undefined' && container.data('filter-order-by') !== false) {                    
4492            returnValue.filterOrderBy = container.data('filter-order-by');
4493        }
4494        if (typeof container.data('category') !== 'undefined' && container.data('category') !== false) {                    
4495            returnValue.category = container.data('category');
4496        }
4497        if (typeof container.data('selected-projects') !== 'undefined' && container.data('selected-projects') !== false) {                    
4498            returnValue.selectedProjectes = container.data('selected-projects');
4499        }
4500        if (typeof container.data('show-load-more') !== 'undefined' && container.data('show-load-more') !== false) {                    
4501            returnValue.showLoadMore = container.data('show-load-more');
4502        }
4503        if (typeof container.data('title-tag') !== 'undefined' && container.data('title-tag') !== false) {                    
4504            returnValue.titleTag = container.data('title-tag');
4505        }
4506        if (typeof container.data('next-page') !== 'undefined' && container.data('next-page') !== false) {                    
4507            returnValue.nextPage = container.data('next-page');
4508        }
4509        if (typeof container.data('max-num-pages') !== 'undefined' && container.data('max-num-pages') !== false) {                    
4510            returnValue.maxNumPages = container.data('max-num-pages');
4511        }
4512        return returnValue;
4513    }
4514     /**
4515     * Sets portfolio load more data params for ajax function
4516     * @param portfolio list container with defined data params
4517     * return array
4518     */
4519    function edgtfSetPortfolioAjaxData(container){
4520        var returnValue = {
4521            action: 'edgt_core_portfolio_ajax_load_more',
4522            type: container.type,
4523            columns: container.columns,
4524            gridSize: container.gridSize,
4525            orderBy: container.orderBy,
4526            order: container.order,
4527            number: container.number,
4528            imageSize: container.imageSize,
4529            filter: container.filter,
4530            filterOrderBy: container.filterOrderBy,
4531            category: container.category,
4532            selectedProjectes: container.selectedProjectes,
4533            showLoadMore: container.showLoadMore,
4534            titleTag: container.titleTag,
4535            nextPage: container.nextPage
4536        };
4537        return returnValue;
4538    }
4539
4540    /**
4541     * Slider object that initializes whole slider functionality
4542     * @type {Function}
4543     */
4544    var edgtfSlider = edgtf.modules.shortcodes.edgtfSlider = function() {
4545
4546	    //all sliders on the page
4547	    var sliders = $('.edgtf-slider .carousel');
4548	    //image regex used to extract img source
4549	    var imageRegex = /url\(["']?([^'")]+)['"]?\)/;
4550
4551	    /*** Functionality for translating image in slide - START ***/
4552
4553	    var matrixArray = { zoom_center : '1.2, 0, 0, 1.2, 0, 0', zoom_top_left: '1.2, 0, 0, 1.2, -150, -150', zoom_top_right : '1.2, 0, 0, 1.2, 150, -150', zoom_bottom_left: '1.2, 0, 0, 1.2, -150, 150', zoom_bottom_right: '1.2, 0, 0, 1.2, 150, 150'};
4554
4555	    // regular expression for parsing out the matrix components from the matrix string
4556	    var matrixRE = /\([0-9epx\.\, \t\-]+/gi;
4557
4558	    // parses a matrix string of the form "matrix(n1,n2,n3,n4,n5,n6)" and
4559	    // returns an array with the matrix components
4560	    var parseMatrix = function (val) {
4561		    return val.match(matrixRE)[0].substr(1).
4562		    split(",").map(function (s) {
4563			    return parseFloat(s);
4564		    });
4565	    };
4566
4567	    // transform css property names with vendor prefixes;
4568	    // the plugin will check for values in the order the names are listed here and return as soon as there
4569	    // is a value; so listing the W3 std name for the transform results in that being used if its available
4570	    var transformPropNames = [
4571		    "transform",
4572		    "-webkit-transform"
4573	    ];
4574
4575	    var getTransformMatrix = function (el) {
4576		    // iterate through the css3 identifiers till we hit one that yields a value
4577		    var matrix = null;
4578		    transformPropNames.some(function (prop) {
4579			    matrix = el.css(prop);
4580			    return (matrix !== null && matrix !== "");
4581		    });
4582
4583		    // if "none" then we supplant it with an identity matrix so that our parsing code below doesn't break
4584		    matrix = (!matrix || matrix === "none") ?
4585			    "matrix(1,0,0,1,0,0)" : matrix;
4586		    return parseMatrix(matrix);
4587	    };
4588
4589	    // set the given matrix transform on the element; note that we apply the css transforms in reverse order of how its given
4590	    // in "transformPropName" to ensure that the std compliant prop name shows up last
4591	    var setTransformMatrix = function (el, matrix) {
4592		    var m = "matrix(" + matrix.join(",") + ")";
4593		    for (var i = transformPropNames.length - 1; i >= 0; --i) {
4594			    el.css(transformPropNames[i], m + ' rotate(0.01deg)');
4595		    }
4596	    };
4597
4598	    // interpolates a value between a range given a percent
4599	    var interpolate = function (from, to, percent) {
4600		    return from + ((to - from) * (percent / 100));
4601	    };
4602
4603	    $.fn.transformAnimate = function (opt) {
4604		    // extend the options passed in by caller
4605		    var options = {
4606			    transform: "matrix(1,0,0,1,0,0)"
4607		    };
4608		    $.extend(options, opt);
4609
4610		    // initialize our custom property on the element to track animation progress
4611		    this.css("percentAnim", 0);
4612
4613		    // supplant "options.step" if it exists with our own routine
4614		    var sourceTransform = getTransformMatrix(this);
4615		    var targetTransform = parseMatrix(options.transform);
4616		    options.step = function (percentAnim, fx) {
4617			    // compute the interpolated transform matrix for the current animation progress
4618			    var $this = $(this);
4619			    var matrix = sourceTransform.map(function (c, i) {
4620				    return interpolate(c, targetTransform[i],
4621					    percentAnim);
4622			    });
4623
4624			    // apply the new matrix
4625			    setTransformMatrix($this, matrix);
4626
4627			    // invoke caller's version of "step" if one was supplied;
4628			    if (opt.step) {
4629				    opt.step.apply(this, [matrix, fx]);
4630			    }
4631		    };
4632
4633		    // animate!
4634		    return this.stop().animate({ percentAnim: 100 }, options);
4635	    };
4636
4637	    /*** Functionality for translating image in slide - END ***/
4638
4639
4640	    /**
4641	     * Calculate heights for slider holder and slide item, depending on window width, but only if slider is set to be responsive
4642	     * @param slider, current slider
4643	     * @param defaultHeight, default height of slider, set in shortcode
4644	     * @param responsive_breakpoint_set, breakpoints set for slider responsiveness
4645	     * @param reset, boolean for reseting heights
4646	     */
4647	    var setSliderHeight = function(slider, defaultHeight, responsive_breakpoint_set, reset) {
4648		    var sliderHeight = defaultHeight;
4649		    if(!reset) {
4650			    if(edgtf.windowWidth > responsive_breakpoint_set[0]) {
4651				    sliderHeight = defaultHeight;
4652			    } else if(edgtf.windowWidth > responsive_breakpoint_set[1]) {
4653				    sliderHeight = defaultHeight * 0.75;
4654			    } else if(edgtf.windowWidth > responsive_breakpoint_set[2]) {
4655				    sliderHeight = defaultHeight * 0.6;
4656			    } else if(edgtf.windowWidth > responsive_breakpoint_set[3]) {
4657				    sliderHeight = defaultHeight * 0.55;
4658			    } else if(edgtf.windowWidth <= responsive_breakpoint_set[3]) {
4659				    sliderHeight = defaultHeight * 0.45;
4660			    }
4661		    }
4662
4663		    slider.css({'height': (sliderHeight) + 'px'});
4664		    slider.find('.edgtf-slider-preloader').css({'height': (sliderHeight) + 'px'});
4665		    slider.find('.edgtf-slider-preloader .edgtf-ajax-loader').css({'display': 'block'});
4666		    slider.find('.item').css({'height': (sliderHeight) + 'px'});
4667		    if(edgtfPerPageVars.vars.edgtfStickyScrollAmount === 0) {
4668			    edgtf.modules.header.stickyAppearAmount = sliderHeight; //set sticky header appear amount if slider there is no amount entered on page itself
4669		    }
4670	    };
4671
4672	    /**
4673	     * Calculate heights for slider holder and slide item, depending on window size, but only if slider is set to be full height
4674	     * @param slider, current slider
4675	     */
4676	    var setSliderFullHeight = function(slider) {
4677		    var mobileHeaderHeight = edgtf.windowWidth < 1025 ? edgtfGlobalVars.vars.edgtfMobileHeaderHeight + $('.edgtf-top-bar').height() : 0;
4678		    slider.css({'height': (edgtf.windowHeight - mobileHeaderHeight) + 'px'});
4679		    slider.find('.edgtf-slider-preloader').css({'height': (edgtf.windowHeight - mobileHeaderHeight) + 'px'});
4680		    slider.find('.edgt-slider-preloader .edgtf-ajax-loader').css({'display': 'block'});
4681		    slider.find('.item').css({'height': (edgtf.windowHeight - mobileHeaderHeight) + 'px'});
4682		    if(edgtfPerPageVars.vars.edgtfStickyScrollAmount === 0) {
4683			    edgtf.modules.header.stickyAppearAmount = edgtf.windowHeight; //set sticky header appear amount if slider there is no amount entered on page itself
4684		    }
4685	    };
4686
4687	    var setElementsResponsiveness = function(slider) {
4688		    // Basic text styles responsiveness
4689		    slider
4690			    .find('.edgtf-slide-element-text-small, .edgtf-slide-element-text-normal, .edgtf-slide-element-text-large, .edgtf-slide-element-text-extra-large')
4691			    .each(function() {
4692				    var element = $(this);
4693				    if (typeof element.data('default-font-size') === 'undefined') { element.data('default-font-size', parseInt(element.css('font-size'),10)); }
4694				    if (typeof element.data('default-line-height') === 'undefined') { element.data('default-line-height', parseInt(element.css('line-height'),10)); }
4695				    if (typeof element.data('default-letter-spacing') === 'undefined') { element.data('default-letter-spacing', parseInt(element.css('letter-spacing'),10)); }
4696			    });
4697		    // Advanced text styles responsiveness
4698		    slider.find('.edgtf-slide-element-responsive-text').each(function() {
4699			    if (typeof $(this).data('default-font-size') === 'undefined') { $(this).data('default-font-size', parseInt($(this).css('font-size'),10)); }
4700			    if (typeof $(this).data('default-line-height') === 'undefined') { $(this).data('default-line-height', parseInt($(this).css('line-height'),10)); }
4701			    if (typeof $(this).data('default-letter-spacing') === 'undefined') { $(this).data('default-letter-spacing', parseInt($(this).css('letter-spacing'),10)); }
4702		    });
4703		    // Button responsiveness
4704		    slider.find('.edgtf-slide-element-responsive-button').each(function() {
4705			    if (typeof $(this).data('default-font-size') === 'undefined') { $(this).data('default-font-size', parseInt($(this).find('a').css('font-size'),10)); }
4706			    if (typeof $(this).data('default-line-height') === 'undefined') { $(this).data('default-line-height', parseInt($(this).find('a').css('line-height'),10)); }
4707			    if (typeof $(this).data('default-letter-spacing') === 'undefined') { $(this).data('default-letter-spacing', parseInt($(this).find('a').css('letter-spacing'),10)); }
4708			    if (typeof $(this).data('default-ver-padding') === 'undefined') { $(this).data('default-ver-padding', parseInt($(this).find('a').css('padding-top'),10)); }
4709			    if (typeof $(this).data('default-hor-padding') === 'undefined') { $(this).data('default-hor-padding', parseInt($(this).find('a').css('padding-left'),10)); }
4710		    });
4711		    // Margins for non-custom layouts
4712		    slider.find('.edgtf-slide-element').each(function() {
4713			    var element = $(this);
4714			    if (typeof element.data('default-margin-top') === 'undefined') { element.data('default-margin-top', parseInt(element.css('margin-top'),10)); }
4715			    if (typeof element.data('default-margin-bottom') === 'undefined') { element.data('default-margin-bottom', parseInt(element.css('margin-bottom'),10)); }
4716			    if (typeof element.data('default-margin-left') === 'undefined') { element.data('default-margin-left', parseInt(element.css('margin-left'),10)); }
4717			    if (typeof element.data('default-margin-right') === 'undefined') { element.data('default-margin-right', parseInt(element.css('margin-right'),10)); }
4718		    });
4719		    adjustElementsSizes(slider);
4720	    };
4721
4722	    var adjustElementsSizes = function(slider) {
4723		    var boundaries = {
4724			    // These values must match those in map.php (for slider), slider.php and edgt.layout.inc
4725			    mobile: 600,
4726			    tabletp: 800,
4727			    tabletl: 1024,
4728			    laptop: 1440
4729		    };
4730		    slider.find('.edgtf-slider-elements-container').each(function() {
4731			    var container = $(this);
4732			    var target = container.filter('.edgtf-custom-elements').add(container.not('.edgtf-custom-elements').find('.edgtf-slider-elements-holder-frame')).not('.edgtf-grid');
4733			    if (target.length) {
4734				    if (boundaries.mobile >= edgtf.windowWidth && container.attr('data-width-mobile').length) {
4735					    target.css('width', container.data('width-mobile') + '%');
4736				    }
4737				    else if (boundaries.tabletp >= edgtf.windowWidth && container.attr('data-width-tablet-p').length) {
4738					    target.css('width', container.data('width-tablet-p') + '%');
4739				    }
4740				    else if (boundaries.tabletl >= edgtf.windowWidth && container.attr('data-width-tablet-l').length) {
4741					    target.css('width', container.data('width-tablet-l') + '%');
4742				    }
4743				    else if (boundaries.laptop >= edgtf.windowWidth && container.attr('data-width-laptop').length) {
4744					    target.css('width', container.data('width-laptop') + '%');
4745				    }
4746				    else if (container.attr('data-width-desktop').length){
4747					    target.css('width', container.data('width-desktop') + '%');
4748				    }
4749			    }
4750		    });
4751		    slider.find('.item').each(function() {
4752			    var slide = $(this);
4753			    var def_w = slide.find('.edgtf-slider-elements-holder-frame').data('default-width');
4754			    var elements = slide.find('.edgtf-slide-element');
4755
4756			    // Adjusting margins for all elements
4757			    elements.each(function() {
4758				    var element = $(this);
4759				    var def_m_top = element.data('default-margin-top'),
4760					    def_m_bot = element.data('default-margin-bottom'),
4761					    def_m_l = element.data('default-margin-left'),
4762					    def_m_r = element.data('default-margin-right');
4763				    var scale_data = (typeof element.data('resp-scale') !== 'undefined') ? element.data('resp-scale') : undefined;
4764				    var factor;
4765
4766				    if (boundaries.mobile >= edgtf.windowWidth) {
4767					    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.mobile);
4768				    }
4769				    else if (boundaries.tabletp >= edgtf.windowWidth) {
4770					    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.tabletp);
4771				    }
4772				    else if (boundaries.tabletl >= edgtf.windowWidth) {
4773					    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.tabletl);
4774				    }
4775				    else if (boundaries.laptop >= edgtf.windowWidth) {
4776					    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.laptop);
4777				    }
4778				    else {
4779					    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.desktop);
4780				    }
4781
4782				    element.css({
4783					    'margin-top': Math.round(factor * def_m_top )+ 'px',
4784					    'margin-bottom': Math.round(factor * def_m_bot )+ 'px',
4785					    'margin-left': Math.round(factor * def_m_l )+ 'px',
4786					    'margin-right': Math.round(factor * def_m_r) + 'px'
4787				    });
4788			    });
4789
4790			    // Adjusting responsiveness
4791			    elements
4792				    .filter('.edgtf-slide-element-responsive-text, .edgtf-slide-element-responsive-button, .edgtf-slide-element-responsive-image')
4793				    .add(elements.find('a.edgtf-slide-element-responsive-text, span.edgtf-slide-element-responsive-text'))
4794				    .each(function() {
4795					    var element = $(this);
4796					    var scale_data = (typeof element.data('resp-scale') !== 'undefined') ? element.data('resp-scale') : undefined,
4797						    left_data = (typeof element.data('resp-left') !== 'undefined') ? element.data('resp-left') : undefined,
4798						    top_data = (typeof element.data('resp-top') !== 'undefined') ? element.data('resp-top') : undefined;
4799					    var factor, new_left, new_top;
4800
4801					    if (boundaries.mobile >= edgtf.windowWidth) {
4802						    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.mobile);
4803						    new_left = (typeof left_data === 'undefined') ? (typeof element.data('left') !== 'undefined' ? element.data('left')+'%' : '') : (left_data.mobile != '' ? left_data.mobile+'%' : element.data('left')+'%');
4804						    new_top = (typeof top_data === 'undefined') ? (typeof element.data('top') !== 'undefined' ? element.data('top')+'%' : '') : (top_data.mobile != '' ? top_data.mobile+'%' : element.data('top')+'%');
4805					    }
4806					    else if (boundaries.tabletp >= edgtf.windowWidth) {
4807						    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.tabletp);
4808						    new_left = (typeof left_data === 'undefined') ? (typeof element.data('left') !== 'undefined' ? element.data('left')+'%' : '') : (left_data.tabletp != '' ? left_data.tabletp+'%' : element.data('left')+'%');
4809						    new_top = (typeof top_data === 'undefined') ? (typeof element.data('top') !== 'undefined' ? element.data('top')+'%' : '') : (top_data.tabletp != '' ? top_data.tabletp+'%' : element.data('top')+'%');
4810					    }
4811					    else if (boundaries.tabletl >= edgtf.windowWidth) {
4812						    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.tabletl);
4813						    new_left = (typeof left_data === 'undefined') ? (typeof element.data('left') !== 'undefined' ? element.data('left')+'%' : '') : (left_data.tabletl != '' ? left_data.tabletl+'%' : element.data('left')+'%');
4814						    new_top = (typeof top_data === 'undefined') ? (typeof element.data('top') !== 'undefined' ? element.data('top')+'%' : '') : (top_data.tabletl != '' ? top_data.tabletl+'%' : element.data('top')+'%');
4815					    }
4816					    else if (boundaries.laptop >= edgtf.windowWidth) {
4817						    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.laptop);
4818						    new_left = (typeof left_data === 'undefined') ? (typeof element.data('left') !== 'undefined' ? element.data('left')+'%' : '') : (left_data.laptop != '' ? left_data.laptop+'%' : element.data('left')+'%');
4819						    new_top = (typeof top_data === 'undefined') ? (typeof element.data('top') !== 'undefined' ? element.data('top')+'%' : '') : (top_data.laptop != '' ? top_data.laptop+'%' : element.data('top')+'%');
4820					    }
4821					    else {
4822						    factor = (typeof scale_data === 'undefined') ? edgtf.windowWidth / def_w : parseFloat(scale_data.desktop);
4823						    new_left = (typeof left_data === 'undefined') ? (typeof element.data('left') !== 'undefined' ? element.data('left')+'%' : '') : (left_data.desktop != '' ? left_data.desktop+'%' : element.data('left')+'%');
4824						    new_top = (typeof top_data === 'undefined') ? (typeof element.data('top') !== 'undefined' ? element.data('top')+'%' : '') : (top_data.desktop != '' ? top_data.desktop+'%' : element.data('top')+'%');
4825					    }
4826
4827					    if (!factor) {
4828						    element.hide();
4829					    }
4830					    else {
4831						    element.show();
4832						    var def_font_size,
4833							    def_line_h,
4834							    def_let_spac,
4835							    def_ver_pad,
4836							    def_hor_pad;
4837
4838						    if (element.is('.edgtf-slide-element-responsive-button')) {
4839							    def_font_size = element.data('default-font-size');
4840							    def_line_h = element.data('default-line-height');
4841							    def_let_spac = element.data('default-letter-spacing');
4842							    def_ver_pad = element.data('default-ver-padding');
4843							    def_hor_pad = element.data('default-hor-padding');
4844
4845							    element.css({
4846									    'left': new_left,
4847									    'top': new_top
4848								    })
4849								    .find('.edgtf-btn').css({
4850								    'font-size': Math.round(factor * def_font_size) + 'px',
4851								    'line-height': Math.round(factor * def_line_h) + 'px',
4852								    'letter-spacing': Math.round(factor * def_let_spac) + 'px',
4853								    'padding-left': Math.round(factor * def_hor_pad) + 'px',
4854								    'padding-right': Math.round(factor * def_hor_pad) + 'px',
4855								    'padding-top': Math.round(factor * def_ver_pad) + 'px',
4856								    'padding-bottom': Math.round(factor * def_ver_pad) + 'px'
4857							    });
4858						    }
4859						    else if (element.is('.edgtf-slide-element-responsive-image')) {
4860							    if (factor != edgtf.windowWidth / def_w) { // if custom factor has been set for this screen width
4861								    var up_w = element.data('upload-width'),
4862									    up_h = element.data('upload-height');
4863
4864								    element.filter('.custom-image').css({
4865										    'left': new_left,
4866										    'top': new_top
4867									    })
4868									    .add(element.not('.custom-image').find('img'))
4869									    .css({
4870										    'width': Math.round(factor * up_w) + 'px',
4871										    'height': Math.round(factor * up_h) + 'px'
4872									    });
4873							    }
4874							    else {
4875								    var w = element.data('width');
4876
4877								    element.filter('.custom-image').css({
4878										    'left': new_left,
4879										    'top': new_top
4880									    })
4881									    .add(element.not('.custom-image').find('img'))
4882									    .css({
4883										    'width': w + '%',
4884										    'height': ''
4885									    });
4886							    }
4887						    }
4888						    else {
4889							    def_font_size = element.data('default-font-size');
4890							    def_line_h = element.data('default-line-height');
4891							    def_let_spac = element.data('default-letter-spacing');
4892
4893							    element.css({
4894								    'left': new_left,
4895								    'top': new_top,
4896								    'font-size': Math.round(factor * def_font_size) + 'px',
4897								    'line-height': Math.round(factor * def_line_h) + 'px',
4898								    'letter-spacing': Math.round(factor * def_let_spac) + 'px'
4899							    });
4900						    }
4901					    }
4902				    });
4903		    });
4904		    var nav = slider.find('.carousel-indicators');
4905		    slider.find('.edgtf-slide-element-section-link').css('bottom', nav.length ? parseInt(nav.css('bottom'),10) + nav.outerHeight() + 10 + 'px' : '20px');
4906	    };
4907
4908	    var checkButtonsAlignment = function(slider) {
4909		    slider.find('.item').each(function() {
4910			    var inline_buttons = $(this).find('.edgtf-slide-element-button-inline');
4911			    inline_buttons.css('display', 'inline-block').wrapAll('<div class="edgtf-slide-elements-buttons-wrapper" style="text-align: ' + inline_buttons.eq(0).css('text-align') + ';"/>');
4912		    });
4913	    };
4914
4915	    /**
4916	     * Set heights for slider and elemnts depending on slider settings (full height, responsive height od set height)
4917	     * @param slider, current slider
4918	     */
4919	    var setHeights =  function(slider) {
4920
4921		    var responsiveBreakpointSet = [1600,1200,900,650,500,320];
4922
4923		    setElementsResponsiveness(slider);
4924
4925		    if(slider.hasClass('edgtf-full-screen')){
4926
4927			    setSliderFullHeight(slider);
4928
4929			    $(window).resize(function() {
4930				    setSliderFullHeight(slider);
4931				    adjustElementsSizes(slider);
4932			    });
4933
4934		    }else if(slider.hasClass('edgtf-responsive-height')){
4935
4936			    var defaultHeight = slider.data('height');
4937			    setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, false);
4938
4939			    $(window).resize(function() {
4940				    setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, false);
4941				    adjustElementsSizes(slider);
4942			    });
4943
4944		    }else {
4945			    var defaultHeight = slider.data('height');
4946
4947			    slider.find('.edgtf-slider-preloader').css({'height': (sl
4947ider.height()) + 'px'});
4948			    slider.find('.edgtf-slider-preloader .edgtf-ajax-loader').css({'display': 'block'});
4949
4950			    edgtf.windowWidth < 1025 ? setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, false) : setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, true);
4951
4952			    $(window).resize(function() {
4953				    if(edgtf.windowWidth < 1025){
4954					    setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, false);
4955				    }else{
4956					    setSliderHeight(slider, defaultHeight, responsiveBreakpointSet, true);
4957				    }
4958				    adjustElementsSizes(slider);
4959			    });
4960		    }
4961	    };
4962
4963	    /**
4964	     * Set prev/next numbers on navigation arrows
4965	     * @param slider, current slider
4966	     * @param currentItem, current slide item index
4967	     * @param totalItemCount, total number of slide items
4968	     */
4969	    var setPrevNextNumbers = function(slider, currentItem, totalItemCount) {
4970		    if(currentItem == 1){
4971			    slider.find('.left.carousel-control .prev').html(totalItemCount);
4972			    slider.find('.right.carousel-control .next').html(currentItem + 1);
4973		    }else if(currentItem == totalItemCount){
4974			    slider.find('.left.carousel-control .prev').html(currentItem - 1);
4975			    slider.find('.right.carousel-control .next').html(1);
4976		    }else{
4977			    slider.find('.left.carousel-control .prev').html(currentItem - 1);
4978			    slider.find('.right.carousel-control .next').html(currentItem + 1);
4979		    }
4980	    };
4981
4982	    /**
4983	     * Set video background size
4984	     * @param slider, current slider
4985	     */
4986	    var initVideoBackgroundSize = function(slider){
4987		    var min_w = 1500; // minimum video width allowed
4988		    var video_width_original = 1920;  // original video dimensions
4989		    var video_height_original = 1080;
4990		    var vid_ratio = 1920/1080;
4991
4992		    slider.find('.item .edgtf-video .edgtf-video-wrap').each(function(){
4993
4994			    var slideWidth = edgtf.windowWidth;
4995			    var slideHeight = $(this).closest('.carousel').height();
4996
4997			    $(this).width(slideWidth);
4998
4999			    min_w = vid_ratio * (slideHeight+20);
5000			    $(this).height(slideHeight);
5001
5002			    var scale_h = slideWidth / video_width_original;
5003			    var scale_v = (slideHeight - edgtfGlobalVars.vars.edgtfMenuAreaHeight) / video_height_original;
5004			    var scale =  scale_v;
5005			    if (scale_h > scale_v)
5006				    scale =  scale_h;
5007			    if (scale * video_width_original < min_w) {scale = min_w / video_width_original;}
5008
5009			    $(this).find('video, .mejs-overlay, .mejs-poster').width(Math.ceil(scale * video_width_original +2));
5010			    $(this).find('video, .mejs-overlay, .mejs-poster').height(Math.ceil(scale * video_height_original +2));
5011			    $(this).scrollLeft(($(this).find('video').width() - slideWidth) / 2);
5012			    $(this).find('.mejs-overlay, .mejs-poster').scrollTop(($(this).find('video').height() - slideHeight) / 2);
5013			    $(this).scrollTop(($(this).find('video').height() - slideHeight) / 2);
5014		    });
5015	    };
5016
5017	    /**
5018	     * Init video background
5019	     * @param slider, current slider
5020	     */
5021	    var initVideoBackground = function(slider) {
5022		    $('.item .edgtf-video-wrap .edgtf-video-element').mediaelementplayer({
5023			    enableKeyboard: false,
5024			    iPadUseNativeControls: false,
5025			    pauseOtherPlayers: false,
5026			    // force iPhone's native controls
5027			    iPhoneUseNativeControls: false,
5028			    // force Android's native controls
5029			    AndroidUseNativeControls: false
5030		    });
5031
5032		    initVideoBackgroundSize(slider);
5033		    $(window).resize(function() {
5034			    initVideoBackgroundSize(slider);
5035		    });
5036
5037		    //mobile check
5038		    if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){
5039			    $('.edgtf-slider .edgtf-mobile-video-image').show();
5040			    $('.edgtf-slider .edgtf-video-wrap').remove();
5041		    }
5042	    };
5043
5044	    var initPeek = function(slider) {
5045		    if (slider.hasClass('edgtf-slide-peek')) {
5046
5047			    var navArrowHover = function(arrow, entered) {
5048				    var dir = arrow.is('.left') ? 'left' : 'right';
5049				    var targ_peeker = peekers.filter('.'+dir);
5050				    if (entered) {
5051					    arrow.addClass('hovered');
5052					    var targ_item = (items.index(items.filter('.active')) + (dir=='left' ? -1 : 1) + items.length) % items.length;
5053					    targ_peeker.find('.edgtf-slider-peeker-inner').css({
5054						    'background-image': items.eq(targ_item).find('.edgtf-image, .edgtf-mobile-video-image').css('background-image'),
5055						    'width': itemWidth + 'px'
5056					    });
5057					    targ_peeker.addClass('shown');
5058				    }
5059				    else {
5060					    arrow.removeClass('hovered');
5061					    peekers.removeClass('shown');
5062				    }
5063			    };
5064
5065			    var navBulletHover = function(bullet, entered) {
5066				    if (entered) {
5067					    bullet.addClass('hovered');
5068
5069					    var targ_item = bullet.data('slide-to');
5070					    var cur_item = items.index(items.filter('.active'));
5071					    if (cur_item != targ_item) {
5072						    var dir = (targ_item < cur_item) ? 'left' : 'right';
5073						    var targ_peeker = peekers.filter('.'+dir);
5074						    targ_peeker.find('.edgtf-slider-peeker-inner').css({
5075							    'background-image': items.eq(targ_item).find('.edgtf-image, .edgtf-mobile-video-image').css('background-image'),
5076							    'width': itemWidth + 'px'
5077						    });
5078						    targ_peeker.addClass('shown');
5079					    }
5080				    }
5081				    else {
5082					    bullet.removeClass('hovered');
5083					    peekers.removeClass('shown');
5084				    }
5085			    };
5086
5087			    var handleResize = function() {
5088				    itemWidth = items.filter('.active').width();
5089				    itemWidth += (itemWidth % 2) ? 1 : 0; // To make it even
5090				    items.children('.edgtf-image, .edgtf-video').css({
5091					    'position': 'absolute',
5092					    'width': itemWidth + 'px',
5093					    'height': '110%',
5094					    'left': '50%',
5095					    'transform': 'translateX(-50%)'
5096				    });
5097			    };
5098
5099			    var items = slider.find('.item');
5100			    var itemWidth;
5101			    handleResize();
5102			    $(window).resize(handleResize);
5103
5104			    slider.find('.carousel-inner').append('<div class="edgtf-slider-peeker left"><div class="edgtf-slider-peeker-inner"></div></div><div class="edgtf-slider-peeker right"><div class="edgtf-slider-peeker-inner"></div></div>');
5105			    var peekers = slider.find('.edgtf-slider-peeker');
5106			    var nav_arrows = slider.find('.carousel-control');
5107			    var nav_bullets = slider.find('.carousel-indicators > li');
5108
5109				nav_arrows.on('mouseenter', function () {
5110					navArrowHover($(this), true);
5111				});
5112                nav_arrows.on('mouseleave', function () {
5113                    navArrowHover($(this), false);
5114                });
5115
5116				nav_bullets.on('mouseenter', function () {
5117					navBulletHover($(this), true);
5118				});
5119				nav_bullets.on('mouseleave', function () {
5120					navBulletHover($(this), false);
5121				});
5122
5123			    slider.on('slide.bs.carousel', function() {
5124				    setTimeout(function() {
5125					    peekers.addClass('edgtf-slide-peek-in-progress').removeClass('shown');
5126				    }, 500);
5127			    });
5128
5129			    slider.on('slid.bs.carousel', function() {
5130				    nav_arrows.filter('.hovered').each(function() {
5131					    navArrowHover($(this), true);
5132				    });
5133				    setTimeout(function() {
5134					    nav_bullets.filter('.hovered').each(function() {
5135						    navBulletHover($(this), true);
5136					    });
5137				    }, 200);
5138				    peekers.removeClass('edgtf-slide-peek-in-progress');
5139			    });
5140		    }
5141	    };
5142
5143	    var updateNavigationThumbs = function(slider) {
5144		    if (slider.hasClass('edgtf-slider-thumbs')) {
5145			    var src, prev_image, next_image;
5146			    var all_items_count = slider.find('.item').length;
5147			    var curr_item = slider.find('.item').index($('.item.active')[0]) + 1;
5148			    setPrevNextNumbers(slider, curr_item, all_items_count);
5149
5150			    // prev thumb
5151			    if(slider.find('.item.active').prev('.item').length){
5152				    if(slider.find('.item.active').prev('div').find('.edgtf-image').length){
5153					    src = imageRegex.exec(slider.find('.active').prev('div').find('.edgtf-image').attr('style'));
5154					    prev_image = new Image();
5155					    prev_image.src = src[1];
5156					    //prev_image = '<div class="thumb-image" style="background-image: url('+src[1]+')"></div>';
5157				    }else{
5158					    prev_image = slider.find('.active').prev('div').find('> .edgtf-video').clone();
5159					    prev_image.find('.edgtf-video-overlay, .mejs-offscreen').remove();
5160					    prev_image.find('.edgtf-video-wrap').width(150).height(84);
5161					    prev_image.find('.mejs-container').width(150).height(84);
5162					    prev_image.find('video').width(150).height(84);
5163				    }
5164				    slider.find('.left.carousel-control .img .old').fadeOut(300,function(){
5165					    $(this).remove();
5166				    });
5167				    slider.find('.left.carousel-control .img').append(prev_image).find('div.thumb
5167-image, > img, div.edgtf-video').fadeIn(300).addClass('old');
5168
5169			    }else{
5170				    if(slider.find('.carousel-inner .item:last-child .edgtf-image').length){
5171					    src = imageRegex.exec(slider.find('.carousel-inner .item:last-child .edgtf-image').attr('style'));
5172					    prev_image = new Image();
5173					    prev_image.src = src[1];
5174					    //prev_image = '<div class="thumb-image" style="background-image: url('+src[1]+')"></div>';
5175				    }else{
5176					    prev_image = slider.find('.carousel-inner .item:last-child > .edgtf-video').clone();
5177					    prev_image.find('.edgtf-video-overlay, .mejs-offscreen').remove();
5178					    prev_image.find('.edgtf-video-wrap').width(150).height(84);
5179					    prev_image.find('.mejs-container').width(150).height(84);
5180					    prev_image.find('video').width(150).height(84);
5181				    }
5182				    slider.find('.left.carousel-control .img .old').fadeOut(300,function(){
5183					    $(this).remove();
5184				    });
5185				    slider.find('.left.carousel-control .img').append(prev_image).find('div.thumb-image, > img, div.edgtf-video').fadeIn(300).addClass('old');
5186			    }
5187
5188			    // next thumb
5189			    if(slider.find('.active').next('div.item').length){
5190				    if(slider.find('.active').next('div').find('.edgtf-image').length){
5191					    src = imageRegex.exec(slider.find('.active').next('div').find('.edgtf-image').attr('style'));
5192					    next_image = new Image();
5193					    next_image.src = src[1];
5194					    //next_image = '<div class="thumb-image" style="background-image: url('+src[1]+')"></div>';
5195				    }else{
5196					    next_image = slider.find('.active').next('div').find('> .edgtf-video').clone();
5197					    next_image.find('.edgtf-video-overlay, .mejs-offscreen').remove();
5198					    next_image.find('.edgtf-video-wrap').width(150).height(84);
5199					    next_image.find('.mejs-container').width(150).height(84);
5200					    next_image.find('video').width(150).height(84);
5201				    }
5202
5203				    slider.find('.right.carousel-control .img .old').fadeOut(300,function(){
5204					    $(this).remove();
5205				    });
5206				    slider.find('.right.carousel-control .img').append(next_image).find('div.thumb-image, > img, div.edgtf-video').fadeIn(300).addClass('old');
5207
5208			    }else{
5209				    if(slider.find('.carousel-inner .item:first-child .edgtf-image').length){
5210					    src = imageRegex.exec(slider.find('.carousel-inner .item:first-child .edgtf-image').attr('style'));
5211					    next_image = new Image();
5212					    next_image.src = src[1];
5213					    //next_image = '<div class="thumb-image" style="background-image: url('+src[1]+')"></div>';
5214				    }else{
5215					    next_image = slider.find('.carousel-inner .item:first-child > .edgtf-video').clone();
5216					    next_image.find('.edgtf-video-overlay, .mejs-offscreen').remove();
5217					    next_image.find('.edgtf-video-wrap').width(150).height(84);
5218					    next_image.find('.mejs-container').width(150).height(84);
5219					    next_image.find('video').width(150).height(84);
5220				    }
5221				    slider.find('.right.carousel-control .img .old').fadeOut(300,function(){
5222					    $(this).remove();
5223				    });
5224				    slider.find('.right.carousel-control .img').append(next_image).find('div.thumb-image, > img, div.edgtf-video').fadeIn(300).addClass('old');
5225			    }
5226		    }
5227	    };
5228
5229	    /**
5230	     * initiate slider
5231	     * @param slider, current slider
5232	     * @param currentItem, current slide item index
5233	     * @param totalItemCount, total number of slide items
5234	     * @param slideAnimationTimeout, timeout for slide change
5235	     */
5236	    var initiateSlider = function(slider, totalItemCount, slideAnimationTimeout) {
5237
5238		    //set active class on first item
5239		    slider.find('.carousel-inner .item:first-child').addClass('active');
5240		    //check for header style
5241		    edgtfCheckSliderForHeaderStyle($('.carousel .active'), slider.hasClass('edgtf-header-effect'));
5242		    // setting numbers on carousel controls
5243		    if(slider.hasClass('edgtf-slider-numbers')) {
5244			    setPrevNextNumbers(slider, 1, totalItemCount);
5245		    }
5246		    // set video background if there is video slide
5247		    if(slider.find('.item video').length){
5248			    //initVideoBackgroundSize(slider);
5249			    initVideoBackground(slider);
5250		    }
5251
5252		    // update thumbs
5253		    updateNavigationThumbs(slider);
5254
5255		    // initiate peek
5256		    initPeek(slider);
5257
5258		    // enable link hover color for slide elements with links
5259		    slider.find('.edgtf-slide-element-wrapper-link')
5260			    .mouseenter(function() {
5261				    $(this).removeClass('inheriting');
5262			    })
5263			    .mouseleave(function() {
5264				    $(this).addClass('inheriting');
5265			    })
5266		    ;
5267
5268		    //init slider
5269		    if(slider.hasClass('edgtf-auto-start')){
5270			    slider.carousel({
5271				    interval: slideAnimationTimeout,
5272				    pause: false
5273			    });
5274
5275			    //pause slider when hover slider button
5276			    slider.find('.slide_buttons_holder .qbutton')
5277				    .mouseenter(function() {
5278					    slider.carousel('pause');
5279				    })
5280				    .mouseleave(function() {
5281					    slider.carousel('cycle');
5282				    });
5283		    } else {
5284			    slider.carousel({
5285				    interval: 0,
5286				    pause: false
5287			    });
5288		    }
5289
5290		    $(window).scroll(function() {
5291			    if(slider.hasClass('edgtf-full-screen') && edgtf.scroll > edgtf.windowHeight && edgtf.windowWidth > 1024){
5292				    slider.carousel('pause');
5293			    }else if(!slider.hasClass('edgtf-full-screen') && edgtf.scroll > slider.height() && edgtf.windowWidth > 1024){
5294				    slider.carousel('pause');
5295			    }else{
5296				    slider.carousel('cycle');
5297			    }
5298		    });
5299
5300
5301		    //initiate image animation
5302		    if($('.carousel-inner .item:first-child').hasClass('edgtf-animate-image') && edgtf.windowWidth > 1024){
5303			    slider.find('.carousel-inner .item.edgtf-animate-image:first-child .edgtf-image').transformAnimate({
5304				    transform: "matrix("+matrixArray[$('.carousel-inner .item:first-child').data('edgtf_animate_image')]+")",
5305				    duration: 30000
5306			    });
5307		    }
5308	    };
5309
5310	    return {
5311		    init: function() {
5312			    if(sliders.length) {
5313				    sliders.each(function() {
5314					    var $this = $(this);
5315					    var slideAnimationTimeout = $this.data('slide_animation_timeout');
5316					    var totalItemCount = $this.find('.item').length;
5317
5318					    checkButtonsAlignment($this);
5319
5320					    setHeights($this);
5321
5322					    /*** wait until first video or image is loaded and than initiate slider - start ***/
5323					    if(edgtf.htmlEl.hasClass('touch')){
5324						    if($this.find('.item:first-child .edgtf-mobile-video-image').length > 0){
5325							    var src = imageRegex.exec($this.find('.item:first-child .edgtf-mobile-video-image').attr('style'));
5326						    }else{
5327							    var src = imageRegex.exec($this.find('.item:first-child .edgtf-image').attr('style'));
5328						    }
5329						    if(src) {
5330							    var backImg = new Image();
5331							    backImg.src = src[1];
5332							    $(backImg).on('load', function(){
5333								    $('.edgtf-slider-preloader').fadeOut(500);
5334								    initiateSlider($this,totalItemCount,slideAnimationTimeout);
5335							    });
5336						    }
5337					    } else {
5338						    if($this.find('.item:first-child video').length > 0){
5339							    $this.find('.item:first-child video').eq(0).one('loadeddata',function(){
5340								    $('.edgtf-slider-preloader').fadeOut(500);
5341								    initiateSlider($this,totalItemCount,slideAnimationTimeout);
5342							    });
5343						    }else{
5344							    var src = imageRegex.exec($this.find('.item:first-child .edgtf-image').attr('style'));
5345							    if (src) {
5346								    var backImg = new Image();
5347								    backImg.src = src[1];
5348								    $(backImg).on('load', function(){
5349									    $('.edgtf-slider-preloader').fadeOut(500);
5350									    initiateSlider($this,totalItemCount,slideAnimationTimeout);
5351								    });
5352							    }
5353						    }
5354					    }
5355					    /*** wait until first video or image is loaded and than initiate slider - end ***/
5356
5357					    /* before slide transition - start */
5358					    $this.on('slide.bs.carousel', function () {
5359						    $this.addClass('edgtf-in-progress');
5360						    $this.find('.active .edgtf-slider-elements-holder-frame, .active .edgtf-slide-element-section-link').fadeTo(250,0);
5361					    });
5362					    /* before slide transition - end */
5363
5364					    /* after slide transition - start */
5365					    $this.on('slid.bs.carousel', function () {
5366						    $this.removeClass('edgtf-in-progress');
5367						    $this.find('.active .edgtf-slider-elements-holder-frame, .active .edgtf-slide-element-section-link').fadeTo(0,1);
5368
5369						    // setting numbers on carousel controls
5370						    if($this.hasClass('edgtf-slider-numbers')) {
5371							    var currentItem = $('.item').index($('.item.active')[0]) + 1;
5372							    setPrevNextNumbers($this, currentItem, totalItemCount);
5373						    }
5374
5375						    // initiate image animation on active slide and reset all others
5376						    $('.item.edgtf-animate-image .edgtf-image').stop().css({'transform':'', '-webkit-transform':''});
5377						    if($('.item.active').hasClass('edgtf-animate-image') && edgtf.windowWidth > 1025){
5378							    $('.item.edgtf-animate-image.active .edgtf-image').transformAnimate({
5379								    transform: "matrix("+matrixArray[$('.item.edgtf-animate-image.active').data('edgtf_animate_image')]+")",
5380								    duration: 30000
5381							    });
5382						    }
5383
5384						    // setting thumbnails on navigation controls
5385						    if($this.hasClass('edgtf-slider-thumbs')) {
5386							    updateNavigationThumbs($this);
5387						    }
5388					    });
5389					    /* after slide transition - end */
5390
5391					    /* swipe functionality - start */
5392					    $this.swipe( {
5393						    swipeLeft: function(){ $this.carousel('next'); },
5394						    swipeRight: function(){ $this.carousel('prev'); },
5395						    threshold:20
5396					    });
5397					    /* swipe functionality - end */
5398
5399				    });
5400
5401				    //adding parallax functionality on slider
5402				    if($('.no-touch .carousel').length){
5403					    var skrollr_slider = skrollr.init({
5404						    smoothScrolling: false,
5405						    forceHeight: false
5406					    });
5407					    skrollr_slider.refresh();
5408				    }
5409
5410				    $(window).scroll(function(){
5411					    //set control class for slider in order to change header style
5412					    if($('.edgtf-slider .carousel').height() < edgtf.scroll){
5413						    $('.edgtf-slider .carousel').addClass('edgtf-disable-slider-header-style-changing');
5414					    }else{
5415						    $('.edgtf-slider .carousel').removeClass('edgtf-disable-slider-header-style-changing');
5416						    edgtfCheckSliderForHeaderStyle($('.edgtf-slider .carousel .active'),$('.edgtf-slider .carousel').hasClass('edgtf-header-effect'));
5417					    }
5418
5419					    //hide slider when it is out of viewport
5420					    if($('.edgtf-slider .carousel').hasClass('edgtf-full-screen') && edgtf.scroll > edgtf.windowHeight && edgtf.windowWidth > 1025){
5421						    $('.edgtf-slider .carousel').find('.carousel-inner, .carousel-indicators').hide();
5422					    }else if(!$('.edgtf-slider .carousel').hasClass('edgtf-full-screen') && edgtf.scroll > $('.edgtf-slider .carousel').height() && edgtf.windowWidth > 1025){
5423						    $('.edgtf-slider .carousel').find('.carousel-inner, .carousel-indicators').hide();
5424					    }else{
5425						    $('.edgtf-slider .carousel').find('.carousel-inner, .carousel-indicators').show();
5426					    }
5427				    });
5428			    }
5429		    }
5430	    };
5431    };
5432
5433    /**
5434     * Check if slide effect on header style changing
5435     * @param slide, current slide
5436     * @param headerEffect, flag if slide
5437     */
5438
5439    function edgtfCheckSliderForHeaderStyle(slide, headerEffect) {
5440
5441        if($('.edgtf-slider .carousel').not('.edgtf-disable-slider-header-style-changing').length > 0) {
5442
5443            var slideHeaderStyle = "";
5444            if (slide.hasClass('light')) { slideHeaderStyle = 'edgtf-light-header'; }
5445            if (slide.hasClass('dark')) { slideHeaderStyle = 'edgtf-dark-header'; }
5446
5447            if (slideHeaderStyle !== "") {
5448                if (headerEffect) {
5449                    edgtf.body.removeClass('edgtf-dark-header edgtf-light-header').addClass(slideHeaderStyle);
5450                }
5451            } else {
5452                if (headerEffect) {
5453                    edgtf.body.removeClass('edgtf-dark-header edgtf-light-header').addClass(edgtf.defaultHeaderStyle);
5454                }
5455
5456            }
5457        }
5458    }
5459
5460    /**
5461     * List object that initializes list with animation
5462     * @type {Function}
5463     */
5464    var edgtfInitIconList = edgtf.modules.shortcodes.edgtfInitIconList = function() {
5465        var iconList = $('.edgtf-animate-list');
5466
5467        /**
5468         * Initializes icon list animation
5469         * @param list current list shortcode
5470         */
5471        var iconListInit = function(list) {
5472            setTimeout(function(){
5473                list.appear(function(){
5474                    list.addClass('edgtf-appeared');
5475                },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
5476            },30);
5477        };
5478
5479        return {
5480            init: function() {
5481                if(iconList.length) {
5482                    iconList.each(function() {
5483                        iconListInit($(this));
5484                    });
5485                }
5486            }
5487        };
5488    };
5489
5490    /**
5491     * Masonry gallery, init masonry and resize pictures in grid
5492     */
5493    function edgtfInitMasonryGallery(){
5494
5495
5496        resizeMasonryGallery($('.edgtf-masonry-gallery-grid-sizer').width());
5497
5498        if($('.edgtf-masonry-gallery-holder').length){
5499            $('.edgtf-masonry-gallery-holder').each(function(){
5500                var holder = $(this);
5501                holder.waitForImages(function(){
5502                    holder.animate({opacity:1});
5503                    holder.isotope({
5504                        itemSelector: '.edgtf-masonry-gallery-item',
5505                        masonry: {
5506                            columnWidth: '.edgtf-masonry-gallery-grid-sizer'
5507                        }
5508                    });
5509                });
5510            });
5511            $(window).resize(function(){
5512                resizeMasonryGallery($('.edgtf-masonry-gallery-grid-sizer').width());
5513                $('.edgtf-masonry-gallery-holder').isotope('reloadItems');
5514            });
5515        }
5516    }
5517
5518    function resizeMasonryGallery(size){
5519
5520        var rectangle_portrait = $('.edgtf-masonry-gallery-holder .edgtf-mg-rectangle-portrait');
5521        var rectangle_landscape = $('.edgtf-masonry-gallery-holder .edgtf-mg-rectangle-landscape');
5522        var square_big = $('.edgtf-masonry-gallery-holder .edgtf-mg-square-big');
5523        var square_small = $('.edgtf-masonry-gallery-holder .edgtf-mg-square-small');
5524
5525        rectangle_portrait.css('height', 2*size);
5526        if (window.innerWidth < 600) {
5527            rectangle_landscape.css('height', size/2);
5528        }
5529        else {
5530            rectangle_landscape.css('height', size);
5531        }
5532        square_big.css('height', 2*size);
5533        if (window.innerWidth < 600) {
5534            square_big.css('height', square_big.width());
5535        }
5536        square_small.css('height', size);
5537    }
5538
5539    /*
5540     **  Init shop list masonry type
5541     */
5542    function edgtfInitShopListMasonry(){
5543        var shopList = $('.edgtf-shop-masonry');
5544        if(shopList.length) {
5545            shopList.each(function() {
5546                var thisShopList = $(this).children('.edgtf-shop-list-masonry');
5547                var size = thisShopList.find('.edgtf-shop-list-masonry-grid-sizer').width();
5548                edgtfResizeShopMasonry(size,thisShopList);
5549
5550                edgtfInitMasonryLayout(thisShopList);
5551                $(window).resize(function(){
5552                    size = thisShopList.find('.edgtf-shop-list-masonry-grid-sizer').width();
5553                    edgtfResizeShopMasonry(size,thisShopList);
5554                    edgtfInitMasonryLayout(thisShopList);
5555                });
5556            });
5557        }
5558    }
5559
5560    function edgtfInitMasonryLayout(container){
5561        container.animate({opacity: 1});
5562        container.isotope({
5563            layoutMode: 'packery',
5564            itemSelector: '.edgtf-shop-product',
5565            packery: {
5566                columnWidth: '.edgtf-shop-list-masonry-grid-sizer'
5567            }
5568        });
5569    }
5570
5571    function edgtfResizeShopMasonry(size,container){
5572
5573        var defaultMasonryItem = container.find('.edgtf-default-masonry-item');
5574        var largeWidthMasonryItem = container.find('.edgtf-large-width-masonry-item');
5575        var largeHeightMasonryItem = container.find('.edgtf-large-height-masonry-item');
5576        var largeWidthHeightMasonryItem = container.find('.edgtf-large-width-height-masonry-item');
5577
5578        defaultMasonryItem.css('height', size);
5579        largeHeightMasonryItem.css('height', Math.round(2*size));
5580
5581        var breakpoint = edgtf.body.hasClass('page-template-full-width') ? 480 : 600;
5582
5583        if(edgtf.windowWidth > breakpoint){
5584            largeWidthHeightMasonryItem.css('height', Math.round(2*size));
5585            largeWidthMasonryItem.css('height', size);
5586        }else{
5587            largeWidthHeightMasonryItem.css('height', size);
5588            largeWidthMasonryItem.css('height', Math.round(size/2));
5589
5590        }
5591    }
5592
5593    /**
5594     * Initializes shop masonry filter
5595     */
5596    function edgtfInitShopMasonryFilter(){
5597
5598        var filterHolder = $('.edgtf-shop-filter-holder.edgtf-masonry-filter');
5599
5600        if(filterHolder.length){
5601            filterHolder.each(function(){
5602
5603                var thisFilterHolder = $(this);
5604
5605                var shopIsotopeAnimation = null;
5606
5607                thisFilterHolder.find('.filter:first').addClass('current');
5608
5609                thisFilterHolder.find('li').on('click',function(){
5610
5611                    var currentFilter = $(this);
5612                    clearTimeout(shopIsotopeAnimation);
5613
5614                    $('.isotope, .isotope .isotope-item').css('transition-duration','0.8s');
5615
5616                    shopIsotopeAnimation = setTimeout(function(){
5617                        $('.isotope, .isotope .isotope-item').css('transition-duration','0s');
5618                    },700);
5619
5620                    var selector = $(this).attr('data-filter');
5621                    thisFilterHolder.parent().find('.edgtf-shop-list-masonry').isotope({ filter: selector });
5622
5623                    thisFilterHolder.find('.filter').removeClass('current');
5624                    currentFilter.addClass('current');
5625
5626                    return false;
5627
5628                });
5629
5630            });
5631        }
5632    }
5633
5634    /**
5635     * Check if slide effect on header style changing
5636     */
5637    function edgtfItemShowcase() {
5638        var itemShowcase = $('.edgtf-item-showcase');
5639        if (itemShowcase.length) {
5640            itemShowcase.each(function(){
5641                var thisItemShowcase = $(this),
5642                    leftItems = thisItemShowcase.find('.edgtf-item-left'),
5643                    rightItems = thisItemShowcase.find('.edgtf-item-right'),
5644                    itemImage = thisItemShowcase.find('.edgtf-item-image');
5645
5646                //logic
5647                leftItems.wrapAll( "<div class='edgtf-item-showcase-holder edgtf-holder-left' />");
5648                rightItems.wrapAll( "<div class='edgtf-item-showcase-holder edgtf-holder-right' />");
5649                thisItemShowcase.animate({opacity:1},200);
5650                setTimeout(function(){
5651                    thisItemShowcase.appear(function(){
5652                        itemImage.addClass('edgtf-appeared');
5653                        thisItemShowcase.on('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',
5654                            function(e) {
5655                                if(edgtf.windowWidth > 1200) {
5656                                    itemAppear('.edgtf-holder-left .edgtf-item');
5657                                    itemAppear('.edgtf-holder-right .edgtf-item');
5658                                } else {
5659                                    itemAppear('.edgtf-item');
5660                                }
5661                            });
5662                    },{accX: 0, accY: 0});
5663                },100);
5664
5665                //appear animation trigger
5666                function itemAppear(itemCSSClass) {
5667                    thisItemShowcase.find(itemCSSClass).each(function(i){
5668                        var thisListItem = $(this);
5669                        setTimeout(function(){
5670                            thisListItem.appear(function(){
5671                                $(this).addClass('edgtf-appeared');
5672                            },{accX: 0, accY: 0});
5673                        }, i*150);
5674                    });
5675                }
5676            });
5677
5678        }
5679    }
5680
5681	/*
5682	 * Type out functionality for Custom Font
5683	 */
5684	function edgtfCustomFontTypeOut() {
5685
5686		var edgtfTyped = $('.edgtf-typed');
5687
5688		if (edgtfTyped.length) {
5689			edgtfTyped.each(function(){
5690
5691				//vars
5692				var thisTyped = $(this),
5693					typedWrap = thisTyped.parent('.edgtf-typed-wrap'),
5694					customFontHolder = typedWrap.parent('.edgtf-custom-font-holder'),
5695					originalText = customFontHolder.find('.edgtf-custom-font-original'),
5696					str = typedWrap.data( 'strings' );
5697
5698                var options = {
5699                    strings: str,
5700                    typeSpeed: 90,
5701                    backDelay: 700,
5702                    loop: true,
5703                    contentType: 'text',
5704                    loopCount: false,
5705                    cursorChar: "_",
5706                };
5707
5708				//ampersand
5709				if(originalText.text().indexOf('&') != -1) {
5710					originalText.html(originalText.text().replace('&', '<span class="edgtf-amp">&</span>'));
5711				}
5712
5713				//typeout
5714				setTimeout(function(){
5715					customFontHolder.appear(function() {
5716                        if ( ! thisTyped.hasClass( 'edgtf--initialized' ) ) {
5717
5718                            var typed = new Typed(
5719                                thisTyped[0],
5720                                options
5721                            );
5722                            thisTyped.addClass( 'edgtf--initialized' );
5723                        }
5724					},{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
5725				}, 100);
5726
5727			});
5728		}
5729	}
5730
5731    /*
5732    * Animations Holder
5733    */
5734    function edgtfAnimationsHolder() {
5735        var animationsHolderElements = $('.edgtf-animations-holder');
5736
5737        if (animationsHolderElements.length) {
5738            animationsHolderElements.appear(function(){
5739                var animationsHolderElement = $(this);
5740
5741                animationsHolderElement.addClass('edgtf-appeared');
5742
5743            },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
5744        }
5745    }
5746
5747    /*
5748    *  Reservation Form 
5749    */
5750    function edgtfReservationFormDatePicker() {
5751
5752        var datepicker = $('.edgtf-ot-date');
5753
5754            if(datepicker.length) {
5755                datepicker.each(function() {
5756                    $(this).datepicker({
5757                        prevText: '<span class="arrow_carrot-left"></span>',
5758                        nextText: '<span class="arrow_carrot-right"></span>'
5759                    });
5760                });
5761            }
5762    }
5763
5764    /*
5765    *  Give Slider Init
5766    */
5767    function edgtfInitGiveSlider(){
5768    	var giveSliders = $('.edgtf-give-forms-slider');
5769
5770    	if (giveSliders.length){
5771    		giveSliders.each(function(){
5772    			var thisGiveSlider = $(this);
5773
5774    			thisGiveSlider.slick({
5775                    infinite: true,
5776                    autoplay: true,
5777                    slidesToShow : 1,
5778                    autoplaySpeed: 2500,
5779                    fade: true,
5780                    arrows: false,
5781                    dots: true,
5782					dotsClass: 'edgtf-slick-dots',
5783                    adaptiveHeight: true,
5784                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
5785                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
5786                    customPaging: function(slider, i) {
5787                        return '<span class="edgtf-slick-dot-inner"></span>';
5788                    }   				
5789    			});
5790
5791                thisGiveSlider.addClass("edgtf-give-forms-slider-loaded");
5792    		});
5793    	}
5794
5795    }
5796
5797    /*
5798     * Banner
5799     */
5800    function edgtfBanner() {
5801        var banners = $('.edgtf-banner');
5802
5803        if (banners.length) {
5804            banners.each(function(){
5805                var banner = $(this);
5806
5807                if(banner.find('.edgtf-banner-read-more').length) {
5808                    var button = banner.find('.edgtf-banner-read-more');
5809
5810                    button.mouseenter(function(){
5811                        banner.addClass('edgtf-hovered');
5812                    }).mouseleave(function(){
5813                        banner.removeClass('edgtf-hovered');
5814                    });
5815                }
5816            });
5817        }
5818    }
5819
5820
5821})(jQuery);
5822
5823(function($) {
5824    'use strict';
5825
5826    $(window).on('load', edgtfOnWindowLoad);
5827
5828    /* 
5829        All functions to be called on $(window).load() should be in this function
5830    */
5831    function edgtfOnWindowLoad() {
5832        edgtfElementorInitAccordions();
5833        edgtfElementorBanner();
5834        edgtfElementorInitBlogListMasonry();
5835        edgtfElementorInitBlogSlider();
5836        edgtfElementorButton();
5837        edgtfElementorInitCountdown();
5838        edgtfElementorInitCounter();
5839        edgtfElementorCustomFont();
5840        edgtfElementorShowGoogleMap();
5841        edgtfElementorIcon();
5842        edgtfElementorIconWithText();
5843        edgtfElementorInitImageGallery();
5844        edgtfElementorInitMessages();
5845        edgtfElementorItemShowcase();
5846        edgtfElementorInitPieChart();
5847        edgtfElementorInitPieChartDoughnut();
5848        edgtfElementorInitProgressBars();
5849        edgtElementorProjectPresentationSlider();
5850        edgtfElementorReservationFormDatePicker();
5851        edgtfElementorInitShopListMasonry();
5852        edgtfElementorInitTabs();
5853        edgtfElementorIconList();
5854        qodefElementorVideoButton();
5855        edgtfElementorInitGiveSlider();
5856        edgtfElementorInitCarousels();
5857        edgtfElementorInitEvents();
5858        edgtfElementorInitMasonryGallery();
5859        edgtfElementorInitPortfolioList();
5860        edgtfElementorInitPortfolioSlider();
5861        edgtfElementorInitTestimonials();
5862    }
5863
5864
5865    function edgtfElementorInitAccordions(){
5866        $(window).on('elementor/frontend/init', function () {
5867            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_accordion.default', function() {
5868                edgtf.modules.shortcodes.edgtfInitAccordions();
5869            } );
5870        });
5871    }
5872
5873    function edgtfElementorBanner(){
5874        $(window).on('elementor/frontend/init', function () {
5875            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_banner.default', function() {
5876                edgtf.modules.shortcodes.edgtfBanner();
5877            } );
5878        });
5879    }
5880
5881    function edgtfElementorInitBlogListMasonry(){
5882        $(window).on('elementor/frontend/init', function () {
5883            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_blog_list.default', function() {
5884                edgtf.modules.shortcodes.edgtfInitBlogListMasonry();
5885            } );
5886        });
5887    }
5888
5889    function edgtfElementorInitBlogSlider(){
5890        $(window).on('elementor/frontend/init', function () {
5891            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_blog_slider.default', function() {
5892                edgtf.modules.shortcodes.edgtfInitBlogSlider();
5893            } );
5894        });
5895    }
5896
5897    function edgtfElementorButton(){
5898        $(window).on('elementor/frontend/init', function () {
5899            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_button.default', function() {
5900                edgtf.modules.shortcodes.edgtfButton().init();
5901            } );
5902            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_call_to_action.default', function() {
5903                edgtf.modules.shortcodes.edgtfButton().init();
5904            } );
5905        });
5906    }
5907
5908    function edgtfElementorInitCountdown(){
5909        $(window).on('elementor/frontend/init', function () {
5910            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_countdown.default', function() {
5911                edgtf.modules.shortcodes.edgtfInitCountdown();
5912            } );
5913        });
5914    }
5915
5916    function edgtfElementorInitCounter(){
5917        $(window).on('elementor/frontend/init', function () {
5918            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_counter.default', function() {
5919                edgtf.modules.shortcodes.edgtfInitCounter();
5920            } );
5921        });
5922    }
5923
5924    function edgtfElementorCustomFont(){
5925        $(window).on('elementor/frontend/init', function () {
5926            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_custom_font.default', function() {
5927                edgtf.modules.shortcodes.edgtfCustomFontResize();
5928                edgtf.modules.shortcodes.edgtfCustomFontTypeOut();
5929            } );
5930        });
5931    }
5932
5933    function edgtfElementorShowGoogleMap(){
5934        $(window).on('elementor/frontend/init', function () {
5935            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_google_map.default', function() {
5936                edgtf.modules.shortcodes.edgtfShowGoogleMap();
5937            } );
5938        });
5939    }
5940
5941    function edgtfElementorIcon(){
5942        $(window).on('elementor/frontend/init', function () {
5943            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_icon.default', function() {
5944                edgtf.modules.shortcodes.edgtfIcon().init();
5945            } );
5946        });
5947    }
5948
5949    function edgtfElementorIconWithText(){
5950        $(window).on('elementor/frontend/init', function () {
5951            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_icon_with_text.default', function() {
5952                edgtf.modules.shortcodes.edgtfIcon().init();
5953            } );
5954        });
5955    }
5956
5957    function edgtfElementorInitImageGallery(){
5958        $(window).on('elementor/frontend/init', function () {
5959            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_image_gallery.default', function() {
5960                edgtf.modules.shortcodes.edgtfInitImageGallery();
5961                edgtf.modules.shortcodes.edgtfInitImageGalleryMasonry();
5962            } );
5963        });
5964    }
5965
5966    function edgtfElementorItemShowcase(){
5967        $(window).on('elementor/frontend/init', function () {
5968            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_item_showcase.default', function() {
5969                edgtf.modules.shortcodes.edgtfItemShowcase();
5970            } );
5971        });
5972    }
5973
5974    function edgtfElementorInitMessages(){
5975        $(window).on('elementor/frontend/init', function () {
5976            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_message.default', function() {
5977                edgtf.modules.shortcodes.edgtfInitMessages();
5978                edgtf.modules.shortcodes.edgtfInitMessageHeight();
5979            } );
5980        });
5981    }
5982
5983    function edgtfElementorInitPieChart(){
5984        $(window).on('elementor/frontend/init', function () {
5985            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_pie_chart.default', function() {
5986                edgtf.modules.shortcodes.edgtfInitPieChart();
5987            } );
5988
5989            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_pie_chart_with_icon.default', function() {
5990                edgtf.modules.shortcodes.edgtfInitPieChart();
5991            } );
5992        });
5993    }
5994
5995    function edgtfElementorInitPieChartDoughnut(){
5996        $(window).on('elementor/frontend/init', function () {
5997            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_pie_chart_doughnut.default', function() {
5998                edgtf.modules.shortcodes.edgtfInitPieChartDoughnut();
5999            } );
6000
6001            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_pie_chart_pie.default', function() {
6002                edgtf.modules.shortcodes.edgtfInitPieChartDoughnut();
6003            } );
6004        });
6005    }
6006
6007    function edgtfElementorInitProgressBars(){
6008        $(window).on('elementor/frontend/init', function () {
6009            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_progress_bar.default', function() {
6010                edgtf.modules.shortcodes.edgtfInitProgressBars();
6011            } );
6012        });
6013
6014        $(window).on('elementor/frontend/init', function () {
6015            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_cause_list.default', function() {
6016                edgtf.modules.shortcodes.edgtfInitProgressBars();
6017
6018            } );
6019        });
6020    }
6021
6022    function edgtElementorProjectPresentationSlider(){
6023        $(window).on('elementor/frontend/init', function () {
6024            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_project_presentation.default', function() {
6025                edgtf.modules.shortcodes.edgtfProjectPresentationSlider();
6026            } );
6027        });
6028    }
6029
6030    function edgtfElementorReservationFormDatePicker(){
6031        $(window).on('elementor/frontend/init', function () {
6032            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_reservation_form.default', function() {
6033                edgtf.modules.shortcodes.edgtfReservationFormDatePicker();
6034            } );
6035        });
6036    }
6037
6038    function edgtfElementorInitShopListMasonry(){
6039        $(window).on('elementor/frontend/init', function () {
6040            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_shop_masonry.default', function() {
6041                edgtf.modules.shortcodes.edgtfInitShopListMasonry();
6042            } );
6043        });
6044    }
6045
6046    function edgtfElementorInitTabs(){
6047        $(window).on('elementor/frontend/init', function () {
6048            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_tabs.default', function() {
6049                edgtf.modules.shortcodes.edgtfInitTabs();
6050                edgtf.modules.shortcodes.edgtfInitTabIcons();
6051            } );
6052        });
6053    }
6054
6055    function edgtfElementorIconList(){
6056        $(window).on('elementor/frontend/init', function () {
6057            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_unordered_list.default', function() {
6058                edgtf.modules.shortcodes.edgtfInitIconList().init();
6059            } );
6060        });
6061    }
6062
6063    function qodefElementorVideoButton(){
6064        $(window).on('elementor/frontend/init', function () {
6065            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_video_button.default', function() {
6066                edgtf.modules.common.edgtfPrettyPhoto();
6067            } );
6068        });
6069    }
6070
6071    function edgtfElementorInitGiveSlider(){
6072        $(window).on('elementor/frontend/init', function () {
6073            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_cause_slider.default', function() {
6074                edgtf.modules.shortcodes.edgtfInitGiveSlider();
6075                edgtf.modules.shortcodes.edgtfInitProgressBars();
6076            } );
6077        });
6078    }
6079
6080    function edgtfElementorInitCarousels(){
6081        $(window).on('elementor/frontend/init', function () {
6082            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_carousel.default', function() {
6083                edgtf.modules.shortcodes.edgtfInitCarousels();
6084            } );
6085        });
6086    }
6087
6088    function edgtfElementorInitEvents(){
6089        $(window).on('elementor/frontend/init', function () {
6090            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_event_list.default', function() {
6091                edgtf.modules.events.edgtfTitleFullWidthResize();
6092                edgtf.modules.events.edgtfTitleFullWidthResize();
6093                edgtf.modules.events.edgtfEventAppearFx();
6094                edgtf.modules.events.edgtfInitEventListCarousel();
6095            } );
6096        });
6097    }
6098
6099    function edgtfElementorInitMasonryGallery(){
6100        $(window).on('elementor/frontend/init', function () {
6101            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_masonry_gallery.default', function() {
6102                edgtf.modules.shortcodes.edgtfInitMasonryGallery();
6103            } );
6104        });
6105    }
6106
6107    function edgtfElementorInitPortfolioList(){
6108        $(window).on('elementor/frontend/init', function () {
6109            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_portfolio_list.default', function() {
6110                edgtf.modules.shortcodes.edgtfInitPortfolioListMasonry();
6111                edgtf.modules.shortcodes.edgtfInitPortfolioListPinterest();
6112                edgtf.modules.shortcodes.edgtfInitPortfolio();
6113                edgtf.modules.shortcodes.edgtfInitPortfolioMasonryFilter();
6114                edgtf.modules.shortcodes.edgtfInitPortfolioLoadMore();
6115            } );
6116        });
6117    }
6118
6119    function edgtfElementorInitPortfolioSlider(){
6120        $(window).on('elementor/frontend/init', function () {
6121            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_portfolio_slider.default', function() {
6122                edgtf.modules.shortcodes.edgtfInitPortfolioSlider();
6123            } );
6124        });
6125    }
6126
6127    function edgtfElementorInitTestimonials(){
6128        $(window).on('elementor/frontend/init', function () {
6129            elementorFrontend.hooks.addAction( 'frontend/element_ready/edgtf_testimonials.default', function() {
6130                edgtf.modules.shortcodes.edgtfInitTestimonials();
6131            } );
6132        });
6133    }
6134
6135})(jQuery);
6136(function($) {
6137    'use strict';
6138
6139    var woocommerce = {};
6140    edgtf.modules.woocommerce = woocommerce;
6141
6142    woocommerce.edgtfInitQuantityButtons = edgtfInitQuantityButtons;
6143    woocommerce.edgtfInitSelect2 = edgtfInitSelect2;
6144
6145    woocommerce.edgtfOnDocumentReady = edgtfOnDocumentReady;
6146    woocommerce.edgtfOnWindowLoad = edgtfOnWindowLoad;
6147    woocommerce.edgtfOnWindowResize = edgtfOnWindowResize;
6148
6149    $(document).ready(edgtfOnDocumentReady);
6150    $(window).on('load', edgtfOnWindowLoad);
6151    $(window).resize(edgtfOnWindowResize);
6152
6153    /* 
6154        All functions to be called on $(document).ready() should be in this function
6155    */
6156    function edgtfOnDocumentReady() {
6157        edgtfInitQuantityButtons();
6158        edgtfInitSelect2();
6159        edgtfAddedToCartButton();
6160        edgtfInitSingleProductLightbox();
6161    }
6162
6163    /* 
6164        All functions to be called on $(window).load() should be in this function
6165    */
6166    function edgtfOnWindowLoad() {
6167
6168    }
6169
6170    /* 
6171        All functions to be called on $(window).resize() should be in this function
6172    */
6173    function edgtfOnWindowResize() {
6174
6175    }
6176    
6177
6178    function edgtfInitQuantityButtons() {
6179
6180        $(document).on( 'click', '.edgtf-quantity-minus, .edgtf-quantity-plus', function(e) {
6181            e.stopPropagation();
6182
6183            var button = $(this),
6184                $inputField = button.parents('.edgtf-quantity-buttons').find('.edgtf-quantity-input'),
6185                step = parseFloat($inputField.data('step')),
6186                max = parseFloat($inputField.data('max')),
6187                min = parseFloat($inputField.data('min')),
6188                minus = false,
6189                inputValue = typeof Number.isNaN === 'function' && Number.isNaN(parseFloat($inputField.val())) ? min : parseFloat($inputField.val()),
6190                newInputValue;
6191
6192            if (button.hasClass('edgtf-quantity-minus')) {
6193                minus = true;
6194            }
6195    
6196            if (minus) {
6197                newInputValue = inputValue - step;
6198                if (newInputValue >= min) {
6199                    $inputField.val(newInputValue);
6200                } else {
6201                    $inputField.val(min);
6202                }
6203            } else {
6204                newInputValue = inputValue + step;
6205                if (max === undefined) {
6206                    $inputField.val(newInputValue);
6207          
6207      } else {
6208                    if (newInputValue >= max) {
6209                        $inputField.val(max);
6210                    } else {
6211                        $inputField.val(newInputValue);
6212                    }
6213                }
6214            }
6215    
6216            $inputField.trigger( 'change' );
6217
6218        });
6219
6220    }
6221
6222    function edgtfInitSelect2() {
6223
6224        if ($('.woocommerce-ordering .orderby').length ||  $('#calc_shipping_country').length ) {
6225
6226            $('.woocommerce-ordering .orderby').select2({
6227                minimumResultsForSearch: Infinity
6228            });
6229
6230            $('#calc_shipping_country, .dropdown_product_cat, .dropdown_layered_nav_color').select2();
6231
6232        }
6233
6234    }
6235
6236    /*
6237     ** Init Product Single Pretty Photo attributes
6238     */
6239    function edgtfInitSingleProductLightbox() {
6240        var item = $('.edgtf-woocommerce-single-page .edgtf-single-product-wrapper-top .images .woocommerce-product-gallery__image');
6241
6242        if(item.length) {
6243            item.each(function() {
6244                var thisItem = $(this).children('a');
6245
6246                thisItem.attr('data-rel', 'prettyPhoto[woo_single_pretty_photo]');
6247
6248                if (typeof edgtf.modules.common.edgtfPrettyPhoto === "function") {
6249                    edgtf.modules.common.edgtfPrettyPhoto();
6250                }
6251            });
6252        }
6253    }
6254
6255
6256
6257
6258    function edgtfAddedToCartButton(){
6259        $('body').on("added_to_cart", function( data ) {
6260
6261            var btn = $('a.added_to_cart:not(.edgtf-btn)');
6262            btn.addClass('edgtf-btn').html("<span class='edgtf-icon-font-elegant icon_check'></span><span class='edgtf-btn-text'>"+btn.html()+"</span>");
6263        });
6264    }
6265
6266
6267})(jQuery);
6268(function($) {
6269    'use strict';
6270
6271    var portfolio = {};
6272    edgtf.modules.portfolio = portfolio;
6273
6274    portfolio.edgtfOnDocumentReady = edgtfOnDocumentReady;
6275    portfolio.edgtfOnWindowLoad = edgtfOnWindowLoad;
6276    portfolio.edgtfOnWindowResize = edgtfOnWindowResize;
6277    portfolio.edgtfOnWindowScroll = edgtfOnWindowScroll;
6278    portfolio.edgtfPortfolioSingleMasonry = edgtfPortfolioSingleMasonry;
6279
6280    $(document).ready(edgtfOnDocumentReady);
6281    $(window).on('load', edgtfOnWindowLoad);
6282    $(window).resize(edgtfOnWindowResize);
6283    $(window).scroll(edgtfOnWindowScroll);
6284    
6285    /* 
6286        All functions to be called on $(document).ready() should be in this function
6287    */
6288    function edgtfOnDocumentReady() {
6289        edgtfPortfolioSingleMasonry();
6290    }
6291
6292    /* 
6293        All functions to be called on $(window).load() should be in this function
6294    */
6295    function edgtfOnWindowLoad() {
6296        edgtfPortfolioSingleFollow().init();
6297    }
6298
6299    /* 
6300        All functions to be called on $(window).resize() should be in this function
6301    */
6302    function edgtfOnWindowResize() {
6303
6304    }
6305
6306    /* 
6307        All functions to be called on $(window).scroll() should be in this function
6308    */
6309    function edgtfOnWindowScroll() {
6310
6311    }
6312
6313
6314
6315    var edgtfPortfolioSingleFollow = function() {
6316
6317        var info = $('.edgtf-follow-portfolio-info .small-images.edgtf-portfolio-single-holder .edgtf-portfolio-info-holder, ' +
6318            '.edgtf-follow-portfolio-info .small-slider.edgtf-portfolio-single-holder .edgtf-portfolio-info-holder');
6319
6320        if (info.length) {
6321            var infoHolder = info.parent(),
6322                infoHolderOffset = infoHolder.offset().top,
6323                infoHolderHeight = infoHolder.height(),
6324                mediaHolder = $('.edgtf-portfolio-media'),
6325                mediaHolderHeight = mediaHolder.height(),
6326                header = $('.header-appear, .edgtf-fixed-wrapper'),
6327                headerHeight = (header.length) ? header.height() : 0;
6328        }
6329
6330        var infoHolderPosition = function() {
6331
6332            if(info.length) {
6333
6334                if (mediaHolderHeight > infoHolderHeight) {
6335                    if(edgtf.scroll > infoHolderOffset) {
6336                        var marginTop = edgtf.scroll - infoHolderOffset + edgtfGlobalVars.vars.edgtfAddForAdminBar + headerHeight + 20; //20 px is for styling, spacing between header and info holder
6337                        // if scroll is initially positioned below mediaHolderHe
6337ight
6338                        if(marginTop + infoHolderHeight > mediaHolderHeight){
6339                            marginTop = mediaHolderHeight - infoHolderHeight;
6340                        }
6341                        info.animate({
6342                            marginTop: marginTop
6343                        });
6344                    }
6345                }
6346
6347            }
6348        };
6349
6350        var recalculateInfoHolderPosition = function() {
6351
6352            if (info.length) {
6353                if(mediaHolderHeight > infoHolderHeight) {
6354                    if(edgtf.scroll > infoHolderOffset) {
6355
6356                        if(edgtf.scroll + headerHeight + edgtfGlobalVars.vars.edgtfAddForAdminBar + infoHolderHeight + 100 < infoHolderOffset + mediaHolderHeight) {    //70 to prevent mispositioning
6357
6358                            //Calculate header height if header appears
6359                            if ($('.header-appear, .edgtf-fixed-wrapper').length) {
6360                                headerHeight = $('.header-appear, .edgtf-fixed-wrapper').height();
6361                            }
6362                            info.stop().animate({
6363                                marginTop: (edgtf.scroll - infoHolderOffset + edgtfGlobalVars.vars.edgtfAddForAdminBar + headerHeight + 20) //20 px is for styling, spacing between header and info holder
6364                            });
6365                            //Reset header height
6366                            headerHeight = 0;
6367                        }
6368                        else{
6369                            info.stop().animate({
6370                                marginTop: mediaHolderHeight - infoHolderHeight
6371                            });
6372                        }
6373                    } else {
6374                        info.stop().animate({
6375                            marginTop: 0
6376                        });
6377                    }
6378                }
6379            }
6380        };
6381
6382        return {
6383
6384            init : function() {
6385
6386                infoHolderPosition();
6387                $(window).scroll(function(){
6388                    recalculateInfoHolderPosition();
6389                });
6390
6391            }
6392
6393        };
6394
6395    };
6396
6397    /**
6398     * Init Portfolio Single Masonry
6399     */
6400    function edgtfPortfolioSingleMasonry(){
6401        var gallery = $('.edgtf-portfolio-single-holder.small-masonry .edgtf-portfolio-media, .edgtf-portfolio-single-holder.big-masonry .edgtf-portfolio-media');
6402
6403        if(gallery.length) {
6404            gallery.each(function () {
6405                var thisGallery = $(this);
6406                thisGallery.waitForImages(function () {
6407                    var size = thisGallery.find('.edgtf-single-masonry-grid-sizer').width();
6408                    edgtfPortfolioSingleResizeMasonry(size,thisGallery);
6409                    edgtfInitSingleMasonry(thisGallery);
6410
6411                });
6412                $(window).resize(function(){
6413                    var size = thisGallery.find('.edgtf-single-masonry-grid-sizer').width();
6414                    edgtfPortfolioSingleResizeMasonry(size,thisGallery);
6415                    edgtfInitSingleMasonry(thisGallery);
6416                });
6417            });
6418        }
6419    }
6420
6421    function edgtfInitSingleMasonry(container){
6422        container.animate({opacity: 1});
6423        container.isotope({
6424            layoutMode: 'packery',
6425            itemSelector: '.edgtf-portfolio-single-media',
6426            packery: {
6427                columnWidth: '.edgtf-single-masonry-grid-sizer'
6428            }
6429        });
6430    }
6431
6432
6433    function edgtfPortfolioSingleResizeMasonry(size,container){
6434
6435        var defaultMasonryItem = container.find('.edgtf-default-masonry-item');
6436        var largeWidthMasonryItem = container.find('.edgtf-large-width-masonry-item');
6437        var largeHeightMasonryItem = container.find('.edgtf-large-height-masonry-item');
6438        var largeWidthHeightMasonryItem = container.find('.edgtf-large-width-height-masonry-item');
6439
6440        defaultMasonryItem.css('height', size);
6441        largeHeightMasonryItem.css('height', Math.round(2*size));
6442
6443        if(edgtf.windowWidth > 600){
6444            largeWidthHeightMasonryItem.css('height', Math.round(2*size));
6445            largeWidthMasonryItem.css('height', size);
6446        }else{
6447            largeWidthHeightMasonryItem.css('height', size);
6448            largeWidthMasonryItem.css('height', Math.round(size));
6449            largeHeightMasonryItem.css('height', Math.round(size));
6450        }
6451    }
6452
6453})(jQuery);
6454(function($) {
6455    'use strict';
6456
6457    var events = {};
6458    edgtf.modules.events = events;
6459
6460    events.edgtfOnDocumentReady = edgtfOnDocumentReady;
6461    events.edgtfOnWindowLoad = edgtfOnWindowLoad;
6462    events.edgtfOnWindowResize = edgtfOnWindowResize;
6463    events.edgtfOnWindowScroll = edgtfOnWindowScroll;
6464
6465    events.edgtfEventImagesSlider = edgtfEventImagesSlider;
6466    events.edgtfEventsRelatedProducts = edgtfEventsRelatedProducts;
6467    events.edgtfTitleFullWidthResize = edgtfTitleFullWidthResize;
6468    events.edgtfInitEventsLoadMore = edgtfInitEventsLoadMore;
6469    events.edgtfEventAppearFx = edgtfEventAppearFx;
6470    events.edgtfInitEventListCarousel = edgtfInitEventListCarousel;
6471
6472    $(document).ready(edgtfOnDocumentReady);
6473    $(window).on('load', edgtfOnWindowLoad);
6474    $(window).resize(edgtfOnWindowResize);
6475    $(window).scroll(edgtfOnWindowScroll);
6476    
6477    /* 
6478        All functions to be called on $(document).ready() should be in this function
6479    */
6480    function edgtfOnDocumentReady() {
6481    	edgtfTitleFullWidthResize();
6482        edgtfEventImagesSlider();
6483        edgtfEventsRelatedProducts();
6484        edgtfInitEventsLoadMore();
6485        edgtfInitEventListCarousel();
6486    }
6487
6488    /* 
6489        All functions to be called on $(window).load() should be in this function
6490    */
6491    function edgtfOnWindowLoad() {
6492    	edgtfInitFullWidthParallax();
6493        edgtfEventAppearFx();
6494    }
6495
6496    /* 
6497        All functions to be called on $(window).resize() should be in this function
6498    */
6499    function edgtfOnWindowResize() {
6500    	edgtfTitleFullWidthResize();
6501
6502    }
6503
6504    /* 
6505        All functions to be called on $(window).scroll() should be in this function
6506    */
6507    function edgtfOnWindowScroll() {
6508
6509    }
6510
6511	/*
6512	**	Event List Full Width Title resizing
6513	*/
6514	function edgtfTitleFullWidthResize(){
6515		var title = $('.edgtf-event-list-full-width .edgtf-el-item-title');
6516		if (title.length){
6517			title.each(function(){
6518				var thisTitle = $(this);
6519				var fontSize;
6520				var coef1 = 1;
6521				var coef2 = 1;
6522
6523				if (edgtf.windowWidth < 1300){
6524					coef1 = 0.8;
6525				}
6526
6527				if (edgtf.windowWidth < 1200){
6528					coef1 = 0.75;
6529				}
6530
6531				if (edgtf.windowWidth < 1000){
6532					coef1 = 0.7;
6533				}
6534
6535				if (edgtf.windowWidth < 768){
6536					coef1 = 0.6;
6537					coef2 = 0.7;
6538				}
6539
6540				if (edgtf.windowWidth < 600){
6541					coef1 = 0.5;
6542					coef2 = 0.6;
6543				}
6544
6545				if (edgtf.windowWidth < 480){
6546					coef1 = 0.4;
6547					coef2 = 0.5;
6548				}
6549
6550				if (typeof thisTitle.data('font-size') !== 'undefined' && thisTitle.data('font-size') !== false) {
6551					fontSize = parseInt(thisTitle.data('font-size'));
6552
6553					if (fontSize > 70) {
6554						fontSize = Math.round(fontSize*coef1);
6555					}
6556					else if (fontSize > 35) {
6557						fontSize = Math.round(fontSize*coef2);
6558					}
6559
6560					thisTitle.css('font-size',fontSize + 'px');
6561				}
6562			});
6563		}
6564	}
6565
6566    function edgtfEventAppearFx() {
6567        var appearFxList = $('.edgtf-event-list-appear-fx');
6568
6569        if (appearFxList.length && !edgtf.htmlEl.hasClass('touch')) {
6570            appearFxList.each(function(){
6571                var currentList = $(this),
6572                    eventItems = currentList.find('.edgtf-el-item'),
6573                    animateCycle = 2, // rewind delay
6574                    animateCycleCounter = 0;
6575
6576                eventItems.appear(function(){
6577                    var eventItem = $(this);
6578                    animateCycleCounter ++;
6579                    if(animateCycleCounter == animateCycle) {
6580                        animateCycleCounter = 0;
6581                    }
6582                    setTimeout(function(){
6583                        eventItem.addClass('edgtf-appeared');
6584                    }, animateCycleCounter*200);
6585                },{accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
6586            });
6587        }
6588    }
6589
6590    function edgtfEventsRelatedProducts(){
6591		var relatedProducts = $('.edgtf-event-related-slider');
6592
6593		if (relatedProducts.length){
6594
6595			var responsive = [
6596				{
6597					breakpoint: 769,
6598					settings: {
6599						slidesToShow: 2,
6600					}
6601				},
6602				{
6603					breakpoint: 481,
6604					settings: {
6605						slidesToShow: 1,
6606					}
6607				},
6608			];
6609
6610			relatedProducts.slick({
6611				infinite: true,
6612				autoplay: true,
6613				slidesToShow : 3,
6614				centerMode: true,
6615				centerPadding: '15.1%',
6616				arrows: true,
6617				dots: false,
6618				adaptiveHeight: true,
6619				responsive: responsive,
6620                easing: 'easeInOutQuint',
6621                speed: 1000,
6622				prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_left"></span></span>',
6623				nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_right"></span></span>'
6624			});
6625		}
6626    }
6627
6628
6629    function edgtfEventImagesSlider(){
6630		var eventImagesSlider = $('.edgtf-event-images-slider');
6631
6632		if (eventImagesSlider.length){
6633
6634            var	element;
6635
6636			eventImagesSlider.on('init', function(slick){
6637                eventImagesSlider.addClass('edgtf-appeared');
6638
6639				element = eventImagesSlider.find('.slick-slide');
6640
6641				element.each(function(){
6642					var thisElement = $(this),
6643						flag = 0,
6644						mousedownFlag = 0,
6645						moved = false;
6646
6647					thisElement.on("mousedown", function(){
6648						flag = 0;
6649						mousedownFlag = 1;
6650						moved = false;
6651					});
6652
6653					thisElement.on("mousemove", function(){
6654						if (mousedownFlag == 1){
6655							if (moved){
6656								flag = 1;
6657							}
6658							moved = true;
6659						}
6660					});
6661
6662					thisElement.on("mouseleave", function(){
6663						flag = 0;
6664					});
6665
6666					thisElement.on("mouseup", function(e){
6667						if(flag === 1){
6668							thisElement.find('a[data-rel^="prettyPhoto"]').off('click');
6669						}
6670						else{
6671							edgtf.modules.common.edgtfPrettyPhoto();
6672						}
6673						flag = 0;
6674						mousedownFlag = 0;
6675					});
6676				});
6677
6678			});
6679
6680			eventImagesSlider.slick({
6681				infinite: true,
6682				autoplay: true,
6683				slidesToShow : 1,
6684				centerMode: true,
6685				centerPadding: '16%',
6686				arrows: true,
6687				dots: false,
6688				adaptiveHeight: true,
6689                easing: 'easeInOutQuint',
6690                speed: 1000,
6691				prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_left"></span></span>',
6692				nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_right"></span></span>'
6693			});
6694		}
6695    }
6696
6697	function edgtfInitFullWidthParallax(){
6698		var parallaxBackgroundItems = $('.edgtf-event-list-full-width.edgtf-event-list-parallax .edgtf-el-item-background');
6699
6700		if(parallaxBackgroundItems.length){
6701			parallaxBackgroundItems.each(function() {
6702
6703				var parallaxElement = $(this);
6704				var speed = 0.4;
6705				parallaxElement.parallax("50%", speed);
6706			});
6707		}
6708	}
6709
6710    /**
6711     * Initializes events load more function
6712     */
6713    function edgtfInitEventsLoadMore(){
6714        var eventList = $('.edgtf-event-list-holder.edgtf-event-list-show-more');
6715
6716        if(eventList.length){
6717
6718            eventList.each(function(){
6719                
6720                var thisEventList = $(this);
6721                var thisEventListInner = thisEventList.find('.edgtf-event-list-holder-inner');
6722                var nextPage; 
6723                var maxNumPages;
6724                var loadMoreButton = thisEventList.find('.edgtf-el-list-load-more a');
6725                var buttonText = loadMoreButton.children(".edgtf-btn-text");
6726                
6727                if (typeof thisEventList.data('max-num-pages') !== 'undefined' && thisEventList.data('max-num-pages') !== false) {  
6728                    maxNumPages = thisEventList.data('max-num-pages');
6729                }
6730
6731                if (thisEventList.hasClass('edgtf-event-list-load-button')) {
6732
6733                    loadMoreButton.on('click', function (e) {
6734                        var loadMoreDatta = edgtfGetEventAjaxData(thisEventList);
6735                        nextPage = loadMoreDatta.nextPage;
6736                        e.preventDefault();
6737                        e.stopPropagation();
6738                        if (nextPage <= maxNumPages) {
6739                            var ajaxData = edgtfSetEventAjaxData(loadMoreDatta);
6740                            buttonText.text(edgtfGlobalVars.vars.edgtfLoadingMoreText);
6741                            $.ajax({
6742                                type: 'POST',
6743                                data: ajaxData,
6744                                url: edgtCoreAjaxUrl,
6745                                success: function (data) {
6746                                    nextPage++;
6747                                    thisEventList.data('next-page', nextPage);
6748                                    var response = $.parseJSON(data);
6749                                    var responseHtml = edgtfConvertHTML(response.html); //convert response html into jQuery collection that Mixitup can work with
6750                                    thisEventList.waitForImages(function () {
6751                                        thisEventListInner.append(responseHtml);
6752                                        edgtfTitleFullWidthResize();
6753                                        edgtfEventAppearFx();
6754
6755                                        buttonText.text(edgtfGlobalVars.vars.edgtfLoadMoreText);
6756
6757                                        if(nextPage > maxNumPages){
6758                                            loadMoreButton.hide();
6759                                        }
6760                                    });
6761                                }
6762                            });
6763                        }
6764                    });
6765
6766                } else if (thisEventList.hasClass('edgtf-event-list-infinite-scroll')) {
6767                    loadMoreButton.appear(function(e) {
6768                        var loadMoreDatta = edgtfGetEventAjaxData(thisEventList);
6769                        nextPage = loadMoreDatta.nextPage;
6770                        e.preventDefault();
6771                        e.stopPropagation();
6772                        loadMoreButton.css('visibility', 'visible');
6773                        if(nextPage <= maxNumPages){
6774                            var ajaxData = edgtfSetEventAjaxData(loadMoreDatta);
6775                            $.ajax({
6776                                type: 'POST',
6777                                data: ajaxData,
6778                                url: edgtCoreAjaxUrl,
6779                                success: function (data) {
6780                                    nextPage++;
6781                                    thisEventList.data('next-page', nextPage);
6782                                    var response = $.parseJSON(data);
6783                                    var responseHtml = edgtfConvertHTML(response.html); //convert response html into jQuery collection that Mixitup can work with
6784                                    thisEventList.waitForImages(function(){
6785                                        thisEventListInner.append(responseHtml);
6786                                        loadMoreButton.css('visibility','hidden');
6787                                        edgtfTitleFullWidthResize();
6788                                        edgtfEventAppearFx();
6789                                    });
6790                                }
6791                            });
6792                        }
6793                        if(nextPage === maxNumPages){
6794                            setTimeout(function() {
6795                                loadMoreButton.fadeOut(400);
6796                            }, 400);
6797                        }
6798
6799                    },{ one: false, accX: 0, accY: edgtfGlobalVars.vars.edgtfElementAppearAmount});
6800                }
6801                
6802            });
6803        }
6804    }
6805    
6806    function edgtfConvertHTML ( html ) {
6807        var newHtml = $.trim( html ),
6808                $html = $(newHtml ),
6809                $empty = $();
6810
6811        $html.each(function ( index, value ) {
6812            if ( value.nodeType === 1) {
6813                $empty = $empty.add ( this );
6814            }
6815        });
6816
6817        return $empty;
6818    }
6819
6820    /**
6821     * Initializes events load more data params
6822     * @param event list container with defined data params
6823     * return array
6824     */
6825    function edgtfGetEventAjaxData(container){
6826        var returnValue = {};
6827        
6828        returnValue.type = '';
6829        returnValue.columns = '';
6830        returnValue.orderBy = '';
6831        returnValue.order = '';
6832        returnValue.eventStatus = '';
6833        returnValue.number = '';
6834        returnValue.category = '';
6835        returnValue.selectedProjectes = '';
6836        returnValue.showMore = '';
6837        returnValue.titleTag = '';
6838        returnValue.titleSize = '';
6839        returnValue.paddingTopBottom = '';
6840        returnValue.parallax = '';
6841        returnValue.appearFx = '';
6842        returnValue.nextPage = '';
6843        returnValue.maxNumPages = '';
6844        
6845        if (typeof container.data('type') !== 'undefined' && container.data('type') !== false) {
6846            returnValue.type = container.data('type');
6847        }
6848        if (typeof container.data('columns') !== 'undefined' && container.data('columns') !== false) {                    
6849            returnValue.columns = container.data('columns');
6850        }
6851        if (typeof container.data('order-by') !== 'undefined' && container.data('order-by') !== false) {                    
6852            returnValue.orderBy = container.data('order-by');
6853        }
6854        if (typeof container.data('order') !== 'undefined' && container.data('order') !== false) {                    
6855            returnValue.order = container.data('order');
6856        }
6857        if (typeof container.data('event-status') !== 'undefined' && container.data('event-status') !== false) {                    
6858            returnValue.eventStatus = container.data('event-status');
6859        }
6860        if (typeof container.data('number') !== 'undefined' && container.data('number') !== false) {                    
6861            returnValue.number = container.data('number');
6862        }
6863        if (typeof container.data('category') !== 'undefined' && container.data('category') !== false) {                    
6864            returnValue.category = container.data('category');
6865        }
6866        if (typeof container.data('selected-projects') !== 'undefined' && container.data('selected-projects') !== false) {                    
6867            returnValue.selectedProjectes = container.data('selected-projects');
6868        }
6869        if (typeof container.data('show-more') !== 'undefined' && container.data('show-more') !== false) {                    
6870            returnValue.showMore = container.data('show-more');
6871        }
6872        if (typeof container.data('title-tag') !== 'undefined' && container.data('title-tag') !== false) {                    
6873            returnValue.titleTag = container.data('title-tag');
6874        }
6875        if (typeof container.data('parallax') !== 'undefined' && container.data('parallax') !== false) {                    
6876            returnValue.parallax = container.data('parallax');
6877        }
6878        if (typeof container.data('appear-fx') !== 'undefined' && container.data('appear-fx') !== false) {                    
6879            returnValue.appearFx = container.data('appear-fx');
6880        }
6881        if (typeof container.data('title-size') !== 'undefined' && container.data('title-size') !== false) {                    
6882            returnValue.titleSize = container.data('title-size');
6883        }
6884        if (typeof container.data('padding-top-bottom') !== 'undefined' && container.data('padding-top-bottom') !== false) {                    
6885            returnValue.paddingTopBottom = container.data('padding-top-bottom');
6886        }
6887        if (typeof container.data('next-page') !== 'undefined' && container.data('next-page') !== false) {                    
6888            returnValue.nextPage = container.data('next-page');
6889        }
6890        if (typeof container.data('max-num-pages') !== 'undefined' && container.data('max-num-pages') !== false) {                    
6891            returnValue.maxNumPages = container.data('max-num-pages');
6892        }
6893        return returnValue;
6894    }
6895     /**
6896     * Sets events load more data params for ajax function
6897     * @param event list container with defined data params
6898     * return array
6899     */
6900    function edgtfSetEventAjaxData(container){
6901        var returnValue = {
6902            action: 'edgt_core_event_ajax_load_more',
6903            type: container.type,
6904            columns: container.columns,
6905            orderBy: container.orderBy,
6906            order: container.order,
6907            eventStatus: container.eventStatus,
6908            number: container.number,
6909            category: container.category,
6910            selectedProjectes: container.selectedProjectes,
6911            showMore: container.showMore,
6912            titleTag: container.titleTag,
6913            titleSize: container.titleSize,
6914            paddingTopBottom: container.paddingTopBottom,
6915            parallax: container.parallax,
6916            appearFx: container.appearFx,
6917            nextPage: container.nextPage
6918        };
6919        return returnValue;
6920    }
6921
6922    /**
6923     * Initializes portfolio slider
6924     */
6925    
6926    function edgtfInitEventListCarousel(){
6927        var eventSlider = $('.edgtf-event-list-holder.edgtf-event-list-carousel');
6928        if(eventSlider.length){
6929            eventSlider.each(function(){
6930                var thisEventSlider = $(this);
6931                var sliderWrapper = thisEventSlider.children('.edgtf-event-list-holder-inner');
6932
6933                //Responsive breakpoints
6934                var responsive = [
6935                    {
6936                        breakpoint: 1025,
6937                        settings: {
6938                            slidesToShow: 2,
6939                            slidesToScroll: 1,
6940                            infinite: true,
6941                        }
6942                    },
6943                    {
6944                        breakpoint: 601,
6945                        settings: {
6946                            slidesToShow: 1,
6947                            slidesToScroll: 1
6948                        }
6949                    }
6950                ];
6951
6952                 sliderWrapper.on('init', function(slick){
6953                    var slides = sliderWrapper.find('.slick-slide');
6954
6955                    var dragStart, clickable = false;
6956
6957                    var handleDragStart = function(event) {
6958                        event = typeof event.originalEvent !== 'undefined' ? event.originalEvent : event;
6959                        event = event.type == 'touchstart' ? event.touches[0] : event;
6960                        dragStart = {
6961                            x: event.clientX,
6962                            y: event.clientY
6963                        };
6964                    };
6965
6966                    var handleDragStop = function(event) {
6967                        event = typeof event.originalEvent !== 'undefined' ? event.originalEvent : event;
6968                        event = event.type == 'touchend' ? event.changedTouches[0] : event;
6969                        var dragEnd = {
6970                            x: event.clientX,
6971                            y: event.clientY
6972                        };
6973                        if (Math.abs(dragEnd.x - dragStart.x) < 10) {
6974                            clickable = true;
6975                        }
6976                    };
6977
6978                    var handleClick = function(event) {
6979                        if (clickable) {
6980                            clickable = false;
6981                        }
6982                        else {
6983                            event.preventDefault();
6984                            event.stopImmediatePropagation();
6985                        }
6986                    };
6987
6988                    slides.find('a')
6989                    .on('dragstart', function(event) {
6990                        event.stopImmediatePropagation();
6991                        event.preventDefault();
6992                    })
6993                    .on('click', handleClick)
6994                    .on('mousedown touchstart', handleDragStart)
6995                    .on('mouseup touchend', handleDragStop);
6996                });
6997    
6998                sliderWrapper.slick({
6999                    infinite: true,
7000                    autoplay: true,
7001                    autoplaySpeed: 3000,
7002                    arrows: false,
7003                    dots: true,
7004                    dotsClass: 'edgtf-slick-dots',
7005                    speed: 600,
7006                    easing:'easeOutCubic',
7007                    slidesToShow: 3,
7008                    prevArrow: '<span class="edgtf-slick-prev edgtf-prev-icon"><span class="arrow_carrot-left"></span></span>',
7009                    nextArrow: '<span class="edgtf-slick-next edgtf-next-icon"><span class="arrow_carrot-right"></span></span>',
7010                    responsive:responsive,
7011                    customPaging: function(slider, i) {
7012                        return '<span class="edgtf-slick-dot-inner"></span>';
7013                    }
7014                });
7015            });
7016        }
7017    }
7018
7019})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.