(function($){
if(typeof FrankBSP213==='undefined') return;
var startTime=Date.now();
var lastSentDuration=0;
var lastAddCartAt=0;
var lastAddCartProduct=0;
function landing(){
try {
var k='frank_bsp213_landing';
var v=sessionStorage.getItem(k);
if(!v){
v=window.location.href;
sessionStorage.setItem(k, v);
}
return v;
} catch(e){
return window.location.href;
}}
function campaign(){
try {
var u=new URL(window.location.href);
return u.searchParams.get('utm_campaign')||u.searchParams.get('utm_content')||u.searchParams.get('utm_term')||'';
} catch(e){
return '';
}}
function duration(){
return Math.max(0, Math.round((Date.now() - startTime) / 1000));
}
function getProductId(){
var id=parseInt(FrankBSP213.product_id||0, 10);
if(id > 0) return id;
var cls=document.body.className||'';
var m=cls.match(/postid-(\d+)/);
if(m&&m[1]) return parseInt(m[1], 10);
var btn=$('[name="add-to-cart"]').first();
if(btn.length){
var v=parseInt(btn.val()||btn.attr('value')||'0', 10);
if(v > 0) return v;
}
return 0;
}
function getProductName(){
if(FrankBSP213.product_name) return FrankBSP213.product_name;
var h=$('h1.product_title, .product_title, h1.entry-title').first().text().trim();
if(h) return h;
return '';
}
function send(eventType, extra, useBeacon){
extra=extra||{};
var productId=extra.product_id||getProductId();
if(eventType==='add_cart'){
var now=Date.now();
if(lastAddCartProduct===productId&&(now - lastAddCartAt) < 30000){
return;
}
lastAddCartProduct=productId;
lastAddCartAt=now;
}
var data={
action: 'frank_bsp213_track',
nonce: FrankBSP213.nonce,
event_type: eventType,
product_id: productId,
product_name: extra.product_name||getProductName(),
page_url: window.location.href,
page_title: document.title||'',
landing_page: landing(),
referrer: document.referrer||'',
duration: extra.duration||0,
qty: extra.qty||0,
campaign: campaign()
};
if(useBeacon&&navigator.sendBeacon){
var form=new FormData();
Object.keys(data).forEach(function(k){ form.append(k, data[k]); });
navigator.sendBeacon(FrankBSP213.ajaxurl, form);
return;
}
$.ajax({
url: FrankBSP213.ajaxurl,
method: 'POST',
data: data,
timeout: 3000
});
}
$(function(){
if(FrankBSP213.is_product||getProductId() > 0){
send('product_view', {duration: 1});
}else if(FrankBSP213.is_checkout){
send('checkout_view', {duration: 1});
}else if(FrankBSP213.is_cart){
send('cart_view', {duration: 1});
}else{
send('page_view', {duration: 1});
}
function sendTimeNow(force){
var d=duration();
if(d < 5) return;
if(!force&&(d - lastSentDuration) < 15) return;
lastSentDuration=d;
send('time', {duration: d});
}
setInterval(function(){ sendTimeNow(false); }, 15000);
$(document.body).on('added_to_cart', function(event, fragments, cart_hash, button){
var pid=getProductId();
if(button&&button.length){
var bpid=parseInt(button.data('product_id')||button.val()||button.attr('value')||'0', 10);
if(bpid > 0) pid=bpid;
}
send('add_cart', {product_id: pid, qty: 1, duration: duration()});
});
$(document).on('click', '.single_add_to_cart_button, button[name="add-to-cart"]', function(){
var qty=parseInt($('form.cart input.qty').val()||'1', 10);
setTimeout(function(){
send('add_cart', {qty: qty, duration: duration()});
}, 800);
});
$(document).on('click', '.frank-secure-btn, .secure-checkout, button[name="frank_buy_now"], a[href*="/checkout"], a[href*="checkout"]', function(){
send('secure_checkout', {duration: duration()});
});
$(document).on('click', '.add_to_wishlist, a[href*="wishlist"], .wishlist-button, [class*="wishlist"]', function(){
send('wishlist', {duration: duration()});
});
window.addEventListener('pagehide', function(){
send('time', {duration: duration()}, true);
});
document.addEventListener('visibilitychange', function(){
if(document.visibilityState==='hidden'){
send('time', {duration: duration()}, true);
}});
});
})(jQuery);