if('serviceWorker'in navigator){window.addEventListener('load',function(){navigator.serviceWorker.register(superpwa_sw.url).then(function(registration){console.log('SuperPWA service worker ready');if(registration.active)
{registration.update();}
if(typeof firebase!='undefined'&&typeof pushnotification_load_messaging=='function'){const messaging=firebase.messaging();messaging.useServiceWorker(registration);pushnotification_load_messaging();}
subOnlineOfflineIndicator();}).catch(function(error){console.log('Registration failed with '+error);});const snackbarTimeToHide=5000;let isOffline=false,snackbarTimeoutHide=null,goOfflineMsg=superpwa_sw.offline_message_txt,backOnlineMsg='You\'re back online refresh';function subOnlineOfflineIndicator(){injectSnackbarHtml();injectSnackbarCss();runOnlineOfflineIndicator();}
function injectSnackbarHtml(){const container=document.createElement('div');container.className='snackbar';const parag=document.createElement('p');parag.id='snackbar-msg';container.appendChild(parag);const button=document.createElement('button');button.type='button';button.className='snackbar-close';button.setAttribute('aria-label','Close ×');button.addEventListener('click',hideSnackbar);button.innerHTML='×';container.appendChild(button);document.body.appendChild(container);window.addEventListener('online',runOnlineOfflineIndicator);window.addEventListener('offline',runOnlineOfflineIndicator);window.addEventListener('fetch',()=>console.log("fetch"));container.addEventListener('mouseover',function(){if(snackbarTimeoutHide!==null)
clearTimeout(snackbarTimeoutHide);});container.addEventListener('mouseout',function(){if(snackbarTimeoutHide!==null)
snackbarTimeoutHide=setTimeout(hideSnackbar,snackbarTimeToHide/2);});}
function injectSnackbarCss(){const css=`body.snackbar--show .snackbar {
-webkit-transform: translateY(0);
transform: translateY(0);
}
.snackbar {
box-sizing: border-box;
background-color: #121213;
color: #fff;
padding: 10px 55px 10px 10px;
position: fixed;
z-index: 9999999999999999;
left: 15px;
bottom: 15px;
border-radius: 5px 8px 8px 5px;
max-width: 90%;
min-height: 48px;
line-height: 28px;
font-size: 16px;
-webkit-transform: translateY(150%);
transform: translateY(150%);
will-change: transform;
-webkit-transition: -webkit-transform 200ms ease-in-out;
-webkit-transition-delay: 0s;
transition-delay: 0s;
-webkit-transition: -webkit-transform 200ms ease-in-out false;
transition: -webkit-transform 200ms ease-in-out false;
transition: transform 200ms ease-in-out false;
transition: transform 200ms ease-in-out false, -webkit-transform 200ms ease-in-out false;
}
.snackbar p {
margin: 0;
color: #fff;
text-align: center;
}
.snackbar .snackbar-close {
position: absolute;
top: 0;
right: 0;
width: 45px;
height: 100%;
padding: 0;
background: #2a2a2a;
border: none;
font-size: 28px;
font-weight: normal;
border-radius: 0 5px 5px 0;
color: #FFF;
font-family: Arial, Helvetica, sans-serif;
}
.snackbar .snackbar-close:hover,
.snackbar .snackbar-close:focus {
background: #3f3f3f;
}
.snackbar a {
color: #FFF;
font-weight: bold;
text-decoration: underline;
}`;const head=document.head||document.getElementsByTagName('head')[0];const style=document.createElement('style');style.type='text/css';if(style.styleSheet){style.styleSheet.cssText=css;}else{style.appendChild(document.createTextNode(css));}
head.appendChild(style);}
function runOnlineOfflineIndicator(){if(navigator.onLine){if(isOffline===true){showSnackbar(backOnlineMsg);}
isOffline=false;}else{if(superpwa_sw.offline_message==1){showSnackbar(goOfflineMsg);isOffline=true;}}}
function showSnackbar(msg){document.getElementById('snackbar-msg').innerHTML=msg;document.body.classList.add('snackbar--show');clearTimeout(snackbarTimeoutHide);snackbarTimeoutHide=setTimeout(hideSnackbar,snackbarTimeToHide);}
function hideSnackbar(){document.body.classList.remove('snackbar--show');}
var deferredPrompt;window.addEventListener('beforeinstallprompt',function(e){deferredPrompt=e;if(deferredPrompt!=null||deferredPrompt!=undefined){if(superpwa_sw.disable_addtohome==1){deferredPrompt.preventDefault();}
var a2hsBanner=document.getElementsByClassName("superpwa-sticky-banner");if(a2hsBanner.length){deferredPrompt.preventDefault();if(superpwa_sw.enableOnDesktop!=1&&!window.mobileCheck()){return;}
if(typeof super_check_bar_closed_or_not=='function'&&!super_check_bar_closed_or_not()){return;}
for(var i=0;i1){for(var i=0;i1){for(var i=0;i{registration.active.postMessage(allData);event.stopPropagation();});}else{event.preventDefault();event.stopPropagation();alert('Error occured during form submission, please try again');return;}}
function handleGravityMultistep(btn_type,event){let target_parent=event.parentNode.parentNode;let go_next=false;if(btn_type=='previous'){target_parent.style.display='none';let prev_id=target_parent.previousElementSibling.id;let source_page=document.querySelector('input[name^=\"gform_source_page_number_\"]');let target_page=document.querySelector('input[name^=\"gform_target_page_number_\"]');source_page.value=parseInt(source_page.value)-1;target_page.value=parseInt(target_page.value)-1;if(prev_id){document.getElementById(prev_id).style.display='block';}}else{let inputs=target_parent.querySelectorAll('input, textarea, select');for(let elem of inputs){let req_flag=elem.getAttribute('aria-required');if(req_flag=='true'&&(elem.getAttribute('type')=='checkbox'||elem.getAttribute('type')=='radio')){let chk_name=elem.getAttribute('name');let chk_value=target_parent.querySelectorAll('input[name=\"'+chk_name+'\"]:checked');if(!chk_value.length){go_next=false;break;}else{go_next=true;}}else{if(!elem.value){go_next=false;break;}else{go_next=true;}}}
if(go_next==true){target_parent.style.display='none';let next_id=target_parent.nextElementSibling.id;let source_page=document.querySelector('input[name^=\"gform_source_page_number_\"]');let target_page=document.querySelector('input[name^=\"gform_target_page_number_\"]');let gform_wrapper=document.querySelector('.gform_wrapper');let total_page=gform_wrapper.getAttribute('id').split('_')[2];source_page.value=parseInt(source_page.value)+1;if(target_page{updateOnlineStatus(e)});function updateOnlineStatus(event){setTimeout(window.location.reload(),3000);}
window.onload=function(event){console.log('Page Load');if(!navigator.onLine){updateOfflineStatus(event);superpwapro_woo_xtheme_compat();}
window.addEventListener('offline',(e)=>{updateOfflineStatus(e);superpwapro_woo_xtheme_compat();reRenderPage();});fallbackForIosSync();var our_db;function fallbackForIosSync(){var isSyncSupported=('serviceWorker'in navigator&&'SyncManager'in window);if(!isSyncSupported&&navigator.onLine){var indexedDBOpenRequest=indexedDB.open('superpwaForm',2);indexedDBOpenRequest.onerror=function(error){console.error('IndexedDB error:',error)}
indexedDBOpenRequest.onupgradeneeded=function(){if(!this.result.objectStoreNames.contains('post_requests')){this.result.createObjectStore('post_requests',{autoIncrement:true,keyPath:'id'})}}
indexedDBOpenRequest.onsuccess=function(){our_db=this.result;sendPostToServerAjax();}}}
function reRenderPage(){var condition=navigator.onLine?'online':'offline';if(condition=='offline'){var formElement=document.querySelector('form[method=\"post\"]');if(formElement&&(formElement.classList.contains('frm-fluent-form')||formElement.querySelector('.frm_dropzone'))){}}}
function updateOfflineStatus(event){var condition=navigator.onLine?'online':'offline';if(condition=='offline'){setTimeout(()=>{var formElement=document.querySelectorAll('form[method=\"post\"]');if(formElement&&formElement.length>0){for(var i=0;i0){frm_dropzone_attrs.forEach(ele=>{var container_id=ele.id;container_id=container_id.match(/\d+/);const upload_input_parent=ele.closest('.frm_form_field');var upload_input=upload_input_parent.querySelector('.dz-hidden-input');if(upload_input){upload_input.setAttribute("data-containerid",container_id);}});}
var frm_dropzone_ele=document.querySelectorAll('.dz-hidden-input');if(frm_dropzone_ele&&frm_dropzone_ele.length>0){frm_dropzone_ele.forEach(ele=>{ele.addEventListener('change',(function(e){if(e.target.files[0]||e.target){var formElement=document.querySelector('form[method="post"]');var field_id=e.target.getAttribute("data-containerid");var field_id_label='file'+field_id;var object1={};object1['action']='frm_submit_dropzone';object1['field_id']=field_id;object1['form_id']=document.querySelector('[name="form_id"]').value;object1['nonce']=frm_js.nonce;object1['antispam_token']=formElement.getAttribute('data-token');object1[field_id_label]=e.target.files[0];saveAddlAjaxSubmits(frm_js.ajax_url,object1);}}));});}
let gform_next_buttons=document.querySelectorAll('.gform_next_button');let gform_previous_button=document.querySelectorAll('.gform_previous_button');if(gform_next_buttons.length>0){gform_next_buttons.forEach(button=>{button.setAttribute('onclick','handleGravityMultistep("next",this)');button.setAttribute('onkeypress','handleGravityMultistep("next",this)');button.setAttribute('type','button');});}
if(gform_previous_button.length>0){gform_previous_button.forEach(button=>{button.setAttribute('onclick','handleGravityMultistep(\"previous\",this)');button.setAttribute('onkeypress','handleGravityMultistep(\"previous\",this)');button.setAttribute('type','button');});}},500);}}
function sendPostToServerAjax(){var savedRequests=[];var objStore=getObjectStore('ajax_requests');if(!!objStore){var req=getObjectStore('ajax_requests').openCursor()
req.onsuccess=async function(event){var cursor=event.target.result
if(cursor){savedRequests.push(cursor.value)
cursor.continue()}else{if(savedRequests&&savedRequests.length){for(let savedRequest of savedRequests){var formData=new FormData();for(const[key,value]of Object.entries(savedRequest.payload)){formData.append(key,value);}
var requestUrl=savedRequest.url
var payload=JSON.stringify(savedRequest.payload)
var method=savedRequest.method
var headers={'Accept':'application/json, text/javascript, */*; q=0.01',}
fetch(superpwa_sw.ajax_url+'?action=superpwa_form_store_send',{headers:headers,method:method,body:formData}).then(function(response){if(response.status<400){getObjectStore('ajax_requests','readwrite').delete(savedRequest.id);return response.json();}
return false;}).then(function(response){if(response){sendPostToServer([response[0],savedRequest.payload.field_id]);console.log('Form Submitted with ajax fields : success');}else{sendPostToServer();console.log('Form Submitted without ajax fields : ajax fields present but their saving failed to db');}});}}else{sendPostToServer();console.log('Form Submitted without ajax fields : no values present in ajax_requests object');}}}
req.onerror=function(error){sendPostToServer();}}else{sendPostToServer();}}
function sendPostToServer(ajax_params=null){var savedRequests=[];var objStore=getObjectStore('post_requests');if(!!objStore){var req=getObjectStore('post_requests').openCursor();req.onsuccess=async function(event){var cursor=event.target.result;if(cursor){savedRequests.push(cursor.value);cursor.continue();}else{for(let savedRequest of savedRequests){var formData=new FormData();for(const[key,value]of Object.entries(savedRequest.payload)){formData.append(key,value);}
if(ajax_params&&ajax_params.length&&ajax_params[0]){formData.set('item_meta['+ajax_params[1]+']',ajax_params[0]);}
var requestUrl=savedRequest.url;var method=savedRequest.method;var headers={'Accept':'application/json, text/javascript, */*; q=0.01',};try{const response=await fetch(requestUrl,{headers:headers,method:method,body:formData});console.log('server response',response);if(response.status<400){try{var forDataSave={};formData.forEach(function(value,key){forDataSave[key]=value;});var forDataSaveJson=JSON.stringify(forDataSave);const response=await fetch(superpwa_sw.ajax_url+'?action=superpwa_form_store_send',{headers:headers,method:method,body:forDataSaveJson,});console.log('saved request',savedRequest);if(response.status<400){await getObjectStore('post_requests','readwrite').delete(savedRequest.id);}}catch(error){console.error('Send to Server failed:',error);throw error;}}else{console.error('Server responded with an error:',response.status);}}catch(error){console.error('Send to Server failed:',error);throw error;}}}};}}
function getObjectStore(storeName,mode){if(!our_db){return null;}
return our_db.transaction(storeName,mode).objectStore(storeName)}
function saveAddlAjaxSubmits(submit_url,obj){var indexedDBOpenRequest=indexedDB.open('superpwaForm',2);indexedDBOpenRequest.onerror=(event)=>{console.error('a post form request has been not added to IndexedDB');};indexedDBOpenRequest.onupgradeneeded=(event)=>{const db=event.target.result;if(!db.objectStoreNames.contains('ajax_requests')){db.createObjectStore('ajax_requests',{autoIncrement:true,keyPath:'id'});}}
indexedDBOpenRequest.onsuccess=(event)=>{const db=event.target.result;var request=db.transaction('ajax_requests','readwrite').objectStore('ajax_requests').add({url:submit_url,payload:obj,method:'POST'})
request.onsuccess=function(event){console.log('a post form request has been added to indexedb')}
request.onerror=function(error){console.error(error)}}}
function superpwapro_woo_xtheme_compat(){if(document.querySelector('.add_to_cart_button')){document.addEventListener("click",function(event){if(event.target.closest(".add_to_cart_button")){event.preventDefault();event.stopPropagation();const button=event.target.closest(".add_to_cart_button");const parentele=button.parentNode;const qty_wrapper=parentele.querySelector(".quantity-wrapper");const qty=qty_wrapper.querySelector(".qty");qty.value=1;if(qty_wrapper){qty_wrapper.classList.add('is-added');}
const addToCartUrl=location.href+'?wc-ajax=add_to_cart';var object_payload={};object_payload['product_name']=button.getAttribute("data-product_name");object_payload['success_message']=button.getAttribute("data-success_message");object_payload['product_sku']=button.getAttribute("data-product_sku");object_payload['product_id']=button.getAttribute("data-product_id");object_payload['quantity']=1;saveAddlAjaxSubmits(addToCartUrl,object_payload);}});}else{console.log('add_to_cart_button not found');}
if(document.querySelector('.quantity-wrapper .minus')){document.addEventListener('click',function(event){if(event.target.closest('.quantity-wrapper .minus')){event.preventDefault();event.stopPropagation();const minus=event.target.closest('.quantity-wrapper .minus');const minus_parent=minus.parentNode.parentNode.parentNode;const button=minus_parent.querySelector('.add_to_cart_button');const qty_wrapper=minus_parent.querySelector('.quantity-wrapper');const qty_input=minus_parent.querySelector('.quantity-wrapper .qty');const product_id=button.getAttribute('data-product_id');if(qty_input.value==0){qty_wrapper.classList.remove('is-added');}
setTimeout(function(){qty_wrapper.querySelectorAll('.blockUI').forEach(el=>el.remove());},5000);const addToCartUrl='/wp-admin/admin-ajax.php';var object_payload={};object_payload['action']='etheme_update_cart_item_quantity_by_id';object_payload['item_id']=product_id;object_payload['qty']=qty_input.value;saveAddlAjaxSubmits(addToCartUrl,object_payload);}});}
if(document.querySelector('.quantity-wrapper .plus')){document.addEventListener('click',function(event){if(event.target.closest('.quantity-wrapper .plus')){event.preventDefault();event.stopPropagation();const plus=event.target.closest('.quantity-wrapper .plus');const plus_parent=plus.parentNode.parentNode.parentNode;const button=plus_parent.querySelector('.add_to_cart_button');const qty_wrapper=plus_parent.querySelector('.quantity-wrapper');const qty_input=plus_parent.querySelector('.quantity-wrapper .qty');const product_id=button.getAttribute('data-product_id');setTimeout(function(){qty_wrapper.querySelectorAll('.blockUI').forEach(el=>el.remove());},5000);qty_wrapper.classList.add('is-added');const addToCartUrl='/wp-admin/admin-ajax.php';var object_payload={};object_payload['action']='etheme_update_cart_item_quantity_by_id';object_payload['item_id']=product_id;object_payload['qty']=qty_input.value;saveAddlAjaxSubmits(addToCartUrl,object_payload);}});}}}}