"use strict";
;
(function ($){
'use strict';
var WPPopups={
popups: {},
byBind: {
'class': [],
'href': []
},
init: function init(){
$(document).ready(WPPopups.ready);
$(window).on('load', WPPopups.load);
$(document).on('wppopupsAjaxReady', WPPopups.ajaxStart);
WPPopups.bindUIActions();
},
ready: function ready(){
$(document).trigger('wppopupsBeforeReady');
if($(".spu-box").length==0) return false;
var data={
action: 'wppopups_rules',
pid: wppopups_vars.pid,
referrer: document.referrer,
user_agent: navigator.userAgent,
url: document.documentURI,
query_string: document.location.search,
is_category: wppopups_vars.is_category,
is_archive: wppopups_vars.is_archive,
is_singular: wppopups_vars.is_singular,
is_preview: wppopups_vars.is_preview,
is_search: wppopups_vars.is_search,
is_front_page: wppopups_vars.is_front_page,
is_blog_page: wppopups_vars.is_blog_page,
woo_is_shop: wppopups_vars.woo_is_shop,
woo_is_order_received: wppopups_vars.woo_is_order_received,
woo_is_product_category: wppopups_vars.woo_is_product_category,
woo_is_product_tag: wppopups_vars.woo_is_product_tag,
woo_is_product: wppopups_vars.woo_is_product,
woo_is_cart: wppopups_vars.woo_is_cart,
woo_is_checkout: wppopups_vars.woo_is_checkout,
woo_is_account_page: wppopups_vars.woo_is_account_page,
popups: []
};
$(".spu-box").each(function (){
var $popup=$(this),
$id=$popup.data('id'),
$need_ajax=$popup.data('need_ajax'),
$rules=WPPopups.settings($popup, 'rules'),
$global_rules=WPPopups.settings($popup, 'global_rules');
if($id&&$need_ajax){
data.popups.push({
id: $id,
rules: JSON.stringify($rules),
global_rules: JSON.stringify($global_rules),
parent: $popup.data('parent')
});
}});
var ajax={
url: wppopups_vars.ajax_url,
data: window.wp.hooks.applyFilters('wppopups_pre_ready_data', data),
cache: false,
type: 'POST',
dataType: 'json',
timeout: 30000,
success: function success(r){
if(r.success){
r.success.forEach(function (id){
WPPopups.removePopup(id);
});
}
$(document).trigger('wppopupsAjaxReady');
},
error: function error(r){
console.log(r);
}};
if(data.popups.length){
$.ajax(ajax);
}
WPPopups.initVideoSources();
WPPopups.resetPopupsContent();
WPPopups.hashTriggerPopups();
$(".spu-box").each(function (){
var $popup=$(this),
$need_ajax=$popup.data('need_ajax');
if($need_ajax){
$popup.hide();
return;
}
WPPopups.initPopup($popup);
});
WPPopups.loadValidation();
WPPopups.initSocialShortcodes();
$(document).trigger('wppopupsReady');
},
load: function load(){
$(".spu-box").each(function (){
var $popup=$(this);
WPPopups.centerPopup($popup);
});
},
ajaxStart: function ajaxStart(){
$(".spu-box").each(function (){
var $popup=$(this),
$need_ajax=$popup.data('need_ajax');
if(!$need_ajax){
return;
}
WPPopups.initPopup($popup);
});
$(document).trigger('wppopupsAjaxStarted');
},
initPopup: function initPopup($popup){
var $id=$popup.data('id');
WPPopups.popups[$id]=$popup;
WPPopups.bindPopupTriggers($popup);
WPPopups.bindClickTriggers($popup);
WPPopups.formSubmissions($popup);
$(window).resize(function (){
WPPopups.checkPopupSize($popup);
WPPopups.centerPopup($popup);
});
$popup.find('input').on('change', function (){
WPPopups.checkPopupSize($popup);
});
window.wp.hooks.doAction('wppopups_loop', $popup);
window.wp.hooks.addAction('wppopups_show_popup', 'wppopups', WPPopups.centerPopup, 99);
$popup.hide();
},
triggerBySeconds: function triggerBySeconds(value, $popup){
if(value===''){
return;
}
if($popup.timer){
clearTimeout($popup.timer);
}
$popup.timer=window.setTimeout(function (){
if(WPPopups.checkConvertion($popup)){
WPPopups.showPopup($popup);
}}, parseInt(value, 10) * 1000);
},
triggerByPercentage: function triggerByPercentage(value, $popup){
if(value===''){
return;
}
var $settings=WPPopups.settings($popup, 'settings');
$(window).on('scroll.per' + $popup.data('id'), function (){
if($popup.timer){
clearTimeout($popup.timer);
}
$popup.timer=window.setTimeout(function (){
var triggerHeight=parseInt(value, 10) / 100 * $(document).height();
var scrollY=$(window).scrollTop(),
trigger=scrollY + $(window).height() >=triggerHeight;
if(trigger&&WPPopups.checkConvertion($popup)){
if(!$settings.auto_hide){
$(window).off('scroll.per' + $popup.data('id'));
}
WPPopups.showPopup($popup);
}else if($settings.auto_hide){
WPPopups.hidePopup($popup, false, 10, false);
}}, 100);
});
},
triggerByPixels: function triggerByPixels(value, $popup){
if(value===''){
return;
}
var $settings=WPPopups.settings($popup, 'settings');
$(window).on('scroll.pix' + $popup.data('id'), function (){
if($popup.timer){
clearTimeout($popup.timer);
}
$popup.timer=window.setTimeout(function (){
var scrollY=$(window).scrollTop(),
trigger=scrollY >=parseInt(value, 10);
if(trigger&&WPPopups.checkConvertion($popup)){
if(!$settings.auto_hide){
$(window).off('scroll.pix' + $popup.data('id'));
}
WPPopups.showPopup($popup);
}else if($settings.auto_hide){
WPPopups.hidePopup($popup, false, 10, false);
}}, 100);
});
},
triggerByClass: function triggerByClass(value, $popup){
if(value===''){
return;
}
value=value.charAt(0)!='.' ? '.' + value:value;
WPPopups.setBindActions(value, 'class');
if(WPPopups.hasCookies($popup)){
return;
}
$(document.body).on('click', value, function (e){
e.preventDefault();
WPPopups.showPopup($popup);
});
},
bindClickTriggers: function bindClickTriggers($popup){
var id=$popup.data('id');
WPPopups.setBindActions('.spu-open-' + id, 'class');
WPPopups.setBindActions('#spu-' + id, 'href');
if(WPPopups.hasCookies($popup)){
return;
}
$(document.body).on('click', 'a[href="#spu-' + id + '"], .spu-open-' + id, function (e){
e.preventDefault();
WPPopups.showPopup($popup, true);
});
$('a[href="#spu-' + id + '"], .spu-open-' + id).css('cursor', 'pointer').addClass('spu-clickable');
},
bindPopupTriggers: function bindPopupTriggers($popup){
if(window.wp.hooks.applyFilters('wppopups_disable_triggers', false, $popup)) return;
var $triggers=WPPopups.settings($popup, 'triggers');
if(Object.keys($triggers).length){
for (var i in $triggers){
var func='triggerBy' + $triggers[i].trigger.charAt(0).toUpperCase() + $triggers[i].trigger.substr(1),
settings=WPPopups.settings($popup, 'settings');
if(!WPPopups.hasCookies($popup)||wppopups_vars.is_preview||func=='triggerByClass'||wppopups_vars.is_admin&&settings.test_mode=='1'){
if(typeof WPPopups[func]=='function'){
WPPopups[func]($triggers[i].value, $popup);
}
window.wp.hooks.doAction('wppopups_trigger_popup', func, $triggers[i].value, $popup);
}}
}},
bindUIActions: function bindUIActions(){
$(document).on('click', '.spu-box a:not(".spu-close-popup, .spu-box .flp_wrapper a, .spu-box .spu-not-close, .spu-box .spu-not-close a, .spu-box .spu-gdpr a")', function (){
WPPopups.hidePopup($(this), true);
});
$(document).on('click', '.spu-box .spu-close-convert,.spu-box .spu-close-convert a', function (e){
e.preventDefault();
WPPopups.hidePopup($(this), true);
});
$(document).on('click', '.spu-box .spu-close-popup', function (e){
e.preventDefault();
WPPopups.hidePopup($(this), false);
});
$(document).on('keyup', function (e){
if(e.keyCode==27){
WPPopups.togglePopups(false, false);
}});
var ua=navigator.userAgent,
event=ua.match(/iPad/i)||ua.match(/iPhone/i) ? "touchstart":"click";
$('body').on(event, function (ev){
var $target=$(ev.target);
if($target.is('input.nf-element')) return;
if($target.is(window.wp.hooks.applyFilters('wppopups_disable_click_out_classes', '.flatpickr-calendar,.flatpickr-calendar *, .ui-datepicker-header *,.ui-widget,.ui-widget *'))) return;
if(WPPopups.checkBindActions($target)) return;
if(window.wp.hooks.applyFilters('wppopups_disable_click_out', false, $target)) return;
if(ev.originalEvent!==undefined&&!$target.is('.spu-box *, .spu-box')){
WPPopups.togglePopups(false, false);
}});
},
settings: function settings(popup, key){
var settings={};
if(popup.data('settings')){
settings=popup.data('settings');
}
if(key){
if(typeof settings[key]=='undefined') return {};
return settings[key];
}
return settings;
},
togglePopups: function togglePopups(show, conversion){
$('.spu-box').each(function (){
if(show){
WPPopups.showPopup($(this));
}else{
if(window.wp.hooks.applyFilters('wppopups_allow_togglePopups', true, $(this))){
WPPopups.hidePopup($(this), conversion);
}}
});
},
showPopup: function showPopup(popup){
var force=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:false;
var $popup=WPPopups.getPopup(popup),
$id=$popup.data('id'),
$bg=$('#spu-bg-' + $id);
if($popup.is(":visible")){
return false;
}
if(!force&&WPPopups.hasCookies($popup)){
return false;
}
var gf=$popup.find('.gform_wrapper');
if(gf){
gf.show();
}
window.wp.hooks.doAction('wppopups_before_show_popup', $popup);
$popup.parent('.wppopups-whole').show();
WPPopups.toggleBlur($popup, true);
WPPopups.centerPopup($popup);
/* setTimeout(function(){
WPPopups.centerShortcodes($popup);
},1500);*/
WPPopups.checkPopupSize($popup);
var animation=WPPopups.settings($popup, 'animation');
switch (animation.animation){
case 'fade':
$popup.hide().fadeIn('slow');
break;
case 'slide':
$popup.hide().slideDown('slow');
break;
default:
$popup.show();
break;
}
if(!$popup.hasClass('spu-position-top-bar')&&!$popup.hasClass('spu-position-bottom-bar')){
if(animation.animation==='disable'){
$bg.show();
}else{
$bg.fadeIn();
}}
window.wp.hooks.doAction('wppopups_show_popup', $popup);
WPPopups.toggleVideoSources($popup, true);
$popup.trigger('wppopups.popup_opened', [$id]);
},
hidePopup: function hidePopup(popup, conversion){
var time=arguments.length > 2&&arguments[2]!==undefined ? arguments[2]:0;
var cookie=arguments.length > 3&&arguments[3]!==undefined ? arguments[3]:true;
var $popup=WPPopups.getPopup(popup),
$id=$popup.data('id'),
$bg=$('#spu-bg-' + $id);
if($popup.is(":animated")||$popup.is(":hidden")||window.wp.hooks.applyFilters('wppopups_cancel_hide', false, $popup, conversion)){
return false;
}
if(conversion===true){
WPPopups.popupConverted($popup, cookie);
}
var settings=WPPopups.settings($popup, 'settings');
if(settings.close_on_conversion=='1'&&conversion||!conversion){
setTimeout(function (){
var animation=WPPopups.settings($popup, 'animation');
switch (animation.animation){
case 'slide':
$popup.slideUp('slow');
$bg.fadeOut();
break;
case 'disable':
$popup.hide();
$bg.hide();
break;
default:
$popup.removeClass('spu-animation-animated');
$popup.fadeOut('slow');
$bg.fadeOut();
break;
}
window.wp.hooks.doAction('wppopups_hide_popup', $popup);
WPPopups.toggleVideoSources($popup, false);
}, parseInt(time, 10));
}
WPPopups.toggleBlur($popup, false);
WPPopups.popupClosed($popup, cookie);
},
centerPopup: function centerPopup(popup, animate){
if(!popup.hasClass('spu-position-centered')&&!popup.hasClass('spu-position-float-right')&&!popup.hasClass('spu-position-float-left')){
return;
}
if(popup.is(':animated')){
return;
}
var ww=$(window).width(),
wh=$(window).height(),
pw=popup.outerWidth(),
ph=popup.outerHeight();
var boxLeft=ww / 2 - pw / 2,
boxTop=wh / 2 - ph / 2;
var css={
top: boxTop
};
if(popup.hasClass('spu-position-centered')){
css.left=boxLeft;
}
if(animate){
popup.animate(css, {
queue: !1,
duration: 200
});
}else{
popup.css(css);
}},
removePopup: function removePopup(popup){
var $popup=WPPopups.getPopup(popup),
$id=$popup.data('id'),
$bg=$('#spu-bg-' + $id),
$css=$('#spu-css-' + $id);
$popup.remove();
$bg.remove();
$css.remove();
},
popupConverted: function popupConverted($popup){
var cookie=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:true;
if(cookie){
var settings=WPPopups.settings($popup, 'settings'),
duration=parseFloat(settings.conversion_cookie_duration),
_cookie=settings.conversion_cookie_name,
type=settings.conversion_cookie_type;
if(duration > 0){
WPPopups.createCookie(_cookie, true, duration, type);
}}
$popup.trigger('wppopups.popup_converted', [$popup.data('id')]);
},
popupClosed: function popupClosed($popup){
var cookie=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:true;
if(cookie){
var settings=WPPopups.settings($popup, 'settings'),
duration=parseFloat(settings.closing_cookie_duration),
_cookie2=settings.closing_cookie_name,
type=settings.closing_cookie_type;
if(duration > 0){
WPPopups.createCookie(_cookie2, true, duration, type);
}}
$popup.trigger('wppopups.popup_closed', [$popup.data('id')]);
},
hasCookies: function hasCookies($popup){
var $settings=WPPopups.settings($popup, 'settings'),
conversion_name=$settings.conversion_cookie_name,
closing_name=$settings.closing_cookie_name;
var hasCookies=false;
if(!(wppopups_vars.is_admin&&$settings.test_mode=='1')&&(WPPopups.getCookie(conversion_name)||WPPopups.getCookie(closing_name))){
hasCookies=true;
}
return hasCookies;
},
toggleBlur: function toggleBlur($popup, show){
var colors=WPPopups.settings($popup, 'colors'),
$id=$popup.data('id'),
$box_css=$('#spu-css-' + $id);
if(colors.show_overlay=='yes-blur'){
if(show){
var blur_px=colors.overlay_blur ? colors.overlay_blur:2,
blur_css='body > *:not(.wppopups-whole){ -webkit-filter: blur(' + blur_px + 'px); -moz-filter: blur(' + blur_px + 'px); -o-filter: blur(' + blur_px + 'px); -ms-filter: blur(' + blur_px + 'px); filter: blur(' + blur_px + 'px); }';
$box_css.append(blur_css);
}else{
var css=$box_css.text(),
ini=css.indexOf(''),
pro=css.substring(ini);
$box_css.text(css.replace(pro, ''));
}}
},
initVideoSources: function initVideoSources(){
var iframe=$('.spu-box iframe');
if(iframe&&iframe.length){
iframe.each(function (){
WPPopups.initSources($(this));
});
}
var video=$('.spu-box video');
if(video&&video.length){
video.each(function (){
WPPopups.initSources($(this));
});
}},
initSources: function initSources(el){
var iframeSrc=el.attr('src');
if(iframeSrc&&iframeSrc.indexOf('recaptcha')!==-1){
}else{
el.attr('spusrc', iframeSrc);
el.attr('src', 'https://#');
}},
toggleVideoSources: function toggleVideoSources(popup, show){
var iframe=popup.find('iframe');
if(iframe&&iframe.length){
iframe.each(function (){
WPPopups.toggleSource($(this), show);
});
}
var video=popup.find('video');
if(video&&video.length){
video.each(function (){
WPPopups.toggleSource($(this), show);
});
}},
toggleSource: function toggleSource(el, show){
if(show){
if(el.attr('spusrc')){
el.attr('src', el.attr('spusrc'));
el.css("width", "");
el.css("height", "");
}}else{
var iframeSrc=el.attr('src');
if(iframeSrc&&iframeSrc.indexOf('recaptcha')!==-1){
}else{
el.attr('src', 'https://#');
}}
},
resetPopupsContent: function resetPopupsContent(){
$(".spu-content").children().first().not('.spu-fields-container').css({
"margin-top": 0,
"padding-top": 0
}).end().last().not('.spu-fields-container').css({
'margin-bottom': 0,
'padding-bottom': 0
});
},
hashTriggerPopups: function hashTriggerPopups(){
if(window.location.hash&&window.location.hash.length > 0){
var hash=window.location.hash,
form_key=hash.substring(1).indexOf('spu-form'),
link_key=hash.substring(1).indexOf('spu-open'),
form_popup=form_key!==-1,
link_popup=link_key!==-1;
if(form_popup) var i=form_key + 10;else if(link_popup) var i=link_key + 10;
if((link_popup||form_popup)&&$('#spu-' + hash.substring(i)).is('.spu-box')){
var popup=$('#spu-' + hash.substring(i));
if(form_popup&&popup.find('.spu-close-popup').length < 2){
popup.find('.spu-content').append('<p style="text-align: center"><button class="btn btn-primary spu-close-popup">Close</button></p>');
}
if(form_popup){
$(window).off('scroll.per' + popup.data('id'));
$(window).off('scroll.pix' + popup.data('id'));
WPPopups.popupConverted(popup);
}
setTimeout(function (){
WPPopups.showPopup(popup, true);
}, 200);
}}
},
formSubmissions: function formSubmissions($popup){
var popup_id=$popup.data('id');
$popup.find('form').each(function (){
var box_form=$(this),
action=box_form.attr('action')||'';
if(!wppopups_vars.disable_form_reopen){
box_form.attr('action', action + '#spu-form-' + popup_id);
}
if(box_form.hasClass('spu-optin-form')){
return;
}
if(WPPopups.isExternal(action)){
box_form.on('submit', function (){
WPPopups.hidePopup($popup, true);
});
}});
$(document).on('nfFormSubmitResponse', function (){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
});
$(document).on('forminator:form:submit:success', function (){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
});
$popup.on('wpcf7mailsent', function (){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
});
$(document).on('gform_post_render', function (jqXHR, form_id){
var $form=$('#gform_ajax_frame_' + form_id);
if(!$form.is('.spu-box *')){
return;
}
var contents=$form.contents().find('*').html(),
form_content=$form.contents().find('#gform_wrapper_' + form_id),
is_confirmation=$form.contents().find('#gform_confirmation_wrapper_' + form_id).length > 0,
is_redirect=contents.indexOf('gformRedirect(){') >=0;
if(is_confirmation||is_redirect){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
}});
$(document).on('cf.submission', function (){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
});
$(document).on('wpformsAjaxSubmitSuccess', function (){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
});
$(document).on('yikes_mailchimp_ajax_submission', function (e, response){
if(response.success){
$popup.trigger('wppopups.form_submitted', [popup_id]);
WPPopups.hidePopup($popup, true, 2000);
}});
},
isExternal: function isExternal(url){
if(url.length===0){
return false;
}
var domain=function domain(url){
return url.replace('http://', '').replace('https://', '').split('/')[0];
};
if(domain(url)==''){
return false;
}
return domain(location.href)!==domain(url);
},
formOptinSubmissions: function formOptinSubmissions($popup){
var popup_id=$popup.data('id'),
$form=$popup.find('.wppopups-form'),
$submit_btn=$form.find('.wppopups-submit-button');
WPPopups.toggleButton($submit_btn, true);
var data=$form.serializeArray();
data.push({
name: 'action',
value: 'wppopups_optin_submit'
});
data.push({
name: 'id',
value: popup_id
});
var ajax={
url: wppopups_vars.ajax_url,
data: data,
cache: false,
type: 'POST',
dataType: 'json',
timeout: 30000,
success: function success(r){
console.log(r);
if(r.success){
if(r.data[1]&&r.data[1].optin_redirect){
$popup.trigger('wppopups.optin_on_redirect', [popup_id]);
var redirect=r.data[1].optin_redirect;
if(r.data[1].pass_lead_data&&r.data[1].pass_lead_data==1){
var qstring=[];
var sep=redirect.match(/[\?]/g) ? '&':'?';
for (var key in data){
if(data[key]['value']=='') continue;
qstring.push(encodeURIComponent(data[key]['name']) + '=' + encodeURIComponent(data[key]['value']));
}
redirect=redirect + sep + qstring.join('&');
}
WPPopups.hidePopup($popup, true);
window.location.href=redirect;
return;
}
$popup.find('.optin-errors').html('').hide();
if(r.data[0]&&r.data[0].optin_success){
WPPopups.popupConverted($popup);
$popup.find('.spu-content').html(r.data[0].optin_success);
WPPopups.centerPopup($popup, true);
if(r.data[0].optin_success_seconds&&parseInt(r.data[0].optin_success_seconds) > 0){
var seconds=parseInt(r.data[0].optin_success_seconds, 10) * 1000;
WPPopups.hidePopup($popup, false, seconds);
}}else{
WPPopups.hidePopup($popup, true);
}}else{
$popup.find('.optin-errors').html(r.data).fadeIn();
}
$popup.trigger('wppopups.optin_form_submitted', [popup_id, r]);
WPPopups.toggleButton($submit_btn, false);
},
error: function error(r){
console.log(r);
WPPopups.toggleButton($submit_btn, false);
}};
$.ajax(ajax);
},
loadValidation: function loadValidation(){
if(typeof $.fn.validate!=='undefined'){
$('.wppopups-validate input[type=url]').change(function (){
var url=$(this).val();
if(!url){
return false;
}
if(url.substr(0, 7)!=='http://'&&url.substr(0, 8)!=='https://'){
$(this).val('http://' + url);
}});
$.validator.messages.required=wppopups_vars.val_required;
$.validator.messages.url=wppopups_vars.val_url;
$.validator.messages.email=wppopups_vars.val_email;
$.validator.messages.number=wppopups_vars.val_number;
$.validator.methods.email=function (value, element){
return this.optional(element)||/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}$/i.test(value);
};
$.validator.addMethod('check-limit', function (value, element){
var $ul=$(element).closest('ul'),
$checked=$ul.find('input[type="checkbox"]:checked'),
choiceLimit=parseInt($ul.attr('data-choice-limit')||0, 10);
if(0===choiceLimit){
return true;
}
return $checked.length <=choiceLimit;
}, function (params, element){
var choiceLimit=parseInt($(element).closest('ul').attr('data-choice-limit')||0, 10);
return wppopups_vars.val_checklimit.replace('{#}', choiceLimit);
});
$('.wppopups-validate').each(function (){
var form=$(this),
popupID=form.data('popupid'),
properties;
if(typeof window['wppopups_' + popupID]!=='undefined'&&window['wppopups_' + popupID].hasOwnProperty('validate')){
properties=window['wppopups_' + popupID].validate;
}else if(typeof wppopups_validate!=='undefined'){
properties=wppopups_validate;
}else{
properties={
errorClass: 'wppopups-error',
validClass: 'wppopups-valid',
errorPlacement: function errorPlacement(error, element){
if('radio'===element.attr('type')||'checkbox'===element.attr('type')){
if(element.hasClass('wppopups-likert-scale-option')){
if(element.closest('table').hasClass('single-row')){
element.closest('table').after(error);
}else{
element.closest('tr').find('th').append(error);
}}else if(element.hasClass('wppopups-net-promoter-score-option')){
element.closest('table').after(error);
}else{
element.closest('.wppopups-field-checkbox').find('label.wppopups-error').remove();
element.parent().parent().parent().append(error);
}}else if(element.is('select')&&element.attr('class').match(/date-month|date-day|date-year/)){
if(0===element.parent().find('label.wppopups-error:visible').length){
element.parent().find('select:last').after(error);
}}else if(element.hasClass('wppopups-smart-phone-field')){
element.parent().after(error);
}else if(element.hasClass('wppopups-validation-group-member')){
element.closest('.wppopups-field').append(error);
}else{
error.insertAfter(element);
}},
highlight: function highlight(element, errorClass, validClass){
var $element=$(element),
$field=$element.closest('.wppopups-field'),
inputName=$element.attr('name');
if('radio'===$element.attr('type')||'checkbox'===$element.attr('type')){
$field.find('input[name="' + inputName + '"]').addClass(errorClass).removeClass(validClass);
}else{
$element.addClass(errorClass).removeClass(validClass);
}
$field.addClass('wppopups-has-error');
},
unhighlight: function unhighlight(element, errorClass, validClass){
var $element=$(element),
$field=$element.closest('.wppopups-field'),
inputName=$element.attr('name');
if('radio'===$element.attr('type')||'checkbox'===$element.attr('type')){
$field.find('input[name="' + inputName + '"]').addClass(validClass).removeClass(errorClass);
}else{
$element.addClass(validClass).removeClass(errorClass);
}
$field.removeClass('wppopups-has-error');
},
submitHandler: function submitHandler(form){
var $popup=$('#spu-' + popupID);
WPPopups.formOptinSubmissions($popup);
},
invalidHandler: function invalidHandler(event, validator){
},
onkeyup: function onkeyup(element, event){
var excludedKeys=[16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];
if($(element).hasClass('wppopups-novalidate-onkeyup')){
return;
}
if(9===event.which&&''===this.elementValue(element)||$.inArray(event.keyCode, excludedKeys)!==-1){
return;
}else if(element.name in this.submitted||element.name in this.invalid){
this.element(element);
}},
onfocusout: function onfocusout(element){
var validate=false;
if($(element).hasClass('wppopups-novalidate-onkeyup')&&!element.value){
validate=true;
}
if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){
validate=true;
}
if(validate){
this.element(element);
}},
onclick: function onclick(element){
var validate=false,
type=(element||{}).type,
$el=$(element);
if(['checkbox', 'radio'].indexOf(type) > -1){
if($el.hasClass('wppopups-likert-scale-option')){
$el=$el.closest('tr');
}else{
$el=$el.closest('.wppopups-field');
}
$el.find('label.wppopups-error').remove();
validate=true;
}
if(validate){
this.element(element);
}}
};}
form.validate(properties);
});
}},
toggleButton: function toggleButton($submit_btn, disable){
var oldText=$submit_btn.data('submit-text'),
altText=$submit_btn.data('alt-text');
if(disable){
if(altText){
$submit_btn.text(altText);
}
$submit_btn.addClass('spu-sending');
$submit_btn.attr('disabled', 'disabled');
}else{
if(oldText){
$submit_btn.text(oldText);
}
$submit_btn.removeClass('spu-sending');
$submit_btn.removeAttr('disabled');
}},
checkPopupSize: function checkPopupSize($popup){
if($popup.outerHeight() + 150 >=$(window).height()){
$popup.css('overflow', 'auto').addClass('spu-scrollable');
$popup.css('max-height', $(window).height());
}else{
$popup.css('overflow', 'initial').removeClass('spu-scrollable');
$popup.css('max-height', '');
}},
initSocialShortcodes: function initSocialShortcodes(){
if(wppopups_vars.facebook){
var SPUfb=false,
FbTimer=setInterval(function (){
if(typeof FB!=='undefined'&&!SPUfb){
try {
FB.Event.subscribe('edge.create', function (href, html_element){
var $popup=$(html_element).parents('.spu-box');
if($popup.length){
WPPopups.hidePopup($popup, true);
}});
} catch (ex){
console.log(ex);
}
SPUfb=true;
clearInterval(FbTimer);
}}, 1000);
}
if(wppopups_vars.twitter){
if(typeof twttr!=='undefined'){
try {
twttr.ready(function (twttr){
twttr.events.bind('tweet', WPPopups.twitterCB);
twttr.events.bind('follow', WPPopups.twitterCB);
});
} catch (ex){}}
}
if(wppopups_vars.google){
if(typeof twttr!=='undefined'){
try {
twttr.ready(function (twttr){
twttr.events.bind('tweet', WPPopups.twitterCB);
twttr.events.bind('follow', WPPopups.twitterCB);
});
} catch (ex){}}
}},
googleCB: function googleCB(a){
if("on"==a.state){
var box_id=$('.spu-gogl').data('box-id');
if(box_id){
WPPopups.hidePopup(box_id, true);
}}
},
closeGoogle: function closeGoogle(a){
if("confirm"==a.type){
var box_id=$('.spu-gogl').data('box-id');
if(box_id){
WPPopups.hidePopup(box_id, true);
}}
},
twitterCB: function twitterCB(intent_event){
var $popup=$(intent_event.target).parents('.spu-box');
if($popup){
WPPopups.hidePopup($popup, true);
}},
setUserIndentifier: function setUserIndentifier(){
if(wppopups_settings.uuid_cookie&&!WPPopups.getCookie('_wpfuuid')){
var s=new Array(36),
hexDigits='0123456789abcdef',
uuid;
for (var i=0; i < 36; i++){
s[i]=hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14]="4";
s[19]=hexDigits.substr(s[19] & 0x3 | 0x8, 1);
s[8]=s[13]=s[18]=s[23]='-';
uuid=s.join("");
WPPopups.createCookie('_wpfuuid', uuid, 3999);
}},
setBindActions: function setBindActions(){
var bind_name=arguments.length > 0&&arguments[0]!==undefined ? arguments[0]:'';
var bind_type=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:'class';
if(bind_name!=''){
switch (bind_type){
case 'class':
bind_name=bind_name.charAt(0)=='.' ? bind_name.substring(1):bind_name;
if($.inArray(bind_name, WPPopups.byBind['class'])===-1) WPPopups.byBind['class'].push(bind_name);
break;
case 'href':
if($.inArray(bind_name, WPPopups.byBind['href'])===-1) WPPopups.byBind['href'].push(bind_name);
break;
}
window.wp.hooks.doAction('wppopups_set_bindactions', bind_name, bind_type);
}},
checkBindActions: function checkBindActions(target){
var $classes=WPPopups.byBind['class'];
for (var i=0; i < $classes.length; i++){
if($classes[i]){
if(target.hasClass($classes[i])||target.closest('.' + $classes[i]).length){
return true;
}}
}
var $href=WPPopups.byBind['href'];
for (var _i=0; _i < $href.length; _i++){
if($href[_i]&&target.attr('href')==$href[_i]){
return true;
}}
return false;
},
createCookie: function createCookie(name, value){
var duration=arguments.length > 2&&arguments[2]!==undefined ? arguments[2]:999;
var type=arguments.length > 3&&arguments[3]!==undefined ? arguments[3]:'d';
var expires='';
if(duration&&type){
if('-1'===duration){
expires='';
}else{
var cookie_time;
switch (type){
case 'm':
cookie_time=60 * 1000;
break;
case 'h':
cookie_time=60 * 60 * 1000;
break;
default:
cookie_time=24 * 60 * 60 * 1000;
}
var date=new Date();
date.setTime(date.getTime() + parseInt(duration) * cookie_time);
expires='; expires=' + date.toGMTString();
}}else{
expires='; expires=Thu, 01 Jan 1970 00:00:01 GMT';
}
document.cookie=name + '=' + value + expires + '; path=/';
},
getCookie: function getCookie(name){
var nameEQ=name + '=',
ca=document.cookie.split(';');
for (var i=0; i < ca.length; i++){
var c=ca[i];
while (c.charAt(0)===' '){
c=c.substring(1, c.length);
}
if(c.indexOf(nameEQ)==0){
return c.substring(nameEQ.length, c.length);
}}
return null;
},
removeCookie: function removeCookie(name){
WPPopups.createCookie(name, '', -1);
},
isNumber: function isNumber(n){
return !isNaN(parseFloat(n))&&!isNaN(n - 0);
},
getPopup: function getPopup(popup){
if(WPPopups.isNumber(popup)){
return $('#spu-' + parseInt(popup));
}
if(popup.is('.spu-box')){
return popup;
}
return popup.closest('.spu-box');
},
checkConvertion: function checkConvertion($popup){
if(!$popup.hasClass('yes-convert')&&!$popup.hasClass('no-convert')) return true;
var $settings=WPPopups.settings($('#spu-' + $popup.data('convert-id')), 'settings');
var popup_converted=false;
if(WPPopups.getCookie($settings.conversion_cookie_name)){
popup_converted=true;
}
if($popup.hasClass('yes-convert')){
return popup_converted;
}else{
return !popup_converted;
}},
isMobile: function isMobile(){
var Android=navigator.userAgent.match(/Android/i),
BlackBerry=navigator.userAgent.match(/BlackBerry/i),
iOS=navigator.userAgent.match(/iPhone|iPad|iPod/i),
Opera=navigator.userAgent.match(/Opera Mini/i),
Windows=navigator.userAgent.match(/IEMobile/i)||navigator.userAgent.match(/WPDesktop/i);
return Android||BlackBerry||iOS||Opera||Windows;
}};
WPPopups.init();
window.wppopups=WPPopups;
})(jQuery);