Join us for Wine & Wonder, an unforgettable afternoon of exceptional wines, delicious food, live music, and meaningful fellowship—all in support of the Sisters of Bon Secours and their ministries in the United States and beyond. Held at the beautiful Bon Secours Stone House in Marriottsville, Maryland, guests will enjoy a curated wine flight featuring five handcrafted Penn Oaks Winery wines, paired with delicious fare in a warm and welcoming atmosphere. Whether you’re gathering with friends, celebrating with family, or simply looking for a memorable afternoon, your participation directly supports the Sisters’ mission of healing, compassion, and service. Tickets are $45 per person and include food, live music, and the complete wine flight experience. We invite you to sip, savor, and support while making a lasting difference.
var insertForm22068224 = function() {
var html22068224 = '
' +
'.registration-form label{color: #404040;' +
' display: block;}' +
'' +
'.registration-form label.error,' +
' .registration-form #card-errors{color: #900;}' +
'' +
'.registration-form label.error{display: block;' +
' padding: 0 10px;}' +
'' +
'.registration-form section{padding: 5px;}' +
'' +
'.registration-form .field{padding: 4px 0;}' +
'' +
'.registration-form .field .required-star{color: #aa0000; ' +
' display: inline-block; ' +
' margin-left: 5px;}' +
'' +
'.registration-form .field .checkboxes{max-width:275px;' +
' border: 1px solid #A9A9A9;' +
' -webkit-transition: all .3s ease-out;' +
' -moz-transition: all .3s ease-out;' +
' transition: all .3s ease-out;}' +
'' +
'.registration-form .field .checkbox{display:block;' +
' position:relative;' +
' -moz-box-sizing:border-box;' +
' box-sizing:border-box;' +
' height:30px;' +
' line-height:26px;' +
' padding:2px 28px 2px 8px;' +
' border-bottom:1px solid rgba(0,0,0,0.1);' +
' color:#404040; ' +
' overflow:hidden;' +
' text-decoration:none; }' +
'' +
'.registration-form .field .checkbox input{opacity:0.01;' +
' position:absolute;' +
' left:-50px; ' +
' z-index:-5;}' +
'' +
'.registration-form .field .checkbox:last-child{border-bottom:none;}' +
'' +
'.registration-form .field .checkbox.selected{background: rgb(50, 142, 253);' +
' color:#fff; }' +
'' +
'.registration-form .field .checkbox.selected:before{color:#fff;' +
' line-height:30px;' +
' position:absolute;' +
' right:10px; }' +
'' +
'.registration-form .section.consent .field.checkbox:not(.consent-all){margin-left: 20px;}' +
'' +
'.registration-form .field input,' +
' .registration-form .field select,' +
' .registration-form .field textarea,' +
' .registration-form #card-element{padding: 4px; ' +
' max-width: 275px;' +
' width: 96%}' +
'' +
'.registration-form .field .StripeElement{background-color: white;' +
' background-color: -moz-field;' +
' border: 1px solid darkgray;' +
' display: inline-block;}' +
'' +
'.registration-form .field textarea.international{height: 120px;}' +
'' +
'.registration-form .field select{box-sizing: content-box;}' +
'' +
'.registration-form .field.radio label,' +
' .registration-form .field.checkbox label{display: inline-block;}' +
'' +
'.registration-form .field.radio input,' +
' .registration-form .field.checkbox input{width: auto;' +
' margin-left: 0;}' +
'' +
'.registration-form .field .sidenote{color: #999;' +
' font-size: 10px; }' +
'' +
'.registration-form .field.additional-amount,{display: inline-block;}' +
'' +
'.registration-form .field.additional-amount{padding-left: 6px;}' +
'' +
'.registration-form #additional-amount{width: 65px;}' +
'' +
'.registration-form .errors{border: 1px solid #900;' +
' color: #900; ' +
' padding: 10px;}' +
'' +
'.registration-form .radio label.error{display: inline-block;' +
' padding-right: 86%; ' +
' float: right;}' +
'' +
'.registration-form .hidden{display: none;}' +
'' +
'.btn-group .btn-submit-registration{padding: 4px 10px;}' +
'' +
'.registration-form .registration-summary{border-collapse: collapse}' +
'' +
'.registration-form .registration-summary td,' +
' .registration-form .registration-summary th{padding: 5px}' +
'' +
'.registration-form .registration-summary .summary-total{font-weight: bold;' +
' border-top: 1px solid black;}' +
'' +
'.registration-form .registration-summary{text-align: left;}' +
'' +
'.registration-form .registration-summary .description-column{min-width: 140px;}' +
'' +
'.registration-form .registration-summary .quantity-column{min-width: 70px;}' +
'' +
'.registration-form .registration-summary .ticket-columns{min-width: 60px;}' +
'' +
'.registration-form .registration-summary label.error{display: block;}' +
'' +
'.registration-form .registration-summary #numberOfRegistrations{width: 40px;}' +
'' +
'.registration-form .registration-summary input.amount-field{width: 65px;}' +
'' +
'iframe#spreedly-iframe[style=\'visibility: hidden;\']{display: none;}' +
'' +
'input, select, textarea, button{font-family: inherit;}' +
'' +
'#spreedly-modal-overlay[style="visibility:hidden"]{display: none;}' +
'' +
'
' +
'' +
'
' +
'
' +
'
' +
'
' +
'
Wine & Wonder 2026 Registration
' +
'
' +
'$45.00 - Wine & Wonder Ticket: Admission for One: Food, Wine & Live Music Included' +
'
' +
'' +
'
' +
'
' +
'
' +
'
' +
'
Quantity
' +
'
Type
' +
'
Tickets
' +
'
Price
' +
'
' +
'
' +
'
×' +
'
' +
'
' +
'
' +
'
' +
'
' +
' ' +
'
' +
'
' +
'
Additional Donation
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
Donation
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
Total:
' +
'
' +
'
0
' +
'
$0.00
' +
'
' +
'
' +
'' +
'
' +
'
' +
'
' +
'Add [amount] to help cover our transaction fees' +
'
' +
'' +
'
' +
' ' +
'
' +
'
Contact Information
' +
'
' +
'First Name*' +
'' +
'
' +
'
' +
'Last Name*' +
'' +
'
' +
'
' +
'Email*' +
'' +
'
' +
'
' +
'Phone' +
'' +
'
' +
'' +
'
' +
'
' +
'
' +
'Country*' +
'' +
'Afghanistan' +
'Aland Islands' +
'Albania' +
'Algeria' +
'American Samoa' +
'Andorra' +
'Angola' +
'Anguilla' +
'Antarctica' +
'Antigua and Barbuda' +
'Argentina' +
'Armenia' +
'Aruba' +
'Australia' +
'Austria' +
'Azerbaijan' +
'Bahamas' +
'Bahrain' +
'Bangladesh' +
'Barbados' +
'Belarus' +
'Belgium' +
'Belize' +
'Benin' +
'Bermuda' +
'Bhutan' +
'Bolivia' +
'Bosnia and Herzegovina' +
'Botswana' +
'Bouvet Island' +
'Brazil' +
'British Indian Ocean Territory' +
'Brunei Darussalam' +
'Bulgaria' +
'Burkina Faso' +
'Burundi' +
'Cambodia' +
'Cameroon' +
'Canada' +
'Cape Verde' +
'Cayman Islands' +
'Central African Republic' +
'Chad' +
'Chile' +
'China' +
'Christmas Island' +
'Cocos (Keeling) Islands' +
'Colombia' +
'Comoros' +
'Congo' +
'Democratic Republic of the Congo' +
'Cook Islands' +
'Costa Rica' +
'Cote d\'Ivoire' +
'Croatia' +
'Cuba' +
'Curacao' +
'Cyprus' +
'Czech Republic' +
'Denmark' +
'Djibouti' +
'Dominica' +
'Dominican Republic' +
'Ecuador' +
'Egypt' +
'El Salvador' +
'Equatorial Guinea' +
'Eritrea' +
'Estonia' +
'Eswatini' +
'Ethiopia' +
'Falkland Islands (Malvinas)' +
'Faroe Islands' +
'Fiji' +
'Finland' +
'France' +
'French Guiana' +
'French Polynesia' +
'French Southern Territories' +
'Gabon' +
'Gambia' +
'Georgia' +
'Germany' +
'Ghana' +
'Gibraltar' +
'Greece' +
'Greenland' +
'Grenada' +
'Guadeloupe' +
'Guam' +
'Guatemala' +
'Guernsey' +
'Guinea' +
'Guinea-Bissau' +
'Guyana' +
'Haiti' +
'Heard Island' +
'Honduras' +
'Hong Kong' +
'Hungary' +
'Iceland' +
'India' +
'Indonesia' +
'Islamic Republic of Iran' +
'Iraq' +
'Ireland' +
'Isle of Man' +
'Israel' +
'Italy' +
'Jamaica' +
'Japan' +
'Jersey' +
'Jordan' +
'Kazakhstan' +
'Kenya' +
'Kiribati' +
'Democratic People\'s Republic of Korea' +
'Republic of Korea' +
'Kuwait' +
'Kyrgyzstan' +
'Lao People\'s Democratic Republic' +
'Latvia' +
'Lebanon' +
'Lesotho' +
'Liberia' +
'Libya' +
'Liechtenstein' +
'Lithuania' +
'Luxembourg' +
'Macao' +
'Macedonia' +
'Madagascar' +
'Malawi' +
'Malaysia' +
'Maldives' +
'Mali' +
'Malta' +
'Marshall Islands' +
'Martinique' +
'Mauritania' +
'Mauritius' +
'Mayotte' +
'Mexico' +
'Federated States of Micronesia' +
'Republic of Moldova' +
'Monaco' +
'Mongolia' +
'Montenegro' +
'Montserrat' +
'Morocco' +
'Mozambique' +
'Myanmar' +
'Namibia' +
'Nauru' +
'Nepal' +
'Netherlands' +
'New Caledonia' +
'New Zealand' +
'Nicaragua' +
'Niger' +
'Nigeria' +
'Niue' +
'Norfolk Island' +
'Northern Mariana Islands' +
'Norway' +
'Oman' +
'Pakistan' +
'Palau' +
'State of Palestine' +
'Panama' +
'Papua New Guinea' +
'Paraguay' +
'Peru' +
'Philippines' +
'Pitcairn' +
'Poland' +
'Portugal' +
'Puerto Rico' +
'Qatar' +
'Reunion' +
'Romania' +
'Russian Federation' +
'Rwanda' +
'Saint Barthelemy' +
'Ascension and Tristan da Cunha Saint Helena' +
'Saint Kitts and Nevis' +
'Saint Lucia' +
'Saint Martin (French part)' +
'Saint Pierre and Miquelon' +
'Saint Vincent and the Grenadines' +
'Samoa' +
'San Marino' +
'Sao Tome and Principe' +
'Saudi Arabia' +
'Senegal' +
'Serbia' +
'Seychelles' +
'Sierra Leone' +
'Singapore' +
'Sint Maarten (Dutch part)' +
'Slovakia' +
'Slovenia' +
'Solomon Islands' +
'Somalia' +
'South Africa' +
'South Georgia' +
'South Sudan' +
'Spain' +
'Sri Lanka' +
'Sudan' +
'Suriname' +
'Svalbard and Jan Mayen' +
'Sweden' +
'Switzerland' +
'Syrian Arab Republic' +
'Taiwan' +
'Tajikistan' +
'United Republic of Tanzania' +
'Thailand' +
'Timor-Leste' +
'Togo' +
'Tokelau' +
'Tonga' +
'Trinidad and Tobago' +
'Tunisia' +
'Turkey' +
'Turkmenistan' +
'Turks and Caicos Islands' +
'Tuvalu' +
'Uganda' +
'Ukraine' +
'United Arab Emirates' +
'United Kingdom' +
'United States' +
'United States Minor Outlying Islands' +
'Uruguay' +
'Uzbekistan' +
'Vanuatu' +
'Vatican City' +
'Venezuela' +
'Viet Nam' +
'British Virgin Islands' +
'U.S. Virgin Islands' +
'Wallis and Futuna' +
'Western Sahara' +
'Yemen' +
'Zambia' +
'Zimbabwe' +
'' +
'
' +
'
' +
'Address*' +
'' +
'
' +
'
' +
'City*' +
'' +
'
' +
'
' +
'State*' +
'' +
'Alabama' +
'Alaska' +
'American Samoa' +
'Arizona' +
'Arkansas' +
'Armed Forces Africa, Canada, Europe, Middle East' +
'Armed Forces Americas (except Canada)' +
'Armed Forces Pacific' +
'California' +
'Colorado' +
'Connecticut' +
'Delaware' +
'District of Columbia' +
'Florida' +
'Georgia' +
'Guam' +
'Hawaii' +
'Idaho' +
'Illinois' +
'Indiana' +
'Iowa' +
'Kansas' +
'Kentucky' +
'Louisiana' +
'Maine' +
'Maryland' +
'Massachusetts' +
'Michigan' +
'Minnesota' +
'Mississippi' +
'Missouri' +
'Montana' +
'Nebraska' +
'Nevada' +
'New Hampshire' +
'New Jersey' +
'New Mexico' +
'New York' +
'North Carolina' +
'North Dakota' +
'Ohio' +
'Oklahoma' +
'Oregon' +
'Pennsylvania' +
'Puerto Rico' +
'Rhode Island' +
'South Carolina' +
'South Dakota' +
'Tennessee' +
'Texas' +
'US Virgin Islands' +
'Utah' +
'Vermont' +
'Virginia' +
'Washington' +
'West Virginia' +
'Wisconsin' +
'Wyoming' +
'' +
'
' +
'
' +
'Province*' +
'' +
'Alberta' +
'British Columbia' +
'Manitoba' +
'New Brunswick' +
'Newfoundland and Labrador' +
'Northwest Territories' +
'Nova Scotia' +
'Nunavut' +
'Ontario' +
'Prince Edward Island' +
'Quebec' +
'Saskatchewan' +
'Yukon Territory' +
'' +
'
' +
'
' +
'ZIP Code*' +
'' +
'
' +
'
' +
'Postal Code*' +
'' +
'
' +
'' +
'
' +
' ' +
'
' +
'
' +
'Comments' +
'' +
'
' +
'' +
'
' +
'
' +
'
' +
'I would like to receive or continue receiving updates from Sisters of Bon Secours, USA' +
'
' +
'
' +
'by email' +
'
' +
'
' +
'by postal mail' +
'
' +
'
' +
'by phone' +
'
' +
'' +
'
' +
'
' +
' You must fill out the CAPTCHA
' +
'' +
'
' +
'
' +
'
Payment Information
' +
'
' +
'Credit Card' +
'
' +
'
' +
'Savings' +
'
' +
'
' +
'Checking' +
'
' +
'
' +
'Routing Number*' +
'' +
'
' +
'
' +
'Account Number*' +
'' +
'
' +
'
' +
' ' +
' Credit or debit card' +
' *' +
' ' +
'
' +
'
' +
'
' +
'' +
'
' +
' ' +
'
More payment information appears on your live form. For a complete preview, go to the forms list and select View Hosted Form.
' +
'
' +
' ' +
'
' +
'
' +
'
' +
'
' +
'
Processing...
Your transaction is being processed. Please do not close your browser or leave this page.
' +
'
' +
'' +
'' + '';var successHtml22068224 = '
' +
'
Thank You for Your Registration!
' +
'
Your registration for Wine and Wonder has been successfully processed. We look forward to seeing you there! Don\u0026#39;t forget to invite your friends!
' +
'\u003cdiv class=\"social-media-buttons\" style=\"margin-top:10px;\"\u003e\u003cdiv class=\"fb-like\" data-href=\"https://facebook.com/bonsecoursvocations\" data-layout=\"button_count\" data-show-faces=\"true\" style=\"padding-right: 10px;\" data-action=\"like\" \u003e\u003c/div\u003e\u003cdiv id=\"facebookShareOnly\" class=\"fb-share-button\" data-href=\"https://facebook.com/bonsecoursvocations\" data-layout=\"button_count\"\u003e\u003c/div\u003e\u003cscript type=\u0027text/javascript\u0027\u003edocument.getElementById(\u0027facebookShareOnly\u0027).setAttribute(\u0027data-href\u0027, window.location.href);\u003c/script\u003e\u003c/div\u003e \u003cdiv id=\"fb-root\"\u003e\u003c/div\u003e \u003cscript\u003e(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_US/sdk.js#xfbml=1\u0026version=v2.8\"; fjs.parentNode.insertBefore(js, fjs); }(document, \u0027script\u0027, \u0027facebook-jssdk\u0027));\u003c/script\u003e \u003cdiv class=\"additional-tickets\" style=\"margin-top: 10px;\"\u003e\u003cbutton type=\"button\" onclick=\"javascript:location.reload()\"\u003ePurchase Additional Tickets\u003c/button\u003e\u003c/div\u003e' +
'
';( function($) {if (Bloomerang.useDonationId('22068224')) {
Bloomerang.useProcessor('565249', 'StripeExpress', 'pk_live_iZYXFefCkt380zu63aqUIo7y');
} else {
html22068224 = '
Only one donation or event registration form can be used on each page.
';
}if (jQuery('#bloomerangForm22068224').length) {
if (window.ActiveXObject) { // they are using IE < 11, which doesn't support TLS 1.1
html22068224 = '
Your browser does not support the minimum security requirements for keeping your Credit Card information safe when processing payments. Please upgrade your browser or download the latest version of' +
' Chrome or Firefox.
';
}
jQuery('#bloomerangForm22068224').after(html22068224);
Bloomerang.Util.requireStripe(function() {
Bloomerang.Util.Stripe = Stripe('pk_live_iZYXFefCkt380zu63aqUIo7y');
let elements = null;
// Create an instance of the stripe card element.
elements = Bloomerang.Util.Stripe.elements();
Bloomerang.Util.StripeCard = elements.create('card', {
hidePostalCode: true,
style: {
base: {
color: "#272D30",
fontSize: "14px",
fontFamily: "'Century Gothic', verdana, sans-serif"
},
invalid: {
color: "#272D30"
}
}
});
if(!!document.querySelector("#membership-form")){
Bloomerang.Util.StripeCardIsValid = true;
Bloomerang.Util.RecurringStripeCardIsValid = true;
Bloomerang.Util.RecurringStripeCard.mount('#card-element');
}
else
{
// Add an instance of the stripe card/payment element into the `card-element`
.
Bloomerang.Util.StripeCard.mount('#card-element');
Bloomerang.Util.StripeCardIsValid = false;
}
// Handle real-time validation errors from the card Element.
Bloomerang.Util.StripeCard.addEventListener('change', function(event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
if (event.complete) {
Bloomerang.Util.StripeCardIsValid = true;
} else {
Bloomerang.Util.StripeCardIsValid = false;
}
});
});
jQuery(".donation-form #express-submit").val("Donate Now");
jQuery(".registration-form #express-submit").val("Register Now");
jQuery(".membership-form #express-submit").val("Join");
jQuery("#express-submit").attr("disabled", false);
Bloomerang.Data.PayPal.IsPayPalVenmoEnabled = false;
jQuery("#paypal-button-container").remove();
Bloomerang.Data.PayPal.IsPayPalVenmoEnabled = false;
jQuery("form.donation-form .recurring-paypal-venmo-label-info, #donation-form .recurring-paypal-venmo-label-info").remove();
jQuery("#paypal-button-container").remove();
jQuery("form.donation-form .PayPalVenmo, #donation-form .PayPalVenmo").remove();
jQuery("form.donation-form .PayPal, #donation-form .PayPal").remove();
jQuery("form.donation-form .Venmo, #donation-form .Venmo").remove();
Bloomerang.Data.PayPal.IsPayPalPaymentMethodVaultingEnabled = false;Bloomerang.Data.PayPal.IsVenmoSameDayDonationEnabled = false;
};
if (Bloomerang.paymentFormLoaded) {
return false;
}
Bloomerang.paymentFormLoaded = true;
Bloomerang.reCaptchaV3SiteKey = 'https://wydbonsecours.org/';
Bloomerang.gRecaptchaV3Threshold = 0.5;
window.captchaLoadCallback = function() {
Bloomerang.gRecaptchaLoaded = true;
};
window.captchaV3LoadCallback = function() {
Bloomerang.gRecaptchaV3Loaded = true;
};
if(Bloomerang.donationFormReCaptchaV3SelfHostedFlag === undefined) {
function success (result) {
Bloomerang.donationFormReCaptchaV3SelfHostedFlag = result.DonationFormReCaptchaV3SelfHostedFlag;
initializeCaptcha();
}
function failure (result) {
Bloomerang.donationFormReCaptchaV3SelfHostedFlag = false;
initializeCaptcha();
}
Bloomerang.Api._post('v1/ReCaptchaV3SelfHostedFlag', {}, success, failure);
} else {
initializeCaptcha();
}
async function getRecaptchaV3Token() {
const token = await new Promise((resolve, reject) => {
grecaptcha.ready(function() {
grecaptcha.execute(Bloomerang.reCaptchaV3SiteKey, {action: 'submit'}).then(function(token) {
resolve(token);
});
});
});
return token;
}
function initializeCaptcha() {
Bloomerang.Util.load('https://www.google.com/recaptcha/api.js?onload=captchaLoadCallback&render=explicit',
function() { return Bloomerang.gRecaptchaLoaded; },
function() {
jQuery('.registration-form .section.captcha').removeAttr('style');
jQuery('form.registration-form').data('captcha-id', grecaptcha.render('captcha22068224', { 'sitekey' : '6Lfa5yATAAAAAHYwmLK4KTUNz9DIPgoKjz9WalaP' }));
if((Bloomerang.donationFormReCaptchaV3Flag && Bloomerang.isBloomerangHostedForm && Bloomerang.isDonationForm) || (Bloomerang.donationFormReCaptchaV3SelfHostedFlag && !Bloomerang.isBloomerangHostedForm && Bloomerang.reCaptchaV3SiteKey && Bloomerang.isDonationForm)) {
jQuery('.registration-form .section.captcha').attr('style', 'display: none');
}
},
true,
true);
if((Bloomerang.donationFormReCaptchaV3Flag && Bloomerang.isBloomerangHostedForm && Bloomerang.isDonationForm) || (Bloomerang.donationFormReCaptchaV3SelfHostedFlag && !Bloomerang.isBloomerangHostedForm && Bloomerang.isDonationForm && Bloomerang.reCaptchaV3SiteKey)) {
Bloomerang.Util.load(`https://www.google.com/recaptcha/api.js?onload=captchaV3LoadCallback&render=${Bloomerang.reCaptchaV3SiteKey}`,
function() { return Bloomerang.gRecaptchaV3Loaded; },
function() {
grecaptcha.ready(function() {
grecaptcha.execute(Bloomerang.reCaptchaV3SiteKey, {action: 'submit'}).then(function(token) {
async function success (result) {
if(parseFloat(result.Score) < Bloomerang.gRecaptchaV3Threshold) { Bloomerang.isForcePuzzle = true; jQuery('.registration-form .section.captcha').attr('style', 'display: block'); } else { const initialRecaptchaV3Token = await getRecaptchaV3Token(); // Append to the form data container to be included when submitting the form on bloomerangV2.js Bloomerang.captchaResponseV3(initialRecaptchaV3Token); setInterval(async ()=> {
const recaptchaV3Token = await getRecaptchaV3Token();
// Append to the form data container to be included when submitting the form on bloomerangV2.js
Bloomerang.captchaResponseV3(recaptchaV3Token);
}, 80000);
}
}
function failure (result) {
Bloomerang.isForcePuzzle = true;
jQuery('.registration-form .section.captcha').attr('style', 'display: block');
}
var data = {
token: token,
isSelfHosted: !Bloomerang.isBloomerangHostedForm
};
Bloomerang.Api._post('v1/ReCaptchaV3', data, success, failure);
});
});
},
true,
true);
}
}
Bloomerang.transactionFee = 0.3;
Bloomerang.transactionFeeRate = 0.032;
Bloomerang.transactionFeeEft = 0.3;
Bloomerang.transactionFeeRateEft = 0.018;
Bloomerang.transactionFeePayPal = 0.49;
Bloomerang.transactionFeeRatePayPal = 0.032;
Bloomerang.useKey('pub_8f5945da-09de-11ed-b5ee-066e3d38bc77');
if (typeof isPreviewMode !== 'undefined' && isPreviewMode) {
document.querySelector('#preview-text').style.display = 'block';
}
Bloomerang.Util.getRegistrationAmount = function() {
return accounting.unformat(jQuery("#totalPrice").text());
};
// Register proper callbacks for various stages/outcomes of submission
Bloomerang.Widget.Donation.OnSubmit = function (args) {
jQuery(".btn-submit-registration").val("Processing Registration...").prop("disabled", true).addClass("disabled");
var val = function (selector) { return jQuery(selector).val(); };
var country = val(".registration-form #country");
var state = Bloomerang.Util.getCorrectState(country, val(".registration-form #state"), val(".registration-form #province"));
var zipCode = Bloomerang.Util.getCorrectZipCode(country, val(".registration-form #zip-code"), val(".registration-form #postal-code"));
Bloomerang.Account
.individual()
.firstName(val(".registration-form #first-name"))
.middleName(val(".registration-form #middle-name"))
.lastName(val(".registration-form #last-name"))
.homeAddress(val(".registration-form #street-address"),
val(".registration-form #city"),
state,
zipCode,
country)
.homeEmail(val(".registration-form #email-address"))
.homePhone(val(".registration-form #phone-number"))
.applyEventRegistrationCustomFields();
if (jQuery(".registration-form #consent-all").prop("checked")) {
Bloomerang.Account.optedInStatus(jQuery(".registration-form #consent-email").prop("checked"),
jQuery(".registration-form #consent-mail").prop("checked"),
jQuery(".registration-form #consent-phone").prop("checked"));
}
var amount = Bloomerang.Util.getRegistrationAmount() + Bloomerang.Util.getRegistrationTrueImpactAmount();
var nonDeductibleAmount = jQuery("#totalPrice").data("non-deductible") || 0;
var ticketQuantity = jQuery("#totalTicketQty").text();
Bloomerang.Donation
.amount(amount)
.fundId(val(".registration-form #fund"))
.nonDeductible(nonDeductibleAmount)
.note(val(".registration-form #comment"))
.applyEventRegistrationCustomFields()
.customPickField(jQuery("table.registration-summary").data("registration-type-field-id"),
jQuery(".registration-form .section.registrationType input[name='registration-type']:checked").data("registration-type-value"))
.customFreeformField(jQuery("table.registration-summary").data("ticket-quantity-field-id"), ticketQuantity);
// Need to do a null-check here because they might have a cached version of Bloomerang-v2.js
if (Bloomerang.Donation.trueImpactEnabled && Bloomerang.Donation.trueImpactUsed) {
Bloomerang.Donation
.trueImpactEnabled(jQuery(".registration-form .true-impact .fee-amount").length > 0)
.trueImpactUsed(jQuery(".registration-form .true-impact input:checked").length > 0);
}
if (jQuery("#registration-form #Checking").is(":checked") ||
jQuery("#registration-form #Savings").is(":checked")) {
Bloomerang.Eft
.accountNumber(val(".registration-form #accountNumber"))
.routingNumber(val(".registration-form #routingNumber"))
.type(jQuery("#registration-form .section.payment input[type='radio']:checked").attr("id"));
}
};
Bloomerang.ValidateEventRegistrationFormCaptcha = function() {
if (typeof(grecaptcha) !== "undefined" && jQuery("#captcha" + Bloomerang.Data.WidgetIds.Donation).children().length) {
var captchaResponse = grecaptcha.getResponse(jQuery(".registration-form").data("captcha-id"));
if (captchaResponse) {
jQuery(".registration-form .noCaptchaResponseError").hide();
Bloomerang.captchaResponse(captchaResponse);
return true;
} else {
jQuery(".registration-form .noCaptchaResponseError").show();
return false;
}
} else return true;
};
Bloomerang.scrollToElement = function(element) {
var distance = 100;
var offset = element.offset().top;
var offsetTop = offset > distance ? offset - distance : offset;
jQuery('html, body').animate({ scrollTop : offsetTop}, 500);
};
Bloomerang.Api.OnSuccess = Bloomerang.Widget.Donation.OnSuccess = function (response) {
jQuery("#registration-processing-container").hide();
var formContainer = jQuery("#registration-form-container");
formContainer.show();
formContainer.html(successHtml22068224);
Bloomerang.scrollToElement(formContainer);
};
Bloomerang.Api.OnError = Bloomerang.Widget.Donation.OnError = function (response) {
jQuery(".btn-submit-registration").prop("disabled", false).removeClass("disabled");
Bloomerang.Util.updateRegisterButtonText();
jQuery("#registration-form-container .errors").removeClass("hidden").html(response.Message);
jQuery("#registration-processing-container").hide();
jQuery("#registration-form-container").show();
Bloomerang.scrollToElement(jQuery("#registration-form-container .errors"));
Bloomerang.cancelFinancialSubmission(jQuery("#registration-form"));
if (typeof(SpreedlyExpress) !== 'undefined') {
SpreedlyExpress.unload();
Bloomerang.initSpreedly();
}
if (typeof(grecaptcha) !== "undefined" && jQuery("#captcha" + Bloomerang.Data.WidgetIds.Donation).children().length) {
grecaptcha.reset(jQuery(".registration-form").data("captcha-id"));
}
};
Bloomerang.Util.applyEventRegistrationCustomFields = function (obj, type) {
// Clear any fields from a previous failed submission
obj.clearCustomFields();
// Apply all (not multiselect), and fields
jQuery(".registration-form .section.custom-fields :input:not(a > input, select)[id*=" + type + "]").each(function() {
if (jQuery(this).val().hasValue()) {
obj.customFreeformField(jQuery(this).attr("id").toUntypedValue(), jQuery(this).val());
}
});
// Apply all fields
jQuery(".registration-form .section.custom-fields select[id*=" + type + "]").each(function() {
if (jQuery(this).val().hasValue()) {
obj.customPickField(jQuery(this).attr("id").toUntypedValue(), jQuery(this).val());
}
});
// Apply all multiselect fields
jQuery(".registration-form .section.custom-fields .checkboxes[id*=" + type + "]").each(function() {
obj.customPickField(jQuery(this).attr("id").toUntypedValue(),
jQuery.map(jQuery(this).children(".checkbox.selected"), function(v) { return jQuery(v).attr("data-id"); }));
});
};
String.prototype.hasValue = function() {
return (this && jQuery.trim(this)); //IE8 doesn't have a native trim function
};
Bloomerang.Account.applyEventRegistrationCustomFields = function () {
Bloomerang.Util.applyEventRegistrationCustomFields(this, "Account");
return this;
};
Bloomerang.Donation.applyEventRegistrationCustomFields = function () {
Bloomerang.Util.applyEventRegistrationCustomFields(this, "Transaction");
return this;
};
String.prototype.toUntypedValue = function() {
return this.substring(this.indexOf('_') + 1);
};
Date.prototype.toDateInputValue = function() {
var local = new Date(this);
local.setMinutes(this.getMinutes() - this.getTimezoneOffset());
return (local.getMonth() + 1) + // Add one to the month because it starts at 0
"/" + local.getDate() + "/" + local.getFullYear();
};
jQuery(".registration-form .section.registrationType input[name='registration-type']").change(function () {
var element = jQuery(this);
jQuery(".registration-form #shortDescription").text(element.data("short-name"));
jQuery(".registration-form #ticketQty").text(element.data("ticket-quantity") || 0);
jQuery(".registration-form #unitPrice").text(accounting.formatMoney(element.val()));
jQuery(".registration-form .registration-summary").show();
jQuery(".registration-form #numberOfRegistrations").focus();
// if the user selected the "cannot attend" option, then the additional amount field is required.
if (jQuery(this).attr('id') == "cannot-attend") {
jQuery(".additional-donation").hide();
jQuery(".summary-row").hide();
jQuery(".cannot-attend-donation").show();
jQuery("#cannot-attend-amount").prop("disabled", false);
jQuery(".registration-form #additional-amount").addClass("required");
} else {
jQuery(".cannot-attend-donation").hide();
jQuery("#cannot-attend-amount").prop("disabled", true);
jQuery(".additional-donation").show();
jQuery(".summary-row").show();
jQuery(".registration-form #additional-amount").removeClass("required");
}
updateRegistrationAmounts();
});
updateRegistrationAmounts = function() {
var totalCents = 0;
var centsForSelectedRegistration = (Number(jQuery(".registrationType input[name='registration-type']:checked").val()) || 0) * 100; // stupid JS floating-point arithmetic!
var nonDeductibleForSelectedRegistration = jQuery(".registrationType input[name='registration-type']:checked").data("non-deductible-amount") || 0;
totalCents += (jQuery("#numberOfRegistrations").val() * centsForSelectedRegistration);
totalCents += ((accounting.unformat(jQuery(".additional-donation input:visible, .cannot-attend-donation input:visible").val() || 0)) * 100);
jQuery("#totalPrice").text(accounting.formatMoney(totalCents / 100));
jQuery("#totalPrice").data("non-deductible", nonDeductibleForSelectedRegistration * jQuery("#numberOfRegistrations").val());
jQuery("#totalTicketQty").text(jQuery("#numberOfRegistrations").val() * (jQuery(".registrationType input[name='registration-type']:checked").data("ticket-quantity") || 0));
Bloomerang.Util.calculateRegistrationTrueImpact();
Bloomerang.Util.updateRegisterButtonText();
};
if (jQuery(".registration-form .true-impact label").length) {
jQuery(".registration-form .true-impact label")[0].innerHTML = jQuery(".registration-form .true-impact label")[0].innerHTML.replace("[amount]", "$0");
}
Bloomerang.Util.calculateRegistrationTrueImpact = function() {
if (!jQuery(".registration-form .true-impact .fee-amount").length) { return; }
// Note that we don't really care about JS floating point math. It's OK if the numbers are a couple cents off.
var amount = Bloomerang.Util.getRegistrationAmount();
if (amount === 0) { // No transaction amount, no impact amount
jQuery(".registration-form .true-impact .fee-amount").text(accounting.formatMoney(0));
return 0;
}
var impactAmount;
// If this is a OnePay form, use the transaction fee formula/data to calculate the impactAmount
if (Bloomerang.Util.isProcessorOnePay()) {
impactAmount = Bloomerang.Util.calculateTrueImpactForOnePay(amount);
}
if (!impactAmount || isNaN(impactAmount)) {
var isEft = (jQuery("#registration-form #Checking").is(":checked") || jQuery("#registration-form #Savings").is(":checked"));
var isStripeExpress = Bloomerang.Api.ProcessorType === "StripeExpress";
var feeRate = isEft ? Bloomerang.transactionFeeRateEft : Bloomerang.transactionFeeRate;
var newTotal = (amount + (isEft ? Bloomerang.transactionFeeEft : Bloomerang.transactionFee)) / (1 - feeRate);
impactAmount = isStripeExpress
? Number((Math.floor((newTotal - amount)*100)/100).toFixed(2))
: Number((newTotal - amount).toFixed(2));
}
jQuery(".registration-form .true-impact .fee-amount").text(accounting.formatMoney(impactAmount));
return impactAmount;
};
Bloomerang.Util.getRegistrationTrueImpactAmount = function() {
if (jQuery(".registration-form .true-impact input:checked").length) {
return Bloomerang.Util.calculateRegistrationTrueImpact();
}
return 0;
};
Bloomerang.Util.updateRegisterButtonText = function() {
if (jQuery("#registration-form #Checking").is(":checked") ||
jQuery("#registration-form #Savings").is(":checked") ||
Bloomerang.Util.isProcessorStripe() ||
Bloomerang.Util.isProcessorOnePay()) {
var amount = Bloomerang.Util.getRegistrationAmount();
var impactAmount = Bloomerang.Util.getRegistrationTrueImpactAmount();
if (Bloomerang.Util.isProcessorOnePay()) {
Bloomerang.Util.sendOnePayTotalAmount(Math.round((amount + impactAmount)*100));
Bloomerang.Util.sendOnePayAmount(Math.round(amount*100));
Bloomerang.Util.sendOnePayFeeCoveredAmount(Math.round(impactAmount*100));
Bloomerang.Util.sendOnePayIsFeeCovered(impactAmount>0);
}
// PID-186: refresh the Stripe (Express) Payment Element wallet amount when the donor
// changes their registration amount, so the Apple/Google Pay sheet shows the correct total.
else if (Bloomerang.UsePaymentElement && Bloomerang.Util.onEventRegistrationAmountChanged) {
Bloomerang.Util.onEventRegistrationAmountChanged();
}
jQuery(".btn-submit-registration").val("Register Now " + accounting.formatMoney(amount + impactAmount));
} else {
jQuery(".btn-submit-registration").val("Register Now");
}
};
jQuery(".registration-form .registrationType input, .registration-form .registration-summary input")
.change(updateRegistrationAmounts)
.keyup(updateRegistrationAmounts);
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
var digits = phone_number.replace(/\D/g, "");
return this.optional(element) || digits.length == 7 || digits.length == 10 || digits.length == 11;
}, "Please specify a valid phone number or use '+' for international.");
jQuery.validator.addMethod("phoneInternational", function (phone_number, element) {
return this.optional(element) || /^\+[0-9\-\(\)\s.]+$/i.test(phone_number);
}, "Please specify a valid phone number.");
jQuery.validator.classRuleSettings.phoneInternational = { phoneInternational: true };
jQuery.validator.addMethod("zipcodeUS", function (value, element) {
return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value)
}, "The specified US ZIP Code is invalid");
jQuery.validator.addMethod("currency", function (value, element, options) {
return !value ||
value
.replace("$", "")
.replace(".", "")
.split(",").join("")
.match(/^\d+$/g);
}, "Not a valid currency");
jQuery.validator.classRuleSettings.currency = { currency: true };
jQuery.validator.addMethod("number", function (value, element, options) {
return !value ||
value
.replace(".", "")
.split(",").join("")
.match(/^\d+$/g);
}, "Not a valid number");
jQuery.validator.classRuleSettings.number = { number: true };
jQuery.validator.addMethod("validYear", function (value, element, options) {
try {
return (!value || value.match(/^[1-9]\d\d\d$/)) ? true : false;
}
catch (e) {
return false;
}
}, function () { return "Must be a 4 digit year"; });
jQuery.validator.classRuleSettings.validYear = { validYear: true };
// Validate that the donation amount is at least $1
jQuery.validator.methods.min = function( value, element, param ) {
if (typeof (accounting) === "undefined") { // rip out $ and ,
value = ((value + "") || "").replace(/[\$,]/g, "");
}
else { // Use accounting.parse, to handle $ and ,
value = accounting.parse(value);
}
return this.optional( element ) || value >= param;
};
jQuery.validator.classRuleSettings.minimum1 = { min: 1 };
jQuery.validator.messages.min = 'Please enter a value of at least {0}.'
jQuery(".registration-form #country").change(function(event) {
var element = jQuery(event.target || event.srcElement); // cross-browser event target selection
var isInternational = (element.val() != "US" && element.val() != "CA" && element.val() != "BM");
jQuery(".registration-form .field.city, .registration-form .field.state, .registration-form .field.province, .registration-form .field.zip-code, .registration-form .field.postal-code").toggle(!isInternational);
jQuery(".registration-form #street-address").toggleClass("international", isInternational);
jQuery(".registration-form #state, .registration-form #province").val(""); // clear the state when the country changes
if (element.val() == "BM") {
jQuery(".registration-form .field.city .label").text(jQuery(".registration-form .field.city input").data("bm-label"));
} else if (element.val() == "US" || element.val() == "CA") {
jQuery(".registration-form .field.city .label").text(jQuery(".registration-form .field.city input").data("us-label"));
}
if (element.val() == "US") {
jQuery(".registration-form .field.state, .registration-form .field.zip-code").show();
jQuery(".registration-form .field.province, .registration-form .field.postal-code").hide();
} else if (element.val() == "CA") {
jQuery(".registration-form .field.state, .registration-form .field.zip-code").hide();
jQuery(".registration-form .field.province, .registration-form .field.postal-code").show();
} else if (element.val() == "BM") {
jQuery(".registration-form .field.state, .registration-form .field.province, .registration-form .field.zip-code").hide();
jQuery(".registration-form .field.postal-code").show();
} else {
jQuery(".registration-form #city, .registration-form #zip-code, .registration-form #postal-code").val("");
}
jQuery(".registration-form .section.consent").toggleClass("hidden", !Bloomerang.Util.isCountryInEurope(element.val()));
});
jQuery(".registration-form #phone-number").change(function () {
var phoneField = jQuery(".registration-form #phone-number");
var internationalNumber = phoneField.val().substring(0,1) === '+';
phoneField.toggleClass("phoneUS", !internationalNumber);
phoneField.toggleClass("phoneInternational", internationalNumber);
})
collectPayment = function () {
var form = jQuery("#registration-form");
if (!Bloomerang.ValidateEventRegistrationFormCaptcha()) {
return false;
}
if (!form.valid()) {
return false;
}
var isEft = jQuery("#registration-form #CreditCard").length > 0 && !jQuery("#registration-form #CreditCard").prop("checked");
if (Bloomerang.Util.isProcessorStripe() && !isEft && !Bloomerang.Util.StripeCardIsValid) {
document.getElementById('card-errors').textContent = "Valid card info is required";
return false;
}
if (isEft) {
submitDonation();
}
else {
var val = function (selector) { return jQuery(selector).val(); };
var amount = Bloomerang.Util.getRegistrationAmount() + Bloomerang.Util.getRegistrationTrueImpactAmount();
var selectedRegistrationType = jQuery(".registration-form .section.registrationType input[name='registration-type']:checked").data("short-name");
var oldMeta = '';
if (jQuery('meta[name="viewport"]').length) {
oldMeta = jQuery('meta[name="viewport"]').attr('content');
} else {
jQuery('head').append('');
}
jQuery('meta[name="viewport"]').attr('content', 'width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1');
jQuery('meta[name="viewport"]').attr('content', oldMeta);
if (Bloomerang.Util.isProcessorStripe() || Bloomerang.Util.isProcessorOnePay()) {
submitDonation();
} else {
SpreedlyExpress.setDisplayOptions({
"amount": accounting.formatMoney(amount),
"full_name": val(".registration-form #first-name") + " " + val(".registration-form #last-name"),
"sidebar_bottom_description": selectedRegistrationType,
"submit_label": "Register Now"});
SpreedlyExpress.setPaymentMethodParams({
"email": val(".registration-form #email-address"),
"phone_number": val(".registration-form #phone-number"),
"address1": val(".registration-form #street-address"),
"city": val(".registration-form #city"),
"state": val(".registration-form #state") || val(".registration-form #province"),
"zip": val(".registration-form #zip-code") || val(".registration-form #postal-code"),
"country": val(".registration-form #country")});
SpreedlyExpress.onPaymentMethod(function(token, paymentMethod) {
Bloomerang.CreditCard.spreedlyToken(token);
submitDonation();
});
SpreedlyExpress.openView();
}
}
};
submitDonation = function() {
if (!Bloomerang.continueFinancialSubmission(jQuery("registration-form"))) { return false; }
Bloomerang.Api.OnSubmit = Bloomerang.Widget.Donation.OnSubmit;
Bloomerang.Api.OnSuccess = Bloomerang.Widget.Donation.OnSuccess;
Bloomerang.Api.OnError = Bloomerang.Widget.Donation.OnError;
var processingMessage = jQuery("#registration-processing-container");
processingMessage.show();
jQuery("#registration-form-container").hide();
Bloomerang.scrollToElement(processingMessage);
Bloomerang.Api.donate();
};
jQuery("#registration-form #CreditCard").prop("checked", true);
jQuery("#registration-form .section.payment input[type='radio']").click(function() {
Bloomerang.Util.calculateRegistrationTrueImpact();
Bloomerang.Util.updateRegisterButtonText();
if (jQuery(this).attr("id") == "DebitCard" || jQuery(this).attr("id") == "CreditCard") {
jQuery("#registration-form .accountNumber, \
#registration-form .routingNumber, \
#registration-form .sample-check").hide();
jQuery("#stripe-cc-fields").show();
}
else {
jQuery("#registration-form .accountNumber, \
#registration-form .routingNumber, \
#registration-form .sample-check").show();
jQuery("#stripe-cc-fields").hide();
if (jQuery("#registration-form .sample-check").length == 0) {
var checkImage = new Image();
checkImage.src = 'https://s3-us-west-2.amazonaws.com/bloomerang-public-cdn/public-gallery/SampleCheck.png';
jQuery(checkImage).addClass("sample-check");
jQuery("#registration-form .accountNumber").after(checkImage);
}
}
});
jQuery("#registration-form #true-impact").change(function() {
Bloomerang.Util.updateRegisterButtonText();
});
// Show opt-in options based on the setting of the global opt-in
jQuery(".registration-form .field.consent-all").change(function() {
jQuery(".registration-form .field.consent-all").siblings().each(function(i, e) {
jQuery(e).toggle();
});
});
})(jQuery);
};
var startBloomerangLoad = function() {
if (window.bloomerangLoadStarted == undefined) {
window.bloomerangLoadStarted = true;
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://crm.bloomerang.co/Content/Scripts/Api/Bloomerang-v2.js?nocache=1782416671';
document.getElementsByTagName('head')[0].appendChild(script);
waitForBloomerangLoad(function() { Bloomerang.Util.requireJQueryValidationAndStripe(function() { insertForm22068224(); })});
}
else {
waitForBloomerangLoad(function() { Bloomerang.Util.requireJQueryValidationAndStripe(function() { insertForm22068224(); })});
}
};
var waitForBloomerangLoad = function(callback) {
if (typeof(Bloomerang) === 'undefined' || !Bloomerang._isReady) {
setTimeout(function () { waitForBloomerangLoad(callback) }, 500);
}
else {
if (true) {
callback();
} else {
window.bloomerangLoadStarted = undefined;
Bloomerang = undefined; // The version of Blomerang.js is not what we want. So blow it away and reload.
startBloomerangLoad();
}
}
};
startBloomerangLoad();