    var config = {
            'messagingSenderId': '600791335319',
            'apiKey': 'AIzaSyB8s9yJWf0zNvSQ25QmiHPRaDk7BvdLmI4',
            'projectId': 'jeansberonna',
            'appId': '1:600791335319:web:5df006ae94483259f3c4d2',
        };

        firebase.initializeApp(config);
        const messaging = firebase.messaging();
        messaging
            .requestPermission()
            .then(function () {
                //MsgElem.innerHTML = "Notification permission granted." 
                
                
                // get the token in the form of promise
                return messaging.getToken()
            })
            .then(function(token) {
                //TokenElem.innerHTML = "token is : " + token
                
                if (vUsuarioID.length>0){
                    //GUARDAR SUSCRIPCION - LOG
                    $.ajax({
                        type: "POST",
                        url: "../php_func/acciones.php?a=updateLogSuscription&v1="+vUsuarioID+"&v2="+token,
                        datatype: "text",
                        success: function(data) {
                
                            
                        }
                    });
                } else {
                    //GUARDAR SUSCRIPCION - NO LOG
                
                }
            })
            .catch(function (err) {
                //ErrElem.innerHTML =  ErrElem.innerHTML + "; " + err
                console.log("Unable to get permission to notify.", err);
            });

        let enableForegroundNotification = true;
        messaging.onMessage(function(payload) {
            
            //NotisElem.innerHTML = NotisElem.innerHTML + JSON.stringify(payload);

            if(enableForegroundNotification) {
                const {title, ...options} = JSON.parse(payload.data.notification);
                navigator.serviceWorker.getRegistrations().then(registration => {
                    registration[0].showNotification(title, options);
                });
            }
        });

         
if ('serviceWorker' in navigator){
    navigator.serviceWorker.register('https://m.beronna.com/sw.js',{useCache: false})
    .then((reg)=>console.log('¡Service Worker Registrado!',reg)) 
    .catch((err)=>console.log('Service Worker Error',err));
    requestPermission();
}

if (!('PushManager' in window)) { 
  // Push isn't supported on this browser, disable or hide UI. 
  
}

function requestPermission() {
  return new Promise(function(resolve, reject) {
    const permissionResult = Notification.requestPermission(function(result) {
      // Handling deprecated version with callback.
      resolve(result);
    });

    if (permissionResult) {
      permissionResult.then(resolve, reject);
    }
  })
  .then(function(permissionResult) {
    if (permissionResult !== 'granted') {
      //requestPermission();
      
      throw new Error('Permission not granted.');
    } else {
      subscribeUserToPush();
    }
  });
}

function subscribeUserToPush() {
  return navigator.serviceWorker.register('https://m.beronna.com/sw.js')
  .then(function(registration) {
    var subscribeOptions = {
      userVisibleOnly: true,
      applicationServerKey: 'BJxSvcAEwly-yco7LY_9YuZz530NlMbPZO0ocmoxQ-yt0Jek98UNAn2HdvNFJpRmkSKbGFjbMpVpDR5bKRbJHe8'
    };

    return registration.pushManager.subscribe(subscribeOptions);
  })
  .then(function(pushSubscription) {
        var vSuscripcionEndPoint = JSON.stringify(pushSubscription.endpoint);
        vSuscripcionEndPoint=vSuscripcionEndPoint.replaceAll('"','');
        vSuscripcionEndPoint=vSuscripcionEndPoint.replace('https://fcm.googleapis.com/fcm/send/','');
        //console.log(vSuscripcionEndPoint);
        
    return pushSubscription;
  });
}
