!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}));
jQuery(document).ready(function($){
var viewCookieName='mb-views';
var viewCookie;
function mbProInit(){
viewCookie=mbGetCookie(viewCookieName);
elements=document.querySelectorAll('.maxbutton[data-mbga],[data-maxbuttoncounter] ');
elements.forEach(function (domObj){
domObj.addEventListener('click', mbClickEvent);
});
var buttons=document.querySelectorAll('[data-maxbuttoncounter]');
if(buttons.length > 0){
values=[];
buttons.forEach(function (el, index, listObj){
values.push(el)
});
mbTrackButtonLoad(values);
}}
function mbTrackButtonLoad(values){
var buttonData=[];
var postData={};
postData.plugin_action='addView';
postData.action='mbcounter';
for (i=0; i < values.length; i++){
var element=values[i];
var data=getPageData(element);
var page_code=data.page_code;
if(element.offsetParent==null){
MBonVisible(element, mbTrackButtonLoad);
continue;
}
if(! data.page_code){
console.error('Issue with PageCode - not recording');
continue;
}
if(viewCookie.indexOf(page_code) > -1){
continue;
}
buttonData.push(data);
}
if(buttonData.length==0)
return;
postData.buttonData=buttonData;
var xhr=$.post(maxButtonsFront.ajaxURL, postData)
.done(function(){
var cookieSave=false;
for (i=0; i < postData.buttonData.length; i++){
page_code=postData.buttonData[i].page_code;
if(viewCookie.indexOf(page_code)==-1){
viewCookie.push(page_code);
cookieSave=true;
}}
if(cookieSave){
mbSetCookie(viewCookieName, viewCookie);
}})
.fail(function(){
console.error('Button AddView failed to send', postData);
});
}
function mbClickEvent(event){
var target=event.target;
if(! target.classList.contains('maxbutton')){
var i=0;
while(!target.classList.contains('maxbutton')){
var target=target.parentElement;
i++;
if(i > 5){
console.error('Unexpected click event without parent maxbutton container');
break;
}}
}
if(target.getAttribute('download')==null){
event.preventDefault();
}
if(typeof target.dataset.maxbuttoncounter!=='undefined'){
mbTrackClick(target, target.dataset.maxbuttoncounter);
}
if(typeof target.dataset.mbga!=='undefined'){
mbTrackGAEvent(target, target.dataset.mbga);
}
var href=target.href;
var linkTarget=target.getAttribute('target');
if(target.getAttribute('download')!==null){
return true;
}else{
openLink(href, linkTarget);
}}
function mbTrackClick(target, data){
var buttonData=[];
var postData={};
postData.plugin_action='addClick';
postData.action='mbcounter';
var data=getPageData(target);
buttonData.push(data);
postData.buttonData=buttonData;
data.plugin_action='addClick';
$.ajax(maxButtonsFront.ajaxURL,
{
data: postData,
async: false,
type: 'POST'
}
);
}
function getPageData(button){
var data={};
var counter=page=false;
if(button.dataset.maxbuttoncounter)
counter=JSON.parse(button.dataset.maxbuttoncounter);
if(button.dataset.maxbuttonpage)
page=JSON.parse(button.dataset.maxbuttonpage);
if(button.dataset.notexisting)
existing=button.dataset.nonexisting;
if(counter!==false&&page!==false){
data.button_id=counter.button_id;
data.check=counter.check;
var url=counter.url;
if(url.indexOf('javascript') >=0){
if(url.indexOf('void') >=0){
url='empty';
}}
data.url=url;
data.page_id=page.id;
data.page_type=page.type;
data.page_code="" + data.button_id + data.page_type + data.page_id + data.check;
}
return data;
}
function mbGetCookie(cName){
var c=Cookies.get(cName);
if(c)
return JSON.parse(c);
else
return [];
}
function mbSetCookie(cName, data){
Cookies.set(cName, JSON.stringify(data));
}
function openLink(href, target){
if(href){
if(typeof target!=='undefined'&&target!=''&&target!==null)
window.open(href, target);
else
window.location=href;
}}
function mbTrackGAEvent(target, rawData){
var data=JSON.parse(rawData);
var cat=data.cat;
var action=data.action;
var label=data.label;
var value=data.value;
var noninteraction=data.noninteraction;
var linkTarget=$(this).prop('target');
var tracked=false;
if(typeof gtag=='function'){
gtag('event', action, {
'event_category': cat,
'event_label': label,
'value': value,
'noninteraction':noninteraction,
});
tracked=true;
}
else if(typeof ga=='function'){
if(typeof dataLayer=='object'){
dataLayer.push ({ 'event': 'event',
'eventCategory': cat,
'eventAction': action,
'eventLabel': label,
});
tracked=true;
}else{
ga(function (tracker){
tracker.send('event', cat, action, label,value, {'nonInteraction':noninteraction});
});
tracked=true;
}}
else if(typeof __gaTracker=='function'){
__gaTracker('send', 'event', cat, action, label, value, {'nonInteraction':noninteraction});
tracked=true;
}
else if(typeof _gaq=='object'){
_gaq.push(['_trackEvent', cat, action, label, value, noninteraction]);
tracked=true;
}
if(tracked===false){
console.error('Maxbuttons PRO: No Google Analytics tracker found, not recording click. This is caused by not having the tracker code loaded or browser has tracker blockers');
}}
function MBonVisible(element, callback){
new IntersectionObserver(function (entries, observer){
entries.forEach(function (entry){
if(entry.intersectionRatio > 0){
callback([element]);
observer.disconnect();
}});
}).observe(element);
}
mbProInit();
});