BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
CALSCALE:GREGORIAN
PRODID:-//WordPress - MECv7.12.0//EN
X-ORIGINAL-URL:https://framinghamhistory.org/
X-WR-CALNAME:Framingham History Center
X-WR-CALDESC:
REFRESH-INTERVAL;VALUE=DURATION:PT1H
X-PUBLISHED-TTL:PT1H
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
UID:MEC-ce6846556e8c145e84416120fd93e50c@framinghamhistory.org
DTSTART:20231119T180000Z
DTEND:20231119T200000Z
DTSTAMP:20231030T194000Z
CREATED:20231030
LAST-MODIFIED:20231117
PRIORITY:5
SEQUENCE:0
TRANSP:OPAQUE
SUMMARY:A Dennison Chronicle: The Downeast Maine Friendship of Henry Dennison & Writer Edmund Ware Smith
DESCRIPTION:Sunday, November 19, 2023\n2:00 p.m.\nVillage Hall on the Common (2 Oak St.)\nCoffee & Conversation with Mehegan at 1 p.m., Presentation at 2 p.m.\nSpeakers: Peter Mehegan and Jay Petri\nJoin us for an afternoon with Chronicle TV host Peter Mehegan and his story of two Framingham legends, author Edmund Ware Smith and industrialist Henry Dennison. Learn about the connections all three had to Downeast Maine through a presentation and pop-up exhibition of artifacts and photographs that tie it all together.\nTickets: $5/members, $10/not-yet-a-member\nThis program will be recorded and emailed to ticket purchasers once edited.\nImage: “Poling Down Stream,” Edmund Ware Smith, Summer 1926\n\n\n    var insertForm377726976 = function() {\n        var html377726976 = '' + \n'' + \n'' + \n'  ' + \n'    ' + \n'    ' + \n'      A Dennison Chronicle Registration' + \n'      ' + \n'$5.00 - Individual - FHC Member' + \n'' + \n'' + \n'$10.00 - Individual - Non-member' + \n'' + \n'' + \n'$10.00 - Two Tickets - FHC Member' + \n'' + \n'' + \n'$20.00 - Two Tickets - Non-member' + \n'' + \n'' + \n'$15.00 - One Member & One Non-member' + \n'' + \n'' + \n'Sorry, I can\'t attend, but I would like to show my support by making a donation' + \n'' + \n'' + \n'' + \n'    ' + \n'      ' + \n'                        ' + \n'                            Quantity' + \n'                            Type' + \n'                            Tickets' + \n'                            Price' + \n'                        ' + \n'                        ' + \n'                             ×' + \n'                                ' + \n'                            ' + \n'                            ' + \n'                            ' + \n'                        ' + \n'                        ' + \n'                        ' + \n'                            ' + \n'                            Additional Donation' + \n'                            ' + \n'                            ' + \n'                                ' + \n'                        ' + \n'                              ' + \n'                            ' + \n'                            Donation' + \n'                            ' + \n'                            ' + \n'                                ' + \n'                        ' + \n'                        ' + \n'                            Total:' + \n'                            ' + \n'                            0' + \n'                            $0.00' + \n'                        ' + \n'                    ' + \n'' + \n'' + \n'    ' + \n'      Contact Information' + \n'      ' + \n'First Name*' + \n'' + \n'' + \n'' + \n'Last Name*' + \n'' + \n'' + \n'' + \n'Email*' + \n'' + \n'' + \n'' + \n'Phone' + \n'' + \n'' + \n'' + \n'' + \n'    ' + \n'      Billing Address' + \n'      ' + \n'Country*' + \n'' + \n'Afghanistan' + \n'Aland Islands' + \n'Albania' + \n'Algeria' + \n'American Samoa' + \n'Andorra' + \n'Angola' + \n'Anguilla' + \n'Antarctica' + \n'Antigua and Barbuda' + \n'Argentina' + \n'Armenia' + \n'Aruba' + \n'Australia' + \n'Austria' + \n'Azerbaijan' + \n'Bahamas' + \n'Bahrain' + \n'Bangladesh' + \n'Barbados' + \n'Belarus' + \n'Belgium' + \n'Belize' + \n'Benin' + \n'Bermuda' + \n'Bhutan' + \n'Bolivia' + \n'Bosnia and Herzegovina' + \n'Botswana' + \n'Bouvet Island' + \n'Brazil' + \n'British Indian Ocean Territory' + \n'Brunei Darussalam' + \n'Bulgaria' + \n'Burkina Faso' + \n'Burundi' + \n'Cambodia' + \n'Cameroon' + \n'Canada' + \n'Cape Verde' + \n'Cayman Islands' + \n'Central African Republic' + \n'Chad' + \n'Chile' + \n'China' + \n'Christmas Island' + \n'Cocos (Keeling) Islands' + \n'Colombia' + \n'Comoros' + \n'Congo' + \n'Democratic Republic of the Congo' + \n'Cook Islands' + \n'Costa Rica' + \n'Cote d\'Ivoire' + \n'Croatia' + \n'Cuba' + \n'Curacao' + \n'Cyprus' + \n'Czech Republic' + \n'Denmark' + \n'Djibouti' + \n'Dominica' + \n'Dominican Republic' + \n'Ecuador' + \n'Egypt' + \n'El Salvador' + \n'Equatorial Guinea' + \n'Eritrea' + \n'Estonia' + \n'Eswatini' + \n'Ethiopia' + \n'Falkland Islands (Malvinas)' + \n'Faroe Islands' + \n'Fiji' + \n'Finland' + \n'France' + \n'French Guiana' + \n'French Polynesia' + \n'French Southern Territories' + \n'Gabon' + \n'Gambia' + \n'Georgia' + \n'Germany' + \n'Ghana' + \n'Gibraltar' + \n'Greece' + \n'Greenland' + \n'Grenada' + \n'Guadeloupe' + \n'Guam' + \n'Guatemala' + \n'Guernsey' + \n'Guinea' + \n'Guinea-Bissau' + \n'Guyana' + \n'Haiti' + \n'Heard Island' + \n'Honduras' + \n'Hong Kong' + \n'Hungary' + \n'Iceland' + \n'India' + \n'Indonesia' + \n'Islamic Republic of Iran' + \n'Iraq' + \n'Ireland' + \n'Isle of Man' + \n'Israel' + \n'Italy' + \n'Jamaica' + \n'Japan' + \n'Jersey' + \n'Jordan' + \n'Kazakhstan' + \n'Kenya' + \n'Kiribati' + \n'Democratic People\'s Republic of Korea' + \n'Republic of Korea' + \n'Kuwait' + \n'Kyrgyzstan' + \n'Lao People\'s Democratic Republic' + \n'Latvia' + \n'Lebanon' + \n'Lesotho' + \n'Liberia' + \n'Libya' + \n'Liechtenstein' + \n'Lithuania' + \n'Luxembourg' + \n'Macao' + \n'Macedonia' + \n'Madagascar' + \n'Malawi' + \n'Malaysia' + \n'Maldives' + \n'Mali' + \n'Malta' + \n'Marshall Islands' + \n'Martinique' + \n'Mauritania' + \n'Mauritius' + \n'Mayotte' + \n'Mexico' + \n'Federated States of Micronesia' + \n'Republic of Moldova' + \n'Monaco' + \n'Mongolia' + \n'Montenegro' + \n'Montserrat' + \n'Morocco' + \n'Mozambique' + \n'Myanmar' + \n'Namibia' + \n'Nauru' + \n'Nepal' + \n'Netherlands' + \n'New Caledonia' + \n'New Zealand' + \n'Nicaragua' + \n'Niger' + \n'Nigeria' + \n'Niue' + \n'Norfolk Island' + \n'Northern Mariana Islands' + \n'Norway' + \n'Oman' + \n'Pakistan' + \n'Palau' + \n'State of Palestine' + \n'Panama' + \n'Papua New Guinea' + \n'Paraguay' + \n'Peru' + \n'Philippines' + \n'Pitcairn' + \n'Poland' + \n'Portugal' + \n'Puerto Rico' + \n'Qatar' + \n'Reunion' + \n'Romania' + \n'Russian Federation' + \n'Rwanda' + \n'Saint Barthelemy' + \n'Ascension and Tristan da Cunha Saint Helena' + \n'Saint Kitts and Nevis' + \n'Saint Lucia' + \n'Saint Martin (French part)' + \n'Saint Pierre and Miquelon' + \n'Saint Vincent and the Grenadines' + \n'Samoa' + \n'San Marino' + \n'Sao Tome and Principe' + \n'Saudi Arabia' + \n'Senegal' + \n'Serbia' + \n'Seychelles' + \n'Sierra Leone' + \n'Singapore' + \n'Sint Maarten (Dutch part)' + \n'Slovakia' + \n'Slovenia' + \n'Solomon Islands' + \n'Somalia' + \n'South Africa' + \n'South Georgia' + \n'South Sudan' + \n'Spain' + \n'Sri Lanka' + \n'Sudan' + \n'Suriname' + \n'Svalbard and Jan Mayen' + \n'Sweden' + \n'Switzerland' + \n'Syrian Arab Republic' + \n'Taiwan' + \n'Tajikistan' + \n'United Republic of Tanzania' + \n'Thailand' + \n'Timor-Leste' + \n'Togo' + \n'Tokelau' + \n'Tonga' + \n'Trinidad and Tobago' + \n'Tunisia' + \n'Turkey' + \n'Turkmenistan' + \n'Turks and Caicos Islands' + \n'Tuvalu' + \n'Uganda' + \n'Ukraine' + \n'United Arab Emirates' + \n'United Kingdom' + \n'United States' + \n'United States Minor Outlying Islands' + \n'Uruguay' + \n'Uzbekistan' + \n'Vanuatu' + \n'Vatican City' + \n'Venezuela' + \n'Viet Nam' + \n'British Virgin Islands' + \n'U.S. Virgin Islands' + \n'Wallis and Futuna' + \n'Western Sahara' + \n'Yemen' + \n'Zambia' + \n'Zimbabwe' + \n'' + \n'' + \n'' + \n'Address*' + \n'' + \n'' + \n'' + \n'City*' + \n'' + \n'' + \n'' + \n'State*' + \n'' + \n'Alabama' + \n'Alaska' + \n'American Samoa' + \n'Arizona' + \n'Arkansas' + \n'Armed Forces Africa, Canada, Europe, Middle East' + \n'Armed Forces Americas (except Canada)' + \n'Armed Forces Pacific' + \n'California' + \n'Colorado' + \n'Connecticut' + \n'Delaware' + \n'District of Columbia' + \n'Florida' + \n'Georgia' + \n'Guam' + \n'Hawaii' + \n'Idaho' + \n'Illinois' + \n'Indiana' + \n'Iowa' + \n'Kansas' + \n'Kentucky' + \n'Louisiana' + \n'Maine' + \n'Maryland' + \n'Massachusetts' + \n'Michigan' + \n'Minnesota' + \n'Mississippi' + \n'Missouri' + \n'Montana' + \n'Nebraska' + \n'Nevada' + \n'New Hampshire' + \n'New Jersey' + \n'New Mexico' + \n'New York' + \n'North Carolina' + \n'North Dakota' + \n'Ohio' + \n'Oklahoma' + \n'Oregon' + \n'Pennsylvania' + \n'Puerto Rico' + \n'Rhode Island' + \n'South Carolina' + \n'South Dakota' + \n'Tennessee' + \n'Texas' + \n'US Virgin Islands' + \n'Utah' + \n'Vermont' + \n'Virginia' + \n'Washington' + \n'West Virginia' + \n'Wisconsin' + \n'Wyoming' + \n'' + \n'' + \n'' + \n'Province*' + \n'' + \n'Alberta' + \n'British Columbia' + \n'Manitoba' + \n'New Brunswick' + \n'Newfoundland and Labrador' + \n'Northwest Territories' + \n'Nova Scotia' + \n'Nunavut' + \n'Ontario' + \n'Prince Edward Island' + \n'Quebec' + \n'Saskatchewan' + \n'Yukon Territory' + \n'' + \n'' + \n'' + \n'ZIP Code*' + \n'' + \n'' + \n'' + \n'Postal Code*' + \n'' + \n'' + \n'' + \n'' + \n'    ' + \n'      Payment Information' + \n'      ' + \n'                                  ' + \n'                                    Credit or debit card' + \n'                                    *' + \n'                                  ' + \n'                                  ' + \n'                                  ' + \n'                                ' + \n'' + \n'' + \n'    ' + \n'    ' + \n'      ' + \n'Comments' + \n'' + \n'' + \n'' + \n'' + \n'    ' + \n'      ' + \n'I would like to receive or continue receiving updates from Framingham History Center' + \n'' + \n'' + \n'by email' + \n'' + \n'' + \n'by postal mail' + \n'' + \n'' + \n'by phone' + \n'' + \n'' + \n'' + \n'    ' + \n'      Increase My Impact' + \n'      ' + \n'Add [amount] to help cover our transaction fees' + \n'' + \n'' + \n'' + \n'    ' + \n'      You must fill out the CAPTCHA' + \n'' + \n'' + \n'    ' + \n'      ' + \n'    ' + \n'  ' + \n'' + \n'' + \n'  Processing...Your transaction is being processed. Please do not close your browser or leave this page.' + \n'' + \n'' + \n'' +  '';var successHtml377726976 = '' +\n                                                       '  Thank You for Your Registration!' +\n                                                       '  Your registration for our event has been successfully processed. We look forward to seeing you there!' + \n                                                        '\u003cdiv class=\"social-media-buttons\" style=\"margin-top:10px;\"\u003e\u003cdiv id=\"twitter-buttons\"\u003e\u003c/div\u003e\u003cdiv class=\"fb-like\" data-href=\"https://facebook.com/framinghamhistory\" 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/framinghamhistory\" 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 \u003cscript\u003e\r\n                    if (navigator.userAgent.indexOf(\u0027Edge/\u0027) === -1) {\r\n                        !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?\"http\":\"https\";if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+\"://platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document, \"script\", \"twitter-wjs\");\r\n                        var twitterButtons = document.getElementById(\u0027twitter-buttons\u0027);\r\n                        twitterButtons.innerHTML = \u0027\u003cdiv id=\"tweetButton\" style=\"float:left; margin-right:10px\"\u003e \u003ca href=\"https://twitter.com/share\" data-text=\"I just registered for an event supporting @FraminghamHist. Come join me!\" class=\"twitter-share-button\"\u003eTweet\u003c/a\u003e \u003c/div\u003e\u003cdiv id=\"followButton\"\u003e \u003ca href=\"https://twitter.com/FraminghamHist\" class=\"twitter-follow-button\"\u003eFollow\u003c/a\u003e \u003c/div\u003e\u0027;\r\n                        twitterButtons.style.height = \u002735px\u0027;\r\n                    }\r\n                \u003c/script\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' + \n                                                        '';( function($) {if (Bloomerang.useDonationId('377726976')) { \n                                Bloomerang.useProcessor('353548289', 'StripeExpress', 'pk_live_iZYXFefCkt380zu63aqUIo7y');\n                            } else {\n                                html377726976 = 'Only one donation or event registration form can be used on each page.';\n                            }if (jQuery('#bloomerangForm377726976').length) {\n                        \n                    if (window.ActiveXObject) { // they are using IE < 11, which doesn't support TLS 1.1\n                        html377726976 = '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' + \n                        ' Chrome or Firefox.';\n                    }\n                        jQuery('#bloomerangForm377726976').after(html377726976);\n                        \n                         Bloomerang.Util.requireStripe(function() {\n                                        Bloomerang.Util.Stripe = Stripe('pk_live_iZYXFefCkt380zu63aqUIo7y'); \n                                        let elements = null;\n\n                                            // Create an instance of the stripe card element.\n                                            elements = Bloomerang.Util.Stripe.elements();\n                                            Bloomerang.Util.StripeCard = elements.create('card', {\n                                              hidePostalCode: true,\n                                              style: {\n                                                base: {\n                                                  color: "#272D30",\n                                                  fontSize: "14px",\n                                                  fontFamily: "'Century Gothic', verdana, sans-serif"\n                                                },\n                                                invalid: {\n                                                  color: "#272D30"\n                                                }\n                                              }\n                                            });\n                                     \n                                        // Add an instance of the stripe card/payment element into the `card-element` .\n                                        Bloomerang.Util.StripeCard.mount('#card-element');\n                                     \n                                        // Handle real-time validation errors from the card Element.\n                                        Bloomerang.Util.StripeCardIsValid = false;\n                                        Bloomerang.Util.StripeCard.addEventListener('change', function(event) {\n                                          var displayError = document.getElementById('card-errors');\n                                          if (event.error) {\n                                            displayError.textContent = event.error.message;\n                                          } else {\n                                            displayError.textContent = '';\n                                          }\n                                          if (event.complete) {\n                                            Bloomerang.Util.StripeCardIsValid = true;\n                                          } else {\n                                            Bloomerang.Util.StripeCardIsValid = false;\n                                          }\n                                        });\n                                      });\n\n                                      jQuery(".donation-form #express-submit").val("Donate");\n                                      jQuery(".registration-form #express-submit").val("Register");\n                                      jQuery("#express-submit").attr("disabled", false);\n                        Bloomerang.Util.IsPayPalVenmoEnabled = false;\n                             jQuery("#paypal-button-container").remove();\n                    };\n                    if (Bloomerang.paymentFormLoaded) {\n                                            return false;\n                                        }\n                                        Bloomerang.paymentFormLoaded = true;\n                       window.captchaLoadCallback = function() {\n                            Bloomerang.gRecaptchaLoaded = true;\n                        };\n                        Bloomerang.Util.load('https://www.google.com/recaptcha/api.js?onload=captchaLoadCallback&render=explicit',\n                            function() { return Bloomerang.gRecaptchaLoaded; },\n                            function() {\n                                jQuery('.section.captcha').removeAttr('style');\n                                jQuery('form.registration-form').data('captcha-id', grecaptcha.render('captcha377726976', { 'sitekey' : '6Ld1O5QaAAAAAAkDOX8Hy823d72-oNpFalR1Ynu9' }));\n                            },\n                            true,\n                            true);\n                    \n                    Bloomerang.transactionFee = 0.3; \n                    Bloomerang.transactionFeeRate = 0.032; \n                    Bloomerang.transactionFeeEft = 0.3; \n                    Bloomerang.transactionFeeRateEft = 0.018;\n                    Bloomerang.transactionFeePayPal = 0.49; \n                    Bloomerang.transactionFeeRatePayPal = 0.032; \n                    \n                    Bloomerang.useKey('pub_4ecf99b8-1482-11e7-bb7f-024e165d44b3');\n\n        Bloomerang.Util.getRegistrationAmount = function() {\n          return accounting.unformat(jQuery("#totalPrice").text());\n        };\n        // Register proper callbacks for various stages/outcomes of submission\n        Bloomerang.Widget.Donation.OnSubmit = function (args) {\n            jQuery(".btn-submit-registration").val("Processing Registration...").prop("disabled", true).addClass("disabled");\n            var val = function (selector) { return jQuery(selector).val(); };\n            var country = val(".registration-form #country");\n            var state = Bloomerang.Util.getCorrectState(country, val(".registration-form #state"), val(".registration-form #province"));\n            var zipCode = Bloomerang.Util.getCorrectZipCode(country, val(".registration-form #zip-code"), val(".registration-form #postal-code"));\n            Bloomerang.Account\n                      .individual()\n                      .firstName(val(".registration-form #first-name"))\n                      .middleName(val(".registration-form #middle-name"))\n                      .lastName(val(".registration-form #last-name"))\n                      .homeAddress(val(".registration-form #street-address"),\n                                   val(".registration-form #city"),\n                                   state,\n                                   zipCode,\n                                   country)\n                      .homeEmail(val(".registration-form #email-address"))\n                      .homePhone(val(".registration-form #phone-number"))\n                      .applyEventRegistrationCustomFields();\n\n            if (jQuery(".registration-form #consent-all").prop("checked")) {\n              Bloomerang.Account.optedInStatus(jQuery(".registration-form #consent-email").prop("checked"),\n                                               jQuery(".registration-form #consent-mail").prop("checked"),\n                                               jQuery(".registration-form #consent-phone").prop("checked"));\n            }\n\n            var amount = Bloomerang.Util.getRegistrationAmount() + Bloomerang.Util.getRegistrationTrueImpactAmount();\n            var nonDeductibleAmount = jQuery("#totalPrice").data("non-deductible") || 0;\n            var ticketQuantity = jQuery("#totalTicketQty").text();\n      \n            Bloomerang.Donation\n                      .amount(amount)\n                      .nonDeductible(nonDeductibleAmount)\n                      .note(val(".registration-form #comment"))\n                      .applyEventRegistrationCustomFields()\n                      .customPickField(jQuery("table.registration-summary").data("registration-type-field-id"), \n                                       jQuery(".registration-form .section.registrationType input[name='registration-type']:checked").data("registration-type-value"))\n                      .customFreeformField(jQuery("table.registration-summary").data("ticket-quantity-field-id"), ticketQuantity);\n\n            // Need to do a null-check here because they might have a cached version of Bloomerang-v2.js\n            if (Bloomerang.Donation.trueImpactEnabled && Bloomerang.Donation.trueImpactUsed) {\n              Bloomerang.Donation\n                      .trueImpactEnabled(jQuery(".registration-form .true-impact .fee-amount").length > 0)\n                      .trueImpactUsed(jQuery(".registration-form .true-impact input:checked").length > 0);\n            }\n            \n            if (jQuery("#registration-form #Checking").is(":checked") ||\n                jQuery("#registration-form #Savings").is(":checked")) {\n              Bloomerang.Eft\n                .accountNumber(val(".registration-form #accountNumber"))\n                .routingNumber(val(".registration-form #routingNumber"))\n                .type(jQuery("#registration-form .section.payment input[type='radio']:checked").attr("id"));\n            }\n        };\n        Bloomerang.ValidateEventRegistrationFormCaptcha = function() {\n            if (typeof(grecaptcha) !== "undefined" && jQuery("#captcha" + Bloomerang.Data.WidgetIds.Donation).children().length) {\n                var captchaResponse = grecaptcha.getResponse(jQuery(".registration-form").data("captcha-id"));\n                if (captchaResponse) {\n                    jQuery(".registration-form .noCaptchaResponseError").hide();\n                    Bloomerang.captchaResponse(captchaResponse);\n                    return true;\n                } else {\n                    jQuery(".registration-form .noCaptchaResponseError").show();\n                    return false;\n                }\n            } else return true;\n        };\n        Bloomerang.scrollToElement = function(element) {\n            var distance = 100;\n            var offset = element.offset().top;\n            var offsetTop = offset > distance ? offset - distance : offset;\n            jQuery('html, body').animate({ scrollTop : offsetTop}, 500);\n        };\n        Bloomerang.Api.OnSuccess = Bloomerang.Widget.Donation.OnSuccess = function (response) {\n            jQuery("#registration-processing-container").hide();\n            var formContainer = jQuery("#registration-form-container");\n            formContainer.show();\n            formContainer.html(successHtml377726976);\n            Bloomerang.scrollToElement(formContainer);\n        };\n        Bloomerang.Api.OnError = Bloomerang.Widget.Donation.OnError = function (response) {\n            jQuery(".btn-submit-registration").prop("disabled", false).removeClass("disabled");\n            Bloomerang.Util.updateRegisterButtonText();\n            jQuery("#registration-form-container .errors").removeClass("hidden").html(response.Message);\n            jQuery("#registration-processing-container").hide();\n            jQuery("#registration-form-container").show();\n            Bloomerang.scrollToElement(jQuery("#registration-form-container .errors"));\n            Bloomerang.cancelFinancialSubmission(jQuery("#registration-form"));\n            if (typeof(SpreedlyExpress) !== 'undefined') { \n              SpreedlyExpress.unload();\n              Bloomerang.initSpreedly();\n            }\n            if (typeof(grecaptcha) !== "undefined" && jQuery("#captcha" + Bloomerang.Data.WidgetIds.Donation).children().length) {\n              grecaptcha.reset(jQuery(".registration-form").data("captcha-id"));\n            }\n        };\n        \n        Bloomerang.Util.applyEventRegistrationCustomFields = function (obj, type) {\n            // Clear any fields from a previous failed submission\n            obj.clearCustomFields();\n        \n            // Apply all  (not multiselect),  and  fields\n            jQuery(".registration-form .section.custom-fields :input:not(a > input, select)[id*=" + type + "]").each(function() {\n                if (jQuery(this).val().hasValue()) {\n                    obj.customFreeformField(jQuery(this).attr("id").toUntypedValue(), jQuery(this).val());\n                }\n            });\n            \n            // Apply all  fields\n            jQuery(".registration-form .section.custom-fields select[id*=" + type + "]").each(function() {\n                if (jQuery(this).val().hasValue()) {\n                    obj.customPickField(jQuery(this).attr("id").toUntypedValue(), jQuery(this).val());\n                }\n            });\n                \n            // Apply all multiselect fields\n            jQuery(".registration-form .section.custom-fields .checkboxes[id*=" + type + "]").each(function() {\n                obj.customPickField(jQuery(this).attr("id").toUntypedValue(),\n                jQuery.map(jQuery(this).children(".checkbox.selected"), function(v) { return jQuery(v).attr("data-id"); }));\n            });\n        };\n        \n        String.prototype.hasValue = function() {\n            return (this && jQuery.trim(this)); //IE8 doesn't have a native trim function\n        };\n        \n        Bloomerang.Account.applyEventRegistrationCustomFields = function () {\n            Bloomerang.Util.applyEventRegistrationCustomFields(this, "Account");\n            return this;\n        };\n        \n        Bloomerang.Donation.applyEventRegistrationCustomFields = function () {\n            Bloomerang.Util.applyEventRegistrationCustomFields(this, "Transaction");\n            return this;\n        };\n        \n        String.prototype.toUntypedValue = function() {\n            return this.substring(this.indexOf('_') + 1);\n        };\n        \n        Date.prototype.toDateInputValue = function() {\n            var local = new Date(this);\n            local.setMinutes(this.getMinutes() - this.getTimezoneOffset());\n            return (local.getMonth() + 1) + // Add one to the month because it starts at 0\n                    "/" + local.getDate() + "/" + local.getFullYear();\n        };\n        \n        jQuery(".registration-form .section.registrationType input[name='registration-type']").change(function () { \n          var element = jQuery(this);\n          jQuery(".registration-form #shortDescription").text(element.data("short-name"));\n          jQuery(".registration-form #ticketQty").text(element.data("ticket-quantity") || 0);\n          jQuery(".registration-form #unitPrice").text(accounting.formatMoney(element.val()));\n      \n          jQuery(".registration-form .registration-summary").show();\n          jQuery(".registration-form #numberOfRegistrations").focus();\n    \n          // if the user selected the "cannot attend" option, then the additional amount field is required.\n          if (jQuery(this).attr('id') == "cannot-attend") { \n            jQuery(".additional-donation").hide();\n            jQuery(".summary-row").hide();\n            jQuery(".cannot-attend-donation").show();\n            jQuery("#cannot-attend-amount").prop("disabled", false);\n            jQuery(".registration-form #additional-amount").addClass("required");\n          } else { \n            jQuery(".cannot-attend-donation").hide();\n            jQuery("#cannot-attend-amount").prop("disabled", true);\n            jQuery(".additional-donation").show();\n            jQuery(".summary-row").show();\n            jQuery(".registration-form #additional-amount").removeClass("required"); \n          }\n          updateRegistrationAmounts();\n        });\n    \n        updateRegistrationAmounts = function() {\n          var totalCents = 0;\n          var centsForSelectedRegistration = (Number(jQuery(".registrationType input[name='registration-type']:checked").val()) || 0) * 100; // stupid JS floating-point arithmetic!\n          var nonDeductibleForSelectedRegistration = jQuery(".registrationType input[name='registration-type']:checked").data("non-deductible-amount") || 0;\n          totalCents += (jQuery("#numberOfRegistrations").val() * centsForSelectedRegistration);\n      \n          totalCents += ((accounting.unformat(jQuery(".additional-donation input:visible, .cannot-attend-donation input:visible").val() || 0)) * 100);\n          jQuery("#totalPrice").text(accounting.formatMoney(totalCents / 100));\n          jQuery("#totalPrice").data("non-deductible", nonDeductibleForSelectedRegistration * jQuery("#numberOfRegistrations").val());\n      \n          jQuery("#totalTicketQty").text(jQuery("#numberOfRegistrations").val() * (jQuery(".registrationType input[name='registration-type']:checked").data("ticket-quantity") || 0));\n\n          Bloomerang.Util.calculateRegistrationTrueImpact();\n          Bloomerang.Util.updateRegisterButtonText();\n        };\n\n        if (jQuery(".registration-form .true-impact label").length) {\n          jQuery(".registration-form .true-impact label")[0].innerHTML = jQuery(".registration-form .true-impact label")[0].innerHTML.replace("[amount]", "$0");\n        }\n        Bloomerang.Util.calculateRegistrationTrueImpact = function() {\n          if (!jQuery(".registration-form .true-impact .fee-amount").length) { return; }\n          // Note that we don't really care about JS floating point math. It's OK if the numbers are a couple cents off.\n          var amount = Bloomerang.Util.getRegistrationAmount();\n          var isEft = (jQuery("#registration-form #Checking").is(":checked") || jQuery("#registration-form #Savings").is(":checked"));\n          var isStripeExpress = Bloomerang.Api.ProcessorType === "StripeExpress";\n          var feeRate = isEft ? Bloomerang.transactionFeeRateEft : Bloomerang.transactionFeeRate;\n          var newTotal = (amount + (isEft ? Bloomerang.transactionFeeEft : Bloomerang.transactionFee)) / (1 - feeRate);\n          var impactAmount = isStripeExpress\n            ? Number((Math.floor((newTotal - amount)*100)/100).toFixed(2))\n            : Number((newTotal - amount).toFixed(2));\n          jQuery(".registration-form .true-impact .fee-amount").text(accounting.formatMoney(impactAmount));\n          return impactAmount;\n        };\n        Bloomerang.Util.getRegistrationTrueImpactAmount = function() {\n          if (jQuery(".registration-form .true-impact input:checked").length) {\n            return Bloomerang.Util.calculateRegistrationTrueImpact();\n          }\n          return 0;\n        };\n        \n        Bloomerang.Util.updateRegisterButtonText = function() {\n          if (jQuery("#registration-form #Checking").is(":checked") ||\n              jQuery("#registration-form #Savings").is(":checked") ||\n              Bloomerang.Util.isProcessorStripe()) {\n            var amount = Bloomerang.Util.getRegistrationAmount();\n            var impactAmount = Bloomerang.Util.getRegistrationTrueImpactAmount();\n            jQuery(".btn-submit-registration").val("Register " + accounting.formatMoney(amount + impactAmount));\n          } else {\n            jQuery(".btn-submit-registration").val("Enter Payment");\n          }\n        };\n\n        jQuery(".registration-form .registrationType input, .registration-form .registration-summary input")\n          .change(updateRegistrationAmounts)\n          .keyup(updateRegistrationAmounts);\n            \n        jQuery.validator.addMethod("phoneUS", function(phone_number, element) {\n            var digits = phone_number.replace(/\D/g, "");\n            return this.optional(element) || digits.length == 7 || digits.length == 10 || digits.length == 11;\n        }, "Please specify a valid phone number or use '+' for international.");\n\n        jQuery.validator.addMethod("phoneInternational", function (phone_number, element) {\n            return this.optional(element) || /^\+[0-9\-\(\)\s.]+$/i.test(phone_number);\n        }, "Please specify a valid phone number.");\n        jQuery.validator.classRuleSettings.phoneInternational = { phoneInternational: true };\n        \n        jQuery.validator.addMethod("zipcodeUS", function (value, element) {\n            return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value)\n        }, "The specified US ZIP Code is invalid");\n\n        jQuery.validator.addMethod("currency", function (value, element, options) {\n            return !value ||\n                value\n                  .replace("$", "")\n                  .replace(".", "")\n                  .split(",").join("")\n                  .match(/^\d+$/g);\n        }, "Not a valid currency");\n\n        jQuery.validator.classRuleSettings.currency = { currency: true };\n\n        jQuery.validator.addMethod("number", function (value, element, options) {\n            return !value ||\n                value\n                  .replace(".", "")\n                  .split(",").join("")\n                  .match(/^\d+$/g);\n        }, "Not a valid number");\n\n        jQuery.validator.classRuleSettings.number = { number: true };\n        \n        jQuery.validator.addMethod("validYear", function (value, element, options) {\n            try {\n                return (!value || value.match(/^[1-9]\d\d\d$/)) ? true : false;\n            }\n            catch (e) {\n                return false;\n            }\n        }, function () { return "Must be a 4 digit year"; });\n\n        jQuery.validator.classRuleSettings.validYear = { validYear: true };\n\n        // Validate that the donation amount is at least $1\n        jQuery.validator.methods.min = function( value, element, param ) {\n          if (typeof (accounting) === "undefined") { // rip out $ and ,\n              value = ((value + "") || "").replace(/[\$,]/g, "");\n          }\n          else { // Use accounting.parse, to handle $ and ,\n              value = accounting.parse(value);\n          }\n          return this.optional( element ) || value >= param;\n        };\n        jQuery.validator.classRuleSettings.minimum1 = { min: 1 };\n        jQuery.validator.messages.min = 'Please enter a value of at least {0}.'\n\n        jQuery(".registration-form #country").change(function(event) {\n          var element = jQuery(event.target || event.srcElement); // cross-browser event target selection\n          var isInternational = (element.val() != "US" && element.val() != "CA" && element.val() != "BM");\n          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);\n          jQuery(".registration-form #street-address").toggleClass("international", isInternational);\n          jQuery(".registration-form #state, .registration-form #province").val(""); // clear the state when the country changes\n          if (element.val() == "BM") {\n            jQuery(".registration-form .field.city .label").text(jQuery(".registration-form .field.city input").data("bm-label"));\n          } else if (element.val() == "US" || element.val() == "CA") {\n            jQuery(".registration-form .field.city .label").text(jQuery(".registration-form .field.city input").data("us-label"));\n          }\n          if (element.val() == "US") {\n            jQuery(".registration-form .field.state, .registration-form .field.zip-code").show();\n            jQuery(".registration-form .field.province, .registration-form .field.postal-code").hide();\n          } else if (element.val() == "CA") {\n            jQuery(".registration-form .field.state, .registration-form .field.zip-code").hide();\n            jQuery(".registration-form .field.province, .registration-form .field.postal-code").show();\n          } else if (element.val() == "BM") {\n            jQuery(".registration-form .field.state, .registration-form .field.province, .registration-form .field.zip-code").hide();\n            jQuery(".registration-form .field.postal-code").show();\n          } else {\n            jQuery(".registration-form #city, .registration-form #zip-code, .registration-form #postal-code").val("");\n          }\n          jQuery(".registration-form .section.consent").toggleClass("hidden", !Bloomerang.Util.isCountryInEurope(element.val()));\n        });\n        \n        jQuery(".registration-form #phone-number").change(function () {\n          var phoneField = jQuery(".registration-form #phone-number");\n          var internationalNumber = phoneField.val().substring(0,1) === '+';\n          phoneField.toggleClass("phoneUS", !internationalNumber);\n          phoneField.toggleClass("phoneInternational", internationalNumber);\n        })\n\n        collectPayment = function () {\n          var form = jQuery("#registration-form");\n\n          if (!Bloomerang.ValidateEventRegistrationFormCaptcha()) {\n            return false;\n          }\n\n          if (!form.valid()) {\n            return false;\n          }\n\n          var isEft = jQuery("#registration-form #CreditCard").length > 0 && !jQuery("#registration-form #CreditCard").prop("checked");\n\n          if (Bloomerang.Util.isProcessorStripe() && !isEft && !Bloomerang.Util.StripeCardIsValid) {\n            document.getElementById('card-errors').textContent = "Valid card info is required";\n            return false;\n          }\n\n          if (isEft) {\n            submitDonation();\n          }\n          else {\n            var val = function (selector) { return jQuery(selector).val(); };\n            \n            var amount = Bloomerang.Util.getRegistrationAmount() + Bloomerang.Util.getRegistrationTrueImpactAmount();\n            \n            var selectedRegistrationType = jQuery(".registration-form .section.registrationType input[name='registration-type']:checked").data("short-name");\n                        \n            var oldMeta = '';\n            if (jQuery('meta[name="viewport"]').length) {\n              oldMeta = jQuery('meta[name="viewport"]').attr('content');\n            } else {\n              jQuery('head').append('');\n            }\n            jQuery('meta[name="viewport"]').attr('content', 'width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1');\n            jQuery('meta[name="viewport"]').attr('content', oldMeta);\n\n            if (Bloomerang.Util.isProcessorStripe()) {\n              submitDonation();\n            } else {\n              SpreedlyExpress.setDisplayOptions({\n                "amount": accounting.formatMoney(amount),\n                "full_name": val(".registration-form #first-name") + " " + val(".registration-form #last-name"),\n                "sidebar_bottom_description": selectedRegistrationType,\n                "submit_label": "Register"});\n              SpreedlyExpress.setPaymentMethodParams({\n                "email": val(".registration-form #email-address"),\n                "phone_number": val(".registration-form #phone-number"),\n                "address1": val(".registration-form #street-address"),\n                "city": val(".registration-form #city"),\n                "state": val(".registration-form #state") || val(".registrtation-form #province"),\n                "zip": val(".registration-form #zip-code") || val(".registration-form #postal-code"),\n                "country": val(".registration-form #country")});\n              \n              SpreedlyExpress.onPaymentMethod(function(token, paymentMethod) {\n                Bloomerang.CreditCard.spreedlyToken(token);\n                submitDonation();\n              });\n              \n              SpreedlyExpress.openView();\n            }\n          }\n        };\n        \n        submitDonation = function() {\n          if (!Bloomerang.continueFinancialSubmission(jQuery("registration-form"))) { return false; }\n          \n              Bloomerang.Api.OnSubmit = Bloomerang.Widget.Donation.OnSubmit;\n              Bloomerang.Api.OnSuccess = Bloomerang.Widget.Donation.OnSuccess;\n              Bloomerang.Api.OnError = Bloomerang.Widget.Donation.OnError;\n\n              var processingMessage = jQuery("#registration-processing-container");\n              processingMessage.show();\n              jQuery("#registration-form-container").hide();\n              Bloomerang.scrollToElement(processingMessage);\n            \n              Bloomerang.Api.donate();\n          };\n        \n          jQuery("#registration-form #CreditCard").prop("checked", true);\n          jQuery("#registration-form .section.payment input[type='radio']").click(function() {\n            Bloomerang.Util.calculateRegistrationTrueImpact();\n            Bloomerang.Util.updateRegisterButtonText();\n            if (jQuery(this).attr("id") == "CreditCard") {\n              jQuery("#registration-form .accountNumber, \\n                      #registration-form .routingNumber, \\n                      #registration-form .sample-check").hide();\n              jQuery("#stripe-cc-fields").show();\n            }\n            else {\n              jQuery("#registration-form .accountNumber, \\n                      #registration-form .routingNumber, \\n                      #registration-form .sample-check").show();\n              jQuery("#stripe-cc-fields").hide();\n              if (jQuery("#registration-form .sample-check").length == 0) {\n                var checkImage = new Image();\n                checkImage.src = 'https://s3-us-west-2.amazonaws.com/bloomerang-public-cdn/public-gallery/SampleCheck.png';\n                jQuery(checkImage).addClass("sample-check");\n                jQuery("#registration-form .accountNumber").after(checkImage);\n              }\n            }\n        });\n          \n        jQuery("#registration-form #true-impact").change(function() {\n          Bloomerang.Util.updateRegisterButtonText();\n        });\n\n        // Show opt-in options based on the setting of the global opt-in\n        jQuery(".registration-form .field.consent-all").change(function() { \n          jQuery(".registration-form .field.consent-all").siblings().each(function(i, e) { \n              jQuery(e).toggle();\n          });\n        });\n      \n})(jQuery);\n    };\n    \n                var startBloomerangLoad = function() {\n                    if (window.bloomerangLoadStarted == undefined) {\n                        window.bloomerangLoadStarted = true;\n                        var script = document.createElement('script');\n                        script.type = 'text/javascript';\n                        script.src = 'https://crm.bloomerang.co/Content/Scripts/Api/Bloomerang-v2.js?nocache=2023-11-02';\n                        document.getElementsByTagName('head')[0].appendChild(script);\n                        waitForBloomerangLoad(function() { Bloomerang.Util.requireJQueryValidationAndStripe(function() { insertForm377726976(); })});\n                    }\n                    else {\n                        waitForBloomerangLoad(function() { Bloomerang.Util.requireJQueryValidationAndStripe(function() { insertForm377726976(); })});\n                    }\n                };\n\n                var waitForBloomerangLoad = function(callback) {\n                    if (typeof(Bloomerang) === 'undefined' || !Bloomerang._isReady) {\n                        setTimeout(function () { waitForBloomerangLoad(callback) }, 500);\n                    }\n                    else {\n                        if (true) {\n                            callback();\n                        } else {\n                            window.bloomerangLoadStarted = undefined;\n                            Bloomerang = undefined; // The version of Blomerang.js is not what we want. So blow it away and reload.\n                            startBloomerangLoad();\n                        }\n                    }\n                };\n\n                startBloomerangLoad();\n\n' + \n'.registration-form label{color: #404040;' + \n'                display: block;}' + \n'' + \n'.registration-form label.error,' + \n'                     .registration-form #card-errors{color: #900;}' + \n'' + \n'.registration-form label.error{display: inline-block;' + \n'                padding: 0 10px;}' + \n'' + \n'.registration-form section{padding: 5px;}' + \n'' + \n'.registration-form .field{padding: 4px 0;}' + \n'' + \n'.registration-form .field .required-star{color: #aa0000; ' + \n'                display: inline-block; ' + \n'                margin-left: 5px;}' + \n'' + \n'.registration-form .field .checkboxes{max-width:275px;' + \n'                border: 1px solid #A9A9A9;' + \n'                -webkit-transition: all .3s ease-out;' + \n'                -moz-transition: all .3s ease-out;' + \n'                transition: all .3s ease-out;}' + \n'' + \n'.registration-form .field .checkbox{display:block;' + \n'                position:relative;' + \n'                -moz-box-sizing:border-box;' + \n'                box-sizing:border-box;' + \n'                height:30px;' + \n'                line-height:26px;' + \n'                padding:2px 28px 2px 8px;' + \n'                border-bottom:1px solid rgba(0,0,0,0.1);' + \n'                color:#404040;  ' + \n'                overflow:hidden;' + \n'                text-decoration:none; }' + \n'' + \n'.registration-form .field .checkbox input{opacity:0.01;' + \n'                position:absolute;' + \n'                left:-50px;  ' + \n'                z-index:-5;}' + \n'' + \n'.registration-form .field .checkbox:last-child{border-bottom:none;}' + \n'' + \n'.registration-form .field .checkbox.selected{background: rgb(50, 142, 253);' + \n'                color:#fff; }' + \n'' + \n'.registration-form .field .checkbox.selected:before{color:#fff;' + \n'                line-height:30px;' + \n'                position:absolute;' + \n'                right:10px; }' + \n'' + \n'.registration-form .section.consent .field.checkbox:not(.consent-all){margin-left: 20px;}' + \n'' + \n'.registration-form .field input,' + \n'                     .registration-form .field select,' + \n'                     .registration-form .field textarea,' + \n'                     .registration-form #card-element{padding: 4px; ' + \n'                max-width: 275px;' + \n'                width: 96%}' + \n'' + \n'.registration-form .field .StripeElement{background-color: white;' + \n'                background-color: -moz-field;' + \n'                border: 1px solid darkgray;' + \n'                display: inline-block;}' + \n'' + \n'.registration-form .field textarea.international{height: 120px;}' + \n'' + \n'.registration-form .field select{box-sizing: content-box;}' + \n'' + \n'.registration-form .field.radio label,' + \n'                     .registration-form .field.checkbox label{display: inline-block;}' + \n'' + \n'.registration-form .field.radio input,' + \n'                     .registration-form .field.checkbox input{width: auto;' + \n'                margin-left: 0;}' + \n'' + \n'.registration-form .field .sidenote{color: #999;' + \n'                font-size: 10px; }' + \n'' + \n'.registration-form .field.additional-amount,{display: inline-block;}' + \n'' + \n'.registration-form .field.additional-amount{padding-left: 6px;}' + \n'' + \n'.registration-form #additional-amount{width: 65px;}' + \n'' + \n'.registration-form .errors{border: 1px solid #900;' + \n'                color: #900;  ' + \n'                padding: 10px;}' + \n'' + \n'.registration-form .radio label.error{display: inline-block;' + \n'                padding-right: 86%;  ' + \n'                float: right;}' + \n'' + \n'.registration-form .hidden{display: none;}' + \n'' + \n'.btn-group .btn-submit-registration{padding: 4px 10px;}' + \n'' + \n'.registration-form .registration-summary{border-collapse: collapse}' + \n'' + \n'.registration-form .registration-summary td,' + \n'                     .registration-form .registration-summary th{padding: 5px}' + \n'' + \n'.registration-form .registration-summary .summary-total{font-weight: bold;' + \n'                border-top: 1px solid black;}' + \n'' + \n'.registration-form .registration-summary{text-align: left;}' + \n'' + \n'.registration-form .registration-summary .description-column{min-width: 140px;}' + \n'' + \n'.registration-form .registration-summary .quantity-column{min-width: 70px;}' + \n'' + \n'.registration-form .registration-summary .ticket-columns{min-width: 60px;}' + \n'' + \n'.registration-form .registration-summary label.error{display: block;}' + \n'' + \n'.registration-form .registration-summary #numberOfRegistrations{width: 40px;}' + \n'' + \n'.registration-form .registration-summary input.amount-field{width: 65px;}' + \n'' + \n'iframe#spreedly-iframe[style=\'visibility: hidden;\']{display: none;}' + \n'' + \n'input, select, textarea, button{font-family: inherit;}' + \n'' + \n'#spreedly-modal-overlay[style="visibility:hidden"]{display: none;}' + \n'' + \n'\n
URL:https://framinghamhistory.org/events/a-dennison-chronicle-the-downeast-maine-friendship-of-henry-dennison-writer-edmund-ware-smith/
ORGANIZER;CN=Framingham History Center:MAILTO:info@framinghamhistory.org
LOCATION:Framingham, MA
ATTACH;FMTTYPE=image/png:https://i0.wp.com/framinghamhistory.org/wp-content/uploads/2023/10/Dobsis-canoe-Instagram-Post.png?fit=1080%2C1080&#038;ssl=1
END:VEVENT
END:VCALENDAR
