( function( $ ) { UAELModalPopup = { /** * Place the Modal Popup on centre of screen * */ _center: function() { setTimeout( function() { $( '.uael-modal-parent-wrapper' ).each( function() { var $this = $( this ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); UAELModalPopup._centerModal( popup_id ); } ); }, 300 ); }, /** * Place the Modal Popup on centre of screen * */ _centerModal: function ( popup_id ) { var popup_wrap = $( '.uamodal-' + popup_id ), modal_popup = $( '#modal-' + popup_id ), extra_value = 0, close_handle = modal_popup.find( '.uael-modal-close' ), top_pos = ( ( $( window ).height() - modal_popup.outerHeight() ) / 2 ); if ( modal_popup.hasClass('uael-center-modal') ) { modal_popup.removeClass('uael-center-modal'); } if( close_handle.hasClass( 'uael-close-custom-popup-top-right' ) || close_handle.hasClass( 'uael-close-custom-popup-top-left' ) ) { extra_value = parseInt( close_handle.outerHeight() ); } if ( popup_wrap.find( '.uael-content' ).outerHeight() > $( window ).height() ) { top_pos = ( 20 + extra_value ); if( modal_popup.hasClass( 'uael-show' ) ) { $( 'html' ).addClass( 'uael-html-modal' ); modal_popup.addClass( 'uael-modal-scroll' ); var $admin_bar = $( '#wpadminbar' ); if( $admin_bar.length > 0 ) { top_pos = ( top_pos + parseInt( $admin_bar.outerHeight() ) ); } var modal_popup_content = modal_popup.find( '.uael-content' ); modal_popup_content.css( 'margin-top', + top_pos +'px' ); modal_popup_content.css( 'margin-bottom', '20px' ); } } else { top_pos = ( parseInt( top_pos ) + 20 ); } modal_popup.css( 'top', + top_pos +'px' ); modal_popup.css( 'margin-bottom', '20px' ); }, /** * Invoke show modal popup * */ _show: function( popup_id ) { $( window ).trigger( 'uael_before_modal_popup_open', [ popup_id ] ); UAELModalPopup._autoPlay( popup_id ); var modal_popup = $( '#modal-' + popup_id ); if( modal_popup.hasClass( 'uael-modal-vimeo' ) || modal_popup.hasClass( 'uael-modal-youtube' ) ) { setTimeout( function() { modal_popup.addClass( 'uael-show' ); }, 300 ); } else { modal_popup.addClass( 'uael-show' ); } setTimeout( function() { modal_popup.removeClass( 'uael-effect-13' ); }, 1000 ); UAELModalPopup._centerModal( popup_id ); UAELModalPopup._afterOpen( popup_id ); }, /** * Invoke close modal popup * */ _close: function( popup_id ) { var modal_popup = $( '#modal-' + popup_id ); modal_popup.removeClass( 'uael-show' ); $( 'html' ).removeClass( 'uael-html-modal' ); modal_popup.removeClass( 'uael-modal-scroll' ); UAELModalPopup._stopVideo( popup_id ); var cookie_type = $( '.uamodal-' + popup_id ).data( 'cookies-type' ); if ( 'closed' === cookie_type ){ UAELModalPopup._setPopupCookie( popup_id ); } }, /** * Check all the end conditions to show modal popup * */ _canShow: function( popup_id ) {0 var is_cookie = $( '.uamodal-' + popup_id ).data( 'cookies' ); var current_cookie = Cookies.get( 'uael-modal-popup-' + popup_id ); var display = true; // Check if cookies settings are set if ( 'undefined' !== typeof is_cookie && 'yes' === is_cookie ) { if( 'undefined' !== typeof current_cookie && 'true' == current_cookie ) { display = false; } else { Cookies.remove( 'uael-modal-popup-' + popup_id ); } } else { Cookies.remove( 'uael-modal-popup-' + popup_id ); } // Check if any other modal is opened on screen. if( $( '.uael-show' ).length > 0 ) { display = false; } // Check if this is preview or actuall load. if( $( '#modal-' + popup_id ).hasClass( 'uael-modal-editor' ) ) { display = false; } return display; }, /** * Auto Play video * */ _autoPlay: function( popup_id ) { var active_popup = $( '.uamodal-' + popup_id ), video_autoplay = active_popup.data( 'autoplay' ), modal_content = active_popup.data( 'content' ), modal_popup = $( '#modal-' + popup_id ); if ( video_autoplay == 'yes' && ( modal_content == 'youtube' || modal_content == 'vimeo' ) ) { var vid_id = modal_popup.find( '.uael-video-player' ).data( 'id' ); if( 0 == modal_popup.find( '.uael-video-player iframe' ).length ) { modal_popup.find( '.uael-video-player div[data-id=' + vid_id + ']' ).trigger( 'click' ); } else { var modal_iframe = active_popup.find( 'iframe' ), modal_src = modal_iframe.attr( "src" ) + '&autoplay=1'; modal_iframe.attr( "src", modal_src ); } } if ( 'iframe' == modal_content ) { if( active_popup.find( '.uael-modal-content-data iframe' ).length == 0 ) { var src = active_popup.find( '.uael-modal-content-type-iframe' ).data( 'src' ); var iframe = document.createElement( "iframe" ); iframe.setAttribute( "src", src ); iframe.setAttribute( "style", "display:none;" ); iframe.setAttribute( "frameborder", "0" ); iframe.setAttribute( "allowfullscreen", "1" ); iframe.setAttribute( "width", "100%" ); iframe.setAttribute( "height", "100%" ); iframe.setAttribute( "class", "uael-content-iframe" ); var active_popup_data = active_popup.find( '.uael-modal-content-data' ); active_popup_data.html( iframe ); active_popup_data.append( '
' ); iframe.onload = function() { window.parent.jQuery( document ).find('#modal-' + popup_id + ' .uael-loader' ).fadeOut(); this.style.display='block'; }; } } }, /** * Stop playing video * */ _stopVideo: function( popup_id ) { var active_popup = $( '.uamodal-' + popup_id ), modal_content = active_popup.data( 'content' ); if ( modal_content != 'photo' ) { var modal_iframe = active_popup.find( 'iframe' ), modal_video_tag = active_popup.find( 'video' ); if ( modal_iframe.length ) { var modal_src = modal_iframe.attr( "src" ).replace( "&autoplay=1", "" ); modal_iframe.attr( "src", '' ); modal_iframe.attr( "src", modal_src ); } else if ( modal_video_tag.length ) { modal_video_tag[0].pause(); modal_video_tag[0].currentTime = 0; } } }, /** * Process after modal popup open event * */ _afterOpen: function( popup_id ) { var cookie_type = $( '.uamodal-' + popup_id ).data( 'cookies-type' ); if ( 'default' == cookie_type ){ UAELModalPopup._setPopupCookie( popup_id ); } $( window ).trigger( 'uael_after_modal_popup_open', [ popup_id ] ); }, /** * Process to set cookie * */ _setPopupCookie: function( popup_id ) { var current_cookie = Cookies.get( 'uael-modal-popup-' + popup_id ); var cookies_days = parseInt( $( '.uamodal-' + popup_id ).data( 'cookies-days' ) ); var url_condition = window.location.protocol === 'https:' ? true : ''; if( 'undefined' === typeof current_cookie && 'undefined' !== typeof cookies_days ) { Cookies.set( 'uael-modal-popup-' + popup_id, true, { expires: cookies_days, secure: url_condition } ); } }, } /** * ESC keypress event * */ $( document ).on( 'keyup', function( e ) { if ( 27 == e.keyCode ) { $( '.uael-modal-parent-wrapper' ).each( function() { var $this = $( this ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); var close_on_esc = $this.data( 'close-on-esc' ); if( 'yes' == close_on_esc ) { UAELModalPopup._close( popup_id ); } } ); } }); /** * Overlay click event * */ $( document ).on( 'click touchstart', '.uael-overlay, .uael-modal-scroll', function( e ) { if( $( e.target ).hasClass( 'uael-content' ) || $( e.target ).closest( '.uael-content' ).length > 0 ) { return; } var $this = $( this ).closest( '.uael-modal-parent-wrapper' ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); var close_on_overlay = $this.data( 'close-on-overlay' ); if( 'yes' == close_on_overlay ) { UAELModalPopup._close( popup_id ); } }); /** * Close img/icon clicked * */ $( document ).on( 'click', '.uael-modal-close, .uael-close-modal', function() { var $this = $( this ).closest( '.uael-modal-parent-wrapper' ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); UAELModalPopup._close( popup_id ); } ); /** * Trigger open modal popup on click img/icon/button/text * */ $( document ).on( 'click', '.uael-trigger', function() { var popup_id = $( this ).closest( '.elementor-element' ).data( 'id' ); var selector = $( '.uamodal-' + popup_id ); var trigger_on = selector.data( 'trigger-on' ); if( 'text' == trigger_on || 'icon' == trigger_on || 'photo' == trigger_on || 'button' == trigger_on ) { UAELModalPopup._show( popup_id ); } } ); /** * Center the modal popup event * */ $( document ).on( 'uael_modal_popup_init', function( e, node_id ) { if( $( '#modal-' + node_id ).hasClass( 'uael-show-preview' ) ) { setTimeout( function() { UAELModalPopup._show( node_id ); }, 400 ); } var overlay_node = $( '#' + node_id + '-overlay' ); var content_type = overlay_node.data( 'content' ); var device = overlay_node.data( 'device' ); if ( 'youtube' == content_type || 'vimeo' == content_type ) { if( 0 == $( '.uael-video-player iframe' ).length ) { $( '.uael-video-player' ).each( function( index, value ) { var div = $( "
" ), $this = $( this ); div.attr( 'data-id', $this.data( 'id' ) ); div.attr( 'data-src', $this.data( 'src' ) ); div.attr( 'data-sourcelink', $this.data( 'sourcelink' ) ); div.html( '
' ); div.on( "click", videoIframe ); $this.html( div ); if( true == device ) { $( div[0] ).trigger( 'click' ); } } ); } } UAELModalPopup._centerModal( node_id ); } ); /** * Resize event * */ $( window ).on( 'resize', function() { UAELModalPopup._center(); } ); /** * Exit intent event * */ $( document ).on( 'mouseleave', function( e ) { if ( e.clientY > 20 ) { return; } $( '.uael-modal-parent-wrapper' ).each( function() { var $this = $( this ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); var trigger_on = $this.data( 'trigger-on' ); var exit_intent = $this.data( 'exit-intent' ); if( 'automatic' == trigger_on ) { if( 'yes' == exit_intent && UAELModalPopup._canShow( popup_id ) ) { UAELModalPopup._show( popup_id ); } } } ); } ); function videoIframe() { var iframe = document.createElement( "iframe" ); var src = this.dataset.src; var url = ''; if ( 'youtube' == src ) { url = this.dataset.sourcelink; } else { url = this.dataset.sourcelink; } iframe.setAttribute( "src", url ); iframe.setAttribute( "frameborder", "0" ); iframe.setAttribute( "allowfullscreen", "1" ); this.parentNode.replaceChild( iframe, this ); } /** * Load page event * */ $( document ).ready( function( e ) { var current_url = window.location.href; if( current_url.indexOf( '&action=elementor' ) <= 0 ) { $( '.uael-modal-parent-wrapper' ).each( function() { $( this ).appendTo( document.body ); }); } UAELModalPopup._center(); $( '.uael-modal-content-data' ).resize( function() { UAELModalPopup._center(); } ); $( '.uael-modal-parent-wrapper' ).each( function() { var $this = $( this ); var tmp_id = $this.attr( 'id' ); var popup_id = tmp_id.replace( '-overlay', '' ); var trigger_on = $this.data( 'trigger-on' ); var after_sec = $this.data( 'after-sec' ); var after_sec_val = $this.data( 'after-sec-val' ); var custom = $this.data( 'custom' ); var custom_id = $this.data( 'custom-id' ); // Trigger automatically. if( 'automatic' == trigger_on ) { if( 'yes' == after_sec && 'undefined' != typeof after_sec_val ) { var id = popup_id; setTimeout( function() { if( UAELModalPopup._canShow( id ) ) { UAELModalPopup._show( id ); } }, ( parseInt( after_sec_val ) * 1000 ) ); } } // Custom Class click event if( 'custom' == trigger_on ) { if( 'undefined' != typeof custom && '' != custom ) { var custom_selectors = custom.split( ',' ); if( custom_selectors.length > 0 ) { for( var i = 0; i < custom_selectors.length; i++ ) { if( 'undefined' != typeof custom_selectors[i] && '' != custom_selectors[i] ) { $('.' + custom_selectors[i]).css("cursor", "pointer"); $( document ).on( 'click', '.' + custom_selectors[i], function() { UAELModalPopup._show( popup_id ); } ); } } } } } // Custom ID click event if( 'custom_id' == trigger_on ) { if( 'undefined' != typeof custom_id && '' != custom_id ) { var custom_selectors = custom_id.split( ',' ); if( custom_selectors.length > 0 ) { for( var i = 0; i < custom_selectors.length; i++ ) { if( 'undefined' != typeof custom_selectors[i] && '' != custom_selectors[i] ) { $('#' + custom_selectors[i]).css("cursor", "pointer"); $( document ).on( 'click', '#' + custom_selectors[i], function() { UAELModalPopup._show( popup_id ); } ); } } } } } if( 'via_url' == trigger_on ) { var path = window.location.href; var page_url = new URL( path ); var param_modal_id = page_url.searchParams.get( "uael-modal-action" ); if( param_modal_id === popup_id ) { UAELModalPopup._show( param_modal_id ); } } } ); } ); /** * Modal popup handler Function. * */ var WidgetUAELModalPopupHandler = function( $scope, $ ) { if ( 'undefined' == typeof $scope ) return; var scope_id = $scope.data( 'id' ), modal_scope = $( '.uamodal-' + scope_id ); if ( $scope.hasClass('elementor-hidden-desktop') ) { modal_scope.addClass( 'uael-modal-hide-desktop' ); } if ( $scope.hasClass('elementor-hidden-tablet') ) { modal_scope.addClass( 'uael-modal-hide-tablet' ); } if ( $scope.hasClass('elementor-hidden-phone') ) { modal_scope.addClass( 'uael-modal-hide-phone' ); } $( document ).trigger( 'uael_modal_popup_init', scope_id ); }; $( window ).on( 'elementor/frontend/init', function () { elementorFrontend.hooks.addAction( 'frontend/element_ready/uael-modal-popup.default', WidgetUAELModalPopupHandler ); }); } )( jQuery );