window.PushNotification==undefined&&(PushNotification={isSubscribed:!1,manager:null,isApple:!1,permission:null,token:null,subscribe:null,trackingRejectedProps:{eventCategory:"Push",eventAction:"Web Push Rejected",eventLabel:"Push"},trackingAcceptedProps:{eventCategory:"Push",eventAction:"Web Push Accepted",eventLabel:"Push"},trackingRequestedProps:{eventCategory:"Push",eventAction:"Web Push Requested",eventLabel:"Push"},init:function(n,t,i){var r=this,h,u,f,e,o,s;"safari"in window&&r.hasStorage()?(r.isApple=!0,"pushNotification"in window.safari&&(h=t.endpoint,u=t.appleId,r.subscribe=function(n){var t=function(i){if(i.permission==="default")window.safari.pushNotification.requestPermission(h,u,{},t);else if(i.permission==="granted"){var f={Token:i.deviceToken,Platform:r.getPlatform(),Useragent:r.getUseragent()};r.registerDevice(f,n)}else i.permission=="denied"&&(VM.Track.trackEvent(r.trackingRejectedProps),location.reload())},i=window.safari.pushNotification.permission(u);t(i)},permissionData=window.safari.pushNotification.permission(u),r.permission=permissionData.permission,permissionData.deviceToken!=undefined&&(r.isSubscribed=!0,r.token=permissionData.deviceToken),typeof i=="function"&&i())):"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&r.hasStorage()?(r.permission=Notification.permission,r.subscribe=function(t){f.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:r.urlB64ToUint8Array(n)}).then(function(n){var i=r.getPlatform(),u=r.getUseragent(),f={Token:n.endpoint,P256DH:r.base64Encode(n.getKey("p256dh")),Auth:r.base64Encode(n.getKey("auth")),Platform:i,Useragent:u};r.registerDevice(f,t)}).catch(function(n){n.toString().indexOf("permission denied")!=-1&&VM.Track.trackEvent(r.trackingRejectedProps);r.handleError("Failed to subscribe to push notifications.",n)})},navigator.serviceWorker.ready.then(function(n){f=n;f.pushManager.getSubscription().then(function(n){r.isSubscribed=!(n===null);r.token=n!=null?n.endpoint:null;r.permission!=="granted"||r.isSubscribed||r.getObj("PushSubscription")==null?typeof i=="function"&&i():r.subscribe(function(){location.reload()})})}).catch(function(n){r.handleError("Error initializing push notifications.",n)})):(e=document.querySelector(".widget-pushnotificationsignup"),e?e.firstElementChild.classList.remove("hidden"):(o=document.getElementById("pushnotificationmanagement"),o&&o.classList.remove("hidden")),s=document.getElementById("deviceerror"),s.classList.add("text-danger"),s.innerHTML="Your current browser does not support push notifications. Please open this page in a supported browser: Chrome, Firefox, Edge, Opera, Safari (desktop).")},registerDevice:function(n,t){var i=this;fetch("/account/pushsubscribe",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({Subscription:n,OldSubscription:i.getObj("PushSubscription"),IsApple:i.isApple})}).then(function(r){r.status===200?r.json().then(function(){VM.Track.trackEvent(i.trackingAcceptedProps);i.isSubscribed=!0;i.token=n.Token;i.setObj("PushSubscription",n);t!=undefined&&t()}):i.handleError("Failed to register device.")})},handleError:function(n,t){var i=document.getElementById("deviceerror");i.innerHTML="<span class='text-danger'>"+n+"<\/span>";console.error(n,t)},getPlatform:function(){var n="Unknown OS";return navigator.userAgent.indexOf("Win")!=-1?n="Windows":navigator.userAgent.indexOf("Mac")!=-1?n="Mac":navigator.userAgent.indexOf("Android")!=-1?n="Android":navigator.userAgent.indexOf("Linux")!=-1?n="Linux":navigator.userAgent.indexOf("like Mac")!=-1&&(n="iOS"),n},getUseragent:function(){var n="Unknown";return(navigator.userAgent.indexOf("Opera")||navigator.userAgent.indexOf("OPR"))!=-1?n="Opera":navigator.userAgent.indexOf("Edge")!=-1?n="Edge":navigator.userAgent.indexOf("Chrome")!=-1?n="Chrome":navigator.userAgent.indexOf("Safari")!=-1?n="Safari":navigator.userAgent.indexOf("Firefox")!=-1?n="Firefox":(navigator.userAgent.indexOf("MSIE")!=-1||!!document.documentMode==!0)&&(n="IE"),n},initFaq:function(){document.querySelectorAll(".faq").forEach(function(n){n.classList.add("contracted");n.addEventListener("click",function(n){n.currentTarget.classList.contains("contracted")?n.currentTarget.classList.remove("contracted"):n.currentTarget.classList.add("contracted")})})},initImage:function(){var n=document.getElementById("notificationPlaform");switch(PushNotification.getPlatform()){case"Macintosh":n.setAttribute("src",n.getAttribute("data-mac"));break;case"Android":n.setAttribute("src",n.getAttribute("data-android"))}},urlB64ToUint8Array:function(n){for(var u="=".repeat((4-n.length%4)%4),f=(n+u).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(f),r=new Uint8Array(i.length),t=0;t<i.length;++t)r[t]=i.charCodeAt(t);return r},base64Encode:function(n){return btoa(String.fromCharCode.apply(null,new Uint8Array(n)))},getObj:function(n){var t=localStorage.getItem(n);return t?JSON.parse(t):null},setObj:function(n,t){localStorage.setItem(n,JSON.stringify(t))},hasStorage:function(){try{var t=window.localStorage,i="__vmtest__";return t.setItem(i,i),t.removeItem(i),!0}catch(n){return n instanceof DOMException&&(n.code===22||n.code===1014||n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t.length!==0}},pushLoad:function(){PushNotification.permission==="denied"||PushNotification.isSubscribed||PushNotification.isApple||(VM.Track.trackEvent({eventCategory:"Push",eventAction:"On Load Web Push Requested",eventLabel:"Push"}),PushNotification.subscribe(function(){window.location.reload()}))}})