if (typeof window.widgetRefs == 'undefined') { window.widgetRefs = []; } if(document.documentElement.lang.length===0){ document.getElementsByTagName('html')[0].setAttribute('lang','en'); } var _igJBlbAaMIYX = {}; window.widgetRefs.push("_igJBlbAaMIYX"); _igJBlbAaMIYX.ASSETS_PREFIX = 'https://default.salsalabs.org'; _igJBlbAaMIYX.debounce = function (func, delay) { var debounceTimer return function() { var context = this var args = arguments clearTimeout(debounceTimer) debounceTimer = setTimeout(function (){func.apply(context, args)}, delay) } } _igJBlbAaMIYX.init_functions = []; _igJBlbAaMIYX.post_init_functions = []; _igJBlbAaMIYX.addInit = function addInit(func) { _igJBlbAaMIYX.init_functions.push(func); } _igJBlbAaMIYX.addInitFirst = function addInitFirst(func) { _igJBlbAaMIYX.init_functions.unshift(func); } _igJBlbAaMIYX.addInitFirst(function () { try { window['sliGoogInit'] = new Function(); } catch (e) { } }); _igJBlbAaMIYX.addPostInit = function addPostInit(func) { _igJBlbAaMIYX.post_init_functions.push(func); } _igJBlbAaMIYX.doInitialize = function doInitialize() { for (var i = 0; i < _igJBlbAaMIYX.init_functions.length; i++) { _igJBlbAaMIYX.init_functions[i](); } // load images window.IGNITE.jquery('[ignite-image-src]').each(function (index, e) { e = window.IGNITE.jquery(e); var img = e.attr("ignite-image-src"); if (img.length > 0) { e.attr('src', img); } }); for (var i = 0; i < _igJBlbAaMIYX.post_init_functions.length; i++) { _igJBlbAaMIYX.post_init_functions[i](); } _igJBlbAaMIYX.sendSalsaHookOnLoad(); } _igJBlbAaMIYX.hideLoading = function () { _igJBlbAaMIYX.container.find(".sli-loading-message").hide(); } _igJBlbAaMIYX.initializeOnLoad = function initializeOnLoad() { window.IGNITE.jquery(window).load(function () { _igJBlbAaMIYX.doInitialize(); }); } _igJBlbAaMIYX.resetSharing = function () { var shareDivs = window.IGNITE.jquery(".sli-socialShare"); if (shareDivs && shareDivs.length > 0) { shareDivs.show(); if (typeof FB !== 'undefined') { shareDivs.find("div.fb-share-button").attr("fb-xfbml-state", "reset").attr("fb-iframe-plugin-query", "").empty() .each(function (index, element) { FB.XFBML.parse(element.parentNode); }); } if (typeof twttr !== 'undefined') { shareDivs.find("iframe.twitter-share-button").replaceWith(""); twttr.widgets.load(); } } } _igJBlbAaMIYX.addPostInit(_igJBlbAaMIYX.resetSharing); _igJBlbAaMIYX.initialize = function initialize() { try { // check to see if the document is already loaded and call doInitialize if (document.readyState == 'complete') { _igJBlbAaMIYX.doInitialize(); } else { // set up the onLoad event handler since we're not loaded _igJBlbAaMIYX.initializeOnLoad(); } } catch (e) { //console.error("Cannot initialize widget '_igJBlbAaMIYX' (exception: "+e+")"); } } _igJBlbAaMIYX.alreadyIncludedJS = function isAlreadyIncluded(src) { var scripts = document.getElementsByTagName("script"); for (var i = 0; i < scripts.length; i++) if (scripts[i].getAttribute('src') == src) return scripts[i]; return false; } _igJBlbAaMIYX.alreadyIncludedCSS = function isAlreadyIncluded(src) { var scripts = document.getElementsByTagName("link"); for (var i = 0; i < scripts.length; i++) if (scripts[i].getAttribute('href') == src) return scripts[i]; return false; } _igJBlbAaMIYX.addJS = function addFile(src) { if (!_igJBlbAaMIYX.alreadyIncludedJS(src)) { var s = document.createElement('script'); s.setAttribute('src', src); s.setAttribute('async', ''); s.setAttribute('type', 'text/javascript'); document.getElementsByTagName('head')[0].appendChild(s); } } _igJBlbAaMIYX.addCSS = function addFile(src) { if (!_igJBlbAaMIYX.alreadyIncludedCSS(src)) { var l = document.createElement('link'); l.setAttribute('rel', "stylesheet"); l.setAttribute('media', "none"); l.setAttribute('href', src); l.setAttribute('onload', "this.media='all'"); document.getElementsByTagName('head')[0].appendChild(l); } } _igJBlbAaMIYX.getNode = function getNode(id) { try { return window.IGNITE.jquery(id, '#id_d2715b274e454f0095cf2782a627f5f1')[0]; } catch (e) { //console.error("failed to find widget div '#id_d2715b274e454f0095cf2782a627f5f1'"); } }; _igJBlbAaMIYX.getUrlParam = function getUrlParam(param, defVal) { var pageURL = window.location.search.substring(1); var URLVariables = pageURL.split('&'); var retVal = defVal; for (var i = 0; i < URLVariables.length; i++) { var parameterName = URLVariables[i].split('='); if (parameterName[0] == param) { if(parameterName[0] == "sl_gr") { retVal += parameterName[1] + ','; } else { retVal = parameterName[1]; break; } } } return retVal; }; _igJBlbAaMIYX.urldecode = function (str) { return decodeURIComponent((str + '').replace(/\+/g, '%20')); } _igJBlbAaMIYX.sort_by = function (field, reverse, primer) { var key = primer ? function (x) { return primer(x[field]) } : function (x) { return x[field] }; reverse = !reverse ? 1 : -1; return function (a, b) { return a = key(a), b = key(b), reverse * ((a > b) - (b > a)); } }; _igJBlbAaMIYX.numberWithCommas = function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }; // extra analytics functions // queue up sending page view _igJBlbAaMIYX.analyticsPostInit = function () { _igJBlbAaMIYX.sendPageView(); } _igJBlbAaMIYX.addPostInit(_igJBlbAaMIYX.analyticsPostInit); _igJBlbAaMIYX.sendPageView = function recordPageView() { // this is done automatically by existing supported analytics methods // leaving this as a placeholder for future integration _igJBlbAaMIYX.siftPageView(); }; _igJBlbAaMIYX.sendPageSubmission = function recordPageSubmission(activityType, name) { _igJBlbAaMIYX.siftPageView(); _igJBlbAaMIYX.sendFacebookPageSubmission(name,activityType); _igJBlbAaMIYX.sendGoogleGAPageSubmission(name); _igJBlbAaMIYX.sendGoogleGTAGPageSubmission(name); _igJBlbAaMIYX.sendSalsaHookPageSubmission(name, activityType); }; _igJBlbAaMIYX.sendStepNavigation = function recordStepNav(activityType, name, oldStep, newStep) { _igJBlbAaMIYX.siftPageView(); _igJBlbAaMIYX.sendFacebookStepNav(name, activityType, oldStep, newStep); _igJBlbAaMIYX.sendGoogleGAStepNav(name, oldStep, newStep); _igJBlbAaMIYX.sendGoogleGTAGStepNav(name, oldStep, newStep); _igJBlbAaMIYX.sendSalsaHookStepNav(name, activityType, oldStep, newStep); }; _igJBlbAaMIYX.initiatePurchase = function initiatePurchase(activityType) { _igJBlbAaMIYX.sendFacebookInitiatePurchase(activityType); _igJBlbAaMIYX.sendGoogleGTAGInitiatePurchase(activityType); }; _igJBlbAaMIYX.sendPurchase = function recordPurchase(totalDollar, currency, activityType, name) { _igJBlbAaMIYX.sendFacebookPurchase(totalDollar, currency, activityType, name); _igJBlbAaMIYX.sendGoogleGAPurchase(_igJBlbAaMIYX.userInteractionId, totalDollar, currency, activityType, name); _igJBlbAaMIYX.sendGoogleGTAGPurchase(_igJBlbAaMIYX.userInteractionId, totalDollar, currency, activityType, name); }; // send to salsa custom hook functions _igJBlbAaMIYX.sendSalsaHookOnLoad = function sendSalsaHookOnLoad() { if (typeof window.salsaWidgetFinished === "function") { try { window.salsaWidgetFinished(_igJBlbAaMIYX.activityDefinitionId, { activityType : _igJBlbAaMIYX.activityType, activityId : _igJBlbAaMIYX.activityDefinitionId, }); } catch (e) { console.debug(e); // do nothing if it errors, it isn't our code, but we don't want to prevent the page from loading } } } _igJBlbAaMIYX.sendSalsaHookStepNav = function sendSalsaHookStepNav(name, activityType, oldStep, newStep) { if (typeof window.salsaWidgetStepNav === "function") { try { var eventBody = { oldStep : oldStep, newStep : newStep, activityType : activityType, activityId : _igJBlbAaMIYX.activityDefinitionId, activityName : _igJBlbAaMIYX.formName, }; if (_igJBlbAaMIYX.p2p && _igJBlbAaMIYX.p2p.subType === 'Personal') { eventBody.fundraiserName = name; } else if (_igJBlbAaMIYX.p2p && _igJBlbAaMIYX.p2p.subType === 'Team') { eventBody.teamName = name; } if (oldStep === null || oldStep < newStep) { window.salsaWidgetStepNav('stepForward', eventBody); } else { window.salsaWidgetStepNav('stepBackward', eventBody) } } catch (e) { console.debug(e); // do nothing if it errors, it isn't our code, but we don't want to prevent the page from loading } } } _igJBlbAaMIYX.sendSalsaHookPageSubmission = function sendSalsaHookPageSubmission(name, activityType) { if (typeof window.salsaWidgetPageSubmit === "function") { try { var eventBody = { activityType : activityType, activityId : _igJBlbAaMIYX.activityDefinitionId, activityName : _igJBlbAaMIYX.formName, } if (_igJBlbAaMIYX.p2p && _igJBlbAaMIYX.p2p.subType === 'Personal') { eventBody.fundraiserName = name; } else if (_igJBlbAaMIYX.p2p && _igJBlbAaMIYX.p2p.subType === 'Team') { eventBody.teamName = name; } window.salsaWidgetPageSubmit(eventBody); } catch (e) { console.debug(e); // do nothing if it errors, it isn't our code, but we don't want to prevent the page from loading } } }; // send to facebook functions _igJBlbAaMIYX.sendFacebookInitiatePurchase = function sendFacebookInitiatePurchase(activityType) { try { fbq('track', 'InitiateCheckout', {content_type : activityType, content_ids : [_igJBlbAaMIYX.activityDefinitionId]}); } catch (e) { // attempt to fallback to less information console.debug("unable to send InitiateCheckout to facebook pixel: " + e.message); } }; _igJBlbAaMIYX.sendFacebookPurchase = function sendFacebookPurchase(totalDollar, currency, activityType, name) { try { fbq('track', 'Purchase', { value : totalDollar, currency : currency, content_type : activityType, content_name : name, content_ids : [_igJBlbAaMIYX.activityDefinitionId] }); } catch (e) { // if we get an error, fall back to less informative capture console.debug("unable to send purchase to facebook pixel: " + e.message); try { fbq('track', 'Purchase', {value : totalDollar, currency : currency}); } catch (e) { console.debug("unable send purchase minimual to facebook pixel: " + e.message); } } }; _igJBlbAaMIYX.sendFacebookStepNav = function sendFacebookStepNav(name, activityType, oldStep, newStep) { try { if (oldStep === null || oldStep < newStep) { fbq('trackCustom', 'stepForward', { oldStep : oldStep, newStep : newStep, content_type : activityType, content_ids : [_igJBlbAaMIYX.activityDefinitionId], fundraiser_name : name }); } else { fbq('trackCustom', 'stepBackward', { oldStep : oldStep, newStep : newStep, content_type : activityType, content_ids : [_igJBlbAaMIYX.activityDefinitionId], fundraiser_name : name }); } } catch (e) { // if we get an error, fall back to less informative capture console.debug("unable to track facebook step navigation: " + e.message); } }; _igJBlbAaMIYX.sendFacebookPageSubmission = function sendFacebookPageSubmission(name, activityType) { try { fbq('track', 'Lead', { activityType : activityType, content_ids : [_igJBlbAaMIYX.activityDefinitionId], content_category : 'Page Submission', content_name : _igJBlbAaMIYX.formName, fundraiser_name : name }); } catch (e) { // if we get an error, fall back to less informative capture console.debug("unable to track facebook lead: " + e.message); } }; // send to google analytics (via analytics.js) _igJBlbAaMIYX.sendGoogleGAPurchase = function sendGooglePurchase(id, totalDollar, currency, activityType, name) { try { ga('ecommerce:addTransaction', { 'id' : id, // 'affiliation' : name, // use the provided name 'revenue' : totalDollar, // Grand Total. 'currency' : currency }); ga('ecommerce:addItem', { 'id' : id, 'name' : activityType, 'sku' : _igJBlbAaMIYX.activityDefinitionId }); ga('ecommerce:send'); } catch (e) { console.debug("failed to send purchase with google analytics.js ecommerce: " + e.message); } }; _igJBlbAaMIYX.sendGoogleGAStepNav = function sendGooglePurchase(name, oldStep, newStep) { var action; try { if (oldStep === null || oldStep < newStep) { action = 'forward to ' + newStep; } else { action = 'backward to ' + newStep; } ga('send', { hitType : 'event', eventCategory : 'step navigation', eventAction : action, eventLabel : name }); } catch (e) { console.debug("failed to send step navigation with google analytics.js: " + e.message); } }; _igJBlbAaMIYX.sendGoogleGAPageSubmission = function (name) { try { ga('send', { hitType : 'event', eventCategory : 'step navigation', eventAction : 'page submit', eventLabel : name }); } catch (e) { console.debug("failed to send page submission with google analytics.js: " + e.message); } }; // send to google analytics (via gtag.js) _igJBlbAaMIYX.sendGoogleGTAGInitiatePurchase = function sendGoogleInitPurchase(activityType) { try { gtag('event', 'view_promotion', { 'promotions' : [ {'name' : activityType, 'id' : _igJBlbAaMIYX.activityDefinitionId} ] }); } catch (e) { console.debug("failed to send promotion with google analytics gtags ecommerce: " + e.message); } }; _igJBlbAaMIYX.sendGoogleGTAGPurchase = function sendGooglePurchase(id, totalDollar, currency, activityType, name) { try { gtag('event', 'purchase', { 'transaction_id' : id, 'affiliation' : name, // use the provided name 'value' : totalDollar, // Grand Total. 'currency' : currency, 'items' : [ {'name' : activityType, 'id' : _igJBlbAaMIYX.activityDefinitionId} ] }); } catch (e) { console.debug("failed to send purchase with google analytics gtags ecommerce: " + e.message); } }; _igJBlbAaMIYX.sendGoogleGTAGStepNav = function sendGoogleStepNav(name, oldStep, newStep) { var action; try { if (oldStep === null || oldStep < newStep) { action = 'forward to ' + newStep; } else { action = 'backward to ' + newStep; } gtag('event', action, { 'event_category' : 'step navigation', 'event_label' : name }); } catch (e) { console.debug("failed to call google analytics gtags with step navigation: " + e.message); } }; _igJBlbAaMIYX.sendGoogleGTAGPageSubmission = function (name) { try { gtag('event', 'page submit', { 'event_category' : 'step navigation', 'event_label' : name }); } catch (e) { console.debug("failed to call google analytics gtags for page submit: " + e.message); } }; // SiftScience //_igJBlbAaMIYX.addJS('https://cdn.siftscience.com/s.js'); _igJBlbAaMIYX.siftPageView = function () { var email = ''; if (_igJBlbAaMIYX.data['PersonContact@Email@Value']) { email = _igJBlbAaMIYX.data['PersonContact@Email@Value'].value; } var _sift = window._sift = window._sift || []; _sift.push(['_setAccount', '64d426901e']); _sift.push(['_setUserId', email]); _sift.push(['_setSessionId', '_igJBlbAaMIYX']); _sift.push(['_trackPageview']); } _igJBlbAaMIYX.buildMsg = function () { var msg = { header : {}, payload : { userInteractionId : _igJBlbAaMIYX.userInteractionId, pid : _igJBlbAaMIYX.pid, oid : _igJBlbAaMIYX.oid, aid : _igJBlbAaMIYX.aid, cid : _igJBlbAaMIYX.cid, eid : _igJBlbAaMIYX.getUrlParam("eId", _igJBlbAaMIYX.eid), eType : _igJBlbAaMIYX.getUrlParam("eType", _igJBlbAaMIYX.eType), commSrcId : _igJBlbAaMIYX.getUrlParam("commSrcId", _igJBlbAaMIYX.commSrcId), commSrcType : _igJBlbAaMIYX.getUrlParam("commSrcType", _igJBlbAaMIYX.commSrcType), activityId : _igJBlbAaMIYX.activityId, salsaTrack : _igJBlbAaMIYX.stc, data : _igJBlbAaMIYX.data, rawForm : _igJBlbAaMIYX.serializeFormInputs(_igJBlbAaMIYX.form), siftSession : '_igJBlbAaMIYX' } }; var serializedData = JSON.stringify(msg); return serializedData; }; _igJBlbAaMIYX.url = "https://mamh.salsalabs.org/api/activity/submission/general"; _igJBlbAaMIYX.addInitFirst(function registerValidators() { FormValidation.Validator.nohtml = { validate : function (validator, $field, options) { var value = $field.val(); if (value === '') { return true; } var regexp = /<\/?[^>]*>/gi; return !regexp.test(value); } }; }); _igJBlbAaMIYX.addInit(function doInitialize() { window.IGNITE.jquery('div[ignite-activity-id=d2715b27-4e45-4f00-95cf-2782a627f5f1] > form').attr('id', 'form_igJBlbAaMIYX'); _igJBlbAaMIYX.container = window.IGNITE.jquery("#form_igJBlbAaMIYX").closest("formtemplate"); _igJBlbAaMIYX.addCSS(_igJBlbAaMIYX.ASSETS_PREFIX + "/public/styles/formValidation.min.css"); _igJBlbAaMIYX.container.find("a[data-ignite-button-step]").on("click keypress", function (event) { var elem = this; if ((event.type === "keypress" && event.which === 13) || event.type === "click") { event.preventDefault(); _igJBlbAaMIYX.handleStep(event, elem); } }); _igJBlbAaMIYX.container.find("[data-ignite-for-step-id]").on("click keypress", function (event) { var elem = this; if ((event.type === "keypress" && event.which === 13) || event.type === "click") { event.preventDefault(); _igJBlbAaMIYX.handleStepIndicator(event, elem); } }); _igJBlbAaMIYX.bindSubmit(); if (_igJBlbAaMIYX.useCaptcha) { _igJBlbAaMIYX.data['captcha'] = {}; _igJBlbAaMIYX.data['captcha'].value = ''; _igJBlbAaMIYX.container.find("[data-ignite-submit-button]").parent().before("
"); _igJBlbAaMIYX.container.find("#_igJBlbAaMIYXrefreshImage").click(function () { _igJBlbAaMIYX.refreshCaptcha(); }); window.IGNITE.jquery("[data-ignite-field-id=captcha]:not(div)", "#form_igJBlbAaMIYX").blur(function () { _igJBlbAaMIYX.data['captcha'].value = this.value; }); } }); _igJBlbAaMIYX.refreshCaptcha = function () { _igJBlbAaMIYX.container.find("#_igJBlbAaMIYXImgCaptcha").attr("src", "https://mamh.salsalabs.org/api/captcha/" + _igJBlbAaMIYX.userInteractionId + "?refresh=" + Math.random().toString()); } _igJBlbAaMIYX.bindSubmit = function () { _igJBlbAaMIYX.container.find("[data-ignite-submit-button]").on("click keypress", function (event) { if ((event.type === "keypress" && event.which === 13) || event.type === "click") { event.preventDefault(); _igJBlbAaMIYX.submitFunc(); } }); } _igJBlbAaMIYX.unbindSubmit = function () { _igJBlbAaMIYX.container.find("[data-ignite-submit-button]").off("click keypress"); } _igJBlbAaMIYX.lastStepTarget = 99; _igJBlbAaMIYX.handleStepIndicator = function (event, element) { var stepTarget = element.dataset["igniteForStepId"]; if (!window.IGNITE.jquery(element).hasClass("sli-completed")) { return; } var next = parseInt(stepTarget); var skipValidation = next <= _igJBlbAaMIYX.lastStepTarget; _igJBlbAaMIYX.lastStepTarget = next; _igJBlbAaMIYX.doStep(event, stepTarget, skipValidation.toString()); } _igJBlbAaMIYX.handleStep = function (event, element) { var stepTarget = element.dataset["igniteButtonStep"]; var skipValidation = element.dataset["igniteSkipValidation"]; // setup some local variables _igJBlbAaMIYX.doStep(event, stepTarget, skipValidation); } _igJBlbAaMIYX.doStep = function (event, stepTarget, skipValidation) { var form = window.IGNITE.jquery("#form_igJBlbAaMIYX"); // validate all visible fields before we switch var fv = form.data('formValidation'); var isValid = true; fv._submitIfValid = false; if (skipValidation !== 'true') { fv.validate(); isValid = fv.isValid(); } if ((!isValid && !_igJBlbAaMIYX.isPreview) && (skipValidation != "true")) { fv._onError(window.IGNITE.jquery.Event(event)); var errorFields = form.find(".sli-form-error"); if (errorFields && errorFields.length > 0) { window.scrollTo(0, form.find(".sli-form-error").first().offset().top); } return false; } var currentStep = _igJBlbAaMIYX.container.find("div[data-ignite-container-type=elementStep]").filter(":visible"); var stepId = null; if (currentStep) { stepId = currentStep.data("ignite-step-id"); if (skipValidation != "true") { _igJBlbAaMIYX.container.find("div[data-ignite-for-step-id=" + stepId + "]").addClass("sli-completed").removeClass("sli-selected"); } } _igJBlbAaMIYX.container.find("div[data-ignite-for-step-id=" + stepTarget + "]").addClass("sli-selected"); _igJBlbAaMIYX.container.find("div[data-ignite-container-type=elementStep]").each(function (index, div) { if (div.dataset["igniteStepId"] == stepTarget) { window.IGNITE.jquery(div).addClass("sli-selected").show().trigger('isShown'); } else { window.IGNITE.jquery(div).removeClass("sli-selected").hide(); } }); window.IGNITE.jquery(window).trigger('resize'); window.scrollTo(0, form.first().offset().top); var focusableFieldsArray = form.find('input:visible:enabled:not([readonly]),textarea:visible:enabled:not([readonly]),select:visible:enabled:not([readonly])'); if (focusableFieldsArray && focusableFieldsArray.length > 0) { focusableFieldsArray.first().focus(); } _igJBlbAaMIYX.sendStepNavigation(_igJBlbAaMIYX.activityType, (_igJBlbAaMIYX.p2p ? _igJBlbAaMIYX.p2p.name : null), stepId, stepTarget); }; _igJBlbAaMIYX.validationFunctions = []; _igJBlbAaMIYX.addValidation = function addValidation(f) { _igJBlbAaMIYX.validationFunctions.push(f); }; _igJBlbAaMIYX.validationMessages = []; _igJBlbAaMIYX.addValidationMsg = function addValidation(f) { _igJBlbAaMIYX.validationMessages.push(f); }; _igJBlbAaMIYX.success_functions = []; _igJBlbAaMIYX.addSuccessFunction = function addSuccessFunction(func) { _igJBlbAaMIYX.success_functions.push(func); }; // Fix Function#name on browsers that do not support it (IE): // from https://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie if (!(function f() { }).name) { Object.defineProperty(Function.prototype, 'name', { get : function () { var name = (this.toString().match(/^function\s*([^\s(]+)/) || [])[1]; // For better performance only parse once, and then cache the // result through a new accessor for repeated access. Object.defineProperty(this, 'name', {value : name}); return name; } }); } _igJBlbAaMIYX.addOrReplaceSuccessFunction = function addOrReplaceSuccessFunction(func) { var insertFunc = true; for (var i = 0; i < _igJBlbAaMIYX.success_functions.length; i++) { if (_igJBlbAaMIYX.success_functions[i].name == func.name) { _igJBlbAaMIYX.success_functions[i] = func; insertFunc = false; } } if (insertFunc) { _igJBlbAaMIYX.success_functions.push(func); } }; _igJBlbAaMIYX.addPostInit(function postInit() { if (_igJBlbAaMIYX.getUrlParam("iu")) { // set the single amount, but prepend before CC block in case form doesn't allow for donations currently var dAmts = _igJBlbAaMIYX.container.find(".sli-donation-paymentblock"); var note = "Note: When adding a donation or registering an attendee, it's best to provide as much accurate information as possible. " + "Do not use a fictitious email or use the same email for different people, doing so may result in the the donation or registration being associated with the wrong person."; dAmts.before("
", "
", "
" + note + "
"); _igJBlbAaMIYX.container.find(".sli-iu-amount").blur(function () { _igJBlbAaMIYX.updateAmount(this.value, 'oneTimeAmount'); }); } var form = window.IGNITE.jquery("#form_igJBlbAaMIYX"); var fv = form.formValidation({button : {selector : '[type="none"]'}}); fv.on('err.validator.fv', function (e, data) { // $(e.target) --> The field element // data.fv --> The FormValidation instance // data.field --> The field name // data.element --> The field element // data.validator --> The current validator name data.element .data('fv.messages') // Hide all the messages .find('.sli-field-error[data-fv-for="' + data.field + '"]').hide() // Show only message associated with current validator .filter('[data-fv-validator="' + data.validator + '"]').show(); }); fv.on('success.validator.fv', function (e, data) { // data.field ---> The field name // data.validator ---> The validator name // data.fv ---> The plugin instance // invoke our own post success functions so we might do extra validation for (var i = 0; i < _igJBlbAaMIYX.validationFunctions.length; i++) { _igJBlbAaMIYX.validationFunctions[i](data); } }); try { fv = form.data('formValidation'); fv.$hiddenButton.remove(); } catch (e) { // at least we don't break other init functions } if (_igJBlbAaMIYX.useTCDialog) { var w = window.IGNITE.jquery(window).width() * .75; var dialogId = _igJBlbAaMIYX.container.find("[data-ignite-termsandconditions-dialog]").attr("id"); var printId = _igJBlbAaMIYX.container.find("[data-ignite-print-link]").attr("id"); var printContentId = _igJBlbAaMIYX.container.find("[data-ignite-print-content]").attr("id"); // note: dialog() moves the element out of the form, hence capturing the id's above and using them below _igJBlbAaMIYX.container.find("[data-ignite-termsandconditions-dialog]").dialog({autoOpen : false, dialogClass : "sli-termsAndConditionsDialog", width : w}); _igJBlbAaMIYX.container.find("[data-ignite-see-more-link]").on("click keypress", function (event) { if ((event.type === "keypress" && event.which === 13) || event.type === "click") { window.IGNITE.jquery("#" + dialogId).dialog("open"); } }); window.IGNITE.jquery("#" + printId).on("click keypress", function (event) { if ((event.type === "keypress" && event.which === 13) || event.type === "click") { window.IGNITE.jquery("#" + printContentId).printThis(); } }); } for (var key in _igJBlbAaMIYX.mergeFields) { if (_igJBlbAaMIYX.mergeFields.hasOwnProperty(key)) { _igJBlbAaMIYX.container.find("[ignite-mergefield-id='" + key + "']").each(function () { var el = window.IGNITE.jquery(this); var format = window.IGNITE.jquery(this).attr('ignite-mergefield-option') || null; var value = _igJBlbAaMIYX.mergeFields[key]; switch (format) { case 'allCaps': value = value.toUpperCase(); break; case 'allLowerCase': value = value.toLowerCase(); break; case 'firstLetter': value = value.charAt(0).toUpperCase() + value.slice(1).toLowerCase(); break; case 'firstUpperAllWords': value = value.toLowerCase(); value = value.replace(/\b\w/g, function (l) { return l.toUpperCase() }); break; } el.text(value); }); } } _igJBlbAaMIYX.container.find("[ignite-mergefield-id]:empty").each(function (index, element) { var el = window.IGNITE.jquery(element); el.text(el.attr('ignite-mergefield-default')); }); var country = _igJBlbAaMIYX.container.find("select[name='field-address-country']"); if (country.length > 0) { country.change(_igJBlbAaMIYX.handleCountryChange); _igJBlbAaMIYX.handleCountryChange(); } else { var state = _igJBlbAaMIYX.container.find("select[name='field-address-state']"); var postal = _igJBlbAaMIYX.container.find("input[name='field-address-zip']"); if (state.length > 0 && postal.length > 0) { state.change(_igJBlbAaMIYX.handleStateChange); _igJBlbAaMIYX.handleStateChange(); } } _igJBlbAaMIYX.setupPhoneNumberMask(); }); _igJBlbAaMIYX.placeholderView = function placeholderView(ctrl, placeholderData) { window.IGNITE.jquery(ctrl).on('focus', function () { window.IGNITE.jquery(this).attr('custom_placeholder'); if (window.IGNITE.jquery(this).attr('custom_placeholder') == undefined && window.IGNITE.jquery(this).attr('custom_placeholder') == null) { window.IGNITE.jquery(this).attr('custom_placeholder', window.IGNITE.jquery(this).attr('placeholder')); } window.IGNITE.jquery(this).data('placeholder', window.IGNITE.jquery(this).attr('placeholder')); window.IGNITE.jquery(this).attr('placeholder', placeholderData); }).on('blur', function () { window.IGNITE.jquery(this).attr('placeholder', window.IGNITE.jquery(this).attr('custom_placeholder')); }); }; _igJBlbAaMIYX.setupPhoneNumberMask = function setupPhoneNumberMask() { var ctrl = _igJBlbAaMIYX.container.find("[data-fv-field$=_phone]"); if (ctrl.length == 0) { return; } var val = _igJBlbAaMIYX.data['Address@Home@Country']; var min = 12; var max = 12; var msg = "Please provide a complete phone number with area code."; if (typeof val == 'undefined' || typeof val.value == 'undefined' || val.value.length == 0 || val.value === 'US' || val.value == 'CA') { ctrl.mask("000-000-0000", _igJBlbAaMIYX.placeholderView(ctrl, "___-___-____")); } else { ctrl.unmask(); ctrl.removeAttr('placeholder'); ctrl.mask('000-000-0000-0000', _igJBlbAaMIYX.placeholderView(ctrl, "___-___-____-____"), { translation : { 'Z' : { pattern : /[0-9]/, optional : true } } }); msg = "Please provide a complete phone number with country code."; min = 10; max = 17; } var fv = window.IGNITE.jquery("#form_igJBlbAaMIYX").data('formValidation'); ctrl.each(function () { var c = window.IGNITE.jquery(this); fv.updateOption(c.attr('data-fv-field'), 'stringLength', 'min', min); fv.updateOption(c.attr('data-fv-field'), 'stringLength', 'max', max); fv.updateOption(c.attr('data-fv-field'), 'stringLength', 'message', msg); fv.updateStatus(c.attr('data-fv-field'), 'NOT_VALIDATED'); }); } _igJBlbAaMIYX.adjustForIUParam = function () { var fv = window.IGNITE.jquery("#form_igJBlbAaMIYX"); if (_igJBlbAaMIYX.getUrlParam("iu")) { _igJBlbAaMIYX.iu = _igJBlbAaMIYX.getUrlParam("iu"); _igJBlbAaMIYX.container.find(".sli-input").each(function () { // make sure we dont unrequire payment information if (window.IGNITE.jquery(this).closest(".sli-donation-paymentblock").length == 0) { if (!this.name.match(/person-firstname$/) && !this.name.match(/person-lastname$/) && !this.name.match(/iuCustomOneTime$/) && !this.name.match(/captcha$/)) { try { fv.formValidation('enableFieldValidators', this.name, false, 'notEmpty'); _igJBlbAaMIYX.adjustOptionalLabelForField(this, false); } catch (e) { } } } }); // check to see if we need to just show the donate page if (_igJBlbAaMIYX.getUrlParam("view")) { if ("donate" == _igJBlbAaMIYX.getUrlParam("view").toLowerCase()) { _igJBlbAaMIYX.container.find("[ignite-transition='donate']").on('click keypress'); _igJBlbAaMIYX.container.find("[ignite-transition='donate']").click(); } } _igJBlbAaMIYX.toggleIU(true, null, "OFFLINE"); _igJBlbAaMIYX.container.find(".sli-donation-amountblock").hide(); } // fix phone number masking var ctrl = _igJBlbAaMIYX.container.find("[data-fv-field$=_phone]"); ctrl.each(function () { var c = window.IGNITE.jquery(this); c.val(c.masked(c.val().replace(/\D/g, ''))); }); }; _igJBlbAaMIYX.adjustOptionalLabelForField = function (field, required) { if (field.id && field.id.length > 0) { var l = _igJBlbAaMIYX.container.find('label[for=' + field.id + ']'); if (l.length > 0 && l.css('display') != 'none') { if (!required) { l.text(l.text().replace("*", " (optional)")); } else { l.text(l.text().replace(" (optional)", "*")); } } else { var ph = field.getAttribute("placeholder"); if (ph) { ph = ph.trim(); if (ph.length > 0) { if (!required) { if (!ph.endsWith(' (optional)')) { field.setAttribute("placeholder", ph + " (optional)"); } } else { field.setAttribute("placeholder", ph.replace(" (optional)", "")); } } } } } }; _igJBlbAaMIYX.preSelectedState = undefined; _igJBlbAaMIYX.CA_STATES = ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT']; _igJBlbAaMIYX.handleStateChange = function (event) { var state = _igJBlbAaMIYX.container.find("select[name='field-address-state']").val(); if (state && window.IGNITE.jquery.inArray(state, _igJBlbAaMIYX.CA_STATES) > -1) { _igJBlbAaMIYX.updateZipCodeValidation('CA'); } else { _igJBlbAaMIYX.updateZipCodeValidation('US'); } } _igJBlbAaMIYX.updateZipCodeValidation = function (country) { var postal = _igJBlbAaMIYX.container.find("input[name='field-address-zip']"); if (postal.length > 0) { var fv = window.IGNITE.jquery("#form_igJBlbAaMIYX").data('formValidation'); fv.enableFieldValidators('field-address-zip', true, 'zipCode'); fv.enableFieldValidators('field-address-zip', true, 'regexp'); fv.updateOption('field-address-zip', 'zipCode', 'country', country); switch (country) { case 'CA': fv.updateOption('field-address-zip', 'regexp', 'regexp', /^(?!.*[DFIOQU])[A-VXY][0-9][A-Z]\s[0-9][A-Z][0-9]$/); fv.updateMessage('field-address-zip', 'regexp', 'Zip Code must be formatted as: A1A 0A1 and include a space between the first 3 and second 3 digits.'); fv.enableFieldValidators('field-address-zip', false, 'zipCode'); break; case 'US': fv.updateOption('field-address-zip', 'regexp', 'regexp', /^(\d{5}|\d{5}-\d{4})?$/); fv.updateMessage('field-address-zip', 'regexp', 'Zip Code must be formatted as: "55555" or "55555-5555"'); fv.enableFieldValidators('field-address-zip', false, 'zipCode'); break; default: fv.enableFieldValidators('field-address-zip', false, 'regexp'); break; } fv.updateStatus('field-address-zip', 'NOT_VALIDATED'); } } _igJBlbAaMIYX.handleCountryChange = function (event) { var stateSelect = _igJBlbAaMIYX.container.find("select[name='field-address-state']"); var fieldSelect = _igJBlbAaMIYX.container.find(".sli-field-address-state"); var country = _igJBlbAaMIYX.container.find("select[name='field-address-country']").val(); _igJBlbAaMIYX.data['Address@Home@Country'].value = country; _igJBlbAaMIYX.setupPhoneNumberMask(); _igJBlbAaMIYX.updateZipCodeValidation(country); window.IGNITE.jquery.getJSON(_igJBlbAaMIYX.ASSETS_PREFIX + "/api/widget/stateProvinces/" + country, function (data) { stateSelect.children().remove(); stateSelect.append(''); _igJBlbAaMIYX.preSelectedState = _igJBlbAaMIYX.data['Address@Home@State'].value; window.IGNITE.jquery.each(data, function () { stateSelect.append(''); }); if (data.length === 0) { fieldSelect.hide(); } else { fieldSelect.show(); } _igJBlbAaMIYX.preSelectedState = undefined; }) }; _igJBlbAaMIYX.validate = function runValidations(form) { scroll(0, window.IGNITE.jquery(".result", '#id_d2715b274e454f0095cf2782a627f5f1').offset().top); }; _igJBlbAaMIYX.okToSubmit = function (event) { return true; }; _igJBlbAaMIYX.getFieldValue = function (name) { if (name === 'amount') { return _igJBlbAaMIYX.data.enableRecuring.value ? _igJBlbAaMIYX.data.recurringAmount.value : _igJBlbAaMIYX.data.oneTimeAmount.value; } else if (name === 'donationsummary-dedication_type') { return _igJBlbAaMIYX.data.selectedDedicationType.value .replace(/([A-Z])/g, ' $1').trim(); } else if (name === 'makerecurringcb') { return _igJBlbAaMIYX.data.enableRecuring.value ? 'yes' : 'no'; } var fieldAttributeSelector = '[name=field-' + name + ']'; var field = window.IGNITE.jquery(fieldAttributeSelector); if (field.length === 0) { fieldAttributeSelector = '[salsa-reference-name=' + name + ']'; field = window.IGNITE.jquery(fieldAttributeSelector); } if (field.is(':radio')) { field = window.IGNITE.jquery(fieldAttributeSelector + ':checked'); } else if (field.is(':checkbox')) { return field.is(':checked'); } return field.val(); }; _igJBlbAaMIYX.handleRedirect = function () { url = _igJBlbAaMIYX.resultURL; if (typeof _igJBlbAaMIYX.redirectParameters != "undefined") { if (typeof _igJBlbAaMIYX.redirectMethod != "undefined" && _igJBlbAaMIYX.redirectMethod.toUpperCase() == 'GET') { var redirectParamsUrl = ''; for (var key in _igJBlbAaMIYX.redirectParameters) { if (key) { var value = _igJBlbAaMIYX.getFieldValue(key); redirectParamsUrl += _igJBlbAaMIYX.redirectParameters[key] + '=' + value + '&'; } } redirectParamsUrl += 'sl_ai' + '=' + _igJBlbAaMIYX.activityId + '&'; redirectParamsUrl += 'sl_at' + '=' + _igJBlbAaMIYX.activityType; url += url.indexOf("?") >= 0 ? "&" : "?"; url += redirectParamsUrl; } else if (typeof _igJBlbAaMIYX.redirectMethod != "undefined" && _igJBlbAaMIYX.redirectMethod.toUpperCase() == 'POST') { var form = document.createElement('form'); form.method = 'POST'; form.action = url; for (var key in _igJBlbAaMIYX.redirectParameters) { if (key) { var value = _igJBlbAaMIYX.getFieldValue(key); var hiddenInput = document.createElement('input'); hiddenInput.type = 'hidden'; hiddenInput.name = _igJBlbAaMIYX.redirectParameters[key]; hiddenInput.value = value; form.appendChild(hiddenInput); } } var hiddenActivityId = document.createElement('input'); hiddenActivityId.type = 'hidden'; hiddenActivityId.name = 'sl_ai'; hiddenActivityId.value = _igJBlbAaMIYX.activityId; form.appendChild(hiddenActivityId); var hiddenActivityType = document.createElement('input'); hiddenActivityType.type = 'hidden'; hiddenActivityType.name = 'sl_at'; hiddenActivityType.value = _igJBlbAaMIYX.activityType; form.appendChild(hiddenActivityType); document.body.appendChild(form); form.submit(); return; } } top.location.replace(url); }; _igJBlbAaMIYX.request = undefined; _igJBlbAaMIYX.serializeFormInputs = function (form) { var inputs = _igJBlbAaMIYX.container.find("input, select, button, textarea, checkbox"); var jsonForm = {}; for (var x = 0; x < inputs.length; x++) { var name = inputs[x].name; if (["card_number", "bank_account", "bank_routing"].indexOf(name) === -1) { jsonForm[name] = inputs[x].value; } } return jsonForm; } _igJBlbAaMIYX.getValidSubmitInputValues = function (form) { // let's select and cache all the fields var inputs = form.find("input, select, button, textarea, checkbox"); for (var x = 0; x < inputs.length; x++) { // make sure we don't blur the donationAmtOtherAmt - that causes the amount to be 0 if ( inputs[x].name == 'customOneTime' || inputs[x].name == 'customRecurringAmount' || inputs[x].name == 'customMonthlyRecurringAmount' || inputs[x].name == 'customQuarterlyRecurringAmount' || inputs[x].name == 'customYearlyRecurringAmount' || inputs[x].type == 'radio' ) { continue; } try { window.IGNITE.jquery(inputs[x]).blur(); } catch (e) {/*ignore missing blur*/ } if (inputs[x].disabled) { inputs.splice(x, 1); } } return inputs; } _igJBlbAaMIYX.validateSubmitInputValues = function (form, event) { // call so that we invoke blur on the input valies _igJBlbAaMIYX.getValidSubmitInputValues(form); // validate all required fields are filled in var fv = form.data('formValidation'); fv._submitIfValid = false; fv.validate(); var isValid = fv.isValid(); if (!isValid) { fv._onError(window.IGNITE.jquery.Event(event)); var errorFields = form.find(".sli-form-error"); if (errorFields && errorFields.length > 0) { window.scrollTo(0, form.find(".sli-form-error").first().offset().top); } _igJBlbAaMIYX.bindSubmit(); return false; } return isValid; }; _igJBlbAaMIYX.form; _igJBlbAaMIYX.submitResultsId = '#id_d2715b274e454f0095cf2782a627f5f1'; _igJBlbAaMIYX.asyncSubmit = true; _igJBlbAaMIYX.addOrReplaceSuccessFunction(function sendFormSubmission() { _igJBlbAaMIYX.sendPageSubmission(_igJBlbAaMIYX.activityType, _igJBlbAaMIYX.p2p ? _igJBlbAaMIYX.p2p.name : null); }); _igJBlbAaMIYX.submitFunc = function submit(event, altform) { // make sure we prevent default if (event) { event.preventDefault(); } _igJBlbAaMIYX.unbindSubmit(); try { // already have a submission in progress, just return if (_igJBlbAaMIYX.request) { return false; } // setup some local variables _igJBlbAaMIYX.form = window.IGNITE.jquery("#form_igJBlbAaMIYX"); if (typeof altform != "undefined" && altform.length > 0) { _igJBlbAaMIYX.form = altform; } var inputs = _igJBlbAaMIYX.getValidSubmitInputValues(_igJBlbAaMIYX.form); if (!_igJBlbAaMIYX.validateSubmitInputValues(_igJBlbAaMIYX.form, event)) { return false; } var processing = _igJBlbAaMIYX.form.find(".sli-processing"); // let's disable the inputs for the duration of the ajax request // and prevent the default action now inputs.prop("disabled", true); //set captcha for the case, where the sign-up button out of the column with form if (_igJBlbAaMIYX.useCaptcha) { _igJBlbAaMIYX.data['captcha'].value = _igJBlbAaMIYX.container.find("input[data-ignite-field-id=captcha]").val(); } // serialize the data in the form var serializedData = _igJBlbAaMIYX.buildMsg(); // hide button, display processing block var btn = _igJBlbAaMIYX.form.find("[data-ignite-submit-button]"); btn.addClass("sli-submit-processing").prop("disabled", true); processing.show(); // fire off the request to /form.php _igJBlbAaMIYX.request = window.IGNITE.jquery.ajax({ url : _igJBlbAaMIYX.url, type : "post", async : _igJBlbAaMIYX.asyncSubmit, contentType : "application/json; charset=utf-8", data : serializedData, dataType : 'json' }); // callback handler that will be called on success _igJBlbAaMIYX.request.done(function (response, textStatus, jqXHR) { var errors; var btn = _igJBlbAaMIYX.form.find("[data-ignite-submit-button]"); var processing = _igJBlbAaMIYX.form.find(".sli-processing"); if (typeof response != 'undefined' && typeof response.payload != 'undefined') { errors = response.payload.errors; } if (errors == undefined && typeof response != 'undefined') { errors = response.errors; } if (typeof errors != 'undefined' && errors.length > 0) { window.IGNITE.jquery(".result", _igJBlbAaMIYX.submitResultsId).empty(); var items = []; window.IGNITE.jquery.each(errors, function (i, item) { items.push('
  • ' + item.message + "
  • "); }); var resDiv = window.IGNITE.jquery(".result", _igJBlbAaMIYX.submitResultsId); window.IGNITE.jquery("