PageSourceSearch

https://erspsolutions.com/wp-content/plugins/fd-addons/assets/js/addon.js?ver=7.1.1

js erspsolutions.com collected 2026-09-24 13:45:26 UTC 26,265 bytes, 735 lines download raw bytes

1(function($) {
2
3    "use strict";
4
5    /* ---------------------------------------------
6
7    Navigation menu
8
9    --------------------------------------------- */
10
11    // dropdown for mobile
12
13    // $('.all-side').on('mouseenter', function(e) {
14    //     var x = e.pageX - $(this).offset().left;
15    //     var y = e.pageY - $(this).offset().top;
16    //     $(this).find('span.hover-animation').css({top: y, left: x})
17    // });
18
19  
20    $(document).ready(function() {
21        $("#page").append("<div class='courser-animaion'></div>");
22        // Input Show Password
23        $(".toggle-password").on("click", function(e) {
24            var input = $(this).parent().find("input");
25            
26            if (input.attr("type") == "password") {
27                input.attr("type", "text");
28                $(this).removeClass("fa-eye-slash").addClass("fa-eye");
29            } else {
30                input.attr("type", "password");
31                $(this).removeClass("fa-eye").addClass("fa-eye-slash");
32            }
33            });
34    });
35
36
37
38
39    $(window).load(function() {
40
41    })
42
43
44    // accordion script starts
45    var fdAddonsAccordion = function($scope, $) {
46            var accordionTitle = $scope.find('.fd-addons-accordion-title');
47
48            var accmin = $scope.find('.fd-addons-accordion-single-item');
49
50            accmin.each(function() {
51                if ($(this).hasClass('yes')) {
52                    $(this).addClass('wraper-active');
53                }
54            });
55
56            accordionTitle.each(function() {
57                if ($(this).hasClass('active-default')) {
58                    $(this).addClass('active');
59                    $(this).next('.fd-addons-accordion-content').slideDown(300);
60                }
61            });
62
63            // Remove multiple click event for nested accordion
64            accordionTitle.unbind('click');
65
66            //$accordionWrapper.children('.fd-addons-accordion-content').first().show();
67            accordionTitle.click(function(e) {
68                e.preventDefault();
69
70                if ($(this).hasClass('active')) {
71                    $(this).removeClass('active');
72                    $(this).next().slideUp(400);
73                    $(this).parent().removeClass('wraper-active');
74
75                } else {
76                    $(this).parent().parent().find('.fd-addons-accordion-title').removeClass('active');
77
78                    accmin.removeClass('wraper-active');
79
80                    $(this).parent('.yes').removeClass('wraper-active');
81
82                    $(this).parent().parent().find('.fd-addons-accordion-content').slideUp(300);
83
84                    $(this).parent().addClass('wraper-active');
85
86                    $(this).toggleClass('active');
87                    $(this).next().slideToggle(400);
88
89                }
90            });
91        }
92        // accordion script ends
93
94
95    var FinestGlobal = function($scope, $) {
96
97
98
99        if ($scope.hasClass('fd-addons-sticky-yes')) {
100            var current_widget = $scope;
101            current_widget.wrap('<div class="sticky-wrapper"></div>');
102            var headerHeight = $(current_widget).parent('.sticky-wrapper').height(),
103                stickyWrapper = $(current_widget).parent('.sticky-wrapper');
104            stickyWrapper.css('height', headerHeight + "px")
105            window.onscroll = function() {
106                scrollFunction()
107            };
108
109            function scrollFunction() {
110
111                if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
112                    if ($scope.hasClass('fd-addons-sticky-yes')) {
113                        stickyWrapper.addClass("is-sticky");
114                        console.log(stickyWrapper);
115                    }
116                } else {
117                    if ($scope.hasClass('fd-addons-sticky-yes')) {
118                        stickyWrapper.removeClass("is-sticky");
119                    }
120                }
121                if (document.body.scrollTop > 300 || document.documentElement.scrollTop > 300) {
122                    if ($scope.hasClass('fd-addons-sticky-yes')) {
123                        $scope.addClass("reveal-sticky");
124                    }
125                } else {
126                    if ($scope.hasClass('fd-addons-sticky-yes')) {
127                        $scope.removeClass("reveal-sticky");
128                    }
129                }
130
131            }
132
133        }
134    }
135
136    var FinestductCategories = function() {
137        if ($.fn.isotope) {
138            var $gridMas = $('.product-categories-wrap.masonry');
139
140            $gridMas.isotope({
141                itemSelector: '.fd-addons-product-cat-wrap',
142                percentPosition: true,
143                layoutMode: 'packery',
144            })
145
146            $gridMas.imagesLoaded().progress(function() {
147                $gridMas.isotope()
148            });
149        }
150    }
151
152    var FD_Addons_Blog = function($scope) {
153        var wrapper = $scope.find('.masonry')
154        if ($.fn.isotope) {
155
156            wrapper.isotope({
157                itemSelector: '.fastland-blog-wraper>.masonry>div',
158                percentPosition: true,
159                layoutMode: 'packery',
160            })
161
162        }
163    }
164
165    var ShadeJobLoop = function() {
166        if ($.fn.owlCarousel) {
167            $('.fd-addons-job-carousel').owlCarousel({
168                margin: 30,
169                responsiveClass: true,
170                navText: ['<i class="fas fa-arrow-left"></i>', '<i class="fas fa-arrow-right"></i>'],
171                responsive: {
172                    0: {
173                        items: 1,
174                        nav: true
175                    },
176                    768: {
177                        items: 2,
178                        nav: false
179                    },
180                    1000: {
181                        items: 4,
182                        nav: true,
183                        loop: false
184                    }
185                }
186            })
187        }
188    }
189
190
191
192
193
194    //portfolio gallery js start
195    var FD_Addons_Portfolio_Gallery_Js = function() {
196
197        if ($.fn.isotope) {
198
199            $(window).load(function() {
200                var $gridMas = $('.fd-addons-pf-gallery-wrap.layout-mode-masonry');
201
202                $gridMas.isotope({
203                    itemSelector: '.fd-addons-pf-gallery-wrap .fd-addons-portfolio-item-wrap',
204                    percentPosition: true,
205                    layoutMode: 'packery',
206                }).resize();
207
208                $gridMas.imagesLoaded().progress(function() {
209                    $gridMas.isotope()
210                });
211            })
212        }
213
214    }
215
216    //portfolio js start
217    var FD_Addons_Portfolio_Js = function() {
218        if ($.fn.isotope) {
219
220            var $gridMas = $('.fd-addons-portfolio-wrap.layout-mode-masonry');
221            var $grid = $('.fd-addons-portfolio-wrap.layout-mode-normal');
222
223            $grid.isotope({
224                itemSelector: '.fd-addons-portfolio-item-wrap',
225                percentPosition: true,
226                layoutMode: 'fitRows',
227            }).resize()
228
229            $grid.imagesLoaded().progress(function() {
230                $grid.isotope('layout')
231            }).resize();
232
233            $gridMas.isotope({
234                itemSelector: '.fd-addons-portfolio-item-wrap',
235                percentPosition: true,
236                layoutMode: 'packery',
237            })
238
239            $gridMas.imagesLoaded().progress(function() {
240                $gridMas.isotope('layout')
241            });
242
243            $grid.isotope().resize();
244            $gridMas.isotope().resize();
245
246            $(".pf-isotope-nav li").on('click', function() {
247                $(".pf-isotope-nav li").removeClass("active");
248                $(this).addClass("active");
249
250                var selector = $(this).attr("data-filter");
251                $gridMas.isotope({
252                    filter: selector,
253                    animationOptions: {
254                        duration: 750,
255                        easing: "linear",
256                        queue: false,
257                    }
258                });
259
260                var selector = $(this).attr("data-filter");
261                $grid.isotope({
262                    filter: selector,
263                    animationOptions: {
264                        duration: 750,
265                        easing: "linear",
266                        queue: false,
267                    }
268                });
269
270
271            });
272
273        }
274
275        // comment load more button click event
276        $('.fd-addons-pf-loadmore-btn').on('click', function() {
277            var button = $(this);
278
279            // decrease the current comment page value
280            var dpaged = button.data('paged'),
281                total_pages = button.data('total-page'),
282                nonce = button.data('referrar'),
283                ajaxurl = button.data('url');
284
285            dpaged++;
286            // console.log(foio_portfolio_js_datas);
287            $.ajax({
288                url: ajaxurl, // AJAX handler, declared before
289                dataType: 'html',
290                data: {
291                    'action': 'fd_addons_loadmore_callback', // wp_ajax_cloadmore
292                    // 'post_id': foio_portfolio_js_datas.parent_post_id, // the current post
293                    'paged': dpaged, // current comment page
294                    'folio_nonce': nonce,
295                    'portfolio_settings': button.data('portfolio-settings'),
296                },
297                type: 'POST',
298                beforeSend: function(xhr) {
299                    button.text('Loading...'); // preloader here
300                },
301                success: function(data) {
302                    if (data) {
303                        $('.fd-addons-portfolio-wrap').append(data);
304                        $('.fd-addons-portfolio-wrap').isotope('reloadItems').isotope()
305                        button.text('More projects');
306                        button.data('paged', dpaged);
307                        // if the last page, remove the button
308                        if (total_pages == dpaged)
309                            button.remove();
310                    } else {
311                        button.remove();
312                    }
313                }
314            });
315            return false;
316        });
317
318    }
319
320
321    var FD_Addons_Testimonail = function($scope, $) {
322        //adding popup video 
323        if ($.fn.magnificPopup) {
324            $('.fd-addons-popup-youtube').magnificPopup({
325                type: 'iframe',
326                mainClass: 'mfp-fade',
327            });
328        }
329
330
331        var postwrapper = $scope.find(".fd-addons--testimonial");
332
333        if (postwrapper.length === 0)
334            return;
335
336        var settings = postwrapper.data('settings');
337
338        /*--------------------------------------------------------------
339        fd-addons slider js
340        --------------------------------------------------------------*/
341        var postwrapper = $('.fd-addons--testimonial'),
342            rtl = $('body').hasClass('rtl') ? true : false;
343
344        postwrapper.owlCarousel({
345            rtl: rtl,
346            loop: settings['loop'],
347            autoplay: settings['autoplay'],
348            nav: settings['nav'],
349            animateOut: 'fadeOut',
350            animateIn: 'fadeIn',
351            autoplaytimeout: settings['autoplaytimeout'],
352            items: 1,
353            navText: ['<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none" style="transform: rotate(180deg);"><path d="M1.16669 14H26.25" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path><path d="M18.0834 5.83334L26.25 14L18.0834 22.1667" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path></svg>',
354                '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none"><path d="M1.16669 14H26.25" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path><path d="M18.0834 5.83334L26.25 14L18.0834 22.1667" stroke="#fff" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path></svg>'
355            ],
356        });
357
358    }
359
360    var FD_Addons_Back_To_Top = function($scope, $) {
361        //adding popup video 
362
363        $('.fd-addons-popup-youtube').magnificPopup({
364            type: 'iframe',
365            mainClass: 'mfp-fade',
366        });
367
368
369
370        /*--------------------------------------------------------------
371        fd-addons slider js
372        --------------------------------------------------------------*/
373        var postwrapper = $('.fd-addons--testimonial');
374
375        jQuery(".fd-addons-back-to-top-wraper").click(function() {
376            jQuery("html, body").animate({
377                scrollTop: 0
378            }, 1000);
379        });
380
381        function stickyHeader($class) {
382            jQuery(window).on('scroll', function() {
383                var headerHeight = 600;
384                if (jQuery(window).scrollTop() >= headerHeight) {
385                    jQuery('.fd-addons-back-to-top-wraper .fd-addons-icon').addClass('sticky-active');
386                } else {
387                    jQuery('.fd-addons-back-to-top-wraper .fd-addons-icon').removeClass('sticky-active');
388                }
389            });
390        }
391
392        stickyHeader('.fd-addons-back-to-top-wraper');
393
394    }
395
396
397
398    function makeTimer() {
399
400        var fd_addonsDate = $(".fd-addons-countdown#date").data("date");
401        var endTime = new Date(fd_addonsDate);
402        endTime = (Date.parse(endTime) / 1000);
403
404        var now = new Date();
405        now = (Date.parse(now) / 1000);
406
407        var timeLeft = endTime - now;
408
409        var days = Math.floor(timeLeft / 86400);
410        var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
411        var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600)) / 60);
412        var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
413
414        if (hours < "10") {
415            hours = "0" + hours;
416        }
417        if (minutes < "10") {
418            minutes = "0" + minutes;
419        }
420        if (seconds < "10") {
421            seconds = "0" + seconds;
422        }
423
424        $("#days").html(days);
425        $("#hours").html(hours);
426        $("#minutes").html(minutes);
427        $("#seconds").html(seconds);
428
429    }
430
431    var FD_Addons_CountDown = function() {
432        setInterval(function() {
433            makeTimer();
434        }, 1000);
435    }
436
437    // progress bar script starts
438
439    function animatedProgressbar(id, type, value, strokeColor, trailColor, strokeWidth, strokeTrailWi
439dth) {
440        var triggerClass = '.fd-addons-progress-bar-' + id;
441        if ('function' === typeof ldBar) {
442            if ('line' === type) {
443                new ldBar(triggerClass, {
444                    'type': 'stroke',
445                    'path': 'M0 10L100 10',
446                    'aspect-ratio': 'none',
447                    'stroke': strokeColor,
448                    'stroke-trail': trailColor,
449                    'stroke-width': strokeWidth,
450                    'stroke-trail-width': strokeTrailWidth
451                }).set(value);
452            }
453            if ('line-bubble' === type) {
454                new ldBar(triggerClass, {
455                    'type': 'stroke',
456                    'path': 'M0 10L100 10',
457                    'aspect-ratio': 'none',
458                    'stroke': strokeColor,
459                    'stroke-trail': trailColor,
460                    'stroke-width': strokeWidth,
461                    'stroke-trail-width': strokeTrailWidth
462                }).set(value);
463                $($('.fd-addons-progress-bar-' + id).find('.ldBar-label')).animate({
464                    left: value + '%'
465                }, 1000, 'swing');
466            }
467            if ('circle' === type) {
468                new ldBar(triggerClass, {
469                    'type': 'stroke',
470                    'path': 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
471                    'stroke-dir': 'normal',
472                    'stroke': strokeColor,
473                    'stroke-trail': trailColor,
474                    'stroke-width': strokeWidth,
475                    'stroke-trail-width': strokeTrailWidth
476                }).set(value);
477            }
478            if ('fan' === type) {
479                new ldBar(triggerClass, {
480                    'type': 'stroke',
481                    'path': 'M10 90A40 40 0 0 1 90 90',
482                    'stroke': strokeColor,
483                    'stroke-trail': trailColor,
484                    'stroke-width': strokeWidth,
485                    'stroke-trail-width': strokeTrailWidth
486                }).set(value);
487            }
488        }
489    }
490
491    var FD_Addons_ProgressBar = function($scope, $) {
492            var progressBarWrapper = $scope.find('[data-progress-bar]').eq(0);
493            if ($.isFunction($.fn.waypoint)) {
494                progressBarWrapper.waypoint(function() {
495                    var element = $(this.element),
496                        id = element.data('id'),
497                        type = element.data('type'),
498                        value = element.data('progress-bar-value'),
499                        strokeWidth = element.data('progress-bar-stroke-width'),
500                        strokeTrailWidth = element.data('progress-bar-stroke-trail-width'),
501                        color = element.data('stroke-color'),
502                        trailColor = element.data('stroke-trail-color');
503                    animatedProgressbar(id, type, value, color, trailColor, strokeWidth, strokeTrailWidth);
504                    this.destroy();
505                }, {
506                    offset: 'bottom-in-view'
507                });
508            }
509        }
510        // progress bar script ends
511
512    // Pricing Table
513    var FD_Addons_Pricing_Table = function() {
514
515            $("[data-pricing-trigger]").on("click", function(e) {
516                $(e.target).toggleClass("active");
517                var target = $(e.target).attr("data-target");
518                if ($(target).attr("data-value-active") == "monthly") {
519                    $(target).attr("data-value-active", "yearly");
520                } else {
521                    $(target).attr("data-value-active", "monthly");
522                }
523            })
524
525            // Classic tab switcher
526            $("[data-pricing-tab-trigger]").on("click", function(e) {
527                $('[data-pricing-tab-trigger]').removeClass("active");
528                $(this).addClass("active");
529                var target = $(e.target).attr("data-target");
530                if ($(target).attr("data-value-active") == "monthly") {
531                    $(target).attr("data-value-active", "yearly");
532                } else {
533                    $(target).attr("data-value-active", "monthly");
534                }
535            })
536
537        }
538        // Pricing Table
539        /*
540        *
541        This code use Tab Widget
542        *
543        */
544    var FD_Addons_Tab = function($scope, $) {
545        $scope.find('ul.tabs li').on('click', function() {
546            var tab_id = $(this).attr('data-tab');
547            $scope.find('ul.tabs li').removeClass('current');
548            $scope.find('.fd-addons-tab-content-single').removeClass('current');
549            $(this).addClass('current');
550            $scope.find("#" + tab_id).addClass('current');
551        })
552        if ($.fn.magnificPopup) {
553            $('.fd-addons-elm-edit').magnificPopup({
554                type: 'iframe',
555                mainClass: 'mfp-fade fd-addons-elm-edit-popup',
556                callbacks: {
557                    open: function() {
558                        // Will fire when this exact popup is opened
559                        // this - is Magnific Popup object
560                    },
561                    close: function() {
562                            location.reload();
563
564                        }
565                        // e.t.c.
566                }
567            });
568            console.log('helw')
569        }
570    };
571
572
573    /*  Brand Logo Slider */
574    var FD_Addons_Brand_Logo = function($scope, $) {
575
576        var icarousel = $scope.find(".brand-logo-slider");
577        var id = $scope.data('id');
578
579        if (icarousel.length === 0)
580            return;
581
582        var datas = icarousel.data('brand');
583
584        var rtl = $('body').hasClass('rtl') ? true : false;
585        var apps = $('.brand-logo-slider');
586
587        if (apps.is_exist()) {
588            apps.slick({
589                rtl: rtl,
590                loop: true,
591                centerMode: true,
592                centerPadding: '0',
593                lazyLoad: 'ondemand',
594                slidesToShow: datas['per_coulmn'],
595                slidesToScroll: 1,
596                dots: datas['dots'],
597                arrows: datas['nav'],
598                appendArrows: '.brand-logo-slider-arrow',
599                prevArrow: $('.prev-' + id),
600                nextArrow: $('.next-' + id),
601                autoplay: datas['autoplay'],
602                autoplaySpeed: datas['autoplaytimeout'],
603                infinite: datas['loop'],
604                easing: 'linear',
605                speed: 800,
606                appendDots: ".brand-logos-dots",
607                responsive: [{
608                        breakpoint: 1600,
609                        settings: {
610                            slidesToShow: datas['per_coulmn'],
611                        },
612                    },
613                    {
614                        breakpoint: 1000,
615                        settings: {
616                            slidesToShow: datas['per_coulmn_tablet'],
617
618                        },
619                    },
620                    {
621                        breakpoint: 767,
622                        settings: {
623                            slidesToShow: datas['per_coulmn_mobile'],
624                            centerMode: true,
625                            centerPadding: '0',
626                        },
627                    },
628                ],
629            })
630        }
631    }
632
633
634    // Blog Slider
635    var Blog_slider_Js = function($scope) {
636
637        var wrapper = $scope.find(".blog-slider");
638
639        var id = $scope.data('id');
640
641        // console.log(id);
642
643        if (wrapper.length === 0)
644            return;
645
646        var settings = wrapper.data('settings');
647
648
649        wrapper.slick({
650            infinite: true,
651            speed: 900,
652            slidesToShow: settings['per_coulmn'],
653            slidesToScroll: 1,
654            autoplay: settings['autoplay'],
655            autoplaySpeed: settings['autoplaytimeout'],
656            arrows: true,
657            draggable: settings['mousedrag'],
658            dots: settings['dots'],
659            centerPadding: '0',
660            lazyLoad: 'ondemand',
661            centerMode: settings['show_center_mode'],
662            dotsClass: "blog-slider-dot-list",
663            swipe: false,
664            vertical: settings['show_vertical'],
665            prevArrow: $('.prev-' + id),
666            nextArrow: $('.next-' + id),
667            responsive: [{
668                    breakpoint: 1600,
669                    settings: {
670                        slidesToShow: settings['per_coulmn'],
671                        slidesToScroll: 1,
672                    },
673                },
674                {
675                    breakpoint: 1000,
676                    settings: {
677                        slidesToShow: settings['per_coulmn_tablet'],
678                        slidesToScroll: 1,
679                    },
680                },
681                {
682                    breakpoint: 767,
683                    settings: {
684                        slidesToShow: settings['per_coulmn_mobile'],
685                        slidesToScroll: 1,
686                        arrows: false,
687                        vertical: false,
688                    },
689                },
690            ],
691        });
692
693    }
694
695    // BUTTON HOVER
696    var Fd_button_Js = function() {
697
698        $('.all-side').on('mouseenter', function(e) {
699            var x = e.pageX - $(this).offset().left;
700            var y = e.pageY - $(this).offset().top;
701            $(this).find('span.hover-animation').css({top: y, left: x})
702        });
703        
704        $('.all-side').on('mouseout', function(e) {
705            var x = e.pageX - $(this).offset().left;
706            var y = e.pageY - $(this).offset().top;
707            $(this).find('span.hover-animation').css({top: y, left: x})
708        });
709    }
710
711
712
713    $(window).on("elementor/frontend/init", function() {
714
715        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-product-categories.default", FinestductCategories);
716        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-tab.default", FD_Addons_Tab);
717        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-job-loop.default", ShadeJobLoop);
718        // elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-blog.default", FD_Addons_Blog);
719        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-testimonial.default", FD_Addons_Testimonail);
720        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-back-to-top.default", FD_Addons_Back_To_Top);
721        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-portfolio.default", FD_Addons_Portfolio_Js);
722        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-portfolio-gallery.default", FD_Addons_Portfolio_Gallery_Js);
723        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-countdown.default", FD_Addons_CountDown);
724        elementorFrontend.hooks.addAction('frontend/element_ready/fd-addons-progress-bar.default', FD_Addons_ProgressBar);
725        elementorFrontend.hooks.addAction('frontend/element_ready/fd-addons-price-table.default', FD_Addons_Pricing_Table);
726        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-accordion.default", fdAddonsAccordion);
727        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-blog.default", Blog_slider_Js);
728        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-brand-logo.default", FD_Addons_Brand_Logo);
729        elementorFrontend.hooks.addAction("frontend/element_ready/fd-addons-btn.default", Fd_button_Js);
730        elementorFrontend.hooks.addAction("frontend/element_ready/global", FinestGlobal);
731
732    });
733
734})(jQuery);
735

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.