function animateCircle({percentage:e=100,onScroll:t=!1,speed:i=1,element:n,size:o=50,backgroundClr:r="white",color:l="blue",strokeWidth:a=5}){let c=Math.ceil(document.body.scrollHeight-window.innerHeight);if(!n)return void console.error("Invalid element:",n);let d=n,h=d.getContext("2d"),s=2*o+a,g=s,m=s/2,u=g/2;d.width=s,d.height=g;let k=()=>{let n=t?Math.floor(window.pageYOffset/c*100):e>100?100:e+i;h.clearRect(0,0,s,g),h.beginPath(),h.lineWidth=a,h.arc(m,u,o,0,2*Math.PI),h.strokeStyle=r,h.stroke(),(e=>{h.beginPath(),h.lineWidth=a,h.strokeStyle=l,h.arc(m,u,o,0,2*Math.PI*e/100),h.stroke()})(n),(!t||ne))}{const e=new Swiper(n,t);return Promise.resolve(e)}},ElementsKit_Helper.observeElement=function(e,t,n={threshold:1}){new IntersectionObserver(((e,n)=>{e.forEach((e=>{e.isIntersecting&&(t(e.target),n.unobserve(e.target))}))}),n).observe(e)},ElementsKit_Helper.isValidURL=function(e){try{if(e.startsWith("#"))return!0;let t=new URL(e,window.location.origin);return["http:","https:","mailto:","tel:","ftp:"].includes(t.protocol)}catch(t){return!1}},ElementsKit_Helper.escapeHtml=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")};let n={init:function(){var i={"elementskit-accordion.default":n.Accordion,"elementskit-blog-posts.default":n.BlogPosts,"elementskit-countdown-timer.default":n.Countdown_Timer,"elementskit-client-logo.default":n.Client_Logo,"elementskit-testimonial.default":n.Testimonial_Slider,"elementskit-image-comparison.default":n.Image_Comparison,"elementskit-progressbar.default":n.Progressbar,"elementskit-piechart.default":n.Piechart,"elementskit-funfact.default":n.Funfact,"elementskit-post-tab.default":n.PostTab,"elementskit-header-search.default":n.Header_Search,"elementskit-header-offcanvas.default":n.Header_Off_Canvas,"ekit-nav-menu.default":n.Nav_Menu,"elementskit-team.default":n.Team,"elementskit-simple-tab.default":n.Tab,"elementskit-back-to-top.default":n.Back_To_Top,"elementskit-image-accordion.default":n.Image_Accordion,"elementskit-video.default":n.Video};e.each(i,(function(e,n){t.hooks.addAction("frontend/element_ready/"+e,n)}))},Accordion:function(t){t.on("click",".elementskit-card-header",(function(t){e(this).parent().toggleClass("active"),e(this).parent().siblings().removeClass("active")}))},Image_Accordion:function(t){const n=t.find(".elementskit-single-image-accordion");let i;for(let t=0;t0){let n=t.find(".ekit-wid-con").data("responsive-breakpoint"),i=t.find(".elementskit-megamenu-has"),s=t.find(".elementskit-menu-container").outerHeight();function a(t,n,i){t.css({width:n}),e(document).width()0){let o=t.find(".ekit-wid-con").data("responsive-breakpoint");t.on("click",".elementskit-dropdown-has > a",(function(n){if(n.preventDefault(),e(document).width().elementskit-dropdown, >.elementskit-megamenu-panel");t.find(".elementskit-dropdown-has").not(s).find(">.elementskit-dropdown, >.elementskit-megamenu-panel").removeClass("ekit-dropdown-open-onclick"),a.toggleClass("ekit-dropdown-open-onclick")})),e(window).on("resize",(function(){e(document).width(){e(t.target).find(".ekit-dropdown-open-onclick").removeClass("ekit-dropdown-open-onclick"),e(t.target).next().find(".ekit-dropdown-open-onclick").removeClass("ekit-dropdown-open-onclick")}))}t.find(".megamenu-ajax-load").length>0&&(t.find(".ekit-nav-dropdown-hover").on("mouseenter",".elementskit-megamenu-has",(function(t){ElementsKit_Helper.megaMenuAjaxLoad(e(this))})),t.find(".ekit-nav-dropdown-click").on("click",".elementskit-megamenu-has",(function(t){ElementsKit_Helper.megaMenuAjaxLoad(e(this))})))},Progressbar:function(e){var t=e.find(".single-skill-bar"),n=t.find(".skill-track"),i=t.find(".number-percentage"),s=i.data("value"),a=i.data("animation-duration")||300;ElementsKit_Helper?.observeElement(t[0],(e=>{i.animateNumbers(s,!0,a),n.animate({width:s+"%"},a)}))},Funfact:function(e){var t=e.find(".elementskit-funfact"),n=t.find(".number-percentage"),i=n.data("style"),s=n.data("value"),a=n.data("animation-duration");ElementsKit_Helper?.observeElement(t[0],(e=>{"static"==i?n.animateNumbers(s,!0,a):new Odometer({el:n[0],value:0,duration:a}).update(s)}))},BlogPosts:function(e){var t=e.find(".post-items");t.data("masonry-config")&&t.imagesLoaded((function(){t.masonry()}))},Countdown_Timer:function(t){var n=t.find(".ekit-countdown"),i=n.data(),s="elementskit-inner-container ekit-countdown-inner",a="elementskit-inner-container",o="elementskit-timer-content ekit-countdown-inner";for(let e in i)i.hasOwnProperty(e)&&"string"==typeof i[e]&&(i[e]=ElementsKit_Helper.escapeHtml(i[e]));if(n.length){switch(n[0].classList[0]){case"elementskit-countdown-timer":default:i.markup='
%-D '+i.dateEkitDay+'
%H '+i.dateEkitHour+'
%M '+i.dateEkitMinute+'
%S '+i.dateEkitSecond+"
";break;case"elementskit-countdown-timer-3":i.markup='
%-D '+i.dateEkitDay+'
%H '+i.dateEkitHour+'
%M '+i.dateEkitMinute+'
%S '+i.dateEkitSecond+"
"}n.theFinalCountdown(i.ekitCountdown,(function(e){this.innerHTML=e.strftime(i.markup)})).on("finish.countdown",(function(){this.innerHTML=i.finishTitle+"
"+i.finishContent,"elementskit-countdown-timer-4"===this.classList[0]&&e(this).addClass("elementskit-coundown-finish")}))}let l=t.find(".elementskit-flip-clock"),r=l.data();if(l.length){let e=[r.dateEkitWeek,r.dateEkitDay,r.dateEkitHour,r.dateEkitMinute,r.dateEkitSecond],t=["elementskit-wks","elementskit-days","elementskit-hrs","elementskit-mins","elementskit-secs"],n="";e.forEach((function(e,i){n+='
'+e+"
"})),l.html(n);let i=l.children(".elementskit-mins"),s=l.children(".elementskit-secs"),a=l.children(".elementskit-hrs"),o=l.children(".elementskit-days"),d=l.children(".elementskit-wks"),c={s:"",m:"",h:"",d:"",w:""},m=function(e,t,n){e!==t&&(e=1===e.toString().length?"0"+e:e,t=1===t.toString().length?"0"+t:t,n.removeClass("elementskit-flip"),n.children(".elementskit-curr").text(e),n.children(".elementskit-next").text(t),setTimeout((function(e){e.addClass("elementskit-flip")}),50,n))};l.theFinalCountdown(r.ekitCountdown,(function(e){m(c.s,e.offset.seconds,s),m(c.m,e.offset.minutes,i),m(c.h,e.offset.hours,a),m(c.d,e.offset.days,o),m(c.w,e.offset.weeks,d),c.s=e.offset.seconds,c.m=e.offset.minutes,c.h=e.offset.hours,c.d=e.offset.days,c.w=e.offset.weeks})).on("finish.countdown",(function(){this.innerHTML=ElementsKit_Helper.escapeHtml(r.finishTitle)+"
"+ElementsKit_Helper.escapeHtml(r.finishContent)}))}},Client_Logo:function(e){var t=e.find(".elementskit-clients-slider").data("config");t.arrows&&(t.navigation={prevEl:e.find(".swiper-button-prev").get(0),nextEl:e.find(".swiper-button-next").get(0)}),t.dots&&(t.pagination={el:e.find(".swiper-pagination").get(0),type:"bullets",clickable:!0});let n=e.find(`.${elementorFrontend.config.swiperClass}`);ElementsKit_Helper.swiper(n,t).then((function(e){t.autoplay&&t.pauseOnHover&&n.hover((function(){e.autoplay.stop()}),(function(){e.autoplay.start()}))}))},Testimonial_Slider:function(e){var t=e.find(".elementskit-testimonial-slider").data("config");t.arrows&&(t.navigation={prevEl:e.find(".swiper-button-prev").get(0),nextEl:e.find(".swiper-button-next").get(0)}),t.dots&&(t.pagination={el:e.find(".swiper-pagination").get(0),type:"bullets",clickable:!0});let n=e.find(`.${elementorFrontend.config.swiperClass}`);ElementsKit_Helper.swiper(n,t).then((function(e){t.autoplay&&t.pauseOnHover&&n.hover((function(){e.autoplay.stop()}),(function(){e.autoplay.start()}))}))},Image_Comparison:function(e){var t=e.find(".elementskit-image-comparison");t.closest('[data-widget_type="html.default"]').length||t.imagesLoaded((function(){var e={orientation:t.hasClass("image-comparison-container-vertical")?"vertical":"horizontal",before_label:t.data("label_before"),after_label:t.data("label_after"),default_offset_pct:t.data("offset"),no_overlay:t.data("overlay"),move_slider_on_hover:t.data("move_slider_on_hover"),click_to_move:t.data("click_to_move")};t.twentytwenty(e)}))},Piechart:function(t){var n=t.find(".colorful-chart"),i=n.data(),s={barColor:i.color||undefined,lineWidth:i.linewidth||undefined,trackColor:i.barbg||undefined,gradientChart:!1};"gradient"===i?.pie_color_style&&(s={gradientChart:!0,barColor:i.color||undefined,gradientColor1:i.gradientcolor2||undefined,gradientColor2:i.gradientcolor1||undefined,lineWidth:i.linewidth||undefined,trackColor:i.barbg||undefined});var a=e.extend({barColor:"#666666",gradientColor1:"#fad470",gradientColor2:"#f96933",scaleColor:"transparent",lineWidth:20,size:150,trackColor:"#f7f7f7",lineCap:"round",gradientChart:!1},s);ElementsKit_Helper?.observeElement(n[0],(e=>{n.easyPieChart({barColor:!0===a.gradientChart?function(e){var t=this.renderer.getCtx(),n=this.renderer.getCanvas(),i=t.createLinearGradient(0,0,n.width,0);return i.addColorStop(0,a.gradientColor1),i.addColorStop(1,a.gradientColor2),i}:a.barColor,scaleColor:a.scaleColor,trackColor:a.trackColor,lineCap:a.lineCap,size:a.size,lineWidth:a.lineWidth})}))},PostTab:function(t){var n=t.hasClass("is-click-yes")?"click":"mouseover",i=t.find(".tab__list__item"),s=t.find(".tabItem");i.on(n,(function(){i.removeClass("active"),s.removeClass("active"),e(this).addClass("active"),s.eq(e(this).index()).addClass("active")}))},Header_Search:function(e){var t=e.find(".ekit_navsearch-button"),n=e.closest("body"),i=e.data("id");t.magnificPopup({type:"inline",fixedContentPos:!0,fixedBgPos:!0,overflowY:"auto",closeBtnInside:!1,callbacks:{beforeOpen:function(){this.st.mainClass=`my-mfp-slide-bottom ekit-promo-popup ekit-popup-${i}`},open:function(){n.css("overflow","hidden"),n.find(".mfp-close").addClass("ekit-popup-close")},close:function(){n.css("overflow","auto"),n.find(".mfp-close").removeClass("ekit-popup-close")}}})},Team:function(t){t.find(".ekit-team-popup").magnificPopup({type:"inline",fixedContentPos:!0,fixedBgPos:!0,overflowY:"auto",closeBtnInside:!0,appendTo:t.closest("body"),showCloseBtn:!1,callbacks:{beforeOpen:function(){this.st.mainClass="my-mfp-slide-bottom ekit-promo-popup ekit-team-modal"}}}),e("body").off("click").on("click",".ekit-team-modal-close",(function(){e.magnificPopup.close()}))},Tab:function(e){var t=e.find('[data-ekit-toggle="tab"]'),n=t.data("ekit-toggle-trigger"),i=e.data("settings");ElementsKit_Helper.triggerClickOnEvent(n,t),t.on("shown.bs.tab",(function(){ElementsKit_Helper.setURLHash(i,this,"ekit-handler-id")}))},Header_Off_Canvas:function(t){var n=t.find(".ekit-sidebar-group"),i=t.find(".ekit_offcanvas-sidebar, .ekit_close-side-widget, .ekit-overlay"),s=t.find(".ekit-sidebar-group").data("settings");i.on("click",(function(t){t.preventDefault(),n.toggleClass("ekit_isActive"),"yes"===s?.disable_bodyscroll&&(n.hasClass("ekit_isActive")?e("body").css("overflow","hidden"):e("body").css("overflow",""))}))},Back_To_Top:function(t){const n=t.find(".ekit-btt__button"),{offset_top:i,show_after:s,show_scroll:a,style:o,foreground:l,background:r}=t.find(".ekit-btt").data("settings");if("progress_indicator"===o){const e="#canvas-"+t.find(".progress_indicator .progress_indicator canvas").data("canvas"),n=t.find(e).get(0);animateCircle({element:n,size:100,percentage:100,onScroll:!0,speed:50,backgroundClr:r,color:l,strokeWidth:10})}n.on("click",(e=>{e.target;var t;t=i,window.scrollTo({left:0,top:t,behavior:"smooth"})})),"yes"===a&&e(document).on("scroll",(()=>{(e=>{let t=n.hasClass("ekit-tt-show");e&&!t&&n.addClass("ekit-tt-show"),!e&&t&&n.removeClass("ekit-tt-show")})(Math.ceil(window.pageYOffset)>s+i)}))},Video:function(e){var t=e.find(".video-content"),n=t.find(".ekit-video-popup"),i=t.data("video-player"),s=e.closest("body"),a=t.data("video-setting");if(n.length>0){const o={type:a.videoType,mainClass:a.videoClass,removalDelay:160,preloader:!0,fixedContentPos:!1,callbacks:{open:function(){s.find(".mfp-close").addClass("ekit-popup-close"),window.dispatchEvent(new Event("resize"))},close:function(){s.find(".mfp-close").removeClass("ekit-popup-close"),e.find("video").each((function(){this.pause()}))}}};"iframe"===a.videoType&&(o.iframe={markup:'
',patterns:{youtube:{index:"https://youtube.com/",id:"v=",src:"%id%"}}}),t.find("video").mediaelementplayer({features:i,videoVolume:a.videoVolume,startVolume:a.startVolume,stretching:"responsive",enableAutosize:!0,videoWidth:"100%",videoHeight:"100%"}),n.magnificPopup(o)}},rememberTab:function(){if(!window.location.hash)return;let t='[data-ekit-handler-id="'+window.location.hash.split("?")[0].substring(1)+'"]';e(t).tab("show")},load:function(){n.rememberTab()},hash:function(){n.rememberTab()}};e(window).on("elementor/frontend/init",n.init).on("load",n.load).on("hashchange",n.hash)}(jQuery,window.elementorFrontend),function(e){"use strict";e.fn.animateNumbers=function(t,n,i,s){return this.each((function(){var a=e(this),o=parseInt(a.text().replace(/,/g,""),10);n=n===undefined||n,e({value:o}).animate({value:t},{duration:i===undefined?500:i,easing:s===undefined?"swing":s,step:function(){a.text(Math.floor(this.value)),n&&a.text(a.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"))},complete:function(){parseInt(a.text(),10)!==t&&(a.text(t),n&&a.text(a.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,")))}})}))},e((function(){if(e("#wp-admin-bar-elementor_edit_page-default").length>0){let t=e("#wp-admin-bar-elementor_edit_page-default").children("li");e(t).map((function(t,n){var i=e(n).find(".elementor-edit-link-title");-1!==i.text().indexOf("dynamic-content-")&&i.parent().parent().remove()}))}}))}(jQuery);; !function(e,t){"use strict";"function"!=typeof ElementsKit_Helper.swiper&&(ElementsKit_Helper.swiper=function(e,i){var n=e.get(0);if("function"!=typeof Swiper){return new(0,t.utils.swiper)(n,i).then((e=>e))}{const e=new Swiper(n,i);return Promise.resolve(e)}}),"function"!=typeof ElementsKit_Helper.removeSpecificCharacters&&(ElementsKit_Helper.removeSpecificCharacters=function(e){return e?.replace(/[^\w\s]/gi,"")});let i={init:function(){var n={"elementskit-advance-accordion.default":i.Advanced_Accordion,"elementskit-advanced-toggle.default":i.Advanced_Toggle,"elementskit-tab.default":i.Advanced_Tab,"elementskit-gallery.default":i.Gallery,"elementskit-motion-text.default":i.MotionText,"elementskit-popup-modal.default":i.PopupModal,"elementskit-zoom.default":i.Zoom,"elementskit-unfold.default":i.Unfold,"elementskit-woo-product-carousel.default":i.Woo_Product_slider,"elementskit-woo-mini-cart.default":i.Mini_Cart,"elementskit-table.default":i.Table,"elementskit-timeline.default":i.TimeLine,"elementskit-creative-button.default":i.Creative_Button,"elementskit-hotspot.default":i.Hotspot,"ekit-vertical-menu.default":i.Vertical_Menu,"elementskit-video-gallery.default":i.Video_Gallery,"elementskit-facebook-feed.default":i.Facebook_Feed,"elementskit-facebook-review.default":i.Facebook_Review,"elementskit-yelp.default":i.Yelp_Review,"elementskit-blog-posts.default":i.BlogPosts,"elementskit-advanced-slider.default":i.Advanced_Slider,"elementskit-whatsapp.default":i.Whatsapp,"elementskit-fancy-animated-text.default":i.Fancy_Animated_Text,"elementskit-price-menu.default":i.Price_Menu,"elementskit-team-slider.default":i.Team_Slider,"elementskit-audio-player.default":i.Audio_Player,"elementskit-stylish-list.default":i.Stylish_List,"elementskit-flip-box.default":i.Flip_box,"elementskit-image-morphing.default":i.Image_Morphing,"elementskit-image-swap.default":i.Image_Swap,"elementskit-content-ticker.default":i.Content_Ticker,"elementskit-coupon-code.default":i.Coupon_Code,"elementskit-comparison-table.default":i.Comparison_Table,"elementskit-interactive-links.default":i.Interactive_Links};e.each(n,(function(e,i){t.hooks.addAction("frontend/element_ready/"+e,i)}))},WidgetAreaJSUpdate:function(){var t=e(this),i=["ekit-nav-menu","ekit-vertical-menu","gallery","accordion"],n=0;t.find(".elementor-widget").each((function(){i.map((t=>{e(this).hasClass("elementor-widget-"+t)||(n+=1)})),i.length===n&&elementorFrontend.elementsHandler.runReadyTrigger(e(this)),n=0})),t.find(".elementskit-image-comparison").trigger("resize.twentytwenty")},Social_Review_Slider:function(e){var i=e.data("config");if(void 0===i)return;i?.arrows&&(i.navigation={prevEl:e.find(".swiper-button-prev").get(0),nextEl:e.find(".swiper-button-next").get(0)}),i?.dots&&(i.pagination={el:e.find(".swiper-pagination").get(0),type:"bullets",clickable:!0});let n=e.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(n,i).then((function(e){i.autoplay&&i.pauseOnHover&&n.hover((function(){e.autoplay.stop()}),(function(){e.autoplay.start()}))}))},Handle_Review_More:function(t){e(t).find(".more").each((function(){e(this).click((()=>{let t=e(e(this).parent().get(0)).find("span").first();!0===e(this).data("collapsed")?(e(t).text(e(this).data("text")),e(this).text("...Collapse")):(e(t).text(e(this).data("text").substr(0,120)),e(this).text("...More")),e(this).data("collapsed",!e(this).data("collapsed"))}))}))},ShowModal:function(t,i,n){if(n)return;e.find(".ekit-popup-modal.show").forEach((t=>e(t).removeClass("show")));let a=i.data("animation");t.addClass("show"),a&&i.addClass(a)},Advanced_Accordion:function(t){t.find(".elementskit-card > .collapse").on("shown.bs.collapse",(function(){var n=e(this);i.WidgetAreaJSUpdate.call(n),ElementsKit_Helper.ajaxLoading(t,n)})).filter(".show").trigger("shown.bs.collapse")},Advanced_Toggle:function(t){var n=t.find('[data-ekit-toggle="tab"]'),a=t.find(".ekit-custom-control-input");if(n.on("click",(function(t){t.preventDefault(),e(this).tab("show")})),t.find(".elemenetskit-toggle-indicator").length>0){let s=t.find(".elemenetskit-toggle-indicator"),o=t.find(".elementskit-toggle-nav-link.active");function l(e,t){let i="click"===e?t.outerWidth():o.outerWidth(),n="click"===e?t.outerHeight():o.outerHeight(),a="click"===e?t.position().left:o.position().left,l="click"===e?t.position().top:o.position().top;s.attr("class","elemenetskit-toggle-indicator "+t.parents("li").data("elementor_current_item")),s.css({width:i,height:n,left:a,top:l})}l(null,o),t.find(".elementkit-tab-nav > li > a").on("click",(function(t){l(t.type,e(this))}))}a.on("click",(function(){var t=this.checked?".elementskit-switch-nav-link-2":".elementskit-switch-nav-link-1";e(this).siblings(t).tab("show")})),n.on("shown.bs.tab",(function(){var n=t.find(e(this).attr("href"));a.length&&(a[0].checked=this.getAttribute("data-toggled")),i.WidgetAreaJSUpdate.call(n),ElementsKit_Helper.ajaxLoading(t,n)})).filter(".active").trigger("shown.bs.tab")},Advanced_Tab:function(n){var a=n.find('[data-ekit-toggle="tab"]'),s=a.data("ekit-toggle-trigger"),o=n.data("settings");t.isEditMode()&&(o=t.config.elements.data[n.data("model-cid")].attributes),ElementsKit_Helper.triggerClickOnEvent(s,a),a.on("shown.bs.tab",(function(){let t=n.find(e(this)).data("target").substring(1),s=n.find(`#${t}`);i.WidgetAreaJSUpdate.call(s),"yes"==o?.ekit_hash_change&&a.click("shown.bs.tab",(function(){ElementsKit_Helper.setURLHash(o,this,"ekit-handler-id")})),ElementsKit_Helper.ajaxLoading(n,s)})).filter(".active").trigger("shown.bs.tab")},Gallery:function(t){var i=t.find(".ekit_gallery_grid"),n=i.data("grid-config");i.imagesLoaded((function(){i.isotope(n)})),t.find(".filter-button-wraper").find("a").on("click",(function(t){t.preventDefault();var n=e(this);n.parents(".option-set").find(".selected").removeClass("selected"),n.addClass("selected"),i.isotope({filter:n.data("option-value")})}));var a=t.find(".ekit-gallery-portfolio-tilt"),s=i.data("tilt-config");a.tilt(s)},MotionText:function(t){var i=t.find(".ekit_motion_text_title");if(i.hasClass("ekit_char_based")){var n=i.children(".ekit_motion_text"),a=n.text().split(""),s=i.data("ekit-animation-delay-s"),o=s,l="";e.each(a,(function(e,t){l+=" "===t?t:''+t+"",s+=o})),n.html(l)}ElementsKit_Helper?.observeElement(i[0],(t=>{var i=e(t).data("animate-class");e(t).addClass(i).css("opacity",1)}),{threshold:1})},PopupModal:function(e){var t=e.data("id"),n=e.data("settings"),a=n&&"enable_cookie_consent"in n,s=a&&document.cookie.match("popup_cookie_"+t),o=e.find(".ekit-popup-modal"),l=e.find(".ekit-popup__content"),r=o.data("toggletype"),d=o.data("toggleafter");"time"===r&&d>0&&setTimeout((()=>{i.ShowModal(o,l,s)}),1e3*d);var c=e.find(".ekit-popup-modal__toggler-wrapper button, .ekit-popup-modal__toggler-wrapper img"),p=e.find(".ekit-popup__close, .ekit-popup-modal__close, .ekit-popup-footer__close");c.on("click",(function(e){e.preventDefault(),i.ShowModal(o,l)})),p.on("click",(function(e){e.preventDefault(),o.addClass("closing"),setTimeout((()=>{o.removeClass("show"),o.removeClass("closing")}),450),a&&(document.cookie="popup_cookie_"+t+"=1; path=/")}))},Zoom:function(e){var t=e.find(".ekit-zoom-counter"),i=e.find(".ekit-zoom-wrapper").data("settings");if(!t.length)return!1;var n=t.data("date"),a=new Date(n).getTime();a||(a=0);var s=setInterval((function(){var e=(new Date).getTime(),n=a-e,o=Math.floor(n/864e5),l=Math.floor(n%864e5/36e5),r=Math.floor(n%36e5/6e4),d=Math.floor(n%6e4/1e3),c="
  • "+o+""+i.days+"
  • "+l+""+i.hours+"
  • "+r+""+i.minutes+"
  • "+d+""+i.seconds+"
";t.html(c),n<0&&(clearInterval(s),t.html("EXPIRED"))}),1e3)},Unfold:function(t){var i=t.find(".ekit-unfold-btn"),n=t.find(".ekit-unfold-wrapper"),a=t.find(".ekit-unfold-data"),s=t.find(".ekit-unfold-data-inner"),o=n.data("config");o.collapse_height>=s.outerHeight()&&(i.hide(),a.addClass("active")),i.on("click",(function(){var t=this,i=e(this);t.style.display="none",a.hasClass("active")?(a.animate({height:o.collapse_height},parseInt(o.transition_duration,10)||0),i.html(ElementsKit_Helper.removeSpecificCharacters(o.expand_text))):(a.animate({height:s.outerHeight()},parseInt(o.transition_duration,10)||0),i.html(ElementsKit_Helper.removeSpecificCharacters(o.collapse_text))),a.toggleClass("active"),a.hasClass("active")||setTimeout((()=>{a[0].scrollIntoView({block:"center"})}),[300]),setTimeout((function(){t.style.display="block"}),300)}))},Woo_Product_slider:function(e){let i=e.find(`.${t.config.swiperClass}`),n=i.data("autoplay"),a=i.data("loop"),s=i.data("speed"),o=i.data("space-between"),l=i.data("responsive-settings");var r={navigation:{nextEl:e.find(".ekit-navigation-next").get(0),prevEl:e.find(".ekit-navigation-prev").get(0)},pagination:{el:e.find(".ekit-swiper-pagination").get(0),type:"bullets",clickable:!0},autoplay:n&&n,loop:a&&Boolean(a),speed:s&&Number(s),slidesPerView:Number(l.ekit_columns_mobile),spaceBetween:o&&Number(o),breakpointsInverse:!0,breakpoints:{640:{slidesPerView:Number(l.ekit_columns_mobile),spaceBetween:o&&Number(o)},768:{slidesPerView:Number(l.ekit_columns_tablet),spaceBetween:o&&Number(o)},1024:{slidesPerView:Number(l.ekit_columns_desktop),spaceBetween:o&&Number(o)}}};let d=e.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(d,r).then((function(e){}))},Mini_Cart:function(t){var i=t.find(".ekit-dropdown-back");i.on("click mouseenter mouseleave",(function(t){var i=e(this),n=i.hasClass("ekit-mini-cart-visibility-click"),a=i.hasClass("ekit-mini-cart-visibility-hover"),s=i.find(".ekit-mini-cart-container");"click"===t.type&&n&&!e(t.target).parents("div").hasClass("ekit-mini-cart-container")?s.fadeToggle():"mouseenter"===t.type&&a?s.fadeIn():"mouseleave"===t.type&&a&&s.fadeOut()})),t.find(".ekit-mini-cart--backdrop, .ekit-dropdown-back > i, .ekit-dropdown-back > .ekit-basket-item-count").on("click",(function(){i.toggleClass("is--active")}))},Table:function(i){var n=i.find(".ekit_table").data("settings");if(t.isEditMode()&&(n=t.config.elements.data[i.data("model-cid")].attributes),i.find(".ekit_table").length>0){var a=i.find(".ekit_table").data("settings"),s="text"===a.nav_style.trim()||"both"===a.nav_style.trim()?''+a.prev_text+"":"",o="text"===a.nav_style.trim()||"both"===a.nav_style.trim()?''+a.next_text+"":"",l="arrow"===a.nav_style.trim()||"both"===a.nav_style.trim()?'':"",r="arrow"===a.nav_style.trim()||"both"===a.nav_style.trim()?'':"";e(window).trigger("resize");var d={buttons:!0===a.button?["copy","excel","csv"]:[],bFilter:a.search,autoFill:!0,pageLength:a.item_per_page?a.item_per_page:1,fixedHeader:a.fixedHeader,responsive:a.responsive,paging:a.pagination,ordering:a.ordering,info:a.info,retrieve:!0,language:{search:`${a.searchIcon}`,searchPlaceholder:n.search_placeholder,info:n.info_text,infoEmpty:n.info_text?n.info_text.replace(/_START_|_END_|_TOTAL_/gi,"0"):"",lengthMenu:n.entries_text,paginate:{next:o+r,previous:l+s}}};!1===a.entries&&(d.dom="Bfrtip"),i.find(".ekit_table table").DataTable(d)}},TimeLine:function(t){t.find(".elementskit-invisible").each((function(){ElementsKit_Helper?.observeElement(this,(t=>{if(!e(t).hasClass("animated")){var i="animated "+e(t).data("settings")._animation;e(t).removeClass("elementskit-invisible").addClass(i)}}),{threshold:.1})})),t.on("mouseenter",".horizantal-timeline > .single-timeline",(function(){e(this).addClass("hover").siblings().removeClass("hover")})).on("mouseleave",".horizantal-timeline > .single-timeline",(function(){e(this).removeClass("hover")}))},Creative_Button:function(t){var i=t.find(".ekit_position_aware_bg");t.on("mouseenter mouseleave",".ekit_position_aware",(function(t){var n=e(this).offset(),a=t.pageX-n.left,s=t.pageY-n.top;i.css({top:s,left:a})}))},Hotspot:function(t){var i=t.find(".ekit-location-on-click > .ekit-location_indicator, .ekit-location-on-hover.click > .ekit-location_indicator"),n=t.find(".ekit-location-on-hover:not(.click) > .ekit-location_indicator"),a=t.find(".ekit-location");function s(){let t=e(this).find(".ekit-location_outer"),i=e(this).find(".ekit-location_indicator"),n=i.width()/2+e(this).find(".ekit-hotspot-vertical-line").height(),a=i.width()+e(this).find(".ekit-hotspot-horizontal-line").height(),s=i.width()+e(this).find(".ekit-hotspot-horizontal-line").width();if(t.length)if(e(this).hasClass("ekit_hotspot_follow_line_top")?t.css({bottom:a,top:"auto"}):e(this).hasClass("ekit_hotspot_follow_line_bottom")?t.css({top:a,bottom:"auto"}):e(this).hasClass("ekit_hotspot_follow_line_right_top")||e(this).hasClass("ekit_hotspot_follow_line_left_top")?t.css("bottom",n):e(this).hasClass("ekit_hotspot_follow_line_right_bottom")||e(this).hasClass("ekit_hotspot_follow_line_left_bottom")?t.css("top",n):e(this).hasClass("ekit_hotspot_follow_line_right")?(t.css("top",-(t.height()/2-i.width()/2)),t.css("left",s)):e(this).hasClass("ekit_hotspot_follow_line_left")&&(t.css("top",-(t.height()/2-i.width()/2)),t.css("right",s)),t.offset().left<0)e(window).width()<=480&&e(this).find(".ekit-location_outer").css({"max-width":e(window).width(),"min-width":e(window).width()-40}),e(this).find(".ekit-location_outer").css("margin-left",Math.abs(t.offset().left));else if(t.offset().left>0)if(e(window).width()<=480&&t.width()>e(window).width())e(this).find(".ekit-location_outer").css({"max-width":e(window).width(),"min-width":e(window).width()-40}),e(this).find(".ekit-location_outer").css("left",-Math.abs(t.offset().left));else if(t.offset().left+t.width()>e(window).width()){let i=Math.abs(t.offset().left+t.width()-e(window).width());e(this).find(".ekit-location_outer").css("left",-i)}}e(window).load((function(){e(window).width()<=480&&a.hasClass("hotspot-following-line-style")&&e(window).width()<=480&&(a.removeClass("ekit_hotspot_follow_line_top ekit_hotspot_follow_line_bottom ekit_hotspot_follow_line_right_top ekit_hotspot_follow_line_right_bottom ekit_hotspot_follow_line_left_bottom ekit_hotspot_follow_line_right ekit_hotspot_follow_line_left ekit_hotspot_follow_line_left_top"),a.removeClass("hotspot-following-line-style").addClass("hotspot-following-line-straight ekit_hotspot_follow_line_top")),t.find(".ekit-location_outer").each((function(){e(this).offset().top<0&&e(this).parents(".ekit-location-on-hover").addClass("bottom"),e(this).parent().hasClass("auto")&&e(this).offset().top<0&&e(this).parent().removeClass("ekit_hotspot_follow_line_top").addClass("ekit_hotspot_follow_line_bottom")})),setTimeout((function(){a.each(s)}),1e3)})),i.on("click",(function(){t.find(".ekit-all-activated").length||e(this).parent().siblings().removeClass("active"),e(this).parent().toggleClass("active").removeClass("ekit-all-activated")})),n.on("mouseenter",(function(){a.removeClass("active")}))},Vertical_Menu:function(t){if(t.find(".ekit-vertical-main-menu-on-click").length>0){let i=t.find(".ekit-vertical-main-menu-on-click"),n=t.find(".ekit-vertical-menu-tigger"),a=e("body").data("elementor-device-mode");"tablet"!==a&&"mobile"!==a||i.removeClass("vertical-menu-active"),n.on("click",(function(e){e.preventDefault(),i.toggleClass("vertical-menu-active")}))}if(t.find(".elementskit-megamenu-has").length>0){let i=t.find(".elementskit-megamenu-has"),n=t.parents(".elementor-container"),a=t.find(".ekit-vertical-main-menu-wraper");Math.floor(n.width()-a.width());i.on("mouseenter",(function(){let t=e(this).data("vertical-menu"),i=e(this).children(".elementskit-megamenu-panel");t&&t!==undefined?"string"==typeof t?/^[0-9]/.test(t)?i.css({width:t}):e(window).bind("resize",(function(){e(document).width()>1024?i.css({width:Math.floor(n.width()-a.width()-10)+"px"}):i.removeAttr("style")})).trigger("resize"):i.css({width:t+"px"}):e(window).bind("resize",(function(){e(document).width()>1024?i.css({width:Math.floor(n.width()-a.width()-10)+"px"}):i.removeAttr("style")})).trigger("resize")})),i.trigger("mouseenter")}t.find(".megamenu-ajax-load").length>0&&t.find(".ekit-vertical-main-menu-wraper").on("mouseenter",".elementskit-megamenu-has",(function(t){ElementsKit_Helper.megaMenuAjaxLoad(e(this))})),t.find(".megamenu-ajax-load").length>0&&t.find(".ekit-vertical-main-menu-wraper").on("mouseenter",".elementskit-megamenu-has",(function(t){ElementsKit_Helper.megaMenuAjaxLoad(e(this))}))},Video_Gallery:function(i){var n=i.find(".video-link.popup"),a=i.find(".video-link.inline"),s=(i.find(".ekit-video-gallery-wrapper.ekit-masonry"),i.find(".elementskit-main-filter>li>a")),o=i.find(".ekit-video-gallery.ekit-carousel"),l=o.data("config");if(n.length>0&&n.magnificPopup({type:"iframe",mainClass:"mfp-fade",removalDelay:160,preloader:!0,fixedContentPos:!1,callbacks:{open:function(){e("body").find(".mfp-close").addClass("ekit-popup-close"),window.dispatchEvent(new Event("resize"))},close:function(){e("body").find(".mfp-close").removeClass("ekit-popup-close"),i.find("video").each((function(){this.pause()}))}},iframe:{markup:'
',patterns:{youtube:{index:"youtube.com/",id:"v=",src:"https://www.youtube.com/embed/%id%?autoplay=1&rel=0"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"}}}}),a.on("click",(function(t){t.preventDefault();var i=e(this).data("url");e(this).addClass("video-added").append('')})),s.on("click",(function(t){t.preventDefault();var n=e(this).data("value")?"."+e(this).data("value"):"";i.find("a").removeClass("selected"),e(this).addClass("selected"),i.find(".ekit-video-item").hide(),i.find(".ekit-video-item"+n).fadeIn()})),o.length){l.arrows&&(l.navigation={prevEl:i.find(".swiper-button-prev").get(0),nextEl:i.find(".swiper-button-next").get(0)}),l.dots&&(l.pagination={el:i.find(".swiper-pagination").get(0),type:"bullets",clickable:!0});let e=i.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(e,l).then((function(t){l.autoplay&&l.pauseOnMouseEnter&&e.hover((function(){t.autoplay.stop()}),(function(){t.autoplay.start()}))}))}jQuery(".ekit-video-gallery.ekit-masonry").isotope({percentPosition:!0,itemSelector:".ekit-video-item "})},Facebook_Feed:function(t){t.find(".ekit-fb-video-play-button").on("click",(function(){let t=e(this).closest(".video-container"),i=`\n\t\t\t\t\t\n\t\t\t\t`;t.html(i)}))},Facebook_Review:function(e){i.Social_Review_Slider(e.find(".ekit-review-slider-wrapper-facebook")),i.Handle_Review_More(e)},Yelp_Review:function(e){i.Social_Review_Slider(e.find(".ekit-review-slider-wrapper-yelp")),i.Handle_Review_More(e)},BlogPosts:function(i){var n=i.find(".ekit-blog-post-pagination-container"),a=i.data("id"),s={items:"#post-items--"+a,nagivation:"#post-nagivation--"+a,masonry:"#post-masonry--"+a};if(i.on("click",".ekit-blog-post-pagination-container a.page-numbers",(function(t){t.preventDefault();var a=e(this).attr("href");e.ajax({url:a}).done((function(t){var a=e(t),o=a.find(s.items).html(),l=a.find(s.nagivation).html();"loadmore"==n.data("ekit-blog-post-style")?i.find(s.items).append(o):i.find(s.items).html(o),i.find(s.nagivation).html(l),e(o).imagesLoaded((function(){var t=e(s.items);t.data("masonry")?(t.masonry("reloadItems"),t.masonry("layout")):t.masonry({itemSelector:".post-item",columnWidth:".post-item",percentPosition:!0,transitionDuration:0})}))}))})),"yes"===i.find(s.items).data("enable")){let e=i.find(`.${t.config.swiperClass}`).data("settings");const n={spaceBetween:e.spaceBetween,slidesPerView:e.slidesPerView,slidesPerGroup:e.slidesPerGroup,loop:!0,speed:e.speed,breakpoints:e.breakPoints};!0===e.navigation&&(n.navigation={nextEl:i.find(".ekit-blog-carousel-button-next").get(0),prevEl:i.find(".ekit-blog-carousel-button-prev").get(0)}),!0===e.pagination&&(n.pagination={el:i.find(".ekit-blog-carousel-pagination").get(0),clickable:!0}),!0===e.autoplay&&(n.autoplay={delay:e.autoplayDelay});let a=i.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(a,n).then((function(e){}))}},Advanced_Slider:function(i){let n=i.find(".ekit-slider-wrapper"),a=i.closest(".swiper-custom-nav"),s=i.find(".ekit-progress-bar"),o=i.find(".elementskit-advanced-slider").data("widget_settings");var l={loop:"yes"==o.sliderOptions.loopEnable,speed:o.sliderOptions.speedTime||600,grabCursor:"yes"==o.sliderOptions.sliderGrapCursor,direction:o.sliderOptions.sliderDirectionType||"horizontal",autoHeight:!0,effect:o.sliderOptions.sliderEffect||"default",paginationClickable:!0,pagination:{el:n.find(".swiper-pagination.ekit-swiper-pagination").get(0),clickable:!0},on:{init:function(){c(this),d(this),"yes"===o?.sliderOptions.sliderThumbsShow&&function(){let{sliderOptions:t}=o,a=i.find(".swiper-pagination.ekit-swiper-pagination"),s=a.children(),l=t.sliderTabItems.map((e=>e.ekit_slider_thumbs_image.url)),r=s.length,d={display:"grid"};s.each((function(t){const i=e(this);i.css({background:`url(${l[t]})`,backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"cover"}),i.siblings().css({width:"100%"})})),"horizontal"===t.sliderDirectionType?(d.width=t.sliderThumbsOffset.size?`${t.sliderThumbsOffset.size}%`:"70%",d.gridTemplateColumns=`repeat(${r}, 1fr)`,d.gridTemplateRows="1fr",d.marginTop="7px"):(d.gridTemplateColumns="1fr",d.gridTemplateRows=`repeat(${r}, 1fr)`);a.css(d),n.addClass("slider-thumbs-yes")}()},slideChange:function(){var e;e=this,s.removeClass("progress-bar-active"),e.update()},slideChangeTransitionEnd:function(){var e;c(this),e=this,s.addClass("progress-bar-active"),e.update()},activeIndexChange:function(){d(this)}},navigation:{nextEl:a.length?a.find(".ekit-double-btn-two"):i.find(".swiper-button-next").get(0),prevEl:a.length?a.find(".ekit-double-btn-one"):i.find(".swiper-button-prev").get(0)}};"horizontal"==o.sliderOptions.sliderDirectionType?(l.slidesPerView=o.sliderOptions.slidesPerViewItem,l.spaceBetween=o.sliderOptions.spaceBetweenGap,l.breakpoints=o.sliderOptions.breakpointsOption):l.slidesPerView=1,"yes"!=o.sliderOptions.sliderAutoPlay&&"yes"!=o.sliderOptions.progressBar||(l.autoplay={delay:o?.sliderOptions.autoPlayDelay||3e3},o?.sliderOptions?.pauseOnMouseEnter&&n.hover((function(){this.swiper.autoplay.stop()}),(function(){this.swiper.autoplay.start()}))),"yes"==o.sliderOptions.sliderMouseScroll&&(l.mousewheel={invert:!0,sensitivity:1,thresholdTime:9});let r=i.find(`.${t.config.swiperClass}`);function d(t){let i=t.activeIndex;e(t.slides[i]).find(".elementor-widget").each((function(t,i){let{_animation:n,_animation_delay:a}=e(i).data("settings")||{};n&&(e(i).addClass("animated elementor-invisible").css({"animation-name":"unset"}),setTimeout((()=>{e(i).css({"animation-name":n}),e(i).removeClass("elementor-invisible")}),a||1200))})),t.update()}function c(t){n.find(".ekit-swiper-slide").css({height:"auto"});let i=t.activeIndex,a=e(t.slides[i]).height();n.find(".ekit-swiper-wrapper, .ekit-swiper-slide").css({height:a}),t.update()}ElementsKit_Helper.swiper(r,l).then((function(e){})),"yes"==o.sliderOptions.progressBar&&(i.find(".ekit-slider-wrapper, .ekit-swiper-progress").each((function(t,i){e(i).on("mouseenter",(function(){o?.sliderOptions?.pauseOnMouseEnter&&s.css({animationPlayState:"paused"})}))})),i.find(".ekit-slider-wrapper, .ekit-swiper-progress").each((function(t,i){e(i).on("mouseleave",(function(){s.css({animationPlayState:"running"})}))})))},Whatsapp:function(e){const t=e.find(".elementskit-whatsapp__popup--btn"),i=e.find(".elementskit-whatsapp__input--field"),n=e.find(".elementskit-whatsapp__input--btn"),a=n.attr("href"),s=n.attr("target"),o=e.find(".elementskit-whatsapp__input--button"),l=e.find(".elementskit-whatsapp__content"),r=e.find(".elementskit-whatsapp__header--close"),d=e.find(".ekit-whatsapp-loader"),c="elementskit-whatsapp__active",p=()=>{setTimeout((()=>{d.remove(),e.find(".elementskit-whatsapp__chat--title").fadeIn()}),3e3)},f=()=>{let e=i.val(),t=a.replace(/text=/g,`text=${e}`);n.attr("href",t)},u=({url:e,title:t,w:i,h:n})=>{const a=window.screenLeft!==undefined?window.screenLeft:window.screenX,s=window.screenTop!==undefined?window.screenTop:window.screenY,o=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,l=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,r=o/window.screen.availWidth,d=(o-i)/2/r+a,c=(l-n)/2/r+s;window.open(e,t,`scrollbars=yes, width=${i/r}, height=${n/r}, top=${c}, left=${d}`)};"show"==l.data("show")&&(l.addClass(c),d.length>0&&p()),t.click((function(){l.toggleClass(c),d.length>0&&p()})),r.click((function(){l.removeClass(c)})),n.on("click",(function(){f(),"popup"==s&&u({url:a,title:"popup",w:700,h:600}),i.val("")})),i.keypress((function(e){13==e.which&&(f(),"_self"==s?window.location.assign(a):"_blank"==s?window.open(a):u({url:a,title:"popup",w:700,h:600}),i.val(""))})),o.length>0&&"popup"==o.attr("target")&&o.on("click",(function(){u({url:o.attr("href"),title:"popup",w:700,h:600})}))},Fancy_Animated_Text:function(t){let i=t.find(".ekit-fancy-text").data("animation-settings");if("animated"===i.animationStyle){let n=i.animationDelay,a=i.loadingBar,s=a-3e3,o=i.lettersDelay,l=i.typeLettersDelay,r=i.duration,d=r+800,c=i.revealDuration,p=i.revealAnimationDelay;function f(){var i,o;t.find(".ekit-fancy-text.letters").find("b").each((function(){var t=e(this),i=t.text().split(""),n=t.hasClass("is-visible");for(let e in i)" "==i[e]&&(i[e]=" "),t.parents(".rotate-2").length>0&&(i[e]=""+i[e]+""),i[e]=n?''+i[e]+"":""+i[e]+"";var a=i.join("");t.html(a)})),i=t.find(".ekit-fancy-text"),o=n,i.each((function(){var t=e(this);if(t.hasClass("bar-loading"))o=a,setTimeout((function(){t.find(".ekit-fancy-text-lists").addClass("is-loading")}),s);else if(t.hasClass("clip")){var i=t.find(".ekit-fancy-text-lists"),n=i.width()+10;i.css("width",n)}else if(t.hasClass("rotate-1")){var l=t.find(".ekit-fancy-text-lists b"),r=0,d=0;l.each((function(){(d=e(this).width())>r&&(r=d)})),t.find(".ekit-fancy-text-lists").css("min-width",r)}else if(!t.hasClass("type")){var l=t.find(".ekit-fancy-text-lists b"),r=0,d=0;l.each((function(){(d=e(this).innerWidth())>r&&(r=d)})),t.find(".ekit-fancy-text-lists").css("max-width",r)}setTimeout((function(){u(t.find(".is-visible").eq(0))}),o)}))}function u(e){var t=g(e);if(e.parents(".ekit-fancy-text").hasClass("type")){var i=e.parent(".ekit-fancy-text-lists");i.addClass("selected").removeClass("waiting"),setTimeout((function(){i.removeClass("selected"),e.removeClass("is-visible").addClass("is-hidden").children("i").removeClass("in").addClass("out")}),r),setTimeout((function(){h(t,l)}),d)}else if(e.parents(".ekit-fancy-text").hasClass("letters")){var p=e.children("i").length>=t.children("i").length;v(e,t),m(e.find("i").eq(0),e,p,o),k(t.find("i").eq(0),t,p,o)}else e.parents(".ekit-fancy-text").hasClass("clip")?e.parents(".ekit-fancy-text-lists").animate({width:"2px"},c,(function(){v(e,t),h(t)})):e.parents(".ekit-fancy-text").hasClass("bar-loading")?(e.parents(".ekit-fancy-text-lists").removeClass("is-loading"),v(e,t),setTimeout((function(){u(t)}),a),setTimeout((function(){e.parents(".ekit-fancy-text-lists").addClass("is-loading")}),s)):(v(e,t),setTimeout((function(){u(t)}),n))}function h(e,t){e.parents(".ekit-fancy-text").hasClass("type")?(k(e.find("i").eq(0),e,!1,t),e.addClass("is-visible").removeClass("is-hidden")):e.parents(".ekit-fancy-text").hasClass("clip")&&e.parents(".ekit-fancy-text-lists").animate({width:e.outerWidth()+0},c,(function(){setTimeout((function(){u(e)}),p)}))}function m(t,i,a,s){if(t.removeClass("in").addClass("out"),t.is(":last-child")?a&&setTimeout((function(){u(g(i))}),n):setTimeout((function(){m(t.next(),i,a,s)}),s),t.is(":last-child")&&e("html").hasClass("no-csstransitions")){var o=g(i);v(i,o)}}function k(e,t,i,a){e.addClass("in").removeClass("out"),e.is(":last-child")?(t.parents(".ekit-fancy-text").hasClass("type")&&setTimeout((function(){t.parents(".ekit-fancy-text-lists").addClass("waiting")}),200),i||setTimeout((function(){u(t)}),n)):setTimeout((function(){k(e.next(),t,i,a)}),a)}function g(e){return e.is(":last-child")?e.parent().children().eq(0):e.next()}function v(e,t){e.removeClass("is-visible").addClass("is-hidden"),t.removeClass("is-hidden").addClass("is-visible")}f()}},Price_Menu:function(e){var i=e.find(`.${t.config.swiperClass}`).find(".swiper-wrapper").data("config");if(i!=undefined){i.pagination={el:e.find(".swiper-pagination").get(0),clickable:!0},i.navigation={nextEl:e.find(".ekit-price-card-slider-button-next").get(0),prevEl:e.find(".ekit-price-card-slider-button-prev").get(0)};let n=e.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(n,i).then((function(e){i.autoplay&&i.pauseOnHover&&n.hover((function(){e.autoplay.stop()}),(function(){e.autoplay.start()}))}))}},Stylish_List:function(t){t.find(".ekit-stylish-list-content-wrapper").each((function(){let t=e(this),i=t.data("ekit-delay"),n=t.parent().data("ekit-animation");i!=undefined&&setTimeout((()=>{t.addClass("animated "+n).css("opacity",1)}),i)}))},Team_Slider:function(e){var i=e.find(".ekit-team-popup"),n=e.find(`.${t.config.swiperClass}`).data("config");i.magnificPopup({type:"inline",fixedContentPos:!0,fixedBgPos:!0,overflowY:"auto",closeBtnInside:!0,prependTo:e.find(".ekit-wid-con"),showCloseBtn:!1,callbacks:{beforeOpen:function(){this.st.mainClass="my-mfp-slide-bottom ekit-promo-popup ekit-team-modal"}}}),e.find(".ekit-team-modal-close").on("click",(function(){i.magnificPopup("close")})),n!=undefined&&(n.pagination={el:e.find(".swiper-pagination").get(0),clickable:!0},n.navigation={nextEl:e.find(".ekit-team-slider-button-next").get(0),prevEl:e.find(".ekit-team-slider-button-prev").get(0)},n.autoplay&&n.pauseOnHover&&e.find(`.${t.config.swiperClass}`).hover((function(){this.swiper.autoplay.stop()}),(function(){this.swiper.autoplay.start()})));let a=e.find(`.${t.config.swiperClass}`);ElementsKit_Helper.swiper(a,n).then((function(e){}))},Audio_Player:function(e){let t=e.find(".ekit-audio-player"),i=t.data("audio-settings");if(i&&(e.find("audio").mediaelementplayer({pluginPath:"https://cdnjs.com/libraries/mediaelement/",shimScriptAccess:"always",audioVolume:i.audioVolume,features:i.features,startVolume:i.startVolume,hideVolumeOnTouchDevices:i.hideVolumeOnTouchDevices,success:function(e,t,i){e.addEventListener("progress",(function(e){})),e.addEventListener("play",(function(e){}))}}),"object"==typeof i.playerIcons)){let e=t.find(".mejs-playpause-button button"),n=t.find(".mejs-volume-button button");e.html(`\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t`),n.html(`\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t`)}},Flip_box:function(t){let i=t.find(".ekit-flip-box-front-button");e(i).on("click",(function(){t.find(".ekit-flip-box").addClass("on_active")})),t.find(".ekit-flip-box-back").on("click",(function(){t.find(".ekit-flip-box").removeClass("on_active")}));let n=t.find(".ekit-flip-box.box_click");e(n).on("click",(function(){e(this).toggleClass("active")}))},Image_Morphing:function(e){let i,n,a,s=e.find(".ekit-morphing-wrapper").data("paths"),o=e.find(".ekit-morphing-wrapper").find("path")[0],l=e.data("settings");t.isEditMode()&&(l=t.config.elements.data[e.data("model-cid")].attributes);const r={targets:o,d:[{value:s||[]}],easing:l.ekit_morphing_effect?l.ekit_morphing_effect:"easeOutQuad",direction:l.ekit_morphing_direction?l.ekit_morphing_direction:"alternate",loop:"yes"==l.ekit_morphing_loop||1,duration:l.ekit_morphing_duration?l.ekit_morphing_duration:2e3,delay:l.ekit_morphing_delay?l.ekit_morphing_delay:10,endDelay:l.ekit_morphing_end_delay?l.ekit_morphing_end_delay:10};anime(r),l.ekit_svg_path_position_scale!=undefined&&(i=l.ekit_svg_path_position_scale.size?l.ekit_svg_path_position_scale.size:"1",n=l.ekit_svg_path_position_translate_x.size?l.ekit_svg_path_position_translate_x.size+"px":"100px",a=l.ekit_svg_path_position_translate_y.size?l.ekit_svg_path_position_translate_y.size+"px":"100px",e.find(".ekit-morphing-wrapper svg.ekit-custom-svg ").find("path").css({transform:`scale(${i}) translateX(${n}) translateY(${a})`}))},Image_Swap:function(t){let i=t.find(".ekit-image-swap"),n=i.data("trigger");i.click((function(){e(this).toggleClass("click-active")})),"click-inactive"==n&&i.click((function(){e(this).hasClass("click-inactive")?e(this).removeClass("click-inactive").addClass("click-active"):e(this).addClass("click-inactive").removeClass("click-active")}))},Content_Ticker:function(i){let n=i.find(".ekit-content-ticker-wrapper"),a=i.find(".ekitMarqueeSwiper"),s=n.data("content-settings"),o=s.settingOptions.tickerEffect;if("marquee"!==o){var l={loop:!0,speed:s.settingOptions.tickerSpeed?"typing"===o?100:1e3*s.settingOptions.tickerSpeed:1e3,slidesPerView:"auto",direction:s.settingOptions.tickerDirection?s.settingOptions.tickerDirection:"horizontal",effect:o?"typing"===o?"fade":o:"slide",fadeEffect:{crossFade:!0},grabCursor:"yes"==s.settingOptions.tickerGrabCursor,allowTouchMove:"yes"==s.settingOptions.tickerGrabCursor,navigation:{nextEl:i.find(".ekit-marquee-button-next").get(0),prevEl:i.find(".ekit-marquee-button-prev").get(0)},on:{init:function(){r(this)},slideChangeTransitionEnd:function(){r(this),d(this)}}};function r(e){if("vertical"===s.settingOptions.tickerDirection){n.find(".ekit-marquee-item").css({height:"auto"});let t=e.activeIndex,i=e.slides[t].scrollHeight;n.find(".ekit-marquee .swiper-wrapper, .ekit-marquee-item").css("height",`${i}px`),e.update()}}function d(t){if("typing"===o){let i=t.activeIndex,n=e(t.slides[i]).find(".ekit-title-and-description a"),a=n.text();n.empty();let o=0;!function l(){o{e(this).removeClass("active"),e(this).next(".ekit_after_copied_text").removeClass("active")}),2e3)})),t.find(".ekit_coupon_copybtn").on("click",(function(i){let n=t.find(".ekit_coupon_copy_code").data("coupon-text"),a=t.find(".ekit_copybtn_text").text();e(this).find(".ekit_coupon_btn_group_wrap .ekit_copybtn_text").text(`${n}`),o&&clearTimeout(o),o=setTimeout((()=>{e(this).find(".ekit_coupon_btn_group_wrap .ekit_copybtn_text").text(`${a}`)}),2e3)})),e(n).on("click",(function(){var t=e(this).find(".ekit_coupon_code").data("coupon");navigator.clipboard.writeText(t)})),e(a).on("click",(function(){var t=e(this).find(".ekit_modal_code").data("coupon");navigator.clipboard.writeText(t)})),e(s).on("click",(function(){var t=e(this).find(".ekit_coupon_copy_code").data("coupon");navigator.clipboard.writeText(t)}));const l=document.querySelectorAll(".click-to-copy__text"),r=document.querySelectorAll(".copy_success");l.length&&r.length&&l.forEach(((e,t)=>{const i=r[t];e.addEventListener("click",(()=>{navigator.clipboard.writeText(e.textContent),e.classList.add("hide"),i.classList.remove("hide"),setTimeout((()=>{e.classList.remove("hide"),i.classList.add("hide")}),1500)}))}))},Comparison_Table:function(t){t.find("#buttonId").click((function(){var i=t.find(".ekit-comparison-table-body a, .ekit-comparison-table-body li"),n={};i.each((function(){var t=e(this).text();n[t]?n[t].push(this):n[t]=[this]}));var a=!1;e.each(n,(function(e,t){if(t.length>1)return a=!0,!1})),a&&e.each(n,(function(t,i){i.length>1&&e(i).toggleClass("blurred")}))}))},Interactive_Links:function(t){let i=t.find(".ekit-interactive-links-list-link"),n=t.find(".ekit-interactive-links-image");i.eq(0).addClass("ekit-interactive-active"),n.eq(0).addClass("ekit-interactive-active ekit-interactive-special"),i.mouseenter((function(){e(this).hasClass("ekit-interactive-active")||(e(this).addClass("ekit-interactive-active").siblings().removeClass("ekit-interactive-active"),n.removeClass("ekit-interactive-active").eq(e(this).index()).addClass("ekit-interactive-active"),n.removeClass("ekit-interactive-next").eq(e(this).index()).next().addClass("ekit-interactive-next"),n.removeClass("ekit-interactive-prev").eq(e(this).index()).prev().addClass("ekit-interactive-prev"),t.find(".ekit-interactive-special").addClass("ekit-interactive-prev"))})),i.mouseout((function(){n.removeClass("ekit-interactive-special").eq(e(this).index()).addClass("ekit-interactive-special")}))}};e(window).on("elementor/frontend/init",i.init)}(jQuery,window.elementorFrontend);; !function(){var t={264:function(){!function(t,e){"use strict";var i=function(){e.hooks.addAction("frontend/element_ready/global",(function(t){var e=t.find("[data-ekit-sticky]");if(e.length)return e.attr({"data-element_type":t.data("element_type")}).data({id:t.data("id"),widget_type:t.data("widget_type"),settings:t.data("settings")}),void new n({$element:e});new n({$element:t})}))};t(window).on("elementor/frontend/init",i);var o=elementorModules.frontend.handlers.Base,n=o.extend({bindEvents:function(){elementorFrontend.addListenerOnce(this.getUniqueHandlerID()+"ekit_sticky","resize",this.run)},unbindEvents:function(){elementorFrontend.removeListeners(this.getUniqueHandlerID()+"ekit_sticky","resize",this.run)},isStickyOn:function(){return undefined!==this.$element.data("ekit_sticky")},getResponsiveValue:function(t){var e=this.getElementSettings(),i=elementorFrontend.getCurrentDeviceMode();return e[`${t}_${i}`]?.size?e[`${t}_${i}`]?.size:e[t]?.size},activate:function(){var i=this.getElementSettings(),o=t("#"+i.ekit_sticky_until),n={to:i.ekit_sticky,offset:this.getResponsiveValue("ekit_sticky_offset"),effectsOffset:this.getResponsiveValue("ekit_sticky_effect_offset"),classes:{sticky:"ekit-sticky",stickyActive:"ekit-sticky--active ekit-section--handles-inside",stickyEffects:"ekit-sticky--effects",spacer:"ekit-sticky__spacer"},stopAt:!!o.length&&o},s=elementorFrontend.getElements("$wpAdminBar");"column"===i.ekit_sticky&&(n.to="top",n.column=!0),"show_on_scroll_up"===i.ekit_sticky&&(n.to="top",n.isShowOnScrollUp=!0),i.ekit_sticky_parent&&(n.parent=".ekit-widget-wrap"),e.hooks.addFilter("frontend/handlers/menu_anchor/scroll_top_distance",(function(e){var i=t(".elementor-top-section.ekit-sticky--active:visible");return i.length?e-i.outerHeight():e})),s.length&&"top"===i.ekit_sticky&&"fixed"===s.css("position")&&(n.offset+=s.height()),this.$element.ekit_sticky(n)},deactivate:function(){this.isStickyOn()&&this.$element.ekit_sticky("destroy")},run:function(t){if(this.getElementSettings("ekit_sticky")){var e=elementorFrontend.getCurrentDeviceMode();e===this.getElementSettings("ekit_sticky_on_"+e)?!0===t||this.isStickyOn()?this.reactivate():this.activate():this.deactivate()}else this.deactivate()},reactivate:function(){this.deactivate(),this.activate()},onElementChange:function(t){-1!==["ekit_sticky","ekit_sticky_on"].indexOf(t)&&this.run(!0),-1!==["ekit_sticky_offset","ekit_sticky_effect_offset","ekit_sticky_parent","ekit_sticky_until","ekit_sticky_color"].indexOf(t)&&this.reactivate()},onInit:function(){o.prototype.onInit.apply(this,arguments),this.run()},onDestroy:function(){o.prototype.onDestroy.apply(this,arguments),this.deactivate()}})}(jQuery,window.elementorFrontend)},95:function(){var t,e;t=jQuery,e=function(e,i){var o,n,s=!1,r=!1,c=!1,a={},f=-1,l={to:"top",offset:0,effectsOffset:0,parent:!1,classes:{sticky:"ekit-sticky",stickyActive:"ekit-sticky-active",stickyEffects:"ekit-sticky-effects",spacer:"ekit-sticky-spacer",up:"ekit-sticky--up",down:"ekit-sticky--down"}},p=function(t,e,i){var o={},n=t[0].style;i.forEach((function(t){o[t]=undefined!==n[t]?n[t]:""})),t.data("css-backup-"+e,o)},d=function(t,e){return t.data("css-backup-"+e)},u=function(){p(o,"unsticky",["position","width","margin-top","margin-bottom","top","bottom"]);var t={position:"fixed",width:y(o,"width"),marginTop:0,marginBottom:0};t[n.to]=n.offset+"px",t["top"===n.to?"bottom":"top"]="",o.css(t).addClass(n.classes.stickyActive)},k=function(){o.css(d(o,"unsticky")).removeClass(n.classes.stickyActive)},y=function(t,e,i){var o=getComputedStyle(t[0]),n=parseFloat(o[e]),s="height"===e?["top","bottom"]:["left","right"],r=[];return"border-box"!==o.boxSizing&&r.push("border","padding"),i&&r.push("margin"),r.forEach((function(t){s.forEach((function(e){n+=parseFloat(o[t+"-"+e])}))})),n},m=function(t){var e=a.$window.scrollTop(),i=y(t,"height"),o=innerHeight,n=t.offset().top-e,s=n-o;return{top:{fromTop:n,fromBottom:s},bottom:{fromTop:n+i,fromBottom:s+i}}},h=function(){a.$spacer=o.clone().addClass(n.classes.spacer).css({visibility:"hidden",transition:"none",animation:"none"}),o.after(a.$spacer),u(),s=!0,o.trigger("sticky:stick")},v=function(){k(),a.$spacer.remove(),s=!1,o[0].style.transform=null,o.trigger("sticky:unstick")},g=function(){var t=m(o),e="top"===n.to;if(r)(e?t.top.fromTop>n.offset:t.bottom.fromBottom<-n.offset)&&(a.$parent.css(d(a.$parent,"childNotFollowing")),o.css(d(o,"notFollowing")),r=!1);else{var i=m(a.$parent),s=getComputedStyle(a.$parent[0]),c=parseFloat(s[e?"borderBottomWidth":"borderTopWidth"]),f=e?i.bottom.fromTop-c:i.top.fromBottom+c;(e?f<=t.bottom.fromTop:f>=t.top.fromBottom)&&function(){p(a.$parent,"childNotFollowing",["position"]),a.$parent.css("position","relative"),p(o,"notFollowing",["position","top","bottom"]);var t={position:"absolute"};t[n.to]="",t["top"===n.to?"bottom":"top"]=0,o.css(t),r=!0}()}},_=function(){var t,e=n.offset;if(n.stopAt||n.column){var i=o[0],r=n.stopAt||o.parent(),f=r.offset().top,l=r[0].clientHeight-i.clientHeight,p=this.scrollY-f+n.offset,d=p>=l;if("bottom"===n.to&&(l=f-(this.innerHeight-i.clientHeight),d=(p=this.scrollY+n.offset)<=l,i.clientHeight),d&&n.column&&"widget"===i.dataset.element_type)return s&&v(),void(i.style.transform="translateY("+l+"px)");i.style.transform=null}if(s){var u=m(a.$spacer);t="top"===n.to?u.top.fromTop-e:-u.bottom.fromBottom-e,n.parent&&g(),t>0&&v()}else{var k=m(o);(t="top"===n.to?k.top.fromTop-e:-k.bottom.fromBottom-e)<=0&&(h(),n.parent&&g())}(n.stopAt||n.column)&&d&&n.stopAt&&(p="top"===n.to?-(p-l):l-p,i.style.transform="translateY("+p+"px)"),function(t){c&&-t=n.effectsOffset&&(o.addClass(n.classes.stickyEffects),c=!0)}(t),w()},w=function(){n.isShowOnScrollUp&&-1!=f&&(f>window.scrollY?o.addClass(n.classes.up).removeClass(n.classes.down):o.addClass(n.classes.down).removeClass(n.classes.up)),f=window.scrollY},b=function(){_()},$=function(){s&&(k(),u())};this.destroy=function(){s&&v(),a.$window.off("scroll",b).off("resize",$),o.removeClass(n.classes.sticky)},n=jQuery.extend(!0,l,i),o=t(e).addClass(n.classes.sticky),a.$window=t(window),n.parent&&("parent"===n.parent?a.$parent=o.parent():a.$parent=o.closest(n.parent)),a.$window.on({scroll:b,resize:$}),_()},t.fn.ekit_sticky=function(i){var o="string"==typeof i;return this.each((function(){var n=t(this);if(o){var s=n.data("ekit_sticky");if(!s)throw Error("Trying to perform the `"+i+"` method prior to initialization");if(!s[i])throw ReferenceError("Method `"+i+"` not found in sticky instance");s[i].apply(s,Array.prototype.slice.call(arguments,1)),"destroy"===i&&n.removeData("ekit_sticky")}else n.data("ekit_sticky",new e(this,i))})),this},window.EkitSticky=e}},e={};function i(o){var n=e[o];if(n!==undefined)return n.exports;var s=e[o]={exports:{}};return t[o](s,s.exports,i),s.exports}i.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return i.d(e,{a:e}),e},i.d=function(t,e){for(var o in e)i.o(e,o)&&!i.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},function(){"use strict";i(95),i(264)}()}();; jQuery(window).on("elementor/frontend/init",(()=>{elementorFrontend.hooks.addAction("frontend/element_ready/form.default",(function(e,t){e.find(".elementskit-reset-button.elementor-button").on("click",(function(e){setTimeout((()=>{t(this).closest("form.elementor-form").find("input, select, textarea").trigger("change")}),0)}))}))}));; function hexToRgb(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,a,t,i){return a+a+t+t+i+i}));var a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return a?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",(function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()}))},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var n=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(n)}else null!=e.value.r&&null!=e.value.g&&null!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),null!=e.value.h&&null!=e.value.s&&null!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var s={};switch(i.particles.move.direction){case"top":s={x:0,y:-1};break;case"top-right":s={x:.5,y:-.5};break;case"right":s={x:1,y:-0};break;case"bottom-right":s={x:.5,y:.5};break;case"bottom":s={x:0,y:1};break;case"bottom-left":s={x:-.5,y:1};break;case"left":s={x:-1,y:0};break;case"top-left":s={x:-.5,y:-.5};break;default:s={x:0,y:0}}i.particles.move.straight?(this.vx=s.x,this.vy=s.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=s.x+Math.random()-.5,this.vy=s.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&null!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){var e=this;if(null!=e.radius_bubble)var a=e.radius_bubble;else a=e.radius;if(null!=e.opacity_bubble)var t=e.opacity_bubble;else t=e.opacity;if(e.color.rgb)var n="rgba("+e.color.rgb.r+","+e.color.rgb.g+","+e.color.rgb.b+","+t+")";else n="hsla("+e.color.hsl.h+","+e.color.hsl.s+"%,"+e.color.hsl.l+"%,"+t+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),e.shape){case"circle":i.canvas.ctx.arc(e.x,e.y,a,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(e.x-a,e.y-a,2*a,2*a);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,e.x-a,e.y+a/1.66,2*a,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,e.x-a/(i.particles.shape.polygon.nb_sides/3.5),e.y-a/.76,2.66*a/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,e.x-2*a/(i.particles.shape.polygon.nb_sides/4),e.y-a/1.52,2*a*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var s=e.img.obj;else s=i.tmp.img_obj;s&&i.canvas.ctx.drawImage(s,e.x-a,e.y-a,2*a,2*a/e.img.ratio)}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var n={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else n={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};if("bounce"===(a.x-a.radius>i.canvas.w?(a.x=n.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=n.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=n.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=n.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode))(a.x+a.radius>i.canvas.w||a.x-a.radius<0)&&(a.vx=-a.vx),(a.y+a.radius>i.canvas.h||a.y-a.radius<0)&&(a.vy=-a.vy);if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var s=e+1;s0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,n=e.y-a.y;if(Math.sqrt(t*t+n*n)<=i.particles.line_linked.distance){var s=t/(1e3*i.particles.move.attract.rotateX),r=n/(1e3*i.particles.move.attract.rotateY);e.vx-=s,e.vy-=r,a.vx+=s,a.vy+=r}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,n=Math.sqrt(t*t+i*i);e.radius+a.radius>=n&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,n,s,r){if(a!=t)if(i.tmp.bubble_duration_end){if(null!=n)o=a+(a-(s-p*(s-a)/i.interactivity.modes.bubble.duration)),"size"==r&&(e.radius_bubble=o),"opacity"==r&&(e.opacity_bubble=o)}else if(v<=i.interactivity.modes.bubble.distance){if(null!=n)var c=n;else c=s;if(c!=a){var o=s-p*(s-a)/i.interactivity.modes.bubble.duration;"size"==r&&(e.radius_bubble=o),"opacity"==r&&(e.opacity_bubble=o)}}else"size"==r&&(e.radius_bubble=void 0),"opacity"==r&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var n=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,r=1-(v=Math.sqrt(n*n+s*s))/i.interactivity.modes.bubble.distance;if(v<=i.interactivity.modes.bubble.distance){if(r>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){(o=e.radius+i.interactivity.modes.bubble.size*r)>=0&&(e.radius_bubble=o)}else{var c=e.radius-i.interactivity.modes.bubble.size,o=e.radius-c*r;e.radius_bubble=o>0?o:0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){(l=i.interactivity.modes.bubble.opacity*r)>e.opacity&&l<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=l)}else{var l;(l=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*r)=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=l)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){n=e.x-i.interactivity.mouse.click_pos_x,s=e.y-i.interactivity.mouse.click_pos_y;var v=Math.sqrt(n*n+s*s),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(a*a+t*t),s={x:a/n,y:t/n},r=clamp(1/(o=i.interactivity.modes.repulse.distance)*(-1*Math.pow(n/o,2)+1)*o*100,0,50),c={x:e.x+s.x*r,y:e.y+s.y*r};"bounce"==i.particles.move.out_mode?(c.x-e.radius>0&&c.x+e.radius0&&c.y+e.radius=p&&function(){var a=Math.atan2(v,l);if(e.vx=d*Math.cos(a),e.vy=d*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};(t.x+e.radius>i.canvas.w||t.x-e.radius<0)&&(e.vx=-e.vx),(t.y+e.radius>i.canvas.h||t.y-e.radius<0)&&(e.vy=-e.vy)}}()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(a*a+t*t);if(n<=i.interactivity.modes.grab.distance){var s=i.interactivity.modes.grab.line_linked.opacity-n/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(s>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+s+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",(function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"})),i.interactivity.el.addEventListener("mouseleave",(function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"}))),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",(function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable||1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout((function(){i.tmp.repulse_clicking=!1}),1e3*i.interactivity.modes.repulse.duration)}}))},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;tv;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",(function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()})),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):null!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&null==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)},window.cancelRequestAnimFrame=window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout,window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",n=t.getElementsByClassName(i);if(n.length)for(;n.length>0;)t.removeChild(n[0]);var s=document.createElement("canvas");s.className=i,s.style.width="100%",s.style.height="100%",null!=document.getElementById(e).appendChild(s)&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var n=JSON.parse(a.currentTarget.response);window.particlesJS(e,n),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()};; !function(e,t){"use strict";e(window).on("elementor/frontend/init",(function(){t.hooks.addAction("frontend/element_ready/global",(function(e){let i=e.data("ekit-particles-type"),s=e.data("ekit-particles"),a=e.data("ekit-particles-enable"),l=`ekit-particles-wrapper-${e.data("id")}`;function r(){e.append(`
`)}t.isEditMode()&&(s=t.config.elements.data[e.data("model-cid")]?.attributes,"yes"==s?.ekit_particles_enable&&(e.addClass("ekit-particles"),r(),"file"==s.ekit_particles_options&&s.ekit_particles_file.url?(i="file",s=s.ekit_particles_file.url):"json"==s.ekit_particles_options&&""!=s.ekit_particles_json?(i="json",s=JSON.parse(s.ekit_particles_json)):"preset"==s.ekit_particles_options&&(i="preset",s=s.ekit_particles_json_url&&s.ekit_particles_json_url+s.ekit_particles_preset+".json"))),"yes"==a&&r(),"json"==i?particlesJS(l,s):"file"!=i&&"preset"!=i||particlesJS.load(l,s)}))}))}(jQuery,window.elementorFrontend);; !function(){var e={78:function(){!function(e,t){"use strict";var n={init:function(){t.hooks.addAction("frontend/element_ready/section",n.elementorSection),t.hooks.addAction("frontend/element_ready/container",n.elementorSection)},elementorSection:function(e){var n=e,o=null;Boolean(t.isEditMode());(o=new i(n)).init(o)}};e(window).on("elementor/frontend/init",n.init);var i=function(n){var i=this,o=n.data("id"),s=Boolean(t.isEditMode()),a=e(window);e("body"),a.scrollTop(),a.height(),navigator.userAgent.match(/Version\/[\d\.]+.*Safari/),navigator.platform;i.init=function(){return i.setParallaxMulti(o),i.moveBg(o),!1},i.setParallaxMulti=function(t){var o,a={},l=[];if(a=i.getOptions(t,"ekit_section_parallax_multi_items"),"yes"==(o=i.getOptions(t,"ekit_section_parallax_multi"))){if(s){if(!a.hasOwnProperty("models")||0===Object.keys(a.models).length||"yes"!=o)return;a=a.models}if(n.addClass("elementskit-parallax-multi-container"),e.each(a,(function(e,t){t.hasOwnProperty("attributes")&&(t=t.attributes),l.push(t),i.pushElement(t),i.getSVG()})),l.length<0)return l;n.on("mousemove",(function(t){e.each(l,(function(e,n){"mousemove"==n.parallax_style&&i.moveItem(n,t)}))})),e.each(l,(function(e,t){"tilt"==t.parallax_style&&i.tiltItem(t),"onscroll"==t.parallax_style&&i.walkItem(t)}))}},i.moveBg=function(e){var t,o;t=i.getOptions(e,"ekit_section_parallax_bg"),o=i.getOptions(e,"ekit_section_parallax_bg_speed"),n.addClass("elementskit-parallax-multi-container"),"yes"!=t||s||n.jarallax({speed:o})},i.walkItem=function(t){t.parallax_transform!==undefined&&t.parallax_transform_value!==undefined&&n.find(".elementor-repeater-item-"+t._id).imagesLoaded((function(){e(this.elements[0]).magician({type:"scroll",offsetTop:parseInt(t.offsettop),offsetBottom:parseInt(t.offsetbottom),duration:parseInt(t.smoothness),animation:{[t.parallax_transform]:t.parallax_transform_value}})}))},i.moveItem=function(e,t){var i=t.pageX-n.offset().left,o=t.pageY-n.offset().top,s=n.find(".elementor-repeater-item-"+e._id);TweenMax.to(s,1,{x:(i-n.width()/2)/n.width()*e.parallax_speed,y:(o-n.height()/2)/n.height()*e.parallax_speed,ease:Power2.ease})},i.tiltItem=function(e){var t=n.find(".elementor-repeater-item-"+e._id);t.find("img");t.tilt({disableAxis:e.disableaxis,scale:e.scale,speed:e.parallax_speed,maxTilt:e.maxtilt,glare:!1,maxGlare:.5})},i.getOptions=function(t,n){var i=null,o={};if(s){if(!window.elementor.hasOwnProperty("elements"))return!1;if(!(i=window.elementor.elements).models)return!1;if(e.each(i.models,(function(e,n){t==n.id&&(o=n.attributes.settings.attributes)})),!o.hasOwnProperty(n))return!1}else{if(void 0===(o=e(t=".elementor-element-"+t).data("settings")))return;if(!o.hasOwnProperty(n))return!1}return o[n]},i.pushElement=function(e){var t="ekit-section-parallax-mousemove ekit-section-parallax-layer elementor-repeater-item-"+e._id,i="";"shape"==e.item_source&&(e.image={},e.image.url=window.elementskit_module_parallax_url+"assets/svg/"+e.shape+".svg",t+=" ekit-section-parallax-layer-shape",i="shape-"+e.shape.replace(".svg","")),0===n.find(".elementor-repeater-item-"+e._id).length&&""!=e.image.url&&n.prepend(`\n \n `)},i.getSVG=function(){n.find(".ekit-section-parallax-layer-shape img").each((function(){var t=e(this),n=t.prop("attributes"),i=t.attr("src");e.get(i,(function(i){var o=e(i).find("svg");o=o.removeAttr("xmlns:a"),e.each(n,(function(){o.attr(this.name,this.value)})),t.replaceWith(o)}))}))}}}(jQuery,window.elementorFrontend)},957:function(){!function(e,t){"use strict";var n=function(){t.hooks.addAction("frontend/element_ready/global",(function(e){new o({$element:e})}))};e(window).on("elementor/frontend/init",n);var i="undefined"!=typeof window.elementorFrontend.version&&function(e,t){if("string"!=typeof e)return!1;if("string"!=typeof t)return!1;e=e.split("."),t=t.split(".");const n=Math.min(e.length,t.length);for(let i=0;it[i])return 1;if(e[i] * GitHub : https://github.com/cotton123236/CottonJS */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Cotton=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,a=new Array(t);n1||this.params.speed<=0)&&(this.params.speed=.125),this.params.airMode){var s=this.params.airMode,i={resistance:15,reverse:!1,alive:!1};"object"!==e(s)||Array.isArray(s)?this.params.airMode=i:this.params.airMode=Object.assign(i,s),(s.resistance<1||s.resistance>100)&&(s.resistance=15)}(r=navigator.userAgent).indexOf("Android")>-1||r.indexOf("Adr"),r.indexOf("Mac")>-1&&"ontouchend"in document||a.init(this)}var d,u,f;return d=a,f=[{key:"getMouseData",value:function(e){var t=e.element,a=e.scene,o=e.params,c=o.data,l=o.airMode;a.addEventListener("mousemove",(function(a){c.mouseX=l?a.pageX:a.clientX,c.mouseY=l?a.pageY:a.clientY,n(t.classList).indexOf(o.conttonInitClass)>-1&&t.classList.add(o.cottonMovingClass),o.on.cottonMove&&"function"==typeof o.on.cottonMove&&o.on.cottonMove.call(e,t,a)})),l&&(l.alive||(c.rect=r(t),c.transformX=s(t),c.transformY=i(t),window.addEventListener("resize",(function(){c.rect=r(t)}))),a.addEventListener("mousemove",(function(){l.alive&&(c.rect=r(t));var e=window.innerWidth+c.rect.width/2,n=window.innerHeight+c.rect.height/2,a=c.mouseX-c.rect.centerX,o=c.mouseY-c.rect.centerY;c.distanceX=Math.min(Math.max(parseInt(a),-e),e),c.distanceY=Math.min(Math.max(parseInt(o),-n),n)})))}},{key:"init",value:function(e){var t=e.element,n=e.params,o=e.scene;o.addEventListener("mouseenter",(function(a){n.on.enterScene&&"function"==typeof n.on.enterScene&&n.on.enterScene.call(e,t,o,a)})),o.addEventListener("mouseleave",(function(a){t.classList.remove(n.cottonMovingClass),n.on.leaveScene&&"function"==typeof n.on.leaveScene&&n.on.leaveScene.call(e,t,o,a)})),a.getMouseData(e,!0),e.move(),m(e,!0)}}],(u=[{key:"enterModelHandler",value:function(e){var t=this.element,n=this.params;n.on.enterModel&&"function"==typeof n.on.enterModel&&n.on.enterModel.call(this,t,e.target,e),t.classList.add(n.cottonActiveClass),e.target.classList.add(n.modelsActiveClass)}},{key:"leaveModelHandler",value:function(e){var t=this.element,n=this.params;n.on.leaveModel&&"function"==typeof n.on.leaveModel&&n.on.leaveModel.call(this,t,e.target,e),t.classList.remove(n.cottonActiveClass),e.target.classList.remove(n.modelsActiveClass)}},{key:"move",value:function(){var e=this.params.data,t=this.params.airMode;this.element.classList.add(this.params.conttonInitClass),e.animationFrame||(t?l(this):c(this))}},{key:"stop",value:function(){var e=this.params.data;this.element.classList.remove(this.params.conttonInitClass),this.element.classList.remove(this.params.cottonMovingClass),cancelAnimationFrame(e.animationFrame),e.animationFrame=void 0}},{key:"updateModels",value:function(){m(this,!1)}}])&&t(d.prototype,u),f&&t(d,f),a}()}));; !function(e,t){"use strict";var o={init:function(){t.hooks.addAction("frontend/element_ready/widget",o.ready),t.hooks.addAction("frontend/element_ready/section",o.ready),t.hooks.addAction("frontend/element_ready/column",o.ready),t.hooks.addAction("frontend/element_ready/container",o.ready)},ready:function(n){var r=n.data("settings"),i=n.data("model-cid"),s=n.data("id");i&&(r=t.config.elements.data[i].attributes),void 0!==r&&(n.on("mouseover",(function(t){if("yes"===r?.ekit_cursor_show){t.stopPropagation();var i=``;"icon"==r?.ekit_cursor_type&&"svg"!==r?.ekit_cursor_icons?.library?i=``:"icon"==r?.ekit_cursor_type&&"svg"==r?.ekit_cursor_icons?.library?i=``:"text"===r?.ekit_cursor_type&&(i=`${o.removeInlineJSEvents(r?.ekit_cursor_text_label)}`),e(n.find(".ekit-cursor")).each((function(t,o){e(o).remove()})),e(this).append(`
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${i}\n\t\t\t\t\t\t
\n\t\t\t\t\t
`),new Cotton(`#ekit-cursor-${s}`,{models:".ekit-cursor-enabled-yes",speed:1,centerMouse:!0,cottonActiveClass:"show"})}})),n.on("mouseleave mouseout",(function(){e(n.find(".ekit-cursor")).each((function(e,t){t.remove()}))})))},removeInlineJSEvents:function(e){return e?.replace(/\son\w*=(?:"[^"]*"|'[^']*'|[^ \t\n\r>]+)/gi,"")}};e(window).on("elementor/frontend/init",o.init),e(window).on("elementor/editor/init",o.init)}(jQuery,window.elementorFrontend);; (function ($) { $(document).ready(function () { // ----------------- Global Settings ----------------- let currencySymbol = "$"; // Change to any currency symbol dynamically let decimalPlaces = 2; // Adjust between 2 or 3 dynamically // ----------------- Formatting Functions ----------------- function formatString(digits, pattern) { let formatted = ""; let index = 0; for (let char of pattern) { if (char === "#") { if (index < digits.length) { formatted += digits[index++]; } else { break; } } else { formatted += char; } } return formatted; } // ----------------- Money Mask Formatting ----------------- function formatMoneyInput(value, type, prefix, input) { let decimalSeparator = type === "C" ? "." : ","; let thousandSeparator = type === "C" ? "," : "."; let rawDigits = value.replace(/\D/g, ""); decimalPlaces = 2; if (input !== "") { decimalPlaces = Number(input.dataset.decimalPlaces); } if (rawDigits.length === 0) { return `${prefix}0${decimalSeparator}${"0".repeat(decimalPlaces)}`; } while (rawDigits.length < decimalPlaces + 1) { rawDigits = "0" + rawDigits; } let cents = rawDigits.slice(-decimalPlaces); let wholeNumber = rawDigits.slice(0, -decimalPlaces).replace(/^0+/, "") || "0"; wholeNumber = wholeNumber.replace( /\B(?=(\d{3})+(?!\d))/g, thousandSeparator ); return `${prefix}${wholeNumber}${decimalSeparator}${cents}`; } function handleMoneyInput(event) { let input = event.target; let oldValue = input.value; let oldCursorPos = input.selectionStart; let moneyPrefix = input.dataset.moneymaskPrefix; let moneymaskFormat = input.dataset.moneymaskFormat; let type = moneymaskFormat === "dot" ? "D" : "C"; let newValue = formatMoneyInput(input.value, type, moneyPrefix, input); if (input.value === newValue) return; input.value = newValue; let newCursorPos = oldCursorPos + (newValue.length - oldValue.length); setCaretPosition(input, newCursorPos); } // ----------------- Handling Focus & Blur for Money Mask ----------------- $(document).on("focus", ".mask-moneyc", function () { let moneymaskFormat = $(this)[0].dataset.moneymaskFormat; let type = moneymaskFormat === "dot" ? "D" : "C"; let decimalSeparator = type === "C" ? "." : ","; let baseFormat = `${currencySymbol}0${decimalSeparator}${"0".repeat( decimalPlaces )}`; if ($(this).val().trim() === "") { $(this).val(baseFormat); // setCaretPosition(this, $(this).val().length - (decimalPlaces + 1)); } }); $(document).on("blur", ".mask-moneyc", function () { let moneymaskFormat = $(this)[0].dataset.moneymaskFormat; let type = moneymaskFormat === "dot" ? "D" : "C"; let decimalSeparator = type === "C" ? "." : ","; let baseFormat = `${currencySymbol}0${decimalSeparator}${"0".repeat( decimalPlaces )}`; let val = $(this).val().trim(); let numericValue = val .replace(new RegExp(`[^0-9${decimalSeparator}]`, "g"), "") .replace(decimalSeparator, "."); if (parseFloat(numericValue) === 0 || val === baseFormat) { $(this).val(""); } }); // ----------------- Formatting Credit Card ----------------- function formatCreditCard(digits, formatType) { let cardType = detectCardType(digits); if (cardType === "American Express") { digits = digits.slice(0, 15); return formatType === "space" ? formatString(digits, "#### ###### #####") : formatString(digits, "####-######-#####"); } else { digits = digits.slice(0, 16); return formatType === "space" ? formatString(digits, "#### #### #### ####") : formatString(digits, "####-####-####-####"); } } // ----------------- Card Logos ----------------- const cardLogos = { Visa: fmeData.pluginUrl + "assets/svg-icons/visa-logo.svg", MasterCard: fmeData.pluginUrl + "assets/svg-icons/mastercard-logo.svg", "American Express": fmeData.pluginUrl + "assets/svg-icons/amex-logo.svg", Discover: fmeData.pluginUrl + "assets/svg-icons/discover-logo.svg", JCB: fmeData.pluginUrl + "assets/svg-icons/jcb-logo.svg", "Diners Club": fmeData.pluginUrl + "assets/svg-icons/cc-logo.svg", Maestro: fmeData.pluginUrl + "assets/svg-icons/maestro-logo.svg", UnionPay: fmeData.pluginUrl + "assets/svg-icons/cc-logo.svg", RuPay: fmeData.pluginUrl + "assets/svg-icons/repay-logo.svg", Unknown: fmeData.pluginUrl + "assets/svg-icons/cc-logo.svg", }; // ----------------- Function to Detect Card Type ----------------- function detectCardType(number) { const cleaned = number.replace(/\D/g, ""); // Remove non-numeric characters const cardPatterns = { Visa: /^4/, MasterCard: /^5[1-5]/, // MasterCard starts with 51-55 "American Express": /^3[47]/, // AmEx starts with 34 or 37 Discover: /^6(?:011|5)/, // Discover starts with 6011 or 65 JCB: /^(?:2131|1800|35)/, // JCB starts with 2131, 1800, or 35 "Diners Club": /^3(?:0[0-5]|[689])/, // Diners Club starts with 300-305, 36, or 38-39 UnionPay: /^(62|81)/, // UnionPay starts with 62 or 81 RuPay: /^(60|65|81|82|508)/, // RuPay starts with 60, 65, 81, 82, or 508 Maestro: /^(50|5[6-9]|6[0-9])/, // Maestro starts with 50, 56-59, 60-69 }; for (let card in cardPatterns) { if (cardPatterns[card].test(cleaned)) { return card; } } return "Unknown"; // Default if no match is found } // ----------------- Function to Update Card Logo Dynamically ----------------- function updateCardLogo(inputSelector) { let input = $(inputSelector); let logo = input.siblings(".card-logo"); // Select logo next to input let cardNumber = input.val().replace(/\D/g, ""); // Remove non-digit characters if (cardNumber === "") { logo.hide(); // Hide the logo if the input is empty } else { let cardType = detectCardType(cardNumber); if (cardType in cardLogos) { logo.attr("src", cardLogos[cardType]).show(); } else { logo.hide(); // Hide logo if card type is unknown } } } // ----------------- Universal Field Formatting ----------------- const formatFunctions = { ".mask-cnpj": (digits) => formatString(digits, "##.###.###/####-##"), ".mask-cpf": (digits) => formatString(digits, "###.###.###-##"), ".mask-cep": (digits) => formatString(digits, "#####-###"), ".mask-phus": (digits) => formatString(digits, "(###) ###-####"), ".mask-ph8": (digits) => formatString(digits, "####-####"), ".mask-ddd8": (digits) => formatString(digits, "(##) ####-####"), ".mask-ddd9": (digits) => formatString(digits, "(##) #####-####"), ".mask-dmy": (digits) => formatString(digits, "##/##/####"), ".mask-mdy": (digits) => formatString(digits, "##/##/####"), ".mask-hms": (digits) => formatString(digits, "##:##:##"), ".mask-hm": (digits) => formatString(digits, "##:##"), ".mask-dmyhm": (digits) => formatString(digits, "##/##/#### ##:##"), ".mask-mdyhm": (digits) => formatString(digits, "##/##/#### ##:##"), ".mask-my": (digits) => formatString(digits, "##/####"), ".mask-ccs": (digits) => formatCreditCard(digits, "space"), ".mask-cch": (digits) => formatCreditCard(digits, "hyphen"), ".mask-ccmy": (digits) => formatString(digits, "##/##"), ".mask-ccmyy": (digits) => formatString(digits, "##/####"), ".mask-moneyc": (digits) => formatMoneyInput(digits, "C", "$", ""), ".mask-moneyd": (digits) => formatMoneyInput(digits, "D", "$", ""), ".mask-ipv4": (digits) => formatString(digits, "###.###.###.###"), // New IPv4 Masking }; // Apply formatting dynamically for all fields, including money inputs Object.entries(formatFunctions).forEach(([selector, formatFunction]) => { $(document).on("input focus", selector, function (event) { var input = this; var oldCaret = getCaretPosition(input); // Handle money input separately if ( $(input).hasClass("mask-moneyc") || $(input).hasClass("mask-moneyd") ) { let type = $(input).hasClass("mask-moneyc") ? "C" : "D"; handleMoneyInput(event); return; } // Standard digit-based formatting for other fields var rawDigits = input.value.replace(/\D/g, ""); // Remove non-digits var digitIndex = getDigitIndexFromCaret(input.value, oldCaret); var newVal = formatFunction(rawDigits); // Use predefined function for other fields var newCaret = mapDigitIndexToCaret(newVal, digitIndex); input.value = newVal; setCaretPosition(input, newCaret || 0); // Keep caret in place // Update card logo dynamically for credit card fields if ($(input).hasClass("mask-ccs") || $(input).hasClass("mask-cch")) { updateCardLogo(input); } }); }); // ----------------- Helper Functions for Caret Management ----------------- function getCaretPosition(input) { return input.selectionStart; } function getDigitIndexFromCaret(formattedStr, caretPos) { var count = 0; for (var i = 0; i < caretPos; i++) { if (/\d/.test(formattedStr.charAt(i))) { count++; } } return count; } function mapDigitIndexToCaret(formattedStr, digitIndex) { var count = 0; for (var i = 0; i < formattedStr.length; i++) { if (/\d/.test(formattedStr.charAt(i))) { if (count === digitIndex) { return i; } count++; } } return formattedStr.length; } function setCaretPosition(elem, pos) { if (elem.setSelectionRange) { elem.focus(); elem.setSelectionRange(pos, pos); } else if (elem.createTextRange) { var range = elem.createTextRange(); range.collapse(true); range.moveEnd("character", pos); range.moveStart("character", pos); range.select(); } } // ----------------- Backspace Handling ----------------- $(document).on("keydown", "input", function (e) { if (e.key === "Backspace") { var input = this; // Special handling for money inputs if ( $(input).hasClass("mask-moneyc") || $(input).hasClass("mask-moneyd") ) { let decimalSeparator = $(input).hasClass("mask-moneyc") ? "." : ","; let baseFormat = `${currencySymbol}0${decimalSeparator}${"0".repeat( decimalPlaces )}`; if (input.value === baseFormat) { e.preventDefault(); // Prevent deletion beyond the base format return; } // Handle money input dynamically and prevent default formatting conflict handleMoneyInput(e); return; } // Standard backspace handling for all other masked inputs if (input.selectionStart !== input.selectionEnd) { e.preventDefault(); input.value = ""; setCaretPosition(input, 0); return; } var caretPos = getCaretPosition(input); var digitIndex = getDigitIndexFromCaret(input.value, caretPos); if (digitIndex === 0) return; var rawDigits = input.value.replace(/\D/g, ""); var newDigits = rawDigits.slice(0, digitIndex - 1) + rawDigits.slice(digitIndex); // Find matching class for format function let matchedClass = Object.keys(formatFunctions).find((cls) => $(input).hasClass(cls.substring(1)) ); if (matchedClass) { var formatted = formatFunctions[matchedClass](newDigits); input.value = formatted; var newCaretPos = mapDigitIndexToCaret(formatted, digitIndex - 1); setCaretPosition(input, newCaretPos); } } }); // ----------------- Error Validation ----------------- function validateInput( selector, errorClass, validationFunction, errorMessage ) { $(document).on("blur", selector, function () { var input = $(this); var val = input.val(); var errorElement = input .closest(".elementor-field-group") .find("." + errorClass); // Remove predefined symbol if it's the ONLY character left if (val.length === 1 && !/\d/.test(val)) { input.val(""); errorElement.hide().text(""); return; } // Show error message if validation fails if (val !== "" && !validationFunction(val)) { errorElement .text(errorMessage) .css("display", "flex") .hide() .fadeIn(200); } else { errorElement.fadeOut(100, function () { $(this).css("display", "none"); }); } }); $(document).on("input", selector, function () { var input = $(this); var errorElement = input .closest(".elementor-field-group") .find("." + errorClass); if (errorElement.is(":visible")) { var val = input.val(); if (validationFunction(val)) { errorElement.fadeOut(100, function () { $(this).css("display", "none"); }); } } }); } // Apply validation dynamically for all fields const validations = { ".mask-cnpj": { errorClass: "error-cnpj", validate: isValidCNPJ, msg: fmeData.errorMessages["mask-cnpj"], }, ".mask-cpf": { errorClass: "error-cpf", validate: isValidCPF, msg: fmeData.errorMessages["mask-cpf"], }, ".mask-cep": { errorClass: "error-cep", validate: isValidCEP, msg: fmeData.errorMessages["mask-cep"], }, ".mask-phus": { errorClass: "error-phus", validate: isValidPhoneUSA, msg: fmeData.errorMessages["mask-phus"], }, ".mask-ph8": { errorClass: "error-ph8", validate: isValidPhone8, msg: fmeData.errorMessages["mask-ph8"], }, ".mask-ddd8": { errorClass: "error-ddd8", validate: isValidPhoneDDD8, msg: fmeData.errorMessages["mask-ddd8"], }, ".mask-ddd9": { errorClass: "error-ddd9", validate: isValidPhoneDDD9, msg: fmeData.errorMessages["mask-ddd9"], }, ".mask-dmy": { errorClass: "error-dmy", validate: isValidDateDMY, msg: fmeData.errorMessages["mask-dmy"], }, ".mask-mdy": { errorClass: "error-mdy", validate: isValidDateMDY, msg: fmeData.errorMessages["mask-mdy"], }, ".mask-hms": { errorClass: "error-hms", validate: isValidTimeHMS, msg: fmeData.errorMessages["mask-hms"], }, ".mask-hm": { errorClass: "error-hm", validate: isValidTimeHM, msg: fmeData.errorMessages["mask-hm"], }, ".mask-dmyhm": { errorClass: "error-dmyhm", validate: isValidDateDMYHM, msg: fmeData.errorMessages["mask-dmyhm"], }, ".mask-mdyhm": { errorClass: "error-mdyhm", validate: isValidDateMDYHM, msg: fmeData.errorMessages["mask-mdyhm"], }, ".mask-my": { errorClass: "error-my", validate: isValidDateMY, msg: fmeData.errorMessages["mask-my"], }, ".mask-ccs": { errorClass: "error-ccs", validate: isValidCreditCard, msg: fmeData.errorMessages["mask-ccs"], }, ".mask-cch": { errorClass: "error-cch", validate: isValidCreditCard, msg: fmeData.errorMessages["mask-cch"], }, ".mask-ccmy": { errorClass: "error-ccmy", validate: isValidExpiryMMYY, msg: fmeData.errorMessages["mask-ccmy"], }, ".mask-ccmyy": { errorClass: "error-ccmyy", validate: isValidExpiryMMYYYY, msg: fmeData.errorMessages["mask-ccmyy"], }, ".mask-ipv4": { errorClass: "error-ipv4", validate: isValidIPv4, msg: fmeData.errorMessages["mask-ipv4"], }, }; for (const [selector, { errorClass, validate, msg }] of Object.entries( validations )) { validateInput(selector, errorClass, validate, msg); } // ----------------- Validation Functions ----------------- function isValidPhoneUSA(phoneStr) { return /^\(\d{3}\) \d{3}-\d{4}$/.test(phoneStr); } function isValidPhone8(phoneStr) { return /^\d{4}-\d{4}$/.test(phoneStr); } function isValidPhoneDDD8(phoneStr) { return /^\(\d{2}\) \d{4}-\d{4}$/.test(phoneStr); } function isValidPhoneDDD9(phoneStr) { return /^\(\d{2}\) 9\d{4}-\d{4}$/.test(phoneStr); } // ----------------- Universal Date & Time Validation Function ----------------- function isValidDateTime(value, format) { let regexPattern; let expectedParts; switch (format) { case "DMY": // dd/mm/yyyy regexPattern = /^(\d{2})\/(\d{2})\/(\d{4})$/; expectedParts = ["day", "month", "year"]; break; case "MDY": // mm/dd/yyyy regexPattern = /^(\d{2})\/(\d{2})\/(\d{4})$/; expectedParts = ["month", "day", "year"]; break; case "HMS": // hh:mm:ss regexPattern = /^(\d{2}):(\d{2}):(\d{2})$/; expectedParts = ["hour", "minute", "second"]; break; case "HM": // hh:mm regexPattern = /^(\d{2}):(\d{2})$/; expectedParts = ["hour", "minute"]; break; case "DMY-HM": // dd/mm/yyyy hh:mm regexPattern = /^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})$/; expectedParts = ["day", "month", "year", "hour", "minute"]; break; case "MDY-HM": // mm/dd/yyyy hh:mm regexPattern = /^(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})$/; expectedParts = ["month", "day", "year", "hour", "minute"]; break; case "MY": // mm/yyyy regexPattern = /^(\d{2})\/(\d{4})$/; expectedParts = ["month", "year"]; break; default: return false; // Unsupported format } // Match input with regex let match = value.match(regexPattern); if (!match) return false; // Extract values dynamically let parts = {}; expectedParts.forEach((part, index) => { parts[part] = parseInt(match[index + 1], 10); }); // Validate Date (Day, Month, Year) if (parts.year && (parts.year < 1500 || parts.year > 3000)) return false; if (parts.month && (parts.month < 1 || parts.month > 12)) return false; if (parts.day) { let daysInMonth = new Date(parts.year, parts.month, 0).getDate(); if (parts.day < 1 || parts.day > daysInMonth) return false; } // Validate Time (Hour, Minute, Second) if (parts.hour && (parts.hour < 0 || parts.hour >= 24)) return false; if (parts.minute && (parts.minute < 0 || parts.minute >= 60)) return false; if (parts.second && (parts.second < 0 || parts.second >= 60)) return false; return true; } // ----------------- Expiry Date Validation ----------------- function isValidExpiryDate(value, format) { let regexPattern = format === "MM/YY" ? /^(\d{2})\/(\d{2})$/ : /^(\d{2})\/(\d{4})$/; let match = value.match(regexPattern); if (!match) return false; // Invalid format let month = parseInt(match[1], 10); let year = parseInt(match[2], 10); let currentYear = new Date().getFullYear(); let currentMonth = new Date().getMonth() + 1; // JS months are 0-based // Adjust year format if MM/YY (Assume 20XX for past/future dates) if (format === "MM/YY") { year += 2000; } // Validate month (01-12) if (month < 1 || month > 12) return false; // Validate expiry date (must be in the future) if ( year < currentYear || (year === currentYear && month < currentMonth) ) { return false; } return true; } // ----------------- Exportable Functions Using Universal Validator ----------------- function isValidDateDMY(dateStr) { return isValidDateTime(dateStr, "DMY"); } function isValidDateMDY(dateStr) { return isValidDateTime(dateStr, "MDY"); } function isValidTimeHMS(timeStr) { return isValidDateTime(timeStr, "HMS"); } function isValidTimeHM(timeStr) { return isValidDateTime(timeStr, "HM"); } function isValidDateDMYHM(dateTimeStr) { return isValidDateTime(dateTimeStr, "DMY-HM"); } function isValidDateMDYHM(dateTimeStr) { return isValidDateTime(dateTimeStr, "MDY-HM"); } function isValidDateMY(dateStr) { return isValidDateTime(dateStr, "MY"); } function isValidExpiryMMYY(dateStr) { return isValidExpiryDate(dateStr, "MM/YY"); } function isValidExpiryMMYYYY(dateStr) { return isValidExpiryDate(dateStr, "MM/YYYY"); } // Apply validation for credit card fields function isValidCreditCard(cardNumber) { const cleaned = cardNumber.replace(/\D/g, ""); // Remove non-digits if (cleaned.length < 15 || cleaned.length > 16) return false; // AMEX: 15, Others: 16 let sum = 0; let shouldDouble = false; // Luhn Algorithm to validate card number for (let i = cleaned.length - 1; i >= 0; i--) { let digit = parseInt(cleaned.charAt(i), 10); if (shouldDouble) { digit *= 2; if (digit > 9) digit -= 9; } sum += digit; shouldDouble = !shouldDouble; } return sum % 10 === 0; } // Validate CNPJ (Brazilian Business ID - 14 digits) function isValidCNPJ(cnpj) { cnpj = cnpj.replace(/\D/g, ""); // Remove non-numeric characters if (cnpj.length !== 14) return false; // Eliminate obvious invalid CNPJs (repeated digits) if (/^(\d)\1+$/.test(cnpj)) return false; let calcCheckDigit = (cnpj, length) => { let weights = length === 12 ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; let sum = 0; for (let i = 0; i < weights.length; i++) { sum += parseInt(cnpj.charAt(i)) * weights[i]; } let remainder = sum % 11; return remainder < 2 ? 0 : 11 - remainder; }; // Validate both check digits let firstCheck = calcCheckDigit(cnpj, 12); let secondCheck = calcCheckDigit(cnpj, 13); return ( firstCheck === parseInt(cnpj.charAt(12)) && secondCheck === parseInt(cnpj.charAt(13)) ); } // Validate CPF (Brazilian Individual ID - 11 digits) function isValidCPF(cpf) { cpf = cpf.replace(/\D/g, ""); // Remove non-numeric characters if (cpf.length !== 11) return false; // Eliminate obvious invalid CPFs (repeated digits) if (/^(\d)\1+$/.test(cpf)) return false; let calculateDigit = (cpf, length) => { let sum = 0; for (let i = 0; i < length; i++) { sum += parseInt(cpf.charAt(i)) * (length + 1 - i); } let result = (sum * 10) % 11; return result === 10 ? 0 : result; }; let firstDigit = calculateDigit(cpf, 9); let secondDigit = calculateDigit(cpf, 10); // Now correctly includes first digit in the calculation return ( firstDigit === parseInt(cpf.charAt(9)) && secondDigit === parseInt(cpf.charAt(10)) ); } // Validate CEP (Brazilian Postal Code - XXXXX-XXX) function isValidCEP(cep) { return /^\d{5}-\d{3}$/.test(cep); // Matches format XXXXX-XXX } // Validate IPv4 (Format: 192.168.001.001) function isValidIPv4(ip) { // Ensure correct format (###.###.###.###) const ipv4Pattern = /^(?:\d{1,3}\.){3}\d{1,3}$/; if (!ipv4Pattern.test(ip)) return false; // Check general format // Split by dots and validate each octet (0-255) const octets = ip.split("."); return octets.every((octet) => { let num = parseInt(octet, 10); // Convert to number return num >= 0 && num <= 255; // Each octet must be between 0-255 }); } // ----------------- Form Submit ----------------- $(document).on("click", ".elementor-field-type-submit", function (e) { var $submitBtn = $(this); var $form = $submitBtn.closest("form"); // Prevent double-clicks if ($submitBtn.data("clicked")) { e.preventDefault(); return; } $submitBtn.data("clicked", true); // Mark as clicked // Trigger blur on inputs to ensure validation runs $form.find("input").trigger("blur"); $form[0].classList.add("elementor-form-waiting"); var $errors = $form.find(".mask-error").filter(function () { return $(this).text().trim() !== ""; }); setTimeout(() => { let hasVisibleMaskError = false; // Check for mask errors first $errors.each(function () { if ($(this).is(":visible")) { hasVisibleMaskError = true; $("html, body").animate( { scrollTop: $(this).offset().top - 200, }, 300 ); } }); if (hasVisibleMaskError) { $form[0].classList.remove("elementor-form-waiting"); $submitBtn.data("clicked", false); e.preventDefault(); return; } // Check HTML5 validity (e.g., invalid email) if (!$form[0].checkValidity()) { // Scroll to first invalid input const $firstInvalid = $form.find(":invalid").first(); if ($firstInvalid.length) { $("html, body").animate( { scrollTop: $firstInvalid.offset().top - 200, }, 300 ); $firstInvalid.focus(); } $form[0].classList.remove("elementor-form-waiting"); $submitBtn.data("clicked", false); e.preventDefault(); return; } // All validations passed $form[0].classList.remove("elementor-form-waiting"); $form[0].requestSubmit(); // Safe native submission $submitBtn.data("clicked", false); }, 500); }); }); })(jQuery); ; class InputHandler extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { calInput: '.elementor-field-textual', calDiv: '.elementor-field-type-text', form: '.elementor-form' }, }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $calInput: this.$element.find(selectors.calInput), $calDiv: this.$element.find(selectors.calDiv), $form: this.$element.find(selectors.form), }; } bindEvents() { let elmWrapper = this.elements.$calDiv; let eleInput = jQuery(elmWrapper).find('input'); if (eleInput.length === 0) return; eleInput.each((index, input) => { let maskClass, maskFormat, maskPrefix,maskDecimalPlaces,maskTimeMaskFormat,phoneFormat,creditCardOptions,maskAutoPlaceholder,brazilianFormats; input.classList.forEach(className => { if (className.includes('mask_control_@')) maskClass = className; if (className.includes('money_mask_format_@')) maskFormat = className; if (className.includes('mask_prefix_@')) maskPrefix = className; if (className.includes('mask_decimal_places_@')) maskDecimalPlaces = className; if (className.includes('mask_time_mask_format_@')) maskTimeMaskFormat = className; if (className.includes('fme_phone_format_@')) phoneFormat = className; if (className.includes('credit_card_options_@')) creditCardOptions = className; if (className.includes('mask_auto_placeholder_@')) maskAutoPlaceholder = className; if (className.includes('fme_brazilian_formats_@')) brazilianFormats = className; }); if (maskClass) maskClass = maskClass.split('@'); if (maskFormat) maskFormat = maskFormat.split('@'); if (maskPrefix) maskPrefix = maskPrefix.split('@'); if (maskDecimalPlaces) maskDecimalPlaces = maskDecimalPlaces.split('@'); if (maskTimeMaskFormat) maskTimeMaskFormat = maskTimeMaskFormat.split('@'); if (phoneFormat) phoneFormat = phoneFormat.split('@'); if (creditCardOptions) creditCardOptions = creditCardOptions.split('@'); if (maskAutoPlaceholder) maskAutoPlaceholder = maskAutoPlaceholder.split('@'); if (brazilianFormats) brazilianFormats = brazilianFormats.split('@'); if (!jQuery(input).data('mask')) { input.setAttribute('data-mask', maskClass?.[1] || ''); } input.setAttribute('data-moneymask-format', maskFormat?.[1] || 'dot'); input.setAttribute('data-moneymask-prefix', maskPrefix?.[1] || ''); input.setAttribute('data-decimal-places', maskDecimalPlaces?.[1] || '2'); input.setAttribute('data-timemask-format', maskTimeMaskFormat?.[1] || 'one'); input.setAttribute('data-phone-format', phoneFormat?.[1] || 'phone_usa'); input.setAttribute('data-creditcard-options', creditCardOptions?.[1] || 'hyphen'); input.setAttribute('data-auto-placeholder', maskAutoPlaceholder?.[1] || ''); input.setAttribute('data-brazilian-formats', brazilianFormats?.[1] || ''); }); this.applyMasks(); } applyMasks() { const masks = { "ev-phone": "phone", "ev-tel": "####-####", "ev-tel-ddd": "(##) ####-####", "ev-tel-ddd9": "(##) #####-####", "ev-tel-us": "(###) ###-####", "ev-cpf": "###.###.###-##", "ev-cnpj": "##.###.###/####-##", "ev-money": "###.###.###.###.###,##", "ev-ccard": "####-####-####-####", "ev-ccard-valid": "##/##", "ev-cep": "#####-###", "ev-time": "##:##:##", "ev-date": "##/##/####", "ev-date_time": "##/##/#### ##:##", "ev-ip-address": "###.###.###.###", "ev-br_fr": "brazilian_formats", }; this.elements.$form.find('input[data-mask]').each(function () { const $input = jQuery(this); const maskKey = jQuery(this)[0].dataset.mask; const timemaskFormat = jQuery(this)[0].dataset.timemaskFormat; const phoneFormat = jQuery(this)[0].dataset.phoneFormat; const creditcardOptions = jQuery(this)[0].dataset.creditcardOptions const autoPlaceholder = jQuery(this)[0].dataset.autoPlaceholder const brazilianFormats = jQuery(this)[0].dataset.brazilianFormats if (masks[maskKey]) { if(masks[maskKey] === 'phone'){ $input.attr('inputmode','tel') }else{ $input.attr('inputmode','numeric') } if(masks[maskKey] === 'brazilian_formats'){ switch(brazilianFormats){ case 'fme_cpf': $input.addClass('mask-cpf'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXX.XXX.XXX-XX') } break; case 'fme_cnpj': $input.addClass('mask-cnpj'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX.XXX.XXX/XXXX-XX') } break; case 'fme_cep': $input.addClass('mask-cep'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXXX-XXX') } break; default: $input.addClass('mask-cpf'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXX.XXX.XXX-XX') } } } if (masks[maskKey] === "##/##/####") { $input.addClass('mask-dmy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX') } } if (masks[maskKey] === "##.###.###/####-##") { $input.addClass('mask-cnpj'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX.XXX.XXX/XXXX-XX') } } if (masks[maskKey] === "###.###.###-##") { $input.addClass('mask-cpf'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXX.XXX.XXX-XX') } } if (masks[maskKey] === "#####-###") { $input.addClass('mask-cep'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXXX-XXX') } } if (masks[maskKey] === "(###) ###-####") { $input.addClass('mask-phus'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XXX) XXX-XXXX') } } if (masks[maskKey] === "phone") { switch(phoneFormat){ case 'phone_usa': $input.addClass('mask-phus'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XXX) XXX-XXXX') } break; case 'phone_d8': $input.addClass('mask-ph8'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXX-XXXX') } break; case 'phone_ddd8': $input.addClass('mask-ddd8'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XX) XXXX-XXXX') } break; case 'phone_ddd9': $input.addClass('mask-ddd9'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XX) XXXXX-XXXX') } break; default: $input.addClass('mask-ph8'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXX-XXXX') } break } } if (masks[maskKey] === "####-####") { $input.addClass('mask-ph8'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXX-XXXX') } } if (masks[maskKey] === "(##) ####-####") { $input.addClass('mask-ddd8'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XX) XXXX-XXXX') } } if (masks[maskKey] === "(##) #####-####") { $input.addClass('mask-ddd9'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','(XX) XXXXX-XXXX') } } if (masks[maskKey] === "##/##/####") { $input.addClass('mask-dmy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX') } } if (masks[maskKey] === "##:##:##") { switch(timemaskFormat){ case 'one': $input.addClass('mask-hm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX:XX') } break; case 'two': $input.addClass('mask-hms'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX:XX:XX') } break; case 'three': $input.addClass('mask-dmy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX') } break; case 'four': $input.addClass('mask-mdy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX') } break; case 'five': $input.addClass('mask-dmyhm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX XX:XX') } break; case 'six': $input.addClass('mask-mdyhm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX XX:XX') } break; case 'seven': $input.addClass('mask-my'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XXXX') } break; default: $input.addClass('mask-hm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX:XX') } } } if (masks[maskKey] === "##:##") { $input.addClass('mask-hm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX:XX') } } if (masks[maskKey] === "##/##/#### ##:##") { $input.addClass('mask-dmyhm'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX/XXXX XX:XX') } } if (masks[maskKey] === "####-####-####-####") { switch(creditcardOptions){ case 'space': $input.addClass('mask-ccs'); $input.after('
'); const $errorDivCCS = $input.next('.error-ccs'); if ($errorDivCCS.next('.card-logo').length === 0) { $errorDivCCS.after(''); } if (autoPlaceholder === 'yes') { $input.attr('placeholder', 'XXXX XXXX XXXX XXXX'); } break; case 'hyphen': $input.addClass('mask-cch'); $input.after('
'); const $errorDiv = $input.next('.error-cch'); if ($errorDiv.next('#card-logo').length === 0) { $errorDiv.after(''); } if (autoPlaceholder === 'yes') { $input.attr('placeholder', 'XXXX-XXXX-XXXX-XXXX'); } break; case 'credit_card_date': $input.addClass('mask-ccmy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX') } break; case 'credit_card_expiry_date': $input.addClass('mask-ccmyy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XXXX') } break; default: $input.addClass('mask-ccs'); $input.after('
'); jQuery('.mask-error').after('') if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXXX XXXX XXXX XXXX') } } } if (masks[maskKey] === "##/##") { $input.addClass('mask-ccmy'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XX') } } if (masks[maskKey] === "##/####") { $input.addClass('mask-my'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XX/XXXX') } } if (masks[maskKey] === "###.###.###.###") { $input.addClass('mask-ipv4'); $input.after('
'); if(autoPlaceholder === 'yes'){ $input.attr('placeholder','XXX.XXX.XXX.XXX') } } if (masks[maskKey] === "###.###.###.###.###,##") { $input.addClass('mask-moneyc'); $input.after('
'); if(autoPlaceholder === 'yes'){ let moneyPrefix = ($input.data('moneymask-prefix') !== "") ? $input.data('moneymask-prefix'): '$'; let format = ($input.data('moneymask-format') === 'dot' ? ',':'.') $input.attr('placeholder',moneyPrefix+`0${format}00`) } } } }); } } jQuery(window).on('elementor/frontend/init', () => { const calHandler = ($element) => { elementorFrontend.elementsHandler.addHandler(InputHandler, { $element, }); }; elementorFrontend.hooks.addAction('frontend/element_ready/form.default', calHandler); }); ;