"use strict";
window.Happy=window.Happy||{};
(function ($, Happy, w){
var $window=$(w);
$(function (){
function log(event, item, level){
$(document).on(event, item, level);
}
var e;
e=$(".ha-menu-container");
$(e).each(function (){
var button=$(this);
if("yes"!=button.attr("ha-dom-added")){
if(0===button.parents(".elementor-widget-ha-nav-menu").length){
button.parents(".ha-wid-con").addClass("ha_menu_responsive_tablet");
}
button.attr("ha-dom-added", "yes");
}});
log("click", ".ha-dropdown-has > a", function (event){
if(!$(this).parents(".ha-navbar-nav, .ha-vertical-navbar-nav").hasClass("submenu-click-on-icon")||$(event.target).hasClass("ha-submenu-indicator-wrap")){
event.preventDefault();
var $oElemDragged=$(this).parent().find(">.ha-dropdown, >.ha-megamenu-panel");
$oElemDragged.find(".ha-dropdown-open").removeClass("ha-dropdown-open");
if($oElemDragged.hasClass("ha-dropdown-open")){
$oElemDragged.removeClass("ha-dropdown-open");
}else{
$oElemDragged.addClass("ha-dropdown-open");
}}
});
log("click", ".ha-menu-toggler", function (event){
event.preventDefault();
var el_form_group=$(this).parents(".ha-menu-container").parent();
if(el_form_group.length < 1){
el_form_group=$(this).parent();
}
var $wrapElement=el_form_group.find(".ha-menu-offcanvas-elements");
if($wrapElement.hasClass("active")){
$wrapElement.removeClass("active");
}else{
$wrapElement.addClass("active");
}});
log("click", ".ha-navbar-nav li a", function (event){
if(!$(this).attr("href")&&"ha-submenu-indicator-wrap"==event.target.className){
var thirdItem=$(this);
var lnk=thirdItem.get(0);
var oldUrl=lnk.href;
var sepor=oldUrl.indexOf("#");
var s=thirdItem.parents(".ha-menu-container").hasClass("ha-nav-menu-one-page-yes");
if(-1!==sepor&&oldUrl.length > 1&&s && lnk.pathname==window.location.pathname){
event.preventDefault();
thirdItem.parents(".ha-wid-con").find(".ha-menu-close").trigger("click");
}}
});
});
function debounce(func, wait, immediate){
var timeout;
return function (){
var context=this,
args=arguments;
var later=function later(){
timeout=null;
if(!immediate) func.apply(context, args);
};
var callNow=immediate&&!timeout;
clearTimeout(timeout);
timeout=setTimeout(later, wait);
if(callNow) func.apply(context, args);
};}
$window.on("elementor/frontend/init", function (){
if(typeof haDisplayCondition!="undefined"&&haDisplayCondition.status=="true"){
var HappyLocalTimeZone=new Date().toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1];
var ha_secure=document.location.protocol==="https:" ? "secure":"";
document.cookie="HappyLocalTimeZone=" + HappyLocalTimeZone + ";SameSite=Strict;" + ha_secure;
}
var CountDown=function CountDown($scope){
var $item=$scope.find(".ha-countdown");
var $countdown_item=$item.find(".ha-countdown-item");
var $end_action=$item.data("end-action");
var $redirect_link=$item.data("redirect-link");
var $end_action_div=$item.find(".ha-countdown-end-action");
var $editor_mode_on=$scope.hasClass("elementor-element-edit-mode");
$item.countdown({
end: function end(){
if(("message"===$end_action||"img"===$end_action)&&$end_action_div!==undefined){
$countdown_item.css("display", "none");
$end_action_div.css("display", "block");
}else if("url"===$end_action&&$redirect_link!==undefined&&$editor_mode_on!==true){
window.location.replace($redirect_link);
}}
});
};
var SliderBase=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.run();
},
getDefaultSettings: function getDefaultSettings(){
return {
selectors: {
container: ".ha-slider-container"
}};},
getDefaultElements: function getDefaultElements(){
var selectors=this.getSettings("selectors");
return {
$container: this.$element.find(selectors.container)
};},
getReadySettings: function getReadySettings(){
var $this=this;
var slidesPerView=parseInt(this.getElementSettings("slides_per_view"))||1;
if(this.getElementSettings("thumbs_navigation")=="yes"){
var selectorThumbs=this.elements.$container.find(".ha-slider-gallery-thumbs");
var haGallaryThumbs=new HaSwiper(selectorThumbs[0], {
spaceBetween: this.getElementSettings("space_between_thumbs"),
freeMode: true,
watchSlidesVisibility: true,
watchSlidesProgress: true
});
}
var tempEffect=this.getElementSettings("effect");
if(tempEffect=='cube'){
tempEffect=false;
}
var settings={
direction: this.getElementSettings("slider_direction"),
slidesPerView: slidesPerView||1,
spaceBetween: parseInt(this.getElementSettings("space_between_slides"))||0,
loop: !!(this.getElementSettings("infinity_loop")||false),
speed: parseInt(this.getElementSettings("effect_speed")),
effect: this.getElementSettings("slider_type")=="multiple" ? this.getElementSettings("effect_multiple"):tempEffect,
ha_animation: this.getElementSettings("slider_content_animation"),
sliderType: this.getElementSettings("slider_type")
};
if(this.getElementSettings("effect")=="flip"){
settings.flipEffect={
limitRotation: true,
slideShadows: true
};}
if(this.getElementSettings("effect_multiple")=="coverflow"){
settings.coverflowEffect={
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows: true
};}
if(this.getElementSettings("slider_type")=="multiple"){
var bpObj={
desktop: {
slidesPerView: slidesPerView||1,
spaceBetween: parseInt(this.getElementSettings("space_between_slides"))||0
}};
var breakpoints=elementorFrontend.config.responsive.breakpoints;
$.each(breakpoints, function (idx, val){
if(val.is_enabled){
bpObj[idx]={
screenSize: val.value,
slidesPerView: parseInt($this.getElementSettings("slides_per_view_" + idx))||slidesPerView,
spaceBetween: parseInt($this.getElementSettings("space_between_slides_" + idx))||0
};}});
settings.customBreakpoints=bpObj;
settings.customMultiple=true;
}
if(this.getElementSettings("autoplay")=="yes"){
settings.autoplay={
delay: this.getElementSettings("autoplay_speed"),
disableOnInteraction: false,
stopOnLastSlide: !(this.getElementSettings("infinity_loop")||false)
};}
if(this.getElementSettings("arrow_navigation")=="yes"){
var selectorNext=this.elements.$container.find(".ha-slider-next");
var selectorPrev=this.elements.$container.find(".ha-slider-prev");
settings.navigation={
nextEl: selectorNext[0],
prevEl: selectorPrev[0]
};}
if(this.getElementSettings("pagination_type")=="dots"){
var selectorPagi=this.elements.$container.find(".ha-slider-pagination");
settings.pagination={
el: selectorPagi[0],
clickable: true
};}
if(this.getElementSettings("pagination_type")=="progressbar"){
var selectorPagi=this.elements.$container.find(".ha-slider-pagination");
settings.pagination={
el: selectorPagi[0],
clickable: true,
type: "progressbar"
};}
if(this.getElementSettings("pagination_type")=="numbers"){
var selectorPagi=this.elements.$container.find(".ha-slider-pagination");
settings.pagination={
el: selectorPagi[0],
clickable: true,
type: this.getElementSettings("number_pagination_type"),
renderBullet: function renderBullet(index, className){
return '<span class="' + className + '">' + (index + 1) + "</span>";
},
renderFraction: function renderFraction(currentClass, totalClass){
return '<span class="' + currentClass + '"></span>' + "<span>/</span>" + '<span class="' + totalClass + '"></span>';
}};}
if(this.getElementSettings("scroll_bar")=="yes"){
var selectorScroll=this.elements.$container.find(".ha-slider-scrollbar");
settings.scrollbar={
el: selectorScroll[0],
hide: this.getElementSettings("scroll_bar_visibility")=="true",
draggable: true
};}
if(this.getElementSettings("thumbs_navigation")=="yes"){
settings.thumbs={
swiper: haGallaryThumbs
};}
return $.extend({}, settings);
},
run: function run(){
var elContainer=this.elements.$container;
var slider=elContainer.find(".ha-slider-container");
var readySettings=this.getReadySettings();
var sliderObj=new HaSwiper(slider[0], readySettings);
if(readySettings.customMultiple){
$(window).on('resize', function (){
var mode=$('body').attr('data-elementor-device-mode');
sliderObj.params.slidesPerView=readySettings.customBreakpoints[mode].slidesPerView;
sliderObj.params.spaceBetween=readySettings.customBreakpoints[mode].spaceBetween;
sliderObj.update();
}).resize();
}
sliderObj.on("slideChange", function (){
if(readySettings.sliderType=="multiple"){
return;
}
var aI=sliderObj.activeIndex;
var elSlide=elContainer.find(".ha-slider-slide");
var elSlideContent=elContainer.find(".ha-slider-content");
var currentSlide=elSlideContent.eq(aI);
currentSlide.hide();
if(currentSlide.length <=0){}
setTimeout(function (){
currentSlide.show();
}, readySettings.speed);
elSlide.eq(aI).find(".elementor-invisible, .animated").each(function (e, t){
var i=$(this).data("settings");
if(i&&(i._animation||i.animation)){
var n=i._animation_delay ? i._animation_delay:0,
a=i._animation||i.animation;
$(this).removeClass("elementor-invisible");
$(this).addClass(a + " animated");
}});
});
sliderObj.on("transitionEnd", function (){
var aI=sliderObj.activeIndex;
var elSlide=elContainer.find(".ha-slider-slide");
var elSlideContent=elContainer.find(".ha-slider-content");
var currentSlide=elSlideContent.eq(aI);
setTimeout(function (){
elSlide.eq(aI).find(".animated").each(function (e, t){
var i=$(this).data("settings");
if(i&&(i._animation||i.animation)){
var n=i._animation_delay ? i._animation_delay:0,
a=i._animation||i.animation;
$(this).removeClass(a);
}});
}, readySettings.speed);
});
}});
var CarouselBase=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.run();
},
getDefaultSettings: function getDefaultSettings(){
return {
selectors: {
container: ".ha-carousel-container"
},
arrows: false,
dots: false,
checkVisible: false,
infinite: true,
slidesToShow: 3,
rows: 0,
prevArrow: '<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'
};},
getDefaultElements: function getDefaultElements(){
var selectors=this.getSettings("selectors");
return {
$container: this.findElement(selectors.container)
};},
onElementChange: function onElementChange(){
this.elements.$container.slick("unslick");
this.run();
},
getReadySettings: function getReadySettings(){
var settings={
infinite: !!this.getElementSettings("loop"),
autoplay: !!this.getElementSettings("autoplay"),
autoplaySpeed: this.getElementSettings("autoplay_speed"),
speed: this.getElementSettings("animation_speed"),
centerMode: !!this.getElementSettings("center"),
vertical: !!this.getElementSettings("vertical"),
slidesToScroll: 1
};
switch (this.getElementSettings("navigation")){
case "arrow":
settings.arrows=true;
break;
case "dots":
settings.dots=true;
break;
case "both":
settings.arrows=true;
settings.dots=true;
break;
}
settings.slidesToShow=parseInt(this.getElementSettings("slides_to_show"))||1;
settings.responsive=[{
breakpoint: elementorFrontend.config.breakpoints.lg,
settings: {
slidesToShow: parseInt(this.getElementSettings("slides_to_show_tablet"))||settings.slidesToShow
}}, {
breakpoint: elementorFrontend.config.breakpoints.md,
settings: {
slidesToShow: parseInt(this.getElementSettings("slides_to_show_mobile"))||parseInt(this.getElementSettings("slides_to_show_tablet"))||settings.slidesToShow
}}];
return $.extend({}, this.getSettings(), settings);
},
run: function run(){
this.elements.$container.slick(this.getReadySettings());
}});
var SourceCode=function SourceCode($scope){
var $item=$scope.find('.ha-source-code');
var $lng_type=$item.data('lng-type');
var $after_copy_text=$item.data('after-copy');
var $code=$item.find('code.language-' + $lng_type);
var $copy_btn=$scope.find('.ha-copy-code-button');
$copy_btn.on('click', function (){
var $temp=$("<textarea>");
$(this).append($temp);
$temp.val($code.text()).select();
document.execCommand ("copy");
$temp.remove();
if($after_copy_text.length){
$(this).text($after_copy_text);
}});
if($lng_type!==undefined&&$code!==undefined){
Prism.highlightElement($code.get(0));
}};
var AnimatedText=function AnimatedText($scope){
var $item=$scope.find(".cd-headline"),
$animationDelay=$item.data("animation-delay");
happyAnimatedText({
selector: $item,
animationDelay: $animationDelay
});
};
var InstagramFeed=function InstagramFeed($scope){
var button=$scope.find(".ha-insta-load-more");
var instagram_wrap=$scope.find(".ha-insta-default");
button.on("click", function (e){
e.preventDefault();
var $self=$(this),
query_settings=$self.data("settings"),
total=$self.data("total"),
items=$scope.find(".ha-insta-item").length;
$.ajax({
url: HappyProLocalize.ajax_url,
type: "POST",
data: {
action: "ha_instagram_feed_action",
security: HappyProLocalize.nonce,
query_settings: query_settings,
loaded_item: items
},
success: function success(response){
if(total > items){
$(response).appendTo(instagram_wrap);
}else{
$self.text("All Loaded").addClass("loaded");
setTimeout(function (){
$self.css({
display: "none"
});
}, 800);
}},
error: function error(_error){}});
});
};
var ScrollingImage=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.wrapper=this.$element.find(".ha-scrolling-image-wrapper");
this.run();
},
onElementChange: function onElementChange(){
this.run();
},
run: function run(){
var container_height=this.wrapper.innerHeight(),
container_width=this.wrapper.innerWidth(),
image_align=this.wrapper.data("align"),
scroll_direction=this.wrapper.data("scroll-direction"),
items=this.wrapper.find(".ha-scrolling-image-container"),
single_image_box=items.find(".ha-scrolling-image-item"),
scroll="scroll" + image_align + scroll_direction + parseInt(container_height) + parseInt(container_width),
duration=this.wrapper.data("duration"),
direction="normal",
horizontal_align_width=10,
vertical_align_height=10;
var start={
transform: "translateY(" + container_height + "px)"
},
end={
transform: "translateY(-101%)"
};
if("bottom"===scroll_direction||"right"===scroll_direction){
direction="reverse";
}
if("ha-horizontal"===image_align){
start={
transform: "translateX(" + container_width + "px)"
};
end={
transform: "translateX(-101%)"
};
single_image_box.each(function (){
horizontal_align_width +=$(this).outerWidth(true);
});
items.css({
width: horizontal_align_width,
display: "flex"
});
items.find("img").css({
"max-width": "100%"
});
single_image_box.css({
display: "inline-flex"
});
}
if("ha-vertical"===image_align){
single_image_box.each(function (){
vertical_align_height +=$(this).outerHeight(true);
});
}
$.keyframe.define([{
name: scroll,
"0%": start,
"100%": end
}]);
items.playKeyframe({
name: scroll,
duration: duration.toString() + "ms",
timingFunction: "linear",
delay: "0s",
iterationCount: "infinite",
direction: direction,
fillMode: "none",
complete: function complete(){}});
}});
var PricingTableToolTip=function PricingTableToolTip($scope){
var tooltip_area=$scope.find(".ha-pricing-table-feature-tooltip");
tooltip_area.on({
mouseenter: function mouseenter(e){
var $this=$(this),
direction=$this[0].getBoundingClientRect(),
tooltip=$this.find(".ha-pricing-table-feature-tooltip-text"),
tooltipW=tooltip.outerWidth(true),
tooltipH=tooltip.outerHeight(true),
W_width=$(window).width(),
W_height=$(window).height();
tooltip.css({
left: "0",
right: "auto",
top: "calc(100% + 1px)",
bottom: "auto"
});
if(W_width - direction.left < tooltipW&&direction.right < tooltipW){
tooltip.css({
left: "calc(50% - (" + tooltipW + "px/2))"
});
}else if(W_width - direction.left < tooltipW){
tooltip.css({
left: "auto",
right: "0"
});
}
if(W_height - direction.bottom < tooltipH){
tooltip.css({
top: "auto",
bottom: "calc(100% + 1px)"
});
}}
});
};
var TabHandlerBase=elementorModules.frontend.handlers.Base.extend({
$activeContent: null,
getDefaultSettings: function getDefaultSettings(){
return {
selectors: {
tabTitle: ".ha-tab__title",
tabContent: ".ha-tab__content"
},
classes: {
active: "ha-tab--active"
},
showTabFn: "show",
hideTabFn: "hide",
toggleSelf: false,
hidePrevious: true,
autoExpand: true
};},
getDefaultElements: function getDefaultElements(){
var selectors=this.getSettings("selectors");
return {
$tabTitles: this.findElement(selectors.tabTitle),
$tabContents: this.findElement(selectors.tabContent)
};},
activateDefaultTab: function activateDefaultTab(){
var settings=this.getSettings();
if(!settings.autoExpand||"editor"===settings.autoExpand&&!this.isEdit){
return;
}
var defaultActiveTab=this.getEditSettings("activeItemIndex")||1,
originalToggleMethods={
showTabFn: settings.showTabFn,
hideTabFn: settings.hideTabFn
};
this.setSettings({
showTabFn: "show",
hideTabFn: "hide"
});
this.changeActiveTab(defaultActiveTab);
this.setSettings(originalToggleMethods);
},
deactivateActiveTab: function deactivateActiveTab(tabIndex){
var settings=this.getSettings(),
activeClass=settings.classes.active,
activeFilter=tabIndex ? '[data-tab="' + tabIndex + '"]':"." + activeClass,
$activeTitle=this.elements.$tabTitles.filter(activeFilter),
$activeContent=this.elements.$tabContents.filter(activeFilter);
$activeTitle.add($activeContent).removeClass(activeClass);
$activeContent[settings.hideTabFn]();
},
activateTab: function activateTab(tabIndex){
var settings=this.getSettings(),
activeClass=settings.classes.active,
$requestedTitle=this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'),
$requestedContent=this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]');
$requestedTitle.add($requestedContent).addClass(activeClass);
$requestedContent[settings.showTabFn]();
},
isActiveTab: function isActiveTab(tabIndex){
return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings("classes.active"));
},
bindEvents: function bindEvents(){
var _this=this;
this.elements.$tabTitles.on({
keydown: function keydown(event){
if("Enter"===event.key){
event.preventDefault();
_this.changeActiveTab(event.currentTarget.getAttribute("data-tab"));
}},
click: function click(event){
event.preventDefault();
_this.changeActiveTab(event.currentTarget.getAttribute("data-tab"));
}});
},
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.activateDefaultTab();
},
onEditSettingsChange: function onEditSettingsChange(propertyName){
if("activeItemIndex"===propertyName){
this.activateDefaultTab();
}},
changeActiveTab: function changeActiveTab(tabIndex){
var isActiveTab=this.isActiveTab(tabIndex),
settings=this.getSettings();
if((settings.toggleSelf||!isActiveTab)&&settings.hidePrevious){
this.deactivateActiveTab();
}
if(!settings.hidePrevious&&isActiveTab){
this.deactivateActiveTab(tabIndex);
}
if(!isActiveTab){
this.activateTab(tabIndex);
}
$(window).trigger("resize");
}});
var TimeLine=function TimeLine($scope){
var T_ID=$scope.data("id");
var timeline=$scope.find(".ha-timeline-wrap");
var dataScroll=timeline.data("scroll");
var timeline_block=timeline.find(".ha-timeline-block");
var event="scroll.timelineScroll" + T_ID + " resize.timelineScroll" + T_ID;
function scroll_tree(){
timeline_block.each(function (){
var block_height=$(this).outerHeight(true);
var $offsetTop=$(this).offset().top;
var window_middle_p=$window.scrollTop() + $window.height() / 2;
if($offsetTop < window_middle_p){
$(this).addClass("ha-timeline-scroll-tree");
}else{
$(this).removeClass("ha-timeline-scroll-tree");
}
var scroll_tree_wrap=$(this).find(".ha-timeline-tree-inner");
var scroll_height=$window.scrollTop() - scroll_tree_wrap.offset().top + $window.outerHeight() / 2;
if($offsetTop < window_middle_p&&timeline_block.hasClass("ha-timeline-scroll-tree")){
if(block_height > scroll_height){
scroll_tree_wrap.css({
height: scroll_height * 1.5 + "px"
});
}else{
scroll_tree_wrap.css({
height: block_height * 1.2 + "px"
});
}}else{
scroll_tree_wrap.css("height", "0px");
}});
}
if("yes"===dataScroll){
scroll_tree();
$window.on(event, scroll_tree);
}else{
$window.off(event);
}};
var HotSpots=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.init();
},
bindEvents: function bindEvents(){
if(!this.isEdit){
this.elements.$items.on("click.spotClick", function (e){
e.preventDefault();
});
}},
getDefaultSettings: function getDefaultSettings(){
return {
selectors: {
item: ".ha-hotspots__item"
}};},
getDefaultElements: function getDefaultElements(){
return {
$items: this.findElement(this.getSettings("selectors.item"))
};},
onElementChange: function onElementChange(changedProp){
if(!this.hasTipso()){
return;
}
if(changedProp.indexOf("tooltip_")===0){
this.elements.$items.tipso("destroy");
this.init();
}},
hasTipso: function hasTipso(){
return $.fn["tipso"];
},
init: function init(){
var position=this.getElementSettings("tooltip_position"),
width=this.getElementSettings("tooltip_width"),
background=this.getElementSettings("tooltip_bg_color"),
color=this.getElementSettings("tooltip_color"),
speed=this.getElementSettings("tooltip_speed"),
delay=this.getElementSettings("tooltip_delay"),
hideDelay=this.getElementSettings("tooltip_hide_delay"),
hideArrow=this.getElementSettings("tooltip_hide_arrow"),
hover=this.getElementSettings("tooltip_hover"),
elementId=this.getID();
if(!this.hasTipso()){
return;
}
this.elements.$items.each(function (index, item){
var $item=$(item),
target=$item.data("target"),
settings=$item.data("settings"),
classes=["ha-hotspots--" + elementId, "elementor-repeater-item-" + target];
$item.tipso({
color: color,
width: width.size||200,
position: settings.position||position,
speed: speed,
delay: delay,
showArrow: !hideArrow,
tooltipHover: !!hover,
hideDelay: hideDelay,
background: background,
useTitle: false,
content: $("#ha-" + target).html(),
onBeforeShow: function onBeforeShow($e, e, tooltip){
$(document).find('.elementor-repeater-item-' + target).remove();
tooltip.tipso_bubble.addClass(classes.join(" "));
}});
});
}});
var LineChart=function LineChart($scope){
elementorFrontend.waypoint($scope, function (){
var $chart=$(this),
$container=$chart.find(".ha-line-chart-container"),
$chart_canvas=$chart.find("#ha-line-chart"),
settings=$container.data("settings");
if($container.length){
var chart=new Chart($chart_canvas, settings);
}});
};
var RadarChart=function RadarChart($scope){
elementorFrontend.waypoint($scope, function (){
var $chart=$(this),
$container=$chart.find(".ha-radar-chart-container"),
$chart_canvas=$chart.find("#ha-radar-chart"),
settings=$container.data("settings");
if($container.length){
var chart=new Chart($chart_canvas, settings);
}});
};
var PolarChart=function PolarChart($scope){
elementorFrontend.waypoint($scope, function (){
var $chart=$(this),
$container=$chart.find(".ha-polar-chart-container"),
$chart_canvas=$chart.find("#ha-polar-chart"),
settings=$container.data("settings");
if($container.length){
var chart=new Chart($chart_canvas, settings);
}});
};
var PieChart=function PieChart($scope){
elementorFrontend.waypoint($scope, function (){
var $chart=$(this),
$container=$chart.find(".ha-pie-chart-container"),
$chart_canvas=$chart.find("#ha-pie-chart"),
settings=$container.data("settings");
if($container.length){
var chart=new Chart($chart_canvas, settings);
}});
};
var StickyVideoArray=[];
var StickyVideo=function StickyVideo($scope){
var $id="#ha-sticky-video-player-" + $scope.data("id"),
$wrap=$scope.find(".ha-sticky-video-wrap"),
$settting=$wrap.data("ha-player"),
$box=$wrap.find(".ha-sticky-video-box"),
$overlay_box=$wrap.find(".ha-sticky-video-overlay"),
$overlay_play=$overlay_box.find(".ha-sticky-video-overlay-icon"),
$sticky_close=$wrap.find(".ha-sticky-video-close i"),
$all_box=$(".ha-sticky-video-box"),
event="scroll.haStickyVideo" + $scope.data("id"),
set;
var option={
autoplay: $settting.autoplay,
muted: $settting.muted,
loop: $settting.loop,
clickToPlay: false,
hideControls: false
};
var playerAbc=new Plyr($id);
var StickyVideoObject={
player: playerAbc,
event: event,
player_box: $box
};
StickyVideoArray.push(StickyVideoObject);
if(0!==$overlay_box.length){
var $el=0!==$overlay_play.length ? $overlay_play:$overlay_box;
$el.on("click", function (){
playerAbc.play();
});
}
$sticky_close.on("click", function (){
$box.removeClass("sticky");
$box.addClass("sticky-close");
playerAbc.pause();
});
playerAbc.on("play", function (e){
$overlay_box.css("display", "none");
if($box.hasClass("sticky-close")){
$box.removeClass("sticky-close");
}
StickyVideoArray.forEach(function (item, index){
if(item.player!==playerAbc){
item.player.pause();
}
if(item.event!==event){
$window.off(item.event);
}
if(item.player_box!==$box){
item.player_box.removeClass("sticky");
}});//$all_box.removeClass("sticky");
if(true===$settting.sticky){
$window.on(event, function (){
var height=$box.outerHeight(true);
var $offsetTop=$wrap.offset().top;
var videoBoxTopPoint=$window.scrollTop();
var videoBoxMiddlePoint=$offsetTop + height / 2;
if(!$box.hasClass("sticky-close")){
if(videoBoxMiddlePoint < videoBoxTopPoint){
$box.addClass("sticky");
}else{
$box.removeClass("sticky");
}}
});
}else{
$window.off(event);
}});
playerAbc.on("pause", function (e){
$window.off(event);
});
$window.on("load resize", debounce(function (){
var height=$box.find(".plyr").height();
$wrap.css("min-height", height + "px");
}, 100));
/*
var event="scroll.timelineScroll" + T_ID + " resize.timelineScroll" + T_ID;
function scroll_tree(){
timeline_block.each(function(){
var block_height=$(this).outerHeight(true);
var $offsetTop=$(this).offset().top;
var window_middle_p=$window.scrollTop() + $window.height() / 2;
if($offsetTop < window_middle_p){
$(this).addClass("ha-timeline-scroll-tree");
}else{
$(this).removeClass("ha-timeline-scroll-tree");
}
var scroll_tree_wrap=$(this).find('.ha-timeline-tree-inner');
var scroll_height=($window.scrollTop() - scroll_tree_wrap.offset().top) + ($window.outerHeight() / 2);
if($offsetTop < window_middle_p&&timeline_block.hasClass('ha-timeline-scroll-tree')){
if(block_height > scroll_height){
scroll_tree_wrap.css({
"height": scroll_height * 1.5 + "px",
});
}else{
scroll_tree_wrap.css({
"height": block_height * 1.2 + "px",
});
}}else{
scroll_tree_wrap.css("height", "0px");
}});
}
if('yes'===dataScroll){
scroll_tree();
$window.on(event, scroll_tree);
}else{
$window.off(event);
}
*/
};
var FacebookFeed=function FacebookFeed($scope){
var button=$scope.find(".ha-facebook-load-more");
var facebook_wrap=$scope.find(".ha-facebook-items");
button.on("click", function (e){
e.preventDefault();
var $self=$(this),
query_settings=$self.data("settings"),
total=$self.data("total"),
items=$scope.find(".ha-facebook-item").length;
$.ajax({
url: HappyProLocalize.ajax_url,
type: "POST",
data: {
action: "ha_facebook_feed_action",
security: HappyProLocalize.nonce,
query_settings: query_settings,
loaded_item: items
},
success: function success(response){
if(total > items){
$(response).appendTo(facebook_wrap);
}else{
$self.text("All Loaded").addClass("loaded");
setTimeout(function (){
$self.css({
display: "none"
});
}, 800);
}},
error: function error(_error2){}});
});
};
var SmartPostList=function SmartPostList($scope){
var filterWrap=$scope.find(".ha-spl-filter"),
customSelect=$scope.find(".ha-spl-custom-select"),
gridWrap=$scope.find(".ha-spl-grid-area"),
mainWrapper=$scope.find(".ha-spl-wrapper"),
querySettings=mainWrapper.data("settings"),
dataOffset=mainWrapper.attr("data-offset"),
nav=$scope.find(".ha-spl-pagination button"),
navPrev=$scope.find(".ha-spl-pagination button.prev"),
navNext=$scope.find(".ha-spl-pagination button.next"),
filter=$scope.find("ul.ha-spl-filter-list li span"),
event;
customSelect.niceSelect();
var select=$scope.find(".ha-spl-custom-select li");
function afterClick(e){
e.preventDefault();
var $self=$(this),
dataFilter=filterWrap.attr("data-active"),
dataTotalOffset=mainWrapper.attr("data-total-offset"),
offset="",
termId="";
if(e.target.classList.contains("prev")||e.target.classList.contains("fa-angle-left")){
if(0==parseInt(dataTotalOffset)){
navPrev.attr("disabled", true);
return;
}
offset=0!==parseInt(dataTotalOffset) ? parseInt(dataTotalOffset) - parseInt(dataOffset):"0";
if(undefined!==dataFilter){
termId=dataFilter;
}}else if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){
offset=parseInt(dataTotalOffset) + parseInt(dataOffset);
if(undefined!==dataFilter){
termId=dataFilter;
}}
if(e.target.hasAttribute("data-value")){
termId=e.target.dataset["value"];
filterWrap[0].setAttribute("data-active", termId);
if("SPAN"===e.target.tagName){
filter.removeClass("ha-active");
e.target.classList.toggle("ha-active");
}
offset=0;
navPrev.attr("disabled", true);
navNext.removeAttr("disabled");
}
$.ajax({
url: HappyProLocalize.ajax_url,
type: "POST",
data: {
action: "ha_smart_post_list_action",
security: HappyProLocalize.nonce,
querySettings: querySettings,
offset: offset,
termId: termId
},
success: function success(response){
if($(response).length > 0){
gridWrap.css("height", gridWrap.outerHeight(true) + "px");
gridWrap.html("");
$(response).appendTo(gridWrap);
gridWrap.css("height", "");
mainWrapper[0].attributes["data-total-offset"].value=offset;
if(e.target.classList.contains("prev")||e.target.classList.contains("fa-angle-left")){
navNext.removeAttr("disabled");
}
if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){
navPrev.removeAttr("disabled");
}}else{
if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){
navNext.attr("disabled", true);
}}
},
error: function error(_error3){}});
}
nav.on("click", afterClick);
filter.on("click", afterClick);
select.on("click", afterClick);
};
var postGridSkins=["classic", "hawai", "standard", "monastic", "stylica", "outbox", "crossroad"];
var PostGrid=function PostGrid($scope){
var wrapper=$scope.find(".ha-pg-wrapper"),
gridWrap=wrapper.find(".ha-pg-grid-wrap"),
button=wrapper.find("button.ha-pg-loadmore");
button.on("click", function (e){
e.preventDefault();
var $self=$(this),
querySettings=$self.data("settings"),
items=wrapper.find(".ha-pg-item").length;
$self.attr("disabled", true);
$.ajax({
url: HappyProLocalize.ajax_url,
type: "POST",
data: {
action: "hapro_post_grid_action",
security: HappyProLocalize.nonce,
querySettings: querySettings,
loadedItem: items
},
beforeSend: function beforeSend(){
$self.find(".eicon-loading").css({
display: "inline-block"
});
},
success: function success(response){
if(response){
$(response).each(function (){
var $self=$(this);
if($self.hasClass("ha-pg-item")){
$self.addClass("ha-pg-item-loaded").appendTo(gridWrap);
}else{
$self.appendTo(gridWrap);
}});
}else{
$self.text("All Loaded").addClass("loaded");
setTimeout(function (){
$self.css({
display: "none"
});
}, 800);
}
$self.find(".eicon-loading").css({
display: "none"
});
$self.removeAttr("disabled");
},
error: function error(_error4){}});
});
};
var DataTable=function DataTable($scope){
var dataTable=$scope.find(".ha-advanced-table");
var widgetWrapper=$scope.find(".elementor-widget-container");
var row_td=$scope.find(".ha-advanced-table__body-row-cell");
var search=dataTable.data("search")==true ? true:false;
var paging=dataTable.data("paging")==true ? true:false;
var scrollX=dataTable.data("scroll-x")==undefined ? false:true;
if(window.innerWidth <=767){
var scrollX=true;
}
$(dataTable).DataTable({
searching: search,
paging: paging,
orderCellsTop: true,
scrollX: scrollX
});
var column_th=$scope.find(".ha-advanced-table__head-column-cell");
column_th.each(function (index, v){
$(column_th[index]).css("width", "");
});
if(dataTable.data("export-table")==true){
widgetWrapper.prepend('<div class="ha-advanced-table-btn-wrap"><button class="ha-advanced-table-btn">' + dataTable.data("export-table-text") + "</button></div>");
var dataTableBtn=$scope.find(".ha-advanced-table-btn");
dataTableBtn.on("click", function (){
var oldDownloadNode=document.querySelector(".ha-advanced-data-table-export");
if(oldDownloadNode){
oldDownloadNode.parentNode.removeChild(oldDownloadNode);
}
var csv=[];
dataTable.find("tr").each(function (index, tr){
var data=[];
$(tr).find("th").each(function (index, th){
data.push(th.textContent);
});
$(tr).find("td").each(function (index, td){
data.push(td.textContent);
});
csv.push(data.join(","));
});
var csvFile=new Blob([csv.join("\n")], {
type: "text/csv"
});
var downloadNode=document.createElement("a");
var url=URL.createObjectURL(csvFile);
var date=new Date();
var options={
day: "2-digit",
month: "short",
year: "numeric",
hour: "numeric",
minute: "numeric",
second: "numeric"
};
var formatedDate=date.toLocaleDateString("en-BD", options);
var dateString=JSON.stringify(formatedDate.replace(/[ , :]/g, "-"));
downloadNode.download="advanced-data-table-" + dateString + "~" + dataTable.data("widget-id") + ".csv";
downloadNode.setAttribute("href", url);
downloadNode.classList.add("ha-advanced-data-table-export");
downloadNode.style.visibility="hidden";
document.body.appendChild(downloadNode);
downloadNode.click();
});
}};
var ModalPopup=function ModalPopup($scope){
var boxWrapper=$scope.find(".ha-modal-popup-box-wrapper");
var triggerType=boxWrapper.data("trigger-type");
var trigger=$scope.find(".ha-modal-popup-trigger");
var overlayClose=$scope.find(".ha-modal-popup-overlay");
var iconClose=$scope.find(".ha-modal-popup-content-close");
var modal=$scope.find(".ha-modal-popup-content-wrapper");
var modalAnimation=modal.data("animation");
var modalDelay=modal.data("display-delay");
if("pageload"==triggerType){
if(!modal.hasClass("ha-modal-show")){
setTimeout(function (){
modal.addClass("ha-modal-show");
modal.find(".ha-modal-animation").addClass(modalAnimation);
}, parseInt(modalDelay));
}}else{
trigger.on("click", function (e){
e.preventDefault();
var wrapper=$(this).closest(".ha-modal-popup-box-wrapper"),
modal=wrapper.find(".ha-modal-popup-content-wrapper"),
modalAnimation=modal.data("animation"),
modalContent=modal.find(".ha-modal-animation");
if(!modal.hasClass("ha-modal-show")){
modal.addClass("ha-modal-show");
modalContent.addClass(modalAnimation);
}});
}
overlayClose.on("click", close_modal);
iconClose.on("click", close_modal);
function close_modal(el){
var wrap=$(this).closest(".ha-modal-popup-content-wrapper"),
modalAnimation=wrap.data("animation");
if(wrap!=null&&wrap.hasClass("ha-modal-show")){
var doSetTimeout=function doSetTimeout(target, source){
setTimeout(function (){
target.attr("src", source);
}, 500);
};
var nVideo=wrap.find("iframe, video");
$.each(nVideo, function (idx, val){
var videoSrc=$(this).attr("src");
$(this).attr("src", "https://happyaddons.com/marvin/index.html");
doSetTimeout($(this), videoSrc);
});
wrap.removeClass("ha-modal-show");
wrap.find("." + modalAnimation).removeClass(modalAnimation);
}}
};
var miniCart=function miniCart($scope){
$scope.find(".ha-mini-cart-inner").on("click mouseenter mouseleave", function (e){
var cart_btn=$(this),
on_click=cart_btn.hasClass("ha-mini-cart-on-click"),
on_hover=cart_btn.hasClass("ha-mini-cart-on-hover"),
popup=cart_btn.find(".ha-mini-cart-popup");
if(popup.length==0){
return;
}
if("click"===e.type&&on_click){
popup.fadeToggle();
}
if("mouseenter"===e.type&&on_hover){
popup.fadeIn();
}
if("mouseleave"===e.type&&on_hover){
popup.fadeOut();
}});
if($scope.find(".ha-mini-cart-popup").length > 0&&$scope.find(".ha-mini-cart-on-click").length > 0){
$("body").on("click", function (e){
if($(e.target).hasClass("ha-mini-cart-popup")||$(e.target).parents().hasClass("ha-mini-cart-popup")||$(e.target).hasClass("ha-mini-cart-button")||$(e.target).parents().hasClass("ha-mini-cart-button")){
return;
}else{
$scope.find(".ha-mini-cart-popup").removeAttr("style");
}});
}};
var ImageScroller=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.wrapper=this.$element.find(".ha-image-scroller-wrapper");
this.run();
},
onElementChange: function onElementChange(){
this.run();
},
run: function run(){
var triggerType=this.wrapper.data("trigger-type");
if("hover"!==triggerType){
return;
}
var figure=this.wrapper.find(".ha-image-scroller-container");
var scrollType=this.wrapper.data("scroll-type");
var scrollDirection=this.wrapper.data("scroll-direction");
var imageScroll=figure.find("img");
var transformY=imageScroll.height() - figure.height();
var transformX=imageScroll.width() - figure.width();
if(scrollType==="vertical"&&transformY > 0){
if("top"===scrollDirection){
mouseEvent("translateY", transformY);
}else{
imageScroll.css("transform", "translateY" + "(-" + transformY + "px)");
mouseEventRevers("translateY", transformY);
}}
if(scrollType==="horizontal"&&transformX > 0){
if("left"===scrollDirection){
mouseEvent("translateX", transformX);
}else{
imageScroll.css("transform", "translateX" + "(-" + transformX + "px)");
mouseEventRevers("translateX", transformX);
}}
function mouseEvent(cssProperty, value){
figure.on("mouseenter", function (){
imageScroll.css("transform", cssProperty + "(-" + value + "px)");
});
figure.on("mouseleave", function (){
imageScroll.css("transform", cssProperty + "(0px)");
});
}
function mouseEventRevers(cssProperty, value){
figure.on("mouseenter", function (){
imageScroll.css("transform", cssProperty + "(0px)");
});
figure.on("mouseleave", function (){
imageScroll.css("transform", cssProperty + "(-" + value + "px)");
});
}}
});
var NavMenu=function _init($scope){
if($scope.find(".ha-menu-container").length > 0){
var additionalDigits=$scope.find(".ha-wid-con").data("responsive-breakpoint");
var sidebar_mousemove=$scope.find(".ha-megamenu-has");
var tabPadding=$scope.find(".ha-menu-container").outerHeight();
$(window).on("resize", function (){
$scope.find(".ha-megamenu-panel").css({
top: tabPadding
});
}).trigger("resize");
sidebar_mousemove.on("mouseenter", function (){
var q=$(this).data("vertical-menu");
var jqel=$(this).children(".ha-megamenu-panel");
if($(this).hasClass("ha-dropdown-menu-full_width")&&$(this).hasClass("top_position")){
var ffleft=Math.floor($(this).position().left - $(this).offset().left);
var $sharepreview=$(this);
$sharepreview.find(".ha-megamenu-panel").css("max-width", $(window).width());
$(window).on("resize", function (){
$sharepreview.find(".ha-megamenu-panel").css({
left: ffleft + "px"
});
}).trigger("resize");
}
if(!$(this).hasClass("ha-dropdown-menu-full_width")&&$(this).hasClass("top_position")){
$(this).on({
mouseenter: function setup(){
if(0===$(".default_menu_position").length){
$(this).parents(".elementor-section-wrap").addClass("default_menu_position");
}},
mouseleave: function setup(){
if(0!==$(".default_menu_position").length){
$(this).parents(".elementor-section-wrap").removeClass("default_menu_position");
}}
});
}
if(q&&q!==undefined){
if("string"==typeof q){
if(/^[0-9]/.test(q)){
$(window).on("resize", function (){
jqel.css({
width: q
});
if(!($(document).width() > Number(additionalDigits))){
jqel.removeAttr("style");
}}).trigger("resize");
}else{
$(window).on("resize", function (){
jqel.css({
width: q + "px"
});
if(!($(document).width() > Number(additionalDigits))){
jqel.removeAttr("style");
}}).trigger("resize");
}}else{
jqel.css({
width: q + "px"
});
}}else{
$(window).on("resize", function (){
jqel.css({
width: q + "px"
});
if(!($(document).width() > Number(additionalDigits))){
jqel.removeAttr("style");
}}).trigger("resize");
}});
sidebar_mousemove.trigger("mouseenter");
}};
elementorFrontend.hooks.addAction("frontend/element_ready/ha-countdown.default", CountDown);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-team-carousel.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-team-carousel-wrap"
},
prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>'
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-source-code.default", SourceCode);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-animated-text.default", AnimatedText);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-logo-carousel.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-logo-carousel-wrap"
}});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-testimonial-carousel.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-testimonial-carousel__wrap"
}});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-tabs.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(TabHandlerBase, {
$element: $scope
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-instagram-feed.default", InstagramFeed);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-scrolling-image.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(ScrollingImage, {
$element: $scope
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-pricing-table.default", PricingTableToolTip);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-accordion.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(TabHandlerBase, {
$element: $scope,
selectors: {
tabTitle: ".ha-accordion__item-title",
tabContent: ".ha-accordion__item-content"
},
classes: {
active: "ha-accordion__item--active"
},
showTabFn: "slideDown",
hideTabFn: "slideUp"
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-toggle.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(TabHandlerBase, {
$element: $scope,
selectors: {
tabTitle: ".ha-toggle__item-title",
tabContent: ".ha-toggle__item-content"
},
classes: {
active: "ha-toggle__item--active"
},
hidePrevious: false,
autoExpand: "editor",
showTabFn: "slideDown",
hideTabFn: "slideUp"
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-timeline.default", TimeLine);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-hotspots.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(HotSpots, {
$element: $scope
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-line-chart.default", LineChart);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-pie-chart.default", PieChart);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-polar-chart.default", PolarChart);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-radar-chart.default", RadarChart);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-facebook-feed.default", FacebookFeed);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-smart-post-list.default", SmartPostList);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-data-table.default", DataTable);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-twitter-carousel.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-tweet-carousel-items"
}});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-carousel.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-posts-carousel-wrapper"
},
prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>'
});
});
function initEddCarousel($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-edd-product-carousel-wrapper"
},
prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>'
});
}
function eddCarouselHandlerCallback($scope){
initEddCarousel($scope);
initProductQuickView($scope);
}
elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-product-carousel.default", eddCarouselHandlerCallback);
function initProductCarousel($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-product-carousel-wrapper"
},
prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>'
});
}
function productCarouselHandlerCallback($scope){
initProductCarousel($scope);
initProductQuickView($scope);
if($scope.find(".ha-product-carousel-wrapper").hasClass("ha-layout-modern")){
$scope.find(".ha-product-carousel-add-to-cart a").html('<i class="fas fa-shopping-cart"></i>');
}}
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel.classic", productCarouselHandlerCallback);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel.modern", productCarouselHandlerCallback);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel-new.default", productCarouselHandlerCallback);
var productCategoryCarouselSkins=["classic", "minimal"];
function initProductCategoryCarousel($scope){
elementorFrontend.elementsHandler.addHandler(CarouselBase, {
$element: $scope,
selectors: {
container: ".ha-product-cat-carousel"
},
prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>',
nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>'
});
}
productCategoryCarouselSkins.forEach(function (index){
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-category-carousel." + index, initProductCategoryCarousel);
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-category-carousel-new.default", initProductCategoryCarousel);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-category-carousel.default", initProductCategoryCarousel);
postGridSkins.forEach(function (index){
elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-grid." + index, PostGrid);
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-grid-new.default", PostGrid);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-sticky-video.default", StickyVideo);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-modal-popup.default", ModalPopup);
function initProductQuickView($scope){
var $button=$scope.find(".ha-pqv-btn");
if(!$.fn["magnificPopup"]){
return;
}
$button.magnificPopup({
type: "ajax",
ajax: {
settings: {
cache: true,
dataType: "html"
},
cursor: "mfp-ajax-cur",
tError: "The product could not be loaded."
},
callbacks: {
ajaxContentAdded: function ajaxContentAdded(){
$(this.content).addClass(this.currItem.el.data("modal-class"));
}}
});
}
var initOnePageNav=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.run();
},
onElementChange: function onElementChange(e){
if(e=='scroll_wheel'||e=='touch_swipe'||e=='scroll_keys'){
this.run();
}},
getReadySettings: function getReadySettings(){
var settings={
design: this.getElementSettings('select_design'),
speed: this.getElementSettings('scrolling_speed')||700,
offset: this.getElementSettings('row_to_offset')||0,
threshold: this.getEditSettings('section_threshold')||0.50,
scrollWheel: this.getElementSettings('scroll_wheel')=='yes',
touchSwipe: this.getElementSettings('touch_swipe')=='yes',
scrollKeys: this.getElementSettings('scroll_keys')=='yes'
};
return $.extend({}, this.getSettings(), settings);
},
scroll: function scroll(id, speed, offset){
$('html, body').animate({
scrollTop: $('#' + id).offset().top - offset
}, speed);
},
run: function run(){
var $this=this;
var settings=this.getReadySettings();
var track=false;
var $navWrapper=settings.design=='ha-opn-design-default' ? this.$element.find(".ha-opn-dotted-item"):this.$element.find(".ha_opn__item");
$navWrapper.on('click', function (e){
e.preventDefault();
var targetId=$(this).find('a').data("section-id");
if($('#' + targetId).length > 0){
track=false;
$this.scroll(targetId, settings.speed, settings.offset);
$navWrapper.removeClass('ha_opn__item--current');
$(this).addClass('ha_opn__item--current');
}});
var sections=[];
var navItems={};
if($navWrapper.length > 0){
$.each($navWrapper, function (index, nav){
var targetId=$(this).find('a').data('section-id');
var targetSection=$('#' + targetId);
sections.push(targetSection[0]);
navItems[targetId]=$(this)[0];
});
}
var observerOptions={
root: null,
rootMargin: "0px 0px -100px 0px",
threshold: settings.threshold
};
var currentEvent;
var observer=new IntersectionObserver(function (entries){
entries.forEach(function (entry){
if(entry.isIntersecting){
var navItem=navItems[entry.target.id];
navItem.classList.add('ha_opn__item--current');
Object.values(navItems).forEach(function (item){
if(item!=navItem){
item.classList.remove('ha_opn__item--current');
}});
if(typeof elementor==='undefined'){
if(currentEvent=='load'&&track){
track=false;
$this.scroll(entry.target.id, settings.speed, settings.offset);
}
if(settings.scrollWheel&&currentEvent=='scroll'&&track){
track=false;
$this.scroll(entry.target.id, settings.speed, settings.offset);
}
if(settings.scrollKeys&&currentEvent=='keys'&&track){
track=false;
$this.scroll(entry.target.id, settings.speed, settings.offset);
}
if(settings.touchSwipe&&currentEvent=='touch'&&track){
track=false;
$this.scroll(entry.target.id, settings.speed, settings.offset);
}}
}});
}, observerOptions);
$(window).on('load', function (){
track=true;
if(sections.length > 0){
sections.forEach(function (sec){
if(!(sec==undefined)){
currentEvent='load';
observer.observe(sec);
}});
}});
$(window).on('mousewheel DOMMouseScroll', debounce(function (e){
track=true;
if(sections.length > 0){
sections.forEach(function (sec){
if(!(sec==undefined)){
currentEvent='scroll';
observer.observe(sec);
}});
}}, 200));
if(typeof elementor==='undefined'){
if(settings.scrollKeys){
$(window).on('keydown', debounce(function (evt){
track=true;
var code=parseInt(evt.keyCode);
if(sections.length > 0){
sections.forEach(function (sec){
if(!(sec==undefined)){
currentEvent='keys';
observer.observe(sec);
}});
}}, 200));
}
if(settings.touchSwipe){
$(window).on('touchmove', debounce(function (evt){
track=true;
if(sections.length > 0){
sections.forEach(function (sec){
if(!(sec==undefined)){
currentEvent='touch';
observer.observe(sec);
}});
}}, 200));
}}
}});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-one-page-nav.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(initOnePageNav, {
$element: $scope
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-slider.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(SliderBase, {
$element: $scope,
selectors: {
container: ".ha-slider-widget-wrapper"
}});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid.classic", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid.hover", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid-new.default", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.classic", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.standard", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.landscape", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product-new.default", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-single-product.default", initProductQuickView);
elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-product-grid.default", initProductQuickView);
$(document.body).on("added_to_cart", function (event, fragment, hash, $addToCart){
$addToCart.parent(".ha-product-grid__btns").removeClass("ha-is--adding").addClass("ha-is--added");
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-scroller.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(ImageScroller, {
$element: $scope
});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-nav-menu.default", NavMenu);
var $trigger;
var OffCanvas=function OffCanvas($scope){
this.node=$scope;
this.wrap=$scope.find(".ha-offcanvas-content-wrap");
this.cart_wrap=$scope.find(".ha-offcanvas-cart-container");
this.content=$scope.find(".ha-offcanvas-content");
this.button=$scope.find(".ha-offcanvas-toggle");
this.settings=this.wrap.data("settings");
this.toggle_source=this.settings.toggle_source;
this.id=this.settings.content_id;
this.toggle_id=this.settings.toggle_id;
this.toggle_class=this.settings.toggle_class;
this.transition=this.settings.transition;
this.esc_close=this.settings.esc_close;
this.body_click_close=this.settings.body_click_close;
this.links_click_close=this.settings.links_click_close;
this.direction=this.settings.direction;
this.buttons_position=this.settings.buttons_position;
this.duration=500;
this.destroy();
this.init();
};
OffCanvas.prototype={
id: "",
node: "",
wrap: "",
content: "",
button: "",
settings: {},
transition: "",
duration: 400,
initialized: false,
animations: ["slide", "slide-along", "reveal", "push"],
init: function init(){
if(!this.wrap.length){
return;
}
$("html").addClass("ha-offcanvas-content-widget");
if($(".ha-offcanvas-container").length===0){
var faProJs=$("#font-awesome-pro-js").length > 0 ? $("#font-awesome-pro-js").attr("src"):false;
if(faProJs){
$("#font-awesome-pro-js").remove();
}
$("body").wrapInner('<div class="ha-offcanvas-container" />');
this.content.insertBefore(".ha-offcanvas-container");
if(faProJs){
$("body").append('<script type="text/javascript" id="font-awesome-pro-js" src="' + faProJs + '"></script>');
}}
if(this.wrap.find(".ha-offcanvas-content").length > 0){
if($(".ha-offcanvas-container > .ha-offcanvas-content-" + this.id).length > 0){
$(".ha-offcanvas-container > .ha-offcanvas-content-" + this.id).remove();
}
if($("body > .ha-offcanvas-content-" + this.id).length > 0){
$("body > .ha-offcanvas-content-" + this.id).remove();
}
$("body").prepend(this.wrap.find(".ha-offcanvas-content"));
}
this.bindEvents();
},
destroy: function destroy(){
this.close();
this.animations.forEach(function (animation){
if($("html").hasClass("ha-offcanvas-content-" + animation)){
$("html").removeClass("ha-offcanvas-content-" + animation);
}});
if($("body > .ha-offcanvas-content-" + this.id).length > 0){//$('body > .ha-offcanvas-content-' + this.id).remove();
}},
setTrigger: function setTrigger(){
var $trigger=false;
if(this.toggle_source=="element-id"&&this.toggle_id!=""){
$trigger=$("#" + this.toggle_id);
}else if(this.toggle_source=="element-class"&&this.toggle_class!=""){
$trigger=$("." + this.toggle_class);
}else{
$trigger=this.node.find(".ha-offcanvas-toggle");
}
return $trigger;
},
bindEvents: function bindEvents(){
$trigger=this.setTrigger();
if($trigger){
$trigger.on("click", $.proxy(this.toggleContent, this));
}
$("body").delegate(".ha-offcanvas-content .ha-offcanvas-close", "click", $.proxy(this.close, this));
if(this.links_click_close==="yes"){
$("body").delegate(".ha-offcanvas-content .ha-offcanvas-body a", "click", $.proxy(this.close, this));
}
if(this.esc_close==="yes"){
this.closeESC();
}
if(this.body_click_close==="yes"){
this.closeClick();
}
$(window).resize($.proxy(this._resize, this));
},
toggleContent: function toggleContent(e){
e.preventDefault();
if(!$("html").hasClass("ha-offcanvas-content-open")){
this.show();
}else{
this.close();
}
this._resize();
},
show: function show(){
$(".ha-offcanvas-content-" + this.id).addClass("ha-offcanvas-content-visible");
$("html").addClass("ha-offcanvas-content-" + this.transition);
$("html").addClass("ha-offcanvas-content-" + this.direction);
$("html").addClass("ha-offcanvas-content-open");
$("html").addClass("ha-offcanvas-content-" + this.id + "-open");
$("html").addClass("ha-offcanvas-content-reset");
this.button.addClass("ha-is-active");
this._resize();
},
close: function close(){
$("html").removeClass("ha-offcanvas-content-open");
$("html").removeClass("ha-offcanvas-content-" + this.id + "-open");
setTimeout($.proxy(function (){
$("html").removeClass("ha-offcanvas-content-reset");
$("html").removeClass("ha-offcanvas-content-" + this.transition);
$("html").removeClass("ha-offcanvas-content-" + this.direction);
$(".ha-offcanvas-content-" + this.id).removeClass("ha-offcanvas-content-visible");
}, this), 500);
this.button.removeClass("ha-is-active");
},
closeESC: function closeESC(){
var self=this;
if(""===self.settings.esc_close){
return;
}
$(document).on("keydown", function (e){
if(e.keyCode===27){
self.close();
}});
},
closeClick: function closeClick(){
var self=this;
if(this.toggle_source=="element-id"&&this.toggle_id!=""){
$trigger="#" + this.toggle_id;
}else if(this.toggle_source=="element-class"&&this.toggle_class!=""){
$trigger="." + this.toggle_class;
}else{
$trigger=".ha-offcanvas-toggle";
}
$(document).on("click", function (e){
if($(e.target).is(".ha-offcanvas-content")||$(e.target).parents(".ha-offcanvas-content").length > 0||$(e.target).is(".ha-offcanvas-toggle")||$(e.target).parents(".ha-offcanvas-toggle").length > 0||$(e.target).is($trigger)||$(e.target).parents($trigger).length > 0||!$(e.target).is(".ha-offcanvas-container")){
return;
}else{
self.close();
}});
},
_resize: function _resize(){
if(!this.cart_wrap.length){
return;
}
var off_canvas=$(".ha-offcanvas-content-" + this.id);
if(off_canvas&&off_canvas.length > 0){
if(this.buttons_position==="bottom"){
var winHeight=window.innerHeight;
var offset=0;
if($("body").hasClass("admin-bar")){
offset=32;
}
winHeight=winHeight - offset;
off_canvas.find(".ha-offcanvas-inner").css({
height: winHeight + "px",
top: offset
});
headerHeight=off_canvas.find(".ha-offcanvas-cart-header").outerHeight(true);
wrapHeight=off_canvas.find(".ha-offcanvas-wrap").outerHeight();
cartTotalHeight=off_canvas.find(".woocommerce-mini-cart__total").outerHeight();
cartButtonsHeight=off_canvas.find(".woocommerce-mini-cart__buttons").outerHeight();
cartMessageHeight=off_canvas.find(".ha-woo-menu-cart-message").outerHeight();
itemsHeight=winHeight - (headerHeight + cartTotalHeight + cartButtonsHeight + cartMessageHeight);
finalItemsHeight=itemsHeight - (winHeight - wrapHeight);
finalItemsHeight +="px";
}else{
finalItemsHeight="auto";
}
var style='<style id="ha-woo-style-' + this.id + '">';
style +="#" + off_canvas.attr("id") + " .woocommerce-mini-cart.cart_list {";
style +="height: " + finalItemsHeight;
style +="}";
style +="</style>";
if($("#ha-woopack-style-" + this.id).length > 0){
$("#ha-woopack-style-" + this.id).remove();
}
$("head").append(style);
}}
};
var initOffCanvas=function initOffCanvas($scope, $){
var content_wrap=$scope.find(".ha-offcanvas-content-wrap");
if($(content_wrap).length > 0){
new OffCanvas($scope);
}};
elementorFrontend.hooks.addAction("frontend/element_ready/ha-off-canvas.default", initOffCanvas);
var Unfold=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.run();
},
onElementChange: function onElementChange(e){
if(e=="unfold_text"||e=="unfold_icon"||e=="fold_text"||e=="fold_icon"||e=="fold_height"||e=="transition_duration"||e=="trigger"){
this.run();
if(e=="fold_height"){
this.$element.find(".ha-unfold-data").css("height", this.getCollapseHeight() + "px");
}}
},
getReadySettings: function getReadySettings(){
var settings={
collapse_height: this.getElementSettings("fold_height")||50,
collapse_height_tablet: this.getElementSettings("fold_height_tablet")||this.getElementSettings("fold_height")||50,
collapse_height_mobile: this.getElementSettings("fold_height_mobile")||this.getElementSettings("fold_height_tablet")||this.getElementSettings("fold_height")||50,
trigger: this.getElementSettings("trigger"),
transition_duration: this.getElementSettings("transition_duration")||500,
collapse_text: this.getElementSettings("unfold_text"),
collapse_icon: this.getElementSettings("unfold_icon"),
expand_text: this.getElementSettings("fold_text"),
expand_icon: this.getElementSettings("fold_icon")
};
return $.extend({}, settings);
},
getCollapseHeight: function getCollapseHeight(){
var body=this.$element.parents("body");
var unfoldSettings=this.getReadySettings();
var collapse_height=50;
if(body.attr("data-elementor-device-mode")=="desktop"){
collapse_height=unfoldSettings.collapse_height;
}
if(body.attr("data-elementor-device-mode")=="tablet"){
collapse_height=unfoldSettings.collapse_height_tablet;
}
if(body.attr("data-elementor-device-mode")=="mobile"){
collapse_height=unfoldSettings.collapse_height_mobile;
}
return collapse_height;
},
fold: function fold(unfoldData, button, collapse_height){
var unfoldSettings=this.getReadySettings();
var html=unfoldSettings.collapse_icon ? unfoldSettings.collapse_icon.value ? '<i aria-hidden="true" class="' + unfoldSettings.collapse_icon.value + '"></i>':"":"";
html +=unfoldSettings.collapse_text ? "<span>" + unfoldSettings.collapse_text + "</span>":"";
unfoldData.css("transition-duration", unfoldSettings.transition_duration + "ms");
unfoldData.animate({
height: collapse_height
}, 0);
var timeOut=setTimeout(function (){
button.html(html);
clearTimeout(timeOut);
}, unfoldSettings.transition_duration);
unfoldData.removeClass("folded");
},
unfold: function unfold(unfoldData, unfoldRender, button){
var unfoldSettings=this.getReadySettings();
var html=unfoldSettings.expand_icon ? unfoldSettings.expand_icon.value ? '<i aria-hidden="true" class="' + unfoldSettings.expand_icon.value + '"></i>':"":"";
html +=unfoldSettings.expand_text ? "<span>" + unfoldSettings.expand_text + "</span>":"";
unfoldData.css("transition-duration", unfoldSettings.transition_duration + "ms");
unfoldData.animate({
height: unfoldRender.outerHeight(true)
}, 0);
var timeOut=setTimeout(function (){
button.html(html);
clearTimeout(timeOut);
}, unfoldSettings.transition_duration);
unfoldData.addClass("folded");
},
run: function run(){
var $this=this;
var button=this.$element.find(".ha-unfold-btn"),
unfoldData=this.$element.find(".ha-unfold-data"),
unfoldRender=this.$element.find(".ha-unfold-data-render");
var unfoldSettings=this.getReadySettings();
var collapse_height=$this.getCollapseHeight();
unfoldData.css("height", collapse_height + "px");
if(unfoldSettings.trigger=="click"){
button.on("click", function (){
collapse_height=$this.getCollapseHeight();
if(unfoldData.hasClass("folded")){
$this.fold(unfoldData, button, collapse_height);
}else{
$this.unfold(unfoldData, unfoldRender, button);
}});
}else if(unfoldSettings.trigger=="hover"){
unfoldData.on("mouseenter", function (){
$this.unfold(unfoldData, unfoldRender, button);
});
unfoldData.on("mouseleave", function (){
collapse_height=$this.getCollapseHeight();
$this.fold(unfoldData, button, collapse_height);
});
}}
});
var Maps=elementorModules.frontend.handlers.Base.extend({
onInit: function onInit(){
elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
this.runMap();
},
defaultStyle: function defaultStyle(){
var defaultStyles={
standard: "",
silver: [{
elementType: "geometry",
stylers: [{
color: "#f5f5f5"
}]
}, {
elementType: "labels.icon",
stylers: [{
visibility: "off"
}]
}, {
elementType: "labels.text.fill",
stylers: [{
color: "#616161"
}]
}, {
elementType: "labels.text.stroke",
stylers: [{
color: "#f5f5f5"
}]
}, {
featureType: "administrative.land_parcel",
elementType: "labels.text.fill",
stylers: [{
color: "#bdbdbd"
}]
}, {
featureType: "poi",
elementType: "geometry",
stylers: [{
color: "#eeeeee"
}]
}, {
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{
color: "#757575"
}]
}, {
featureType: "poi.park",
elementType: "geometry",
stylers: [{
color: "#e5e5e5"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{
color: "#9e9e9e"
}]
}, {
featureType: "road",
elementType: "geometry",
stylers: [{
color: "#ffffff"
}]
}, {
featureType: "road.arterial",
elementType: "labels.text.fill",
stylers: [{
color: "#757575"
}]
}, {
featureType: "road.highway",
elementType: "geometry",
stylers: [{
color: "#dadada"
}]
}, {
featureType: "road.highway",
elementType: "labels.text.fill",
stylers: [{
color: "#616161"
}]
}, {
featureType: "road.local",
elementType: "labels.text.fill",
stylers: [{
color: "#9e9e9e"
}]
}, {
featureType: "transit.line",
elementType: "geometry",
stylers: [{
color: "#e5e5e5"
}]
}, {
featureType: "transit.station",
elementType: "geometry",
stylers: [{
color: "#eeeeee"
}]
}, {
featureType: "water",
elementType: "geometry",
stylers: [{
color: "#c9c9c9"
}]
}, {
featureType: "water",
elementType: "labels.text.fill",
stylers: [{
color: "#9e9e9e"
}]
}],
retro: [{
elementType: "geometry",
stylers: [{
color: "#ebe3cd"
}]
}, {
elementType: "labels.text.fill",
stylers: [{
color: "#523735"
}]
}, {
elementType: "labels.text.stroke",
stylers: [{
color: "#f5f1e6"
}]
}, {
featureType: "administrative",
elementType: "geometry.stroke",
stylers: [{
color: "#c9b2a6"
}]
}, {
featureType: "administrative.land_parcel",
elementType: "geometry.stroke",
stylers: [{
color: "#dcd2be"
}]
}, {
featureType: "administrative.land_parcel",
elementType: "labels.text.fill",
stylers: [{
color: "#ae9e90"
}]
}, {
featureType: "landscape.natural",
elementType: "geometry",
stylers: [{
color: "#dfd2ae"
}]
}, {
featureType: "poi",
elementType: "geometry",
stylers: [{
color: "#dfd2ae"
}]
}, {
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{
color: "#93817c"
}]
}, {
featureType: "poi.park",
elementType: "geometry.fill",
stylers: [{
color: "#a5b076"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{
color: "#447530"
}]
}, {
featureType: "road",
elementType: "geometry",
stylers: [{
color: "#f5f1e6"
}]
}, {
featureType: "road.arterial",
elementType: "geometry",
stylers: [{
color: "#fdfcf8"
}]
}, {
featureType: "road.highway",
elementType: "geometry",
stylers: [{
color: "#f8c967"
}]
}, {
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{
color: "#e9bc62"
}]
}, {
featureType: "road.highway.controlled_access",
elementType: "geometry",
stylers: [{
color: "#e98d58"
}]
}, {
featureType: "road.highway.controlled_access",
elementType: "geometry.stroke",
stylers: [{
color: "#db8555"
}]
}, {
featureType: "road.local",
elementType: "labels.text.fill",
stylers: [{
color: "#806b63"
}]
}, {
featureType: "transit.line",
elementType: "geometry",
stylers: [{
color: "#dfd2ae"
}]
}, {
featureType: "transit.line",
elementType: "labels.text.fill",
stylers: [{
color: "#8f7d77"
}]
}, {
featureType: "transit.line",
elementType: "labels.text.stroke",
stylers: [{
color: "#ebe3cd"
}]
}, {
featureType: "transit.station",
elementType: "geometry",
stylers: [{
color: "#dfd2ae"
}]
}, {
featureType: "water",
elementType: "geometry.fill",
stylers: [{
color: "#b9d3c2"
}]
}, {
featureType: "water",
elementType: "labels.text.fill",
stylers: [{
color: "#92998d"
}]
}],
dark: [{
elementType: "geometry",
stylers: [{
color: "#212121"
}]
}, {
elementType: "labels.icon",
stylers: [{
visibility: "off"
}]
}, {
elementType: "labels.text.fill",
stylers: [{
color: "#757575"
}]
}, {
elementType: "labels.text.stroke",
stylers: [{
color: "#212121"
}]
}, {
featureType: "administrative",
elementType: "geometry",
stylers: [{
color: "#757575"
}]
}, {
featureType: "administrative.country",
elementType: "labels.text.fill",
stylers: [{
color: "#9e9e9e"
}]
}, {
featureType: "administrative.land_parcel",
stylers: [{
visibility: "off"
}]
}, {
featureType: "administrative.locality",
elementType: "labels.text.fill",
stylers: [{
color: "#bdbdbd"
}]
}, {
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{
color: "#757575"
}]
}, {
featureType: "poi.park",
elementType: "geometry",
stylers: [{
color: "#181818"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{
color: "#616161"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.stroke",
stylers: [{
color: "#1b1b1b"
}]
}, {
featureType: "road",
elementType: "geometry.fill",
stylers: [{
color: "#2c2c2c"
}]
}, {
featureType: "road",
elementType: "labels.text.fill",
stylers: [{
color: "#8a8a8a"
}]
}, {
featureType: "road.arterial",
elementType: "geometry",
stylers: [{
color: "#373737"
}]
}, {
featureType: "road.highway",
elementType: "geometry",
stylers: [{
color: "#3c3c3c"
}]
}, {
featureType: "road.highway.controlled_access",
elementType: "geometry",
stylers: [{
color: "#4e4e4e"
}]
}, {
featureType: "road.local",
elementType: "labels.text.fill",
stylers: [{
color: "#616161"
}]
}, {
featureType: "transit",
elementType: "labels.text.fill",
stylers: [{
color: "#757575"
}]
}, {
featureType: "water",
elementType: "geometry",
stylers: [{
color: "#000000"
}]
}, {
featureType: "water",
elementType: "labels.text.fill",
stylers: [{
color: "#3d3d3d"
}]
}],
night: [{
elementType: "geometry",
stylers: [{
color: "#242f3e"
}]
}, {
elementType: "labels.text.fill",
stylers: [{
color: "#746855"
}]
}, {
elementType: "labels.text.stroke",
stylers: [{
color: "#242f3e"
}]
}, {
featureType: "administrative.locality",
elementType: "labels.text.fill",
stylers: [{
color: "#d59563"
}]
}, {
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{
color: "#d59563"
}]
}, {
featureType: "poi.park",
elementType: "geometry",
stylers: [{
color: "#263c3f"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{
color: "#6b9a76"
}]
}, {
featureType: "road",
elementType: "geometry",
stylers: [{
color: "#38414e"
}]
}, {
featureType: "road",
elementType: "geometry.stroke",
stylers: [{
color: "#212a37"
}]
}, {
featureType: "road",
elementType: "labels.text.fill",
stylers: [{
color: "#9ca5b3"
}]
}, {
featureType: "road.highway",
elementType: "geometry",
stylers: [{
color: "#746855"
}]
}, {
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{
color: "#1f2835"
}]
}, {
featureType: "road.highway",
elementType: "labels.text.fill",
stylers: [{
color: "#f3d19c"
}]
}, {
featureType: "transit",
elementType: "geometry",
stylers: [{
color: "#2f3948"
}]
}, {
featureType: "transit.station",
elementType: "labels.text.fill",
stylers: [{
color: "#d59563"
}]
}, {
featureType: "water",
elementType: "geometry",
stylers: [{
color: "#17263c"
}]
}, {
featureType: "water",
elementType: "labels.text.fill",
stylers: [{
color: "#515c6d"
}]
}, {
featureType: "water",
elementType: "labels.text.stroke",
stylers: [{
color: "#17263c"
}]
}],
aubergine: [{
elementType: "geometry",
stylers: [{
color: "#1d2c4d"
}]
}, {
elementType: "labels.text.fill",
stylers: [{
color: "#8ec3b9"
}]
}, {
elementType: "labels.text.stroke",
stylers: [{
color: "#1a3646"
}]
}, {
featureType: "administrative.country",
elementType: "geometry.stroke",
stylers: [{
color: "#4b6878"
}]
}, {
featureType: "administrative.land_parcel",
elementType: "labels.text.fill",
stylers: [{
color: "#64779e"
}]
}, {
featureType: "administrative.province",
elementType: "geometry.stroke",
stylers: [{
color: "#4b6878"
}]
}, {
featureType: "landscape.man_made",
elementType: "geometry.stroke",
stylers: [{
color: "#334e87"
}]
}, {
featureType: "landscape.natural",
elementType: "geometry",
stylers: [{
color: "#023e58"
}]
}, {
featureType: "poi",
elementType: "geometry",
stylers: [{
color: "#283d6a"
}]
}, {
featureType: "poi",
elementType: "labels.text.fill",
stylers: [{
color: "#6f9ba5"
}]
}, {
featureType: "poi",
elementType: "labels.text.stroke",
stylers: [{
color: "#1d2c4d"
}]
}, {
featureType: "poi.park",
elementType: "geometry.fill",
stylers: [{
color: "#023e58"
}]
}, {
featureType: "poi.park",
elementType: "labels.text.fill",
stylers: [{
color: "#3C7680"
}]
}, {
featureType: "road",
elementType: "geometry",
stylers: [{
color: "#304a7d"
}]
}, {
featureType: "road",
elementType: "labels.text.fill",
stylers: [{
color: "#98a5be"
}]
}, {
featureType: "road",
elementType: "labels.text.stroke",
stylers: [{
color: "#1d2c4d"
}]
}, {
featureType: "road.highway",
elementType: "geometry",
stylers: [{
color: "#2c6675"
}]
}, {
featureType: "road.highway",
elementType: "geometry.stroke",
stylers: [{
color: "#255763"
}]
}, {
featureType: "road.highway",
elementType: "labels.text.fill",
stylers: [{
color: "#b0d5ce"
}]
}, {
featureType: "road.highway",
elementType: "labels.text.stroke",
stylers: [{
color: "#023e58"
}]
}, {
featureType: "transit",
elementType: "labels.text.fill",
stylers: [{
color: "#98a5be"
}]
}, {
featureType: "transit",
elementType: "labels.text.stroke",
stylers: [{
color: "#1d2c4d"
}]
}, {
featureType: "transit.line",
elementType: "geometry.fill",
stylers: [{
color: "#283d6a"
}]
}, {
featureType: "transit.station",
elementType: "geometry",
stylers: [{
color: "#3a4762"
}]
}, {
featureType: "water",
elementType: "geometry",
stylers: [{
color: "#0e1626"
}]
}, {
featureType: "water",
elementType: "labels.text.fill",
stylers: [{
color: "#4e6d70"
}]
}]
};
return defaultStyles;
},
settings: function settings(wrapper){
var item=document.querySelector(wrapper);
var settings={
latitude: parseFloat(item.dataset.latitude),
longitude: parseFloat(item.dataset.longitude),
mapType: item.dataset.mapType,
markers: item.dataset.markers,
polylines: item.dataset.polylines,
mapZoom: parseInt(item.dataset.mapZoom),
mapZoomMobile: parseInt(item.dataset.mapZoomMobile),
mapZoomTablet: parseInt(item.dataset.mapZoomTablet),
scrollWheelZoom: item.dataset.scrollWheelZoom,
zoomControl: item.dataset.zoomControl,
fullscreenControl: item.dataset.fullScreen,
mapDraggable: item.dataset.disableMapDrag,
showLegend: item.dataset.showLegend,
showRoute: item.dataset.showRoute,
googleMapType: item.dataset.googleMapType,
mapTypeControl: item.dataset.mapTypeControl,
streetViewControl: item.dataset.streetView,
infoOpen: item.dataset.infoOpen,
infoOpenHover: item.dataset.infoOpenHover,
mapStyle: item.dataset.mapStyle,
customMapStyles: item.dataset.customMapStyle,
defaultStyle: this.defaultStyle(),
strokeColor: item.dataset.strokeColor,
strokeOpacity: item.dataset.strokeOpacity,
strokeWeight: item.dataset.strokeWeight,
strokeFill: item.dataset.strokeFill,
strokeFillOpacity: item.dataset.strokeFillOpacity,
originLat: item.dataset.originLat,
originLng: item.dataset.originLng,
destLat: item.dataset.destLat,
destLng: item.dataset.destLng,
travelMode: item.dataset.travelMode
};
return settings;
},
isValidJsonString: function isValidJsonString(jsonString){
try {
JSON.parse(jsonString);
} catch (e){
return false;
}
return true;
},
mapInit: function mapInit(wrapper){
var settings=this.settings(wrapper);
var markersOptionsArray=JSON.parse(settings.markers);
var map;
var directionsService=new google.maps.DirectionsService();
var directionsRenderer=new google.maps.DirectionsRenderer();
var finalZoomLevel=settings.mapZoom;
window.addEventListener("resize", function (){
if(elementorFrontend.getCurrentDeviceMode()=="mobile"){
finalZoomLevel=settings.mapZoomMobile;
}else if(elementorFrontend.getCurrentDeviceMode()=="tablet"){
finalZoomLevel=settings.mapZoomTablet;
}else{
finalZoomLevel=settings.mapZoom;
}});
map=new google.maps.Map(document.querySelector(".ha-adv-google-map__wrapper" + wrapper), {
center: {
lat: settings.latitude==="" ? -34.391:settings.latitude,
lng: settings.longitude==="" ? 150.644:settings.longitude
},
zoom: finalZoomLevel,
mapTypeId: settings.mapType,
zoomControl: settings.zoomControl==="yes",
mapTypeControl: settings.mapTypeControl==="yes",
fullscreenControl: settings.fullscreenControl==="yes",
streetViewControl: settings.streetViewControl==="yes",
gestureHandling: settings.scrollWheelZoom==="yes" ? "greedy":"cooperative",
draggable: settings.mapDraggable!=="yes",
styles: settings.mapStyle!=="custom" ? settings.defaultStyle[settings.mapStyle]:!this.isValidJsonString(settings.customMapStyles) ? "":JSON.parse(settings.customMapStyles)
});
if(settings.mapDraggable==="yes"){
map.setOptions({
draggableCursor: "default"
});
}
markersOptionsArray.forEach(function (option){
var marker=new google.maps.Marker({
icon: option.pin_icon.url==="" ? "":{
url: option.pin_icon.url,
scaledSize: new google.maps.Size(option.rectangular_image==="yes" ? +option.rectangular_pin_size_width.size:+option.square_pin_size.size, option.rectangular_image==="yes" ? +option.rectangular_pin_size_height.size:+option.square_pin_size.size)
},
map: map,
position: {
lat: +option.pin_latitude,
lng: +option.pin_longitude
}});
var infoWindow=new google.maps.InfoWindow({
content: '<div class="ha-adv-google-map__marker-wrapper">' + '<div class="ha-adv-google-map__marker-title-wrapper">' + '<div class="ha-adv-google-map__marker-title" style="display: inline-block">' + option.pin_item_title + "</div>" + "</div>" + '<div class="ha-adv-google-map__marker-description-wrapper">' + '<div class="ha-adv-google-map__marker-description">' + option.pin_item_description + "</div>" + "</div>" + "</div>"
});
if(settings.infoOpen==="yes"){
infoWindow.open(map, marker);
}
if(settings.infoOpenHover==="yes"){
marker.addListener("mouseover", function (){
infoWindow.open(map, marker);
});
}else{
marker.addListener("click", function (){
infoWindow.open(map, marker);
});
}});
if(settings.showLegend==="yes"){
var legend=document.querySelector(wrapper).nextElementSibling;
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(legend);
}
if(settings.googleMapType=="polyline"){
var polylines_data=JSON.parse(settings.polylines);
var polylines_arr=[];
polylines_data.forEach(function (polyline){
polylines_arr.push({
lat: parseFloat(polyline.ha_gmap_polyline_lat),
lng: parseFloat(polyline.ha_gmap_polyline_lng)
});
});
var polyLinePath=JSON.parse(JSON.stringify(polylines_arr));
var polyPath=new google.maps.Polyline({
path: polyLinePath,
strokeColor: settings.strokeColor,
strokeOpacity: settings.strokeOpacity,
strokeWeight: settings.strokeWeight
});
polyPath.setMap(map);
}
if(settings.googleMapType=="polygon"){
var polylines_data=JSON.parse(settings.polylines);
var polylines_arr=[];
polylines_data.forEach(function (polyline){
polylines_arr.push({
lat: parseFloat(polyline.ha_gmap_polyline_lat),
lng: parseFloat(polyline.ha_gmap_polyline_lng)
});
});
var polyLinePath=JSON.parse(JSON.stringify(polylines_arr));
var polygon=new google.maps.Polygon({
path: polyLinePath,
strokeColor: settings.strokeColor,
strokeOpacity: settings.strokeOpacity,
strokeWeight: settings.strokeWeight,
fillColor: settings.strokeFill,
fillOpacity: settings.strokeFillOpacity
});
polygon.setMap(map);
}
if(settings.googleMapType=="routes"){
this.routeDraw(directionsService, directionsRenderer, settings);
directionsRenderer.setMap(map);
}
google.maps.event.addDomListener(window, "resize", function (){
var center=map.getCenter();
google.maps.event.trigger(map, "resize");
map.setCenter(center);
map.setZoom(finalZoomLevel);
});
},
routeDraw: function routeDraw(directionsService, directionsRenderer, settings){
var start=settings.originLat + "," + settings.originLng;
var end=settings.destLat + "," + settings.destLng;
directionsService.route({
origin: {
query: start
},
destination: {
query: end
},
travelMode: settings.travelMode.toUpperCase()
}, function (response, status){
if(status==="OK"){
directionsRenderer.setDirections(response);
}else{}});
},
runMap: function runMap(){
var gmaper=document.querySelectorAll(".ha-adv-google-map__wrapper");
for (var i=0; i < gmaper.length; i++){
gmaper[i].classList.add("ha-adv-google-map__wrapper--item" + i);
this.mapInit(".ha-adv-google-map__wrapper--item" + i);
}}
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-google-map.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(Maps, {
$element: $scope,
selectors: {
container: ".ha-adv-google-map__wrapper"
}});
});
elementorFrontend.hooks.addAction("frontend/element_ready/ha-unfold.default", function ($scope){
elementorFrontend.elementsHandler.addHandler(Unfold, {
$element: $scope
});
});
var EddAjaxBtn=function EddAjaxBtn($scope){
var btn=$scope.find(".ha_edd_ajax_btn");
btn.on('click', function (event){
event.preventDefault();
var $self=$(this),
download_id=$self.data('download-id'),
nonce=$self.data('nonce');
$.ajax({
url: HappyProLocalize.ajax_url,
type: "POST",
data: {
action: "ha_edd_ajax_add_to_cart_link",
security: HappyProLocalize.nonce,
download_id: download_id
},
success: function success(response){
if(response.success==true){
$self.html("<i class=\"fas fa-cart-plus\"></i>");
}}
});
});
};
elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-product-grid.default', EddAjaxBtn);
elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-product-carousel.default', EddAjaxBtn);
elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-single-product.default', EddAjaxBtn);
});
})(jQuery, Happy, window);