Viewing File: /home/maglabs/bnb2you/wp-content/plugins/funnel-builder/modules/checkouts/assets/js/hooks.js
/*global wfacp_frontend*/
(function () {
if (!(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))) {
window.WFACP_Event = Event;
return;
}
function WFACP_Event(event, params) {
params = params || {bubbles: false, cancelable: false, detail: null};
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
window.WFACP_Event = WFACP_Event;
})();
(function ($) {
window.refresh_page_data_load_trigger = false;
wfacp_frontend.hooks = {
hooks: {
action: {},
filter: {}
},
addAction: function (action, callable, priority, tag) {
this.addHook('action', action, callable, priority, tag);
},
addFilter: function (action, callable, priority, tag) {
this.addHook('filter', action, callable, priority, tag);
},
doAction: function (action) {
this.doHook('action', action, arguments);
},
applyFilters: function (action) {
return this.doHook('filter', action, arguments);
},
removeAction: function (action, tag) {
this.removeHook('action', action, tag);
},
removeFilter: function (action, priority, tag) {
this.removeHook('filter', action, priority, tag);
},
addHook: function (hookType, action, callable, priority, tag) {
if (undefined == this.hooks[hookType][action]) {
this.hooks[hookType][action] = [];
}
let hooks = this.hooks[hookType][action];
if (undefined == tag) {
tag = action + '_' + hooks.length;
}
if (priority == undefined) {
priority = 10;
}
this.hooks[hookType][action].push({
tag: tag,
callable: callable,
priority: priority
});
},
doHook: function (hookType, action, args) {
// splice args from object into array and remove first index which is the hook name
args = Array.prototype.slice.call(args, 1);
if (undefined != this.hooks[hookType][action]) {
let hooks = this.hooks[hookType][action],
hook;
//sort by priority
hooks.sort(
function (a, b) {
return a.priority - b.priority;
}
);
for (let i = 0; i < hooks.length; i++) {
hook = hooks[i].callable;
if (typeof hook != 'function') {
hook = window[hook];
}
if ('action' == hookType) {
hook.apply(null, args);
} else {
args[0] = hook.apply(null, args);
}
}
}
if ('filter' == hookType) {
return args[0];
}
},
removeHook: function (hookType, action, priority, tag) {
if (undefined != this.hooks[hookType][action]) {
let hooks = this.hooks[hookType][action];
for (let i = hooks.length - 1; i >= 0; i--) {
if ((undefined == tag || tag == hooks[i].tag) && (undefined == priority || priority == hooks[i].priority)) {
hooks.splice(i, 1);
}
}
}
}
};
wfacp_frontend.is_valid_email = function (email) {
let pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
return pattern.test(email);
};
wfacp_frontend.blocked_element = [];
wfacp_frontend.call_backs = {};
$.wfacp_step_scrolling = function (scrollElement) {
if (scrollElement.length) {
$('html, body').animate({
scrollTop: (scrollElement.offset().top - 100)
}, 700);
}
};
if (typeof $.fn.block === "undefined") {
$.fn.block = function (opts) {
};
// plugin method for unblocking element content
$.fn.unblock = function (opts) {
};
$.scroll_to_notices = function () {
};
}
$.fn.aero_block = function (opts) {
if (this.length == 0) {
return;
}
if (false == refresh_page_data_load_trigger) {
//console.trace();
return;
}
let body = $('body');
if (!body.hasClass('wfacp_editor_active') && !body.hasClass('wfacp_anim_active')) {
body.addClass("wfacp_anim_active");
}
if (typeof opts == "object" && Object.keys(opts).length > 0) {
this.block(opts);
} else {
let block_settings = {
message: wfacp_frontend.hooks.applyFilters('wfacp_block_message', null),
overlayCSS: {
background: '#fff',
opacity: 0.6
}
};
this.block(block_settings);
}
wfacp_frontend.blocked_element.push(this);
};
$.fn.aero_unblock = function () {
let body = $('body');
if (body.hasClass('wfacp_anim_active')) {
body.removeClass("wfacp_anim_active");
}
this.unblock();
};
function unblockElements() {
let block = wfacp_frontend.blocked_element;
if (block.length > 0) {
for (let i = 0; i < block.length; i++) {
if (block[i].length === 0) {
continue;
}
block[i].aero_unblock();
wfacp_frontend.blocked_element.splice(i, 1);
}
}
$('.woocommerce-checkout-payment').unblock();
}
$(document).ajaxError(function (event, jqxhr, settings, thrownError) {
if (settings.hasOwnProperty('url') && settings.url.indexOf('wc-ajax') > -1) {
if (0 == jqxhr.readyState) {
return;
}
if (jqxhr.status != 200) {
unblockElements();
wfacp_frontend.hooks.doAction('wfacp_ajax_error_response', event, jqxhr, settings, thrownError);
}
}
});
$(document.body).on('updated_checkout', function (e, data) {
if (typeof data == "object" && data.hasOwnProperty('fragments')) {
let fragments = data.fragments;
if (data.fragments.hasOwnProperty('wfacp_ajax_data') && '' !== data.fragments.wfacp_ajax_data.action) {
let action = data.fragments.wfacp_ajax_data.action;
let aero_data = data.fragments.wfacp_ajax_data;
wfacp_frontend.hooks.doAction('wfacp_ajax_response', aero_data, fragments);
wfacp_frontend.hooks.doAction('wfacp_ajax_' + action, aero_data, fragments);
let callback_id = data.fragments.wfacp_ajax_data.callback_id;
if ('' !== callback_id && wfacp_frontend.call_backs.hasOwnProperty(callback_id) && typeof wfacp_frontend.call_backs[callback_id] == "function") {
wfacp_frontend.call_backs[callback_id](data.fragments.wfacp_ajax_data, data.fragments);
}
} else {
wfacp_frontend.hooks.doAction('wfacp_update_order_review_response', fragments, fragments);
}
if (data.hasOwnProperty('messages') && '' !== data.messages) {
$('.wfacp-notices-wrapper').html('');
}
if (fragments.hasOwnProperty('place_order_text') && '' !== fragments.place_order_text) {
let place_order_btn = $('#place_order');
place_order_btn.val(fragments.place_order_text);
place_order_btn.html(fragments.place_order_text);
place_order_btn.attr('data-value', fragments.place_order_text);
let tempElement = document.createElement('textarea');
tempElement.innerHTML = fragments.place_order_text;
place_order_btn.data('value', tempElement.value);
}
unblockElements();
}
});
$(document.body).on('wfacp_updated_checkout', function (e, data) {
if (typeof data == "object" && data.hasOwnProperty('fragments') && data.fragments.hasOwnProperty('wfacp_ajax_data') && '' !== data.fragments.wfacp_ajax_data.action) {
let action = data.fragments.wfacp_ajax_data.action;
let aero_data = data.fragments.wfacp_ajax_data;
let fragments = data.fragments;
wfacp_frontend.hooks.doAction('wfacp_ajax_response', aero_data, fragments);
wfacp_frontend.hooks.doAction('wfacp_ajax_' + action, aero_data, fragments);
let callback_id = data.fragments.wfacp_ajax_data.callback_id;
if ('' !== callback_id && wfacp_frontend.call_backs.hasOwnProperty(callback_id) && typeof wfacp_frontend.call_backs[callback_id] == "function") {
wfacp_frontend.call_backs[callback_id](data.fragments.wfacp_ajax_data, data.fragments);
}
unblockElements();
}
});
window.addEventListener('pageshow', function (event) {
if (event.persisted) {
$('form.checkout').unblock();
$('body').aero_unblock();
unblockElements()
}
});
})(jQuery);
Back to Directory
File Manager