window.PushNotification==undefined&&(PushNotification={isSubscribed:!1,manager:null,deviceType:!1,permission:null,token:null,subscribe:null,subscribeComplete:null,registerToken:null,requestOptionsStorageKey:"VM-push-options",pushSubscriptionKey:"PushSubscription",trackingProps:{category:"Push",label:"Push"},init:function(n,t,i){var r=this,e,o,c,u,s,h,f;window.webkit&&window.webkit.messageHandlers?(r.deviceType=3,r.subscribe=function(){window.webkit.messageHandlers.pushPermissionRequest.postMessage({message:!0})},r.subscribeComplete=function(n){n==="denied"&&VM.Track.trackEvent("Soft Prompt Rejected",r.trackingProps)},r.registerToken=function(n){var t={Token:n,Platform:"iOS",Useragent:"iOS App"};r.registerDevice(t,function(){location.reload()})},e=r.getObj(r.pushSubscriptionKey),e&&(r.isSubscribed=!0,r.token=e.Token,r.permission="granted"),typeof i=="function"&&i()):"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window?(r.deviceType=2,r.permission=Notification.permission,r.subscribe=function(t){o.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("denied")!==-1&&VM.Track.trackEvent("Soft Prompt Rejected",r.trackingProps);r.handleError("Failed to subscribe to push notifications.",n)})},navigator.serviceWorker.ready.then(function(n){o=n;o.pushManager.getSubscription().then(function(n){r.isSubscribed=!(n===null);r.token=n!=null?n.endpoint:null;r.permission!=="granted"||r.isSubscribed||r.getObj(r.pushSubscriptionKey)==null?typeof i=="function"&&i():r.subscribe(function(){location.reload()})})}).catch(function(n){r.handleError("Error initializing push notifications.",n)})):"safari"in window?(r.deviceType=1,"pushNotification"in window.safari&&(c=t.endpoint,u=t.appleId,r.subscribe=function(n){var t=function(i){if(i.permission==="default")window.safari.pushNotification.requestPermission(c,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("Soft Prompt Rejected",r.trackingProps),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())):(s=document.querySelector(".widget-pushnotificationsignup"),s?s.firstElementChild.classList.remove("hidden"):(h=document.getElementById("pushnotificationmanagement"),h&&h.classList.remove("hidden")),f=document.getElementById("deviceerror"),f&&(f.classList.add("text-danger"),f.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(i.pushSubscriptionKey),DeviceType:i.deviceType})}).then(function(r){r.status===200?r.json().then(function(r){r.message==="Device registered"&&VM.Track.trackEvent("Soft Prompt Accepted",i.trackingProps);i.isSubscribed=!0;i.token=n.Token;i.setObj(i.pushSubscriptionKey,n);t!=undefined&&t()}):i.handleError("Failed to register device.")}).catch(function(){i.handleError("Error registering device.")})},removeAnonymousDevice:function(){var n=PushNotification,t=n.getObj(n.pushSubscriptionKey);fetch("/account/removeanonymouspushdevice",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({Subscription:t})}).then(function(t){t.status===200?(localStorage.removeItem(n.pushSubscriptionKey),window.location.reload()):n.handleError("Failed to remove device.")}).catch(function(){n.handleError("Error removing device.")})},handleError:function(n,t){var i=document.getElementById("deviceerror");i&&(i.innerHTML=""+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=t){clearTimeout(o);this.requestPermission(u,r);return}e.pages++;PushNotification.setSessionObj(PushNotification.requestOptionsStorageKey,e)}i>0&&(o=setTimeout(function(){PushNotification.requestPermission(u,r)},i*1e3));n>0&&(VM.Scroll.depthCallback=function(t){n===t&&(clearTimeout(o),PushNotification.requestPermission(u,r))})}}else this.requestPermission(u,r);VM.Storage.setObj(this.requestOptionsStorageKey,u)}},getRequestExpiry:function(n,t){return n.setDate(n.getDate()+t)},requestPermission:function(n,t){if(!n.decline){VM.Track.trackEvent("On Load Soft Prompt",this.trackingProps);var r=this,i=$("#push-modal-on-load").on("click",".push-modal-sub",function(n){n.preventDefault();VM.Track.trackEvent("Soft Prompt Accepted",r.trackingProps);i.css("display","none");PushNotification.subscribe(function(){window.location.reload()})}).on("click",".push-modal-close",function(u){u.preventDefault();VM.Track.trackEvent("Soft Prompt Rejected",r.trackingProps);n.decline=!0;n.requested=!0;n.expiry=PushNotification.getRequestExpiry(new Date,t);VM.Storage.setObj(PushNotification.requestOptionsStorageKey,n);i.css("display","none")});$("#body-container").append(i.parent());n.requested||n.decline||i.addClass("modal-loading")}}})