 (function () {
    tp = window["tp"] || [];

    /* Checkout related */
    /**
     * Event properties
     *
     * chargeAmount - amount of purchase
     * chargeCurrency
     * uid
     * email
     * expires
     * rid
     * startedAt
     * termConversionId
     * termId
     * promotionId
     * token_list
     * cookie_domain
     * user_token
     *
     */
    function onCheckoutComplete(data) {
    }

    function onCheckoutExternalEvent() {
    }

    function onCheckoutClose(event) {
        /* Default behavior is to refresh the page on successful checkout */
        if (event && event.state == "checkoutCompleted") {
            location.reload();
        }
    }

    function onCheckoutCancel() {
    }

    function onCheckoutError() {
    }

    /* Meter callback */
    function onMeterExpired() {

    }

    /* Meter callback */
    function onMeterActive() {

    }

    /* Callback executed when a user must login */
    function onLoginRequired() {
        // this is a reference implementation only
        // your own custom login/registration implementation would
        // need to return the tinypass-compatible userRef inside the callback

        // mysite.showLoginRegistration(function (tinypassUserRef)
        // tp.push(["setUserRef", tinypassUserRef]); // tp.offer.startCheckout(params); // }
        // this will prevent the tinypass error screen from displaying

        return false;
    }

    /* Callback executed after a tinypassAccounts login */
    function onLoginSuccess() {
    }

    /* Callback executed after an experience executed successfully */
    function onExperienceExecute(event) {
    }

    /* Callback executed if experience execution has been failed */
    function onExperienceExecutionFailed(event) {
    }

    tp.push(["setAid", 'hph4LAYuC6']);
  	tp.push(["setCxenseSiteId", "1139713072749780180"])
    tp.push(["setEndpoint", 'https://buy.tinypass.com/api/v3']);
    tp.push(["setUseTinypassAccounts", false ]);
    tp.push(["setUsePianoIdUserProvider", true ]);
    tp.push(['setApplePayMerchantId','merchant.com.paywaycomplete.payway']);
  
    tp.push(["addHandler", "checkoutCustomEvent", function(event){
         switch(event.eventName) {
             case "surveycookie":
             	console.log("setting cookie")
                var d = new Date();
             	d.setTime(d.getTime() + (365*24*60*60*1000));
             	var expires = "expires="+ d.toUTCString();
                document.cookie = "_pc_surveytaken" + "=" + "true" + ";" + expires + ";path=/;";
                console.log("cookie Set")
             break;
         	}
      }]);

    /* checkout related events */
    tp.push(["addHandler", "checkoutComplete", onCheckoutComplete]);
    tp.push(["addHandler", "checkoutClose", function(event){
      switch (event.state){
        case 'checkoutCompleted':
            	location.reload()
            break;
      }
    }]);
    tp.push(["addHandler", "checkoutCustomEvent", onCheckoutExternalEvent]);
    tp.push(["addHandler", "checkoutCancel", onCheckoutCancel]);
    tp.push(["addHandler", "checkoutError", onCheckoutError]);


    /* user login events */
    tp.push(["addHandler", "loginRequired", onLoginRequired]);
    tp.push(['addHandler', 'loginSuccess', function () {
      tp.api.callApi('/access/list', {}, function (data) {
          if (typeof data.data != "undefined") {
              for (var i in data.data) {
                  if (data.data[i].granted) {
                      tp.offer.close();
                      location.reload();
                  }
              }
          }
      });
	}]);

    /* meter related */
    tp.push(["addHandler", "meterExpired", onMeterExpired]);
    tp.push(["addHandler", "meterActive", onMeterActive]);

    tp.push(["addHandler", "experienceExecute", onExperienceExecute]);
    tp.push(["addHandler", "experienceExecutionFailed", onExperienceExecutionFailed]);
  
  	tp.push(["setMaxCookieExpirationInDays", 90]);

    tp.push(["init", function () {
      tp.setGA4Config({
                    measurementId: 'G-318004630',
                    eventParameters: {
                        send_page_view: false,
                    }
                }); 
      tp.pianoId.init()
         if (!tp.user.isUserValid()) {
            // If URL has reset_token parameter
            var tokenMatch = location.search.match(/reset_token=([A-Za-z0-9]+)/);
            if (tokenMatch) {
                // Get value of the token
                var token = tokenMatch[1];
                // Present password reset form with the found token
                tp.pianoId.show({
                    'resetPasswordToken': token, loggedIn: function () {
                        // Once user logs in - refresh the page
                        location.reload();
                    }
                });
            }
        }
        tp.experience.init()
    }]);
 
  
  	tp.push(['addHandler', 'checkoutCustomEvent', function(event) {
      var currentDate = new Date();
      switch(event.eventName) {
        case 'close-modal-button':
          document.cookie = '_pc_srv=true;expires=' + new Date(currentDate.getTime() + 90*24*60*60*1000).toGMTString() + ';path=/';
          break;
        case 'take-survey-button':
        case 'no-thank-you-link':
          document.cookie = '_pc_srv=false;expires=' + new Date(currentDate.getTime() + 90*24*60*60*1000).toGMTString() + ';path=/';
          break;
      }
    }]);
})();


    // do not change this section
    // |BEGIN INCLUDE TINYPASS JS|
    (function(src){var a=document.createElement("script");a.type="text/javascript";a.async=true;a.src=src;var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)})("//cdn.tinypass.com/api/tinypass.min.js?version=2");
    // |END   INCLUDE TINYPASS JS|

