window.addEventListener('DOMContentLoaded', function(event) {

  var httpRequest = new XMLHttpRequest();
  httpRequest.onloadend = () => {
    if (httpRequest.status < 300) {
      try {
        responseObject = JSON.parse(httpRequest.responseText);

        if(!responseObject.hasRedirectedAlready) {
          Stripe(document.getElementById("stripe_public_key").value)
          .redirectToCheckout({
            sessionId: document.getElementById("stripe_checkout_session_id").value,
          })
          .then(function(result) {
            if (result.error) {
              alert("Stripe.redirectToCheckout() failed with: " + result.error.message)
            }
          });
        } else {
          location.href = '/payment/stripe';
        }

      } catch (err) {
        alert("could not redirect to stripe because capsul did not return valid json");
      }
    } else {
      alert("could not redirect to stripe because capsul returned HTTP" + httpRequest.status + ", expected HTTP 200");
    }
  };

  httpRequest.ontimeout = () => {
    alert("could not redirect to stripe because capsul timed out");
  };

  httpRequest.open("GET", "/payment/stripe/"+document.getElementById("stripe_checkout_session_id").value+"/json?q="+String(Math.random()).substring(2, 8));
  httpRequest.timeout = 10000;
  httpRequest.send();
});