( function( $, elementor ) { "use strict"; var WPKoiElements = { init: function() { elementor.hooks.addAction( 'frontend/element_ready/section', WPKoiElements.elementorSection ); }, elementorSection: function( $scope ) { var $target = $scope, instance = null, editMode = Boolean( elementor.isEditMode() ); instance = new wpkoiSectionParallax( $target ); instance.init(); }, }; $( window ).on( 'elementor/frontend/init', WPKoiElements.init ); window.wpkoiSectionParallax = function( $target ) { var self = this, sectionId = $target.data('id'), settings = false, editMode = Boolean( elementor.isEditMode() ), $window = $( window ), $body = $( 'body' ), scrollLayoutList = [], mouseLayoutList = [], winScrollTop = $window.scrollTop(), winHeight = $window.height(), requesScroll = null, requestMouse = null, tiltx = 0, tilty = 0, isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/), platform = navigator.platform; self.init = function() { if ( ! editMode ) { settings = self.getSettingsFromSection($target); } else { settings = self.generateEditorSettings( sectionId ); } if (!settings) { return false; } $target.addClass('wpkoi-parallax-section'); self.generateLayouts(); if (scrollLayoutList.length !== 0) { $window.on('scroll.wpkoiSectionParallax resize.wpkoiSectionParallax', self.scrollHandler ); } self.scrollUpdate(); }; self.generateEditorSettings = function( sectionId ) { var editorElements = null, sectionsData = {}, sectionData = {}, sectionParallaxData = {}, settings = []; if ( ! window.elementor.hasOwnProperty( 'elements' ) ) { return false; } editorElements = window.elementor.elements; if ( ! editorElements.models ) { return false; } $.each( editorElements.models, function( index, obj ) { if ( sectionId == obj.id ) { sectionData = obj.attributes.settings.attributes; } } ); if ( ! sectionData.hasOwnProperty( 'wpkoi_parallax_layout_image' ) || 0 === Object.keys( sectionData ).length ) { return false; } return { 'wpkoi_parallax_layout_list' : { 'imageData': sectionData['wpkoi_parallax_layout_image'] || '', 'wpkoi_parallax_layout_image' : sectionData['wpkoi_parallax_layout_image'] || '', 'wpkoi_parallax_layout_speed': sectionData['wpkoi_parallax_layout_speed'] || 50, 'wpkoi_parallax_layout_type': sectionData['wpkoi_parallax_layout_type'] || 'scroll', 'wpkoi_parallax_layout_scale': sectionData['wpkoi_parallax_layout_scale'] || 100, 'wpkoi_parallax_layout_bg_x': sectionData['wpkoi_parallax_layout_bg_x'] || 50, 'wpkoi_parallax_layout_bg_y': sectionData['wpkoi_parallax_layout_bg_y'] || 50, 'wpkoi_parallax_layout_z_index': sectionData['wpkoi_parallax_layout_z_index'] || '', 'wpkoi_parallax_layout_bg_size': sectionData['wpkoi_parallax_layout_bg_size'] || 'auto', 'wpkoi_parallax_layout_animation_prop': sectionData['wpkoi_parallax_layout_animation_prop'] || 'transform', } } }; self.getSettingsFromSection = function($target) { var sectionSettings = $target.data('settings') || {}; if (!sectionSettings.hasOwnProperty('wpkoi_parallax_layout_image') || !sectionSettings.wpkoi_parallax_layout_image.url) { return false; } return [{ 'wpkoi_parallax_layout_image': sectionSettings.wpkoi_parallax_layout_image, 'wpkoi_parallax_layout_speed': sectionSettings.wpkoi_parallax_layout_speed || {'unit':'%','size':10}, 'wpkoi_parallax_layout_type': sectionSettings.wpkoi_parallax_layout_type || 'mouse', 'wpkoi_parallax_layout_scale': sectionSettings.wpkoi_parallax_layout_scale || {'unit':'%','size':100}, 'wpkoi_parallax_layout_bg_x': sectionSettings.wpkoi_parallax_layout_bg_x || 50, 'wpkoi_parallax_layout_bg_y': sectionSettings.wpkoi_parallax_layout_bg_y || 50, 'wpkoi_parallax_layout_z_index': sectionSettings.wpkoi_parallax_layout_z_index || '', 'wpkoi_parallax_layout_bg_size': sectionSettings.wpkoi_parallax_layout_bg_size || 'contain', 'wpkoi_parallax_layout_animation_prop': sectionSettings.wpkoi_parallax_layout_animation_prop || 'transform', }]; }; self.generateLayouts = function() { $('.wpkoi-parallax-section__layout', $target).remove(); $.each(settings, function(index, layout) { var mmscales = layout['wpkoi_parallax_layout_scale']['size'] || 100; var imageData = layout['wpkoi_parallax_layout_image'], speed = layout['wpkoi_parallax_layout_speed']['size'] || 200, speed = speed / 3, speedmatrix = speed / 10, mmspeed = 100 - speed, mmscale = mmscales, mmscaleste = mmscale / 100, zIndex = layout['wpkoi_parallax_layout_z_index'], bgSize = layout['wpkoi_parallax_layout_bg_size'] || 'auto', animProp = layout['wpkoi_parallax_layout_animation_prop'] || 'bgposition', bgX = layout['wpkoi_parallax_layout_bg_x'], bgY = layout['wpkoi_parallax_layout_bg_y'], type = layout['wpkoi_parallax_layout_type'] || 'none', idofimage = 'koi55555', $layout = null, safariClass = isSafari ? ' is-safari' : '', macClass = platform === 'MacIntel' ? ' is-mac' : '', newtrickDeviceMode = elementorFrontend.getCurrentDeviceMode(); if (!imageData.url) { return false; } if (type === 'mouse') { $layout = $('
') .prependTo($target) .css({ 'z-index': zIndex }); } else if (type === 'matrix') { $layout = $('
') .prependTo($target) .css({ 'z-index': zIndex }); } else { $layout = $('
') .prependTo($target) .css({ 'z-index': zIndex }); } $('.wpkoi-parallax-section__image', $layout).css({ 'background-image': 'url(' + imageData.url + ')', 'background-size': bgSize, 'background-position-x': bgX + '%', 'background-position-y': bgY + '%', }); var layoutData = { selector: $layout, image: imageData.url, size: bgSize, prop: animProp, type: type, xPos: bgX, yPos: bgY, speed: 2 * (speed / 100) }; if (type !== 'none') { if (type === 'scroll' || type === 'zoom') { scrollLayoutList.push(layoutData); } else if (type === 'mouse') { mouseLayoutList.push(layoutData); } } }); }; self.scrollHandler = function() { winScrollTop = $window.scrollTop(); self.scrollUpdate(); }; self.scrollUpdate = function() { $.each(scrollLayoutList, function(index, layout) { var $this = layout.selector, $image = $( '.wpkoi-parallax-section__image', $this ), speed = layout.speed, offsetTop = $this.offset().top, thisHeight = $this.outerHeight(), prop = layout.prop, type = layout.type, posY = ( winScrollTop - offsetTop + winHeight ) / thisHeight * 100, device = elementorFrontend.getCurrentDeviceMode(); if ( winScrollTop < offsetTop - winHeight ) posY = 0; if ( winScrollTop > offsetTop + thisHeight) posY = 200; posY = parseFloat( speed * posY ).toFixed(1); switch( type ) { case 'scroll': if ( 'bgposition' === layout.prop ) { $image.css( { 'background-position-y': 'calc(' + layout.yPos + '% + ' + posY + 'px)' } ); } else { $image.css( { 'transform': 'translateY(' + posY + 'px)' } ); } break; case 'zoom': var deltaScale = ( winScrollTop - offsetTop + winHeight ) / winHeight, scale = deltaScale * speed; scale = scale + 1; $image.css( { 'transform': 'scale(' + scale + ')' } ); break; } }); }; self.mouseHandler = function(event) { if (requestMouse) { cancelAnimationFrame(requestMouse); } tiltx = (event.pageX - $window.width() / 2) / ($window.width() / 2); tilty = (event.pageY - $window.height() / 2) / ($window.height() / 2); requestMouse = requestAnimationFrame(self.mouseUpdate); }; self.mouseUpdate = function() { $.each(mouseLayoutList, function(index, layout) { $(layout.selector).css('transform', 'translate3d(' + (tiltx * layout.speed * 100) + 'px, ' + (tilty * layout.speed * 100) + 'px, 0) scale(' + layout.scale + ')'); }); }; }; } )( jQuery, window.elementorFrontend ); function Parallax(options){ jQuery(document).ready(function($) { options = options || {}; this.nameSpaces = { wrapper: options.wrapper || '.wpkoi-parallax-section', layers: options.layers || '.wpkoi-parallax-section__mouse-layout .wpkoi-parallax-section__image', deep: options.deep || 'data-parallax-deep', scale: options.scale || 'data-parallax-scale' }; this.init = function() { var self = this, parallaxWrappers = document.querySelectorAll(this.nameSpaces.wrapper); for(var i = 0; i < parallaxWrappers.length; i++){ (function(i){ parallaxWrappers[i].addEventListener('mousemove', function(e){ var x = e.clientX, y = e.clientY, layers = parallaxWrappers[i].querySelectorAll(self.nameSpaces.layers); for(var j = 0; j < layers.length; j++){ (function(j){ var deep = layers[j].getAttribute(self.nameSpaces.deep), scale = layers[j].getAttribute(self.nameSpaces.scale), scale = scale / 100, disallow = layers[j].getAttribute('data-parallax-disallow'), itemX = (disallow && disallow === 'x') ? 0 : x / deep - 10, itemY = (disallow && disallow === 'y') ? 0 : y / deep - 10; if(disallow && disallow === 'both') return; layers[j].style.transform = 'translateX(' + itemX + '%) translateY(' + itemY + '%) scale(' + scale + ')'; layers[j].style.transitionDuration = '0s'; })(j); } }) parallaxWrappers[i].addEventListener('mouseleave', function(e){ var layers = parallaxWrappers[i].querySelectorAll(self.nameSpaces.layers); for(var j = 0; j < layers.length; j++){ (function(j){ var scale = layers[j].getAttribute(self.nameSpaces.scale), scale = scale / 100, disallow = layers[j].getAttribute('data-parallax-disallow'); if(disallow && disallow === 'both') return; layers[j].style.transform = 'translateX(0%) translateY(0%) scale(' + scale + ')'; layers[j].style.transitionDuration = '0.5s'; })(j); } }) })(i); } }; this.init(); return this; }); } jQuery(document).ready(function($) { new Parallax(); }); jQuery(function(l){if("undefined"==typeof wc_address_i18n_params)return!1;var e=wc_address_i18n_params.locale.replace(/"/g,'"'),n=JSON.parse(e);function o(e,a){a?(e.find("label .optional").remove(),e.addClass("validate-required"),0===e.find("label .required").length&&e.find("label").append(' *')):(e.find("label .required").remove(),e.removeClass("validate-required woocommerce-invalid woocommerce-invalid-required-field"),0===e.find("label .optional").length&&e.find("label").append(' ('+wc_address_i18n_params.i18n_optional_text+")"))}l(document.body).on("country_to_state_changing",function(e,a,i){var d=i,r="undefined"!=typeof n[a]?n[a]:n["default"],i=d.find("#billing_postcode_field, #shipping_postcode_field"),a=d.find("#billing_city_field, #shipping_city_field"),t=d.find("#billing_state_field, #shipping_state_field"),i=(i.attr("data-o_class")||(i.attr("data-o_class",i.attr("class")),a.attr("data-o_class",a.attr("class")),t.attr("data-o_class",t.attr("class"))),JSON.parse(wc_address_i18n_params.locale_fields));l.each(i,function(e,a){var a=d.find(a),i=l.extend(!0,{},n["default"][e],r[e]);"undefined"!=typeof i.label&&a.find("label").html(i.label),"undefined"!=typeof i.placeholder&&(a.find(":input").attr("placeholder",i.placeholder),a.find(":input").attr("data-placeholder",i.placeholder),a.find(".select2-selection__placeholder").text(i.placeholder)),"undefined"!=typeof i.placeholder||"undefined"==typeof i.label||a.find("label").length||(a.find(":input").attr("placeholder",i.label),a.find(":input").attr("data-placeholder",i.label),a.find(".select2-selection__placeholder").text(i.label)),"undefined"!=typeof i.required?o(a,i.required):o(a,!1),"undefined"!=typeof i.priority&&a.data("priority",i.priority),"state"!==e&&("undefined"!=typeof i.hidden&&!0===i.hidden?a.hide().find(":input").val(""):a.show()),Array.isArray(i["class"])&&(a.removeClass("form-row-first form-row-last form-row-wide"),a.addClass(i["class"].join(" ")))}),l(".woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper,.woocommerce-address-fields__field-wrapper,.woocommerce-additional-fields__field-wrapper .woocommerce-account-fields").each(function(e,a){var a=l(a).find(".form-row"),i=a.first().parent(),d=0;a.each(function(){l(this).data("priority")||l(this).data("priority",d+1),d=l(this).data("priority")}),a.sort(function(e,a){e=parseInt(l(e).data("priority"),10),a=parseInt(l(a).data("priority"),10);return a