jQuery(function($){
if(typeof wc_cart_fragments_params==='undefined'){
return false;
}
var $supports_html5_storage=true,
cart_hash_key=wc_cart_fragments_params.cart_hash_key;
try {
$supports_html5_storage=('sessionStorage' in window&&window.sessionStorage!==null);
window.sessionStorage.setItem('wc', 'test');
window.sessionStorage.removeItem('wc');
window.localStorage.setItem('wc', 'test');
window.localStorage.removeItem('wc');
} catch(err){
$supports_html5_storage=false;
}
function set_cart_creation_timestamp(){
if($supports_html5_storage){
sessionStorage.setItem('wc_cart_created',(new Date()).getTime());
}}
function set_cart_hash(cart_hash){
if($supports_html5_storage){
localStorage.setItem(cart_hash_key, cart_hash);
sessionStorage.setItem(cart_hash_key, cart_hash);
}}
var $fragment_refresh={
url: wc_cart_fragments_params.wc_ajax_url.toString().replace('%%endpoint%%', 'get_refreshed_fragments'),
type: 'POST',
data: {
time: new Date().getTime()
},
timeout: wc_cart_fragments_params.request_timeout,
success: function(data){
if(data&&data.fragments){
$.each(data.fragments, function(key, value){
$(key).replaceWith(value);
});
if($supports_html5_storage){
sessionStorage.setItem(wc_cart_fragments_params.fragment_name, JSON.stringify(data.fragments) );
set_cart_hash(data.cart_hash);
if(data.cart_hash){
set_cart_creation_timestamp();
}}
$(document.body).trigger('wc_fragments_refreshed');
}},
error: function(){
$(document.body).trigger('wc_fragments_ajax_error');
}};
function refresh_cart_fragment(){
$.ajax($fragment_refresh);
}
if($supports_html5_storage){
var cart_timeout=null,
day_in_ms=(24 * 60 * 60 * 1000);
$(document.body).on('wc_fragment_refresh updated_wc_div', function(){
refresh_cart_fragment();
});
$(document.body).on('added_to_cart removed_from_cart', function(event, fragments, cart_hash){
var prev_cart_hash=sessionStorage.getItem(cart_hash_key);
if(prev_cart_hash===null||prev_cart_hash===undefined||prev_cart_hash===''){
set_cart_creation_timestamp();
}
sessionStorage.setItem(wc_cart_fragments_params.fragment_name, JSON.stringify(fragments) );
set_cart_hash(cart_hash);
});
$(document.body).on('wc_fragments_refreshed', function(){
clearTimeout(cart_timeout);
cart_timeout=setTimeout(refresh_cart_fragment, day_in_ms);
});
$(window).on('storage onstorage', function(e){
if(cart_hash_key===e.originalEvent.key&&localStorage.getItem(cart_hash_key)!==sessionStorage.getItem(cart_hash_key)
){
refresh_cart_fragment();
}});
$(window).on('pageshow' , function(e){
if(e.originalEvent.persisted){
$('.widget_shopping_cart_content').empty();
$(document.body).trigger('wc_fragment_refresh');
}});
try {
var wc_fragments=JSON.parse(sessionStorage.getItem(wc_cart_fragments_params.fragment_name) ),
cart_hash=sessionStorage.getItem(cart_hash_key),
cookie_hash=Cookies.get('woocommerce_cart_hash'),
cart_created=sessionStorage.getItem('wc_cart_created');
if(cart_hash===null||cart_hash===undefined||cart_hash===''){
cart_hash='';
}
if(cookie_hash===null||cookie_hash===undefined||cookie_hash===''){
cookie_hash='';
}
if(cart_hash&&(cart_created===null||cart_created===undefined||cart_created==='') ){
throw 'No cart_created';
}
if(cart_created){
var cart_expiration=(( 1 * cart_created) + day_in_ms),
timestamp_now=(new Date()).getTime();
if(cart_expiration < timestamp_now){
throw 'Fragment expired';
}
cart_timeout=setTimeout(refresh_cart_fragment,(cart_expiration - timestamp_now) );
}
if(wc_fragments&&wc_fragments['div.widget_shopping_cart_content']&&cart_hash===cookie_hash){
$.each(wc_fragments, function(key, value){
$(key).replaceWith(value);
});
$(document.body).trigger('wc_fragments_loaded');
}else{
throw 'No fragment';
}} catch(err){
refresh_cart_fragment();
}}else{
refresh_cart_fragment();
}
if(Cookies.get('woocommerce_items_in_cart') > 0){
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
}else{
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').hide();
}
$(document.body).on('adding_to_cart', function(){
$('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
});
var hasSelectiveRefresh=(
'undefined'!==typeof wp &&
wp.customize &&
wp.customize.selectiveRefresh &&
wp.customize.widgetsPreview &&
wp.customize.widgetsPreview.WidgetPartial
);
if(hasSelectiveRefresh){
wp.customize.selectiveRefresh.bind('partial-content-rendered', function(){
refresh_cart_fragment();
});
}});