 (function () {
    //ESP Integration Code
    window.PianoESPConfig = {
        id: 157
    }
    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() {
    }

    function onCheckoutSubmitPayment() {
    }

    /* 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(data) {
      function catchDOISucesss() {
    // SuccessDOI判定-DOI完了監視
    window.addEventListener("message", function(event) {
      try {
        var ed = JSON.parse(event.data)
        if(ed.event === "successDOI" || (ed.event === "pianoIdEvent" && ed.params.event === "successDOI")) {
          // リロード
          location.reload();
        }
      } catch (e) {}
    });
  };
  // ユーザー登録時
  if(data && data.registration) {
    // DOI設定有効の場合
    if(data.params && data.params.email_confirmation_required) {
      // SuccessDOI判定へ
      catchDOISucesss()
    }
    else {
      // DOI設定無効のユーザー登録
    }
  }
  // ユーザーログイン時
  else {
    // DOI設定有効の場合のユーザーログイン
    //console.log(data);
    if(data.params) {
      // DOI認証ステータス未完了の場合はSuccessDOI判定へ
      if(!data.params.confirmed) {
        catchDOISucesss()
      } else {
        // DOI認証ステータス完了の場合
        // リロード
        location.reload();
      }
    }
    else {
      // DOI設定無効の場合のユーザーログイン
    }
  	} 
   }
  
    /* Callback executed after an experience executed successfully */
    function onExperienceExecute(event) {
    }

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

    /* Callback executed if external checkout has been completed successfully */
    function onExternalCheckoutComplete(event) {
        /* Default behavior is to refresh the page on successful checkout */
        location.reload();
    }

    tp.push(["setAid", 'AzAVDIpMpj']);
  	tp.push(["setCxenseSiteId", "4731434278295641752"]);
    tp.push(["setEndpoint", 'https://buy-ap.piano.io/api/v3']);
    tp.push(['setPianoIdUrl', 'https://id-ap.piano.io']);
    tp.push(["setEspEndpoint", "https://api-esp-ap.piano.io"]);
    tp.push(["setUseTinypassAccounts", false ]);
    tp.push(["setUsePianoIdLiteUserProvider", false ]);
    tp.push(["setUsePianoIdUserProvider", true ]);

    /* checkout related events */
    tp.push(["addHandler", "checkoutComplete", onCheckoutComplete]);
    tp.push(["addHandler", "checkoutClose", onCheckoutClose]);
    tp.push(["addHandler", "checkoutCustomEvent", onCheckoutExternalEvent]);
    tp.push(["addHandler", "checkoutCancel", onCheckoutCancel]);
    tp.push(["addHandler", "checkoutError", onCheckoutError]);
    tp.push(["addHandler", "checkoutSubmitPayment", onCheckoutSubmitPayment]);

    /* user login events */
    tp.push(["addHandler", "loginRequired", onLoginRequired]);
    tp.push(["addHandler", "loginSuccess", onLoginSuccess]);

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

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

    /* external checkout related events */
    tp.push(["addHandler", "externalCheckoutComplete", onExternalCheckoutComplete]);

    tp.push(["init", function () {
        tp.experience.init()
    }]);
})();



  // This part is a replacement for the tag manager.
  var cX = window.cX = window.cX || {}; cX.callQueue = cX.callQueue || [];
  cX.CCE = cX.CCE || {}; cX.CCE.callQueue = cX.CCE.callQueue || [];
  cX.callQueue.unshift(["invoke", function() {cxSetCP();}]);
  function cxSetCP(args) {
    var cp = {}, sa = {};
    var now = new Date();
    var cpKeyLen = 20;
    var cpMaxLen = 256;
    try{
      var refhost = cX.library._findRealReferrer().split("/")[2];
      if(refhost && location.hostname !== refhost) {
        cp["referrer_host"] = sa["referrer_host_S"] = refhost.slice(0, cpMaxLen);
      }
    }catch(e){}
    var u = ["utm_source", "utm_medium", "utm_term", "utm_content", "utm_campaign"];
    if(location.search) location.search.substring(1).split("&").forEach(function(k){
      try{
        var v = k.split("=");
        if(v[0].slice(0,3)==="cx_" && v[1]) {
          sa[v[0].replace(/^cx_/,"")+"_S"] = decodeURIComponent(v[1]).slice(0, cpMaxLen);
        } else if(u.indexOf(v[0].toLowerCase())!==-1 && v[1]) {
          cp[v[0].toLowerCase().slice(0, cpKeyLen)] = sa[v[0].toLowerCase()+"_S"] = decodeURIComponent(v[1]).slice(0, cpMaxLen);
        } 
      }catch(e){}
    });
    if(cX.library.m_isNewUser) {
      cp["newuser"] = sa["newuser_S"] = "true";
      cX.stopAllSessionAnnotations();
    }
    else {
      try{
        var t = now.getTime() - parseInt(((localStorage.getItem("_cX_atfr")||"").match(/altm=([0-9]+)/)||[,now.getTime()])[1]);
        if (t != 0 && t >= 1000*60*30) {
          cX.stopAllSessionAnnotations();
          var da = Math.floor(t/(1000*60*60*24));
          if(da < 1) {
            cp["elapsed"] = sa["elapsed_S"] = "\u0031\u65E5\u4EE5\u5185";
          } else if(da < 7) {
            cp["elapsed"] = sa["elapsed_S"] = String(da)+"\u65E5\u3076\u308A";
          } else if(da < 31) {
            cp["elapsed"] = sa["elapsed_S"] = String(Math.floor(da/7))+"\u9031\u9593\u3076\u308A";
          } else if(da < 365) {
            cp["elapsed"] = sa["elapsed_S"] = String(Math.floor(da/31))+"\u30F6\u6708\u3076\u308A";
          } else {
            cp["elapsed"] = sa["elapsed_S"] = "1\u5E74\u4EE5\u4E0A";
          }
        }
      }
      catch(e) {}
    }
    cp["hour"] = now.getHours();
    cp["wday"] = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][now.getDay()];
    if(Object.keys(cp).length>0) {
      cX.setCustomParameters(cp);
    }
    if(Object.keys(sa).length>0) {
      cX.startSessionAnnotation(sa);
    }
  }


    // 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)})("https://cdn-ap.piano.io/api/tinypass.min.js");
    // |END   INCLUDE TINYPASS JS|

