66 lines
2 KiB
JavaScript
66 lines
2 KiB
JavaScript
(function() {
|
|
var donationForm = document.getElementById('donation-form');
|
|
|
|
function field(name) {
|
|
return donationForm.querySelector(
|
|
'input[name=donation\\[' + name + '\\]]');
|
|
}
|
|
|
|
var checkout = StripeCheckout.configure({
|
|
key: donationForm.getAttribute('data-checkout-publishable-key'),
|
|
image: donationForm.getAttribute('data-checkout-image'),
|
|
token: function(token) {
|
|
field('stripe_token').value = token.id;
|
|
field('stripe_token_type').value = token.type;
|
|
field('donor_email').value = token.email;
|
|
donationForm.submit();
|
|
},
|
|
bitcoin: true
|
|
});
|
|
|
|
donationForm.addEventListener('submit', function(e) {
|
|
if (!field('stripe_token').value) {
|
|
e.preventDefault();
|
|
|
|
var amountChoice =
|
|
donationForm.querySelector('input[name=amount]:checked');
|
|
if (amountChoice.value === "custom") {
|
|
amountChoice = document.getElementById('amount-custom-value');
|
|
}
|
|
|
|
// Start parsing at the first digit in the string, to trim leading dollar
|
|
// signs and what have you.
|
|
var amountNumberString = (amountChoice.value.match(/[0-9].+/) || [""])[0];
|
|
var amount = Math.floor(parseFloat(amountNumberString) * 100);
|
|
|
|
if (!isNaN(amount)) {
|
|
field('amount').value = amountNumberString;
|
|
checkout.open({
|
|
name: 'Dress to Impress',
|
|
description: 'Donation (thank you!)',
|
|
amount: amount,
|
|
panelLabel: "Donate"
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
var toggle = document.getElementById('success-thanks-toggle-description');
|
|
if (toggle) {
|
|
toggle.addEventListener('click', function() {
|
|
var desc = document.getElementById('description');
|
|
var attr = 'data-show';
|
|
if (desc.hasAttribute(attr)) {
|
|
desc.removeAttribute(attr);
|
|
} else {
|
|
desc.setAttribute(attr, true);
|
|
}
|
|
});
|
|
}
|
|
|
|
document.getElementById('amount-custom').addEventListener('change', function(e) {
|
|
if (e.target.checked) {
|
|
document.getElementById('amount-custom-value').focus();
|
|
}
|
|
});
|
|
})();
|