");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, R_722072_156_1_2_0:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1744048774370"]');
el.revertContentOp().remove();})("HEAD")}}, C_722072_156_1_2_1:{ fn:function(log,nonce=''){return (function(x) {})(".w-inline-block,.w-button,input.w-button,.splash,.splash .mw-ol-btn.mw-ol-whitemw-ol-btn, .splash .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.splash .logo-link,.splash .btn,.nav,.mw-ol-btn, .mw-ol-btn:visited,.mw-ol-btn.mw-ol-whitemw-ol-btn, .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.mw-ol-btn.mw-ol-white,.overlay2,.div-block-42,.splash-h1,.div-block-18,.sidephoto,.link-3, .link-3:visited,.stafflink,.w-background-video,.w-background-video > video,.w-background-video > video::-webkit-media-controls-start-playback-button,.background-video,.mw-ol-btn,.mw-ol-btn.mw-ol-whitemw-ol-btn.nav,.w-hidden-small,.link-block,.btn,.w-hidden-tiny,.btn.whitebtn,.btn.whitebtn.onorange,.div-block-42 p,.div-block-17,.dark,.darkpara,.givingtues,.important-text,.heading-5,.btn, .btn:visited,.link-2,.big,.splash .pushdown__col,.splash .pushdown__content,.splash .pushdown-copy > *:last-child,.splash .grid-area,.splash .grid-card,.splash .grid-card div > p,.splash .grid-card div > p > span,.splash .grid-card .flex-col,.splash .grid-card div > p > b,.splash .grid-card button,.splash div div.centered,.splash div a.other-link,.splash .grid-card p:nth-of-type(3),.splash .heading-5,.splash .nav,.splash .dark,/* .splash .grid-card p:nth-of-type(3),.splash .div-block-17,.splash p.dark")}}, R_722072_156_1_2_1:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
})(".w-inline-block,.w-button,input.w-button,.splash,.splash .mw-ol-btn.mw-ol-whitemw-ol-btn, .splash .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.splash .logo-link,.splash .btn,.nav,.mw-ol-btn, .mw-ol-btn:visited,.mw-ol-btn.mw-ol-whitemw-ol-btn, .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.mw-ol-btn.mw-ol-white,.overlay2,.div-block-42,.splash-h1,.div-block-18,.sidephoto,.link-3, .link-3:visited,.stafflink,.w-background-video,.w-background-video > video,.w-background-video > video::-webkit-media-controls-start-playback-button,.background-video,.mw-ol-btn,.mw-ol-btn.mw-ol-whitemw-ol-btn.nav,.w-hidden-small,.link-block,.btn,.w-hidden-tiny,.btn.whitebtn,.btn.whitebtn.onorange,.div-block-42 p,.div-block-17,.dark,.darkpara,.givingtues,.important-text,.heading-5,.btn, .btn:visited,.link-2,.big,.splash .pushdown__col,.splash .pushdown__content,.splash .pushdown-copy > *:last-child,.splash .grid-area,.splash .grid-card,.splash .grid-card div > p,.splash .grid-card div > p > span,.splash .grid-card .flex-col,.splash .grid-card div > p > b,.splash .grid-card button,.splash div div.centered,.splash div a.other-link,.splash .grid-card p:nth-of-type(3),.splash .heading-5,.splash .nav,.splash .dark,/* .splash .grid-card p:nth-of-type(3),.splash .div-block-17,.splash p.dark")}}, C_722072_156_1_3_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, R_722072_156_1_3_0:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1744048774372"]');
el.revertContentOp().remove();})("HEAD")}}, C_722072_156_1_3_1:{ fn:function(log,nonce=''){return (function(x) {})(".w-inline-block,.w-button,input.w-button,.splash,.splash .mw-ol-btn.mw-ol-whitemw-ol-btn, .splash .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.splash .logo-link,.splash .btn,.nav,.mw-ol-btn, .mw-ol-btn:visited,.mw-ol-btn.mw-ol-whitemw-ol-btn, .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.mw-ol-btn.mw-ol-white,.overlay2,.div-block-42,.splash-h1,.div-block-18,.sidephoto,.link-3, .link-3:visited,.stafflink,.w-background-video,.w-background-video > video,.w-background-video > video::-webkit-media-controls-start-playback-button,.background-video,.mw-ol-btn,.mw-ol-btn.mw-ol-whitemw-ol-btn.nav,.w-hidden-small,.link-block,.btn,.w-hidden-tiny,.btn.whitebtn,.btn.whitebtn.onorange,.div-block-42 p,.div-block-17,.dark,.darkpara,.givingtues,.important-text,.heading-5,.btn, .btn:visited,.link-2,.big,.splash .pushdown__col,.splash .pushdown__content,.splash .pushdown-copy > *:last-child,.splash .grid-area,.splash .grid-card,.splash .grid-card div > p,.splash .grid-card div > p > span,.splash .grid-card .flex-col,.splash .grid-card div > p > b,.splash .grid-card button,.splash div div.centered,.splash div a.other-link,.splash .grid-card p:nth-of-type(3),.splash .heading-5,/* .splash .grid-card p:nth-of-type(3),.splash .div-block-17,.splash .nav,.splash .dark,.splash p.dark")}}, R_722072_156_1_3_1:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
})(".w-inline-block,.w-button,input.w-button,.splash,.splash .mw-ol-btn.mw-ol-whitemw-ol-btn, .splash .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.splash .logo-link,.splash .btn,.nav,.mw-ol-btn, .mw-ol-btn:visited,.mw-ol-btn.mw-ol-whitemw-ol-btn, .mw-ol-btn.mw-ol-whitemw-ol-btn:visited,.mw-ol-btn.mw-ol-white,.overlay2,.div-block-42,.splash-h1,.div-block-18,.sidephoto,.link-3, .link-3:visited,.stafflink,.w-background-video,.w-background-video > video,.w-background-video > video::-webkit-media-controls-start-playback-button,.background-video,.mw-ol-btn,.mw-ol-btn.mw-ol-whitemw-ol-btn.nav,.w-hidden-small,.link-block,.btn,.w-hidden-tiny,.btn.whitebtn,.btn.whitebtn.onorange,.div-block-42 p,.div-block-17,.dark,.darkpara,.givingtues,.important-text,.heading-5,.btn, .btn:visited,.link-2,.big,.splash .pushdown__col,.splash .pushdown__content,.splash .pushdown-copy > *:last-child,.splash .grid-area,.splash .grid-card,.splash .grid-card div > p,.splash .grid-card div > p > span,.splash .grid-card .flex-col,.splash .grid-card div > p > b,.splash .grid-card button,.splash div div.centered,.splash div a.other-link,.splash .grid-card p:nth-of-type(3),.splash .heading-5,/* .splash .grid-card p:nth-of-type(3),.splash .div-block-17,.splash .nav,.splash .dark,.splash p.dark")}}, C_722072_70_1_2_1:{ fn:function(log,nonce=''){return (function(x) {var el,ctx=vwo_$(x);
/*vwo_debug log("addElement","body"); vwo_debug*/!(el=vwo_$("body")).find('[vwo-op-1715610703351=""]').length&&el.vwoElement({html:'',position:"append"});})("body")}}, C_722072_70_1_2_0:{ fn:function(log,nonce=''){return (function(x) {try{const MAX_ONETIME_AMOUNT=500,RECURRING_ASK=t=>{let e;return e=t>=400&&t<500?50:t>=300&&t<400?40:t>=200&&t<300?30:t>=100&&t<200?15:10,e};function waitForElement(t,e,o=(t=>{}),n=30){return t?(o(t),!0):setTimeout(e,n)}function vwoCustomEvent(t){window.VWO=window.VWO||[],VWO.event=VWO.event||function(){VWO.push(["event"].concat([].slice.call(arguments)))},VWO.event("customEvent",{label:t.toString()})}function entangleElements(t,e,o="innerHTML",n={attributes:!0,childList:!0,subtree:!0}){if(!t||!e)return console.error(`entangleElements: ${!t&&"element1"}${t||e?" ":" and "} ${!e&&"element2"} ${t||e?"is":"are"} undefined.`);console.log("Entangling:\n",t," ",e,"\nElement 2 will mirror Element 1's values.");const i=new MutationObserver((n,i)=>{for(const i of n)switch(i.type){case"attributes":const{attributeName:n,oldValue:r}=i;if("style"!==n){const o=t.getAttribute(n);null===o?e.removeAttribute(n):e.setAttribute(n,o)}break;default:e[o]=t[o]}});return i.observe(t,n),i}function init(){customElements.whenDefined("c-donate-community-giving-options").then(()=>{customElements.whenDefined("lightning-card").then(()=>{customElements.whenDefined("c-donate-community-donate-buttons").then(()=>{customElements.whenDefined("lightning-input").then(()=>{const t=[...document.querySelector("c-donate-community-giving-options").shadowRoot.querySelectorAll("lightning-card")][1].shadowRoot.querySelector(".slds-card__body").getSlotNodes(1).querySelector("c-donate-community-donate-buttons").shadowChildren(0),e={getGiftArrayButtons:function(){let e=t;return Array.from(e.children).slice(0,Array.from(e.children).indexOf(e.querySelector(".slds-form-element"))).map(t=>t.querySelector("button"))},getAmount:function(){const e=t=>t.replace(/[\$\,]/gm,"");let o=this.getGiftArrayButtons().filter(t=>t.classList.contains("donate-selected"))[0];return o||(o=t.querySelector("lightning-input").shadowChildren(0).shadowChildren(0).querySelector("input")),parseFloat(e(o.value))},setAmount:function(e){const o=t.querySelector("lightning-input").shadowChildren(0).shadowChildren(0).querySelector("input");for(const t of this.getGiftArrayButtons())if(parseFloat(t.value)===parseFloat(e))return o.value="",t.click(),this.getAmount()===parseFloat(e);return o.value=parseFloat(e),o.dispatchEvent(new Event("change",{bubbles:!0})),this.getAmount()===parseFloat(e)},getRecurring:function(){return[...t.querySelector(".slds-grid").querySelectorAll("lightning-input")][0].shadowChildren(0).shadowChildren(0).querySelector('input[type="checkbox"]').checked},setRecurring:function(e=!0){const o=[...t.querySelector(".slds-grid").querySelectorAll("lightning-input")][0].shadowChildren(0).shadowChildren(0).querySelector('input[type="checkbox"]'),n=this.getRecurring();return(!n&&e||n&&!e)&&o.click(),this.getRecurring()===e},submit:function(t=this.buttons["Donate Now"]){return t.click()}};e.giftArrayButtons=e.getGiftArrayButtons(),window.NA=window.NA||{},window.NA.MiniDonationForm=e,waitForElement(t.querySelector("button"),init,e=>{window.NA.MiniDonationForm.buttons={"Donate Now":Array.from(t.children).slice(Array.from(t.children).indexOf(t.querySelector(".slds-form-element"))).map(t=>t.querySelector("button")).filter(t=>t)[0],"Add to Basket":Array.from(t.children).slice(Array.from(t.children).indexOf(t.querySelector(".slds-form-element"))).map(t=>t.querySelector("button")).filter(t=>t)[1]},window.NA.MiniDonationForm.cloneSubmitButton=function(t=this.buttons["Donate Now"]){const e=t.cloneNode(!0);return e.attributes=t.attributes,e.style&&(e.style=t.style),t.after(e),e},waitForElement(document.querySelector("dialog.donation-interrupter"),init,t=>{console.log("dialog found:",t);try{const e={dialog:t||document.querySelector("dialog.donation-interrupter"),_tokenName:"DonationInterrupter_",_memoryMode:sessionStorage,status:"ready",getStatus:function(){return this._memoryMode.getItem(this._tokenName+"_status")||void 0},setStatus:function(t){return this._memoryMode.setItem(this._tokenName+"_status",t),this.status=t,this.getStatus()},conditions:!0,newAmount:function(t){return t/12},onShow:function(t){},onHide:function(t){},show:function(t){this.dialog.showModal(),this.dialog.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),t.stopImmediatePropagation())}),this.setStatus("shown"),"function"==typeof this.onShow&&this.onShow.call(null,t)},hide:function(t){this.setStatus("dismissed"),this.dialog.close(),"function"==typeof this.onHide&&this.onHide.call(null,t)},updateDialogData:function(){if(this.dialog){let t=window.NA.MiniDonationForm.getAmount(),e=this.newAmount(t);[...this.dialog.querySelectorAll('span[data="amount_original"]')].forEach(e=>e.textContent=t.toString()),[...this.dialog.querySelectorAll('span[data="amount_suggested"]')].forEach(t=>t.textContent=e.toString())}}};window.NA=window.NA||{},window.NA.DonationInterrupter=e||window.NA.DonationInterrupter,window.NA.MiniDonationForm&&window.NA.DonationInterrupter&&main(window.NA.MiniDonationForm,window.NA.DonationInterrupter)}catch(t){console.error("Failed to interface with donation interrupter.")}},100)},100)})})})})}function main(t,e,o=0){if(!t.buttons)return setTimeout(init,100);if(!e.buttons)return e.buttons={yes:[...e.dialog.querySelectorAll("button")][0],no:[...e.dialog.querySelectorAll("button")][1]},main(t,e,o);window.NA.DonationInterrupter.setStatus(window.NA.DonationInterrupter._memoryMode.getItem(window.NA.DonationInterrupter._tokenName+"_status")||"ready"),window.NA.DonationInterrupter.newAmount=RECURRING_ASK;try{for(const n of Object.values(t.buttons)){const i=n,r=t.cloneSubmitButton(i);i.style.display="none",r.style.setProperty("margin-left","0","important"),setInterval(()=>r.disabled=i.disabled,50),r.addEventListener("click",n=>{let i=t.getAmount(),r=t.getRecurring(),s="shown"===e.status||"dismissed"===e.status;o&&(console.groupCollapsed("Check conditions"),console.info(i,"< 500",i<500),console.info(r,"=== false",!1===r),console.info(s,"=== false",!1===s),console.groupEnd("Check conditions"));const l=[i<500,!1===r,!1===s].every(t=>!!t);o&&console.info("showPopup?",l),n.srcElement.textContent===t.buttons["Add to Basket"].textContent?l?e.show(n):t.submit(t.buttons["Add to Basket"]):l?e.show(n):t.submit()})}}catch(t){console.error("Failed to clone submit button and add event listener.",t)}window.NA.DonationInterrupter.onShow=n=>{window.NA.DonationInterrupter.updateDialogData(),vwoCustomEvent("donationInterrupterShown");try{const i=window.NA.DonationInterrupter.buttons,{yes:r,no:s}=i;n.srcElement.textContent===t.buttons["Add to Basket"].textContent?(r.addEventListener("click",n=>{o&&console.groupCollapsed('"Yes" clicked'),vwoCustomEvent("yes");const i=t.getAmount(),r=window.NA.DonationInterrupter.newAmount(i);o&&console.log(i,"->",r),t.setRecurring(!0),t.setAmount(r),e.hide(),t.submit(t.buttons["Add to Basket"]),o&&console.groupEnd('"Yes" clicked')}),s.addEventListener("click",n=>{o&&console.groupCollapsed('"No" clicked'),vwoCustomEvent("no"),e.hide(),t.submit(t.buttons["Add to Basket"]),o&&console.groupEnd('"No" clicked')})):(r.addEventListener("click",n=>{o&&console.groupCollapsed('"Yes" clicked'),vwoCustomEvent("yes");const i=t.getAmount(),r=window.NA.DonationInterrupter.newAmount(i);o&&console.log(i,"->",r),t.setRecurring(!0),t.setAmount(r),e.hide(),t.submit(),o&&console.groupEnd('"Yes" clicked')}),s.addEventListener("click",n=>{o&&console.groupCollapsed('"No" clicked'),vwoCustomEvent("no"),e.hide(),t.submit(),o&&console.groupEnd('"No" clicked')})),o&&console.log("added handlers to buttons",i)}catch(t){console.error("Failed to attach event listeners to dialog buttons.",t)}}}window.HTMLElement.prototype.getSlot=window.HTMLElement.prototype.getSlot||function(){return this.querySelector("slot")||this.shadowRoot.querySelector("slot")},window.HTMLElement.prototype.getSlotNodes=window.HTMLElement.prototype.getSlotNodes||function(t){return"NaN"!==parseInt(t)&&t>=0?Array.from(this.getSlot().assignedNodes({flatten:!0})).at(t):Array.from(this.getSlot().assignedNodes({flatten:!0}))},window.HTMLElement.prototype.shadowChildren=window.HTMLElement.prototype.shadowChildren||function(t){return"NaN"!==parseInt(t)&&t>=0?Array.from(this.shadowRoot.children).at(t):Array.from(this.shadowRoot.children)},setTimeout(init,500);}catch(e){} ;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, C_722072_79_1_2_0:{ fn:function(){return (function(x) { try{
var _vwo_sel = vwo_$("");
!vwo_$("head").find("#1734023425003").length && vwo_$('head').append(_vwo_sel);
const DEFAULT_DONATION_FREQUENCY="One-Time";function getQueryParam(e){let t=window.location.search.match(e+"=([^&]*)");return t?t[1]:void 0}function initOnElement(e,t,n){const i=e.getElementsByTagName(t);return i.length?n(i):setTimeout(initOnElement,500,e,t,n)}window.DonationForm=window.DonationForm||{recurring_checkbox:null,submit_button:null,other_amt:null,gift_array_elements:[],onetime_gift_array:[],recurring_gift_array:[10,20,30,40],setRecurring:function(e){console.log("setRecurring",e,this.recurring_checkbox),(!this.recurring_checkbox.checked&&e||this.recurring_checkbox.checked&&!e)&&(console.log("checked",this.recurring_checkbox.checked,"(before click)"),this.recurring_checkbox.click(),console.log("checked",this.recurring_checkbox.checked,"(after click)"))},selectGiftArray:function(e){this.gift_array_elements[e].click()},modifyGiftArray:function(e){this.gift_array_elements.forEach((t,n)=>{t.value=e[n],t.textContent="$"+e[n]})},setOneTimeGiftArrayValues:function(){let e=this;this.gift_array_elements.forEach(t=>{e.onetime_gift_array.push(parseInt(t.value))})},setFirstNamePersonalization:function(e){const t=void 0===getQueryParam("first_name")||""===getQueryParam("first_name")?"Friend":getQueryParam("first_name");for(let n=0;n<=e.length-1;n++)e[n].innerHTML.includes("[Name]")&&(e[n].innerHTML=e[n].innerHTML.replace(/\[[^\]]*]/,t)),e[n].innerHTML.includes("Friend")&&(e[n].innerHTML=e[n].innerHTML.replace("Friend",t))},init:function(){document.querySelectorAll(".tab").forEach(e=>{e.addEventListener("click",(function(e){this.classList.add("selected"),this.classList.contains("recurring")?(document.querySelector(".tab.onetime").classList.remove("selected"),DonationForm.setRecurring(!0)):(document.querySelector(".tab.recurring").classList.remove("selected"),DonationForm.setRecurring(!1))}))}),this.setOneTimeGiftArrayValues(),this.setRecurring(!1),this.selectGiftArray(0)}},initOnElement(document,"c-donate-community-staff-information",(function(e){initOnElement(e[0],"div",(function(e){e[0].querySelectorAll("div.slds-col")[0].classList.add("page-image");const t=e[0].querySelectorAll("div.slds-col")[1];t.classList.add("donation-form-content");const n=t.querySelectorAll("div,lightning-formatted-rich-text");for(let e=0;e<=n.length-1;e++)0==e&&n[e].classList.add("page-title"),1==e&&n[e].classList.add("page-action-text"),2==e&&n[e].classList.add("donation-form"),3==e&&n[e].classList.add("bottom-title"),4==e&&n[e].classList.add("page-text");DonationForm.setFirstNamePersonalization(n[4].shadowRoot.querySelectorAll("div p")),n[1].before(n[4]);const i=document.createElement("div");i.classList.add("tabs"),i.innerHTML='
One-Time Gift
Recurring Gift
',n[2].before(i),initOnElement(n[2],"c-donate-community-donate-buttons",(function(e){initOnElement(e[0].shadowRoot.querySelector("div"),"div",(function(e){for(let t=0;t`);
!vwo_$("head").find('#1743104387380').length && vwo_$('head').append(_vwo_sel);}catch(e) {VWO._.vAEH(e);}
try{}catch(e) {VWO._.vAEH(e);}
try{const config = {
donationForm: {
defaultRecurring: false, // true for "Recurring" default, false for "One-Time" default
giftArrayAmounts: [], // an array of numbers (like [ 5, 10, 15, 25 ]) or `null` or `[]` for default gift array amounts
defaultAmount: null, // a number or `null` for no default
anonymousDefault: null, // true/false or null for no default
tributeDefault: null, // true/false or null for no default
hideCheckboxesAll: true, // true/false to hide the checkboxes button
hideCheckboxFreqeuncy: false,
hideCheckboxAnonymous: false,
hideCheckboxTribute: false,
hideCartButton: false, // true/false to hide the "Add to Basket" button
},
tabs: {
"one-time": {
text: "One-Time Gift",
giftArrayAmounts: [], // changing the gift array here overrides the one set above for the donationForm
},
"recurring": {
text: "Recurring Gift",
giftArrayAmounts: [], // changing the gift array here overrides the one set above for the donationForm
}
}
};
const configDonationInterrupter = {
enabled: true,
uniqueName: "NA__NAV-DonationInterrupterV2",
content: {
headingSection: `
Before you go, would you consider becoming a monthly partner?
`,
bodySection: `
Your monthly partnership will:
provide the funds needed to bring Eagle Lake Camp to places where many kids don’t get the opportunity to experience camp
ensure supplies are ready and counselors are properly trained and equipped to preach the gospel
allow camp to be accessible to kids despite any financial barriers their families may face
Most importantly, you will play an active role in this ongoing work of bringing campers to meet Jesus and grow in their walks with Him. Would you consider becoming a monthly partner today?
`,
ctaButtons: {
"Yes": ``,
"No": ``,
},
closeButton: false,
theme: "NAV",
},
memoryMode: 'session', // "session" or "forever"; indicates how long the last interacted state should be remembered
minAmount: 5.00, // gift under this amount will be processed (if above the form minimum) and not shown the donation interrupter
maxAmount: 100.00, // gifts equal to and above this amount will be processed and not shown the donation interrupter
askConditions: function (originalAmount, originalFrequency, state) {
const conditions = [
originalFrequency === "One-Time", // "One-Time" or "Recurring"
originalAmount > this.minAmount,
originalAmount < this.maxAmount,
state && state.status !== "shown" && state.status !== "dismissed" && state.status !== "converted", // do not show if the user has already seen the donation interrupter, dismissed the donation interrupter, or converted from the donation interrupter
];
return conditions.every((condition) => typeof condition === 'function' ? !!condition.call(null) : !!condition); // return true if every condition in the array evaluates to true
},
askAmount: function (originalAmount) {
let askAmount;
if (originalAmount >= 400 && originalAmount < 500) { // $400.00 - $499.99
askAmount = 50;
} else if (originalAmount >= 300 && originalAmount < 400) { // $300.00 - $399.99
askAmount = 40;
} else if (originalAmount >= 200 && originalAmount < 300) { // $200.00 - $299.99
askAmount = 30;
} else if (originalAmount >= 100 && originalAmount < 200) { // $100.00 - $199.99
askAmount = 15;
} else { // $ 0.01 - $ 99.99
askAmount = 10;
}
return parseFloat(askAmount);
},
};
//
//
//
//
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
//
//
//
//
// Run code with configuration from above
(function(){
console.log("init");
window.NA.DonationForm.init(config).then((donationFormApi) => {
console.log("initialized:", donationFormApi);
if (configDonationInterrupter && configDonationInterrupter.enabled === true) {
donationFormApi.DonationInterrupter(configDonationInterrupter);
console.log("initialized:", donationFormApi.DonationInterrupter);
donationFormApi.interceptSubmit(function (capturedEvent) {
try {
const donationInterrupterApi = this.DonationInterrupter;
if (donationFormApi && donationInterrupterApi) {
if (donationInterrupterApi.evaluateConditions()) {
console.log(donationFormApi);
donationInterrupterApi.show();
return false; // do not submit
} else {
console.warn("Condtions check failed: Donation Interrupter will not be shown.");
return true; // submit
}
} else {
throw new ReferenceError("DonationFormApi or DonationInterrupterApi is not defined.");
}
} catch (error) {
console.error("An error occured when handling submit:", error);
window.NA?.DonationForm && window.NA.DonationForm.submit(); // retry submit
} finally {
return false;
}
});
}
}).catch((error) => {
console.error("Error creating donation form API:", error);
});
})();
}catch(e) {VWO._.vAEH(e);}
return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("head")}}, R_722072_158_1_2_0:{ fn:function(log,nonce=''){return (function(x) {
try{
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1743104387377"]');
el.revertContentOp().remove();
} catch(e) {VWO._.vAEH(e);}
try{
var el,ctx=vwo_$(x);
/*vwo_debug log("Revert","addElement","body"); vwo_debug*/(el=vwo_$('[vwo-element-id="1743104387378"]')).remove();
} catch(e) {VWO._.vAEH(e);}
return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("head")}}, C_722072_158_1_2_0:{ fn:function(log,nonce=''){return (function(x) {
try{
var _vwo_sel = vwo_$("`);
!vwo_$("head").find('#1743104387377').length && vwo_$('head').append(_vwo_sel);}catch(e) {VWO._.vAEH(e);}
try{}catch(e) {VWO._.vAEH(e);}
try{/* ===== Complicated Code Below ===== */
window.HTMLElement.prototype.getSlot = window.HTMLElement.prototype.getSlot || function () { return this.querySelector('slot') || this.shadowRoot.querySelector('slot'); };
window.HTMLElement.prototype.getSlotNodes = window.HTMLElement.prototype.getSlotNodes || function (n) { return (parseInt(n) !== 'NaN' && n >= 0) ? Array.from(this.getSlot().assignedNodes({ flatten: true }))[n] : Array.from(this.getSlot().assignedNodes({ flatten: true })); };
window.HTMLElement.prototype.shadowChildren = window.HTMLElement.prototype.shadowChildren || function (n) { return (parseInt(n) !== 'NaN' && n >= 0) ? Array.from(this.shadowRoot.children)[n] : Array.from(this.shadowRoot.children); };
function shadowQuerySelectorAll (selector) {
let matches = [];
const isSlot = (element) => element.tagName.toLowerCase() === 'slot';
function traverse(element) { // Helper function to recursively traverse elements
if (element instanceof HTMLElement && element.matches(selector) /*&& element !== this*/) // Check if element matches the selector
matches.push(element);
if (customElements.get(element.tagName.toLowerCase())) { // Traverse through shadow DOM children if element is a custom element with shadow DOM
const children = element.shadowRoot ? Array.from(element.shadowRoot.children) : [];
children.forEach((child) => traverse(child));
} else {
Array.from(element.children).forEach((child) => traverse(child)); // traverse through regular element children
}
if (isSlot(element)) { // handle traversing slot nodes
const slotNodes = element.assignedNodes({ flatten: true });
slotNodes.forEach((slotNode) => {
if (slotNode.nodeType === Node.ELEMENT_NODE)
traverse(slotNode);
});
}
}
this instanceof Document ? traverse(this.documentElement) : traverse(this); // Start traversal from the root element as long as it's not the Document
return matches.length > 0 ? matches : undefined;
}
function shadowQuerySelector (selector) {
let matches = this.shadowQuerySelectorAll(selector) || [];
return matches.length > 0 ? matches[0] : undefined;
}
Object.defineProperties(HTMLElement.prototype, {
shadowQuerySelectorAll: {
value: shadowQuerySelectorAll,
writable: false,
configurable: false,
enumerable: true,
},
shadowQuerySelector: {
value: shadowQuerySelector,
writable: false,
configurable: false,
enumerable: true,
}
});
Object.defineProperties(Document.prototype, {
shadowQuerySelectorAll: {
value: shadowQuerySelectorAll,
writable: false,
configurable: false,
enumerable: true,
},
shadowQuerySelector: {
value: shadowQuerySelector,
writable: false,
configurable: false,
enumerable: true,
}
});
Object.defineProperties(Document, {
shadowQuerySelectorAll: {
value: shadowQuerySelectorAll,
writable: false,
configurable: false,
enumerable: true,
},
shadowQuerySelector: {
value: shadowQuerySelector,
writable: false,
configurable: false,
enumerable: true,
}
});
Object.defineProperty(JSON, 'isValid', {
value: function (jsonString) {
try {
JSON.parse(jsonString);
return true;
} catch (error) {
return false;
}
},
writable: false,
configurable: true,
enumerable: true,
});
async function asyncWaitForCustomElements (customElementsArray, onCustomElementsDefined = () => {}) { customElementsArray.length === 0 ? onCustomElementsDefined() : customElements.whenDefined(customElementsArray.shift()).then(() => asyncWaitForCustomElements(customElementsArray, onCustomElementsDefined)); }
function vwoCustomEvent (labelValue) {
window.VWO = window.VWO || [];
VWO.event = VWO.event || function () {VWO.push(["event"].concat([].slice.call(arguments)))};
VWO.event("customEvent", { "label": labelValue.toString() });
}
const getToken = (key, api = localStorage) => (JSON.isValid(api.getItem(key)) ? JSON.parse(api.getItem(key)) : api.getItem(key)) || null;
const setToken = (key, value, api = localStorage) => api.setItem(key, JSON.stringify(value));
const getCurrentDate = (d = new Date()) => d.toISOString().split('T')[0];
const reOneTime = new RegExp(/(one-?time|once|single)/gi),
reRecurring = new RegExp(/(recurring|monthly)/gi);
window.NA = window.NA || {};
window.NA.DonationPage = window.NA.DonationPage || {};
window.NA.DonationForm = window.NA.DonationForm || {};
async function init (userConfig) {
return new Promise((resolve, reject) => {
const defaultConfig = {
donationForm: {
defaultRecurring: false, // true for "Recurring" default, false for "One-Time" default
giftArrayAmounts: [], // an array of numbers (like [ 5, 10, 15, 25 ]) or `null` or `[]` for default gift array amounts
defaultAmount: null, // a number or `null` for no default
anonymousDefault: null, // true/false or null for no default
tributeDefault: null, // true/false or null for no default
hideCheckboxesAll: false, // true/false to hide the checkboxes button
hideCheckboxFreqeuncy: false,
hideCheckboxAnonymous: false,
hideCheckboxTribute: false,
hideCartButton: false, // true/false to hide the "Add to Basket" button
}
};
userConfig = { ...defaultConfig, ...userConfig };
Object.defineProperty(window.NA, '_config', {
value: userConfig,
writable: false,
configurable: true,
enumerable: false,
});
const config = { ...window.NA._config };
//
//
//
//
//
//
//
function main () {
const c_donate_community_staff_information = document.shadowQuerySelector('c-donate-community-staff-information');
const c_donate_community_donate_buttons = document.shadowQuerySelector('c-donate-community-donate-buttons');
//
const donationPage = c_donate_community_staff_information.parentElement;
const donationPageImage = donationPage.shadowQuerySelectorAll('c-donate-community-staff-information > div > .slds-col')[0];
const donationPageContent = donationPage.shadowQuerySelectorAll('c-donate-community-staff-information > div > .slds-col')[1];
const donationPageTitle = donationPageContent.children[0];
const donationPageSubtitle = donationPageContent.children[1];
const donationFormWidget = donationPageContent.children[2] || c_donate_community_donate_buttons.parentElement;
const donationPageAboutTitle = donationPageContent.children[3];
const donationPageCopySection = donationPageContent.children[4] || donationPageContent.shadowQuerySelector('lightning-formatted-text, lightning-formatted-rich-text');
const donationFormGiftArrayButtons = donationFormWidget.shadowQuerySelectorAll('button[value]');
const donationFormGiftArrayOtherAmountInput = donationFormWidget.shadowQuerySelector('lightning-input lightning-primitive-input-simple input[type]');
const donationFormCheckboxes = [...donationPageContent.shadowQuerySelector('c-donate-community-donate-buttons > div').children].find((child) => child.matches('div:has(div lightning-primitive-input-checkbox)'));
const donationFormButtons = [...donationFormWidget.shadowQuerySelectorAll('button')].filter((button) => !donationFormGiftArrayButtons.includes(button));
const donationFormButton = {
"Donate Now": donationFormButtons[0],
"Add to Basket": donationFormButtons[1],
};
//
//
//
// Add legacy classes
donationPageImage.classList.add("page-image");
donationPageContent.classList.add("donation-form-content");
donationPageTitle.classList.add("page-title");
donationPageSubtitle.classList.add("page-action-text");
donationFormWidget.classList.add("donation-form");
donationPageAboutTitle.classList.add("bottom-title");
donationPageCopySection.classList.add("page-text");
donationFormCheckboxes.classList.add("donation-form-checkboxes");
donationFormButton["Donate Now"].classList.add("donate-action-button");
donationFormButton["Donate Now"].id = "donate-now";
donationFormButton["Add to Basket"].classList.add("donate-action-button");
donationFormButton["Add to Basket"].id = "add-to-basket";
//
if (config.donationForm.hideCheckboxesAll === true) {
donationFormCheckboxes.style.setProperty("display", "none");
}
if (config.donationForm.hideCheckboxFreqeuncy === true) {
[...donationFormCheckboxes.children][1]?.style.setProperty("display", "none");
}
if (config.donationForm.hideCheckboxAnonymous === true) {
[...donationFormCheckboxes.children][2]?.style.setProperty("display", "none");
}
if (config.donationForm.hideCheckboxTribute === true) {
[...donationFormCheckboxes.children][2]?.style.setProperty("display", "none");
}
if (config.donationForm.hideCartButton === true) {
donationFormButton["Add to Basket"]?.style.setProperty("display", "none");
donationFormButton["Add to Basket"]?.parentElement?.style.setProperty("display", "none");
donationFormButton["Donate Now"].parentElement.classList = donationFormButton["Donate Now"].parentElement.classList.toString().replaceAll("1-of-2", "2-of-2");
}
//
//
//
//
//
//
//
//
(function donationFormApi () {
window.NA.DonationForm = window.NA.DonationForm || {};
Object.defineProperty(window.NA.DonationForm, 'root', {
value: donationFormWidget,
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'elements', {
value: {
Tabs: undefined,
GiftArrayButtons: donationFormGiftArrayButtons,
GiftArrayOtherAmount: donationFormGiftArrayOtherAmountInput,
CheckboxRecurring: donationFormCheckboxes.shadowQuerySelectorAll('lightning-primitive-input-checkbox input[type="checkbox"]')[0],
CheckboxAnonymous: donationFormCheckboxes.shadowQuerySelectorAll('lightning-primitive-input-checkbox input[type="checkbox"]')[1],
CheckboxTribute: donationFormCheckboxes.shadowQuerySelectorAll('lightning-primitive-input-checkbox input[type="checkbox"]')[2],
SubmitButton: donationFormButton["Donate Now"],
},
writable: false,
configurable: true,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'submit', {
value: function doSubmit () {
this.elements.SubmitButton?.click();
},
configurable: false,
writable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'interceptSubmit', {
value: function interceptSubmit (callbackFn, submitButton = this.elements.SubmitButton, hideOriginal = true, maxIntercepts = 1) {
const hide = (element) => element?.style.setProperty("display", "none");
const unhide = (element) => element?.style.removeProperty("display");
const submitButtonCopy = submitButton.cloneNode(true);
if (!submitButton.id) submitButton.id = "submit-button";
submitButtonCopy.id = submitButton.id ? submitButton.id + "-copy" : "submit-button-copy";
submitButton.after(submitButtonCopy);
if (hideOriginal === true)
hide(submitButton);
const submitButtonMutationObserver = new MutationObserver((mutations, observe) => {
for (const mutation of mutations) {
const { type, target } = mutation;
if (target === submitButton) {
switch (type) {
case 'attributes':
const { attributeName } = mutation;
const attributeValue = target.hasAttribute(attributeName) ? target.getAttribute(attributeName) : null;
if (!attributeValue) {
submitButtonCopy.removeAttribute(attributeName);
} else {
submitButtonCopy.setAttribute(attributeName, attributeValue);
}
break;
case 'characterData':
submitButtonCopy.innerHTML = target.innerHTML;
break;
default:
break;
}
}
}
});
submitButtonMutationObserver.observe(submitButton, { childList: true, attributes: true, attributeOldValue: true, characterData: true, characterDataOldValue: true });
if (maxIntercepts && maxIntercepts > 0) {
submitButtonCopy.setAttribute("intercepts", "0"); // initialize intercept counter to 0
function interceptCounter (event) {
let interceptCount = parseInt(this.getAttribute("intercepts"));
this.setAttribute("intercepts", ++interceptCount);
if (interceptCount >= maxIntercepts) // reached max number of submit intercepts
console.info("Max intercepts reached: original submit button unhidden."),
submitButtonMutationObserver?.disconnect(), // disconnect the observer so the following changes don't apply to both buttons
unhide(submitButton), // unhide the original submit button so the user won't be prevented from submitting the next time they click it
hide(submitButtonCopy), // hide the copy of the submit button that was intercepting
this.removeEventListener('click', interceptCounter);
}
submitButtonCopy.addEventListener('click', interceptCounter);
}
submitButtonCopy.addEventListener('click', (event) => {
const callbackResult = callbackFn.call(this, event);
if (callbackResult && callbackResult !== false) { // if callback function result evaluates to true, then submit after the callback
window.NA.DonationForm.submit();
}
});
},
configurable: false,
writable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'getFrequency', {
value: function getFrequency () {
const recurringCheckbox = this.root.shadowQuerySelectorAll('lightning-primitive-input-checkbox input[type="checkbox"]')[0];
if (recurringCheckbox.checked === true) {
return "Recurring";
} else {
return "One-Time";
}
},
configurable: false,
writable: false,
enumerable: false,
});
Object.defineProperty(window.NA.DonationForm, 'setFrequency', {
value: function setFrequency (value) {
let toFrequency;
if (typeof value === 'boolean') {
toFrequency = value ? true : false;
} else if (typeof value === 'string') {
if (reOneTime.test(value.toLowerCase())) {
toFrequency = false;
} else if (reRecurring.test(value.toLowerCase())) {
toFrequency = true;
} else {
throw new TypeError(`Argument 0 must be a boolean or string. If string, it must match either "One-Time" or "Recurring".`);
}
} else {
throw new TypeError(`Argument 0 must be a boolean or string.`);
}
if (this.elements.Tabs && this.elements.Tabs.length === 2)
this.elements.Tabs[toFrequency ? 1 : 0]?.click();
const recurringCheckbox = this.root.shadowQuerySelectorAll('lightning-primitive-input-checkbox input[type="checkbox"]')[0];
if (toFrequency === true) { // set frequency to recurring
if (!recurringCheckbox.checked) {
recurringCheckbox.click();
} else {
console.warn("Frequency is already set to recurring:", recurringCheckbox);
}
} else { // set frequency to one-time
if (recurringCheckbox.checked) {
recurringCheckbox.click();
} else {
console.warn("Frequency is already set to one-time:", recurringCheckbox);
}
}
},
configurable: false,
writable: false,
enumerable: false,
});
Object.defineProperty(window.NA.DonationForm, 'recurring', {
get () {
return this.getFrequency() === "Recurring" ? true : false;
},
set (value) {
this.setFrequency(value);
}
});
Object.defineProperty(window.NA.DonationForm, 'isRecurring', {
get () {
return this.recurring;
}
});
Object.defineProperty(window.NA.DonationForm, 'getAmount', {
value: function getAmount () {
let matchingButton = this.elements.GiftArrayButtons.find((button) => button.classList.contains("donate-selected"));
if (matchingButton) {
return parseInt(matchingButton.value);
}
else if (this.elements.GiftArrayOtherAmount?.value.length > 0) {
let value = this.elements.GiftArrayOtherAmount.value;
value = value.replace(/[^\d\.]/, '');
return parseFloat(value);
}
else {
return undefined;
}
},
configurable: false,
writable: false,
enumerable: false,
});
Object.defineProperty(window.NA.DonationForm, 'setAmount', {
value: function setAmount (value) {
if (value === "unset") {
this.elements.GiftArrayButtons.forEach((button) => {
button.classList.remove("donate-selected", "donate-not-selected");
});
}
if (!value || Number.isNaN(parseFloat(value)))
throw new TypeError(`Argument 0 must be a boolean or string. If string, it must match either "One-Time" or "Recurring".`);
value = parseFloat(value);
let matchingButton = this.elements.GiftArrayButtons.find((button) => parseFloat(button.value) === value);
if (matchingButton) {
return matchingButton.click();
}
else {
const giftArrayOtherAmountField = this.elements.GiftArrayOtherAmount;
giftArrayOtherAmountField.value = parseFloat(value); // form doesn't like the formatted string, so number it is.
//giftArrayOtherAmountField.value = parseFloat(value).toLocaleString('en-US', { style: 'currency', currency: 'USD', currencySign: '$', minimumFractionDigits: 2, maximumFractionDigits: 2 });
giftArrayOtherAmountField.dispatchEvent(new Event('change'));
giftArrayOtherAmountField.dispatchEvent(new Event('blur'));
}
},
configurable: false,
writable: false,
enumerable: false,
});
Object.defineProperty(window.NA.DonationForm, 'amount', {
get () {
return this.getAmount();
},
set (value) {
this.setAmount(value);
}
});
Object.defineProperty(window.NA.DonationForm, 'getGiftArrayValues', {
value: function getGiftArrayValues () {
return this.elements.GiftArrayButtons.map((button) => parseInt(button.value));
},
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'setGiftArrayValues', {
value: function setGiftArrayValues (valueArray) {
if (!Array.isArray(valueArray) || valueArray.some(value => value <= 0))
throw new TypeError("Argument 0 must be an array of positive integers.");
if (valueArray.length !== this.elements.GiftArrayButtons.length)
throw new RangeError("Argument 0 must be an array of the same length as the number of gift array button elements.");
this.elements.GiftArrayButtons.forEach((button, i, buttons) => {
button.value = valueArray[i];
button.textContent = button.textContent.replace(/(\d+)/gi, valueArray[i]);
});
console.info("Updated gift array values:", ...valueArray);
},
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'onFrequencyChange', {
value: new Array(),
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'onAmountChange', {
value: new Array(),
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'onSubmit', {
value: new Array(),
writable: false,
configurable: false,
enumerablele: true,
});
const frequencyChangeEventListener = (event) => {
const newFrequency = window.NA.DonationForm.getFrequency();
window.NA.DonationForm.onFrequencyChange.forEach((callback) => {
callback.call(window.NA.DonationForm, newFrequency);
});
};
const frequencyMutationHandler = new MutationObserver ((mutations, observer) => {
for (const mutation of mutations) {
switch (mutation.type) {
case 'attributes':
if (mutation.attributeName === 'checked') {
}
break;
default:
break;
}
}
});
//window.NA.DonationForm.elements.CheckboxRecurring && frequencyMutationHandler.observe(window.NA.DonationForm.elements.CheckboxRecurring, { childList: true, attributes: true, attributeFilter: [ 'checked' ] });
window.NA.DonationForm.elements.CheckboxRecurring && window.NA.DonationForm.elements.CheckboxRecurring.addEventListener('change', frequencyChangeEventListener);
})();
//
//
//
//
//
//
//
//
(function donationPageApi () {
Object.defineProperty(window.NA.DonationPage, 'root', {
value: null, //document.shadowQuerySelector('c-donate-community-staff-information > div'),
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationPage, 'elements', {
value: {
CopySection: donationPageCopySection,
},
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationPage, 'getCopyHTML', {
value: function getCopyHTML () {
return this.elements.CopySection.innerHTML;
},
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationPage, 'setCopyHTML', {
value: function setCopyHTML (newCopyHTML) {
this.elements.CopySection.innerHTML = newCopyHTML;
},
writable: false,
configurable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationPage, 'copy', {
get () {
return this.getCopyHTML();
},
set (newCopyHTML) {
this.setCopyHTML(newCopyHTML);
}
});
})();
//
//
//
//
//
//
//
//
(function cartApi () {
const Cart = new Object();
Object.defineProperty(Cart, 'Cart', {
value: function addItem (cartItem) {
//
},
configurable: false,
writable: false,
enumerable: true,
});
Object.defineProperty(window.NA.DonationForm, 'Cart', {
value: Cart,
configurable: false,
writable: false,
enumerable: true,
});
})();
//
//
//
//
//
//
//
//
function moveDonationForm () {
try {
donationPageSubtitle.before(donationPageCopySection); // move the subtitle above the tcopy section, below the main page title
donationPageAboutTitle.style.setProperty("display", "none"); // hide the bottom heading (for the About section)
} catch (error) {
console.error(error);
}
}
moveDonationForm();
//
//
//
//
//
//
//
//
function makeTabbed () {
function createTabs (tabTexts, defaultRecurring = false) {
defaultRecurring = defaultRecurring ? true : false;
const tabs = document.createElement('div');
tabs.classList.add("tabs");
tabTexts.forEach((tabText, i) => {
const tab = document.createElement('div');
let tabClassList = [ "tab" ];
tabClassList.push(reOneTime.test(tabText) ? "onetime" : "recurring");
((tabClassList.includes("onetime") && defaultRecurring === false) || (tabClassList.includes("recurring") && defaultRecurring === true)) && tabClassList.push('selected');
tab.classList.add(...tabClassList);
tab.textContent = tabText;
tabs.appendChild(tab);
});
return tabs;
}
const donationFormTabs = createTabs([ config.tabs["one-time"].text, config.tabs["recurring"].text ], config.donationForm.defaultRecurring);
donationFormWidget.before(donationFormTabs);
window.NA.DonationForm.elements.Tabs = Array.from(donationFormTabs.children);
window.NA.DonationForm.elements.Tabs.forEach((tab, i ,tabs) => {
tab.addEventListener('click', function (e) {
this.classList.add('selected');
if (this.classList.contains('recurring')) { // if "Recurring" tab clicked
tabs.find((tab) => tab !== this)?.classList.remove('selected');
window.NA.DonationForm.recurring = true;
} else { // if "One-Time" tab clicked
tabs.find((tab) => tab !== this)?.classList.remove('selected');
window.NA.DonationForm.recurring = false;
}
});
});
Object.defineProperty(window.NA.DonationForm, 'onTabClick', {
value: new Array(),
writable: false,
configurable: false,
enumerable: true,
});
window.NA.DonationForm.elements.Tabs.forEach((tab) => {
tab.addEventListener('click', function (e) {
window.NA.DonationForm.onTabClick.forEach((callback) => {
callback.call(window.NA.DonationForm, this.textContent.trim());
});
});
});
const splitGiftArrayAmounts = {
"one-time": config.tabs["one-time"].giftArrayAmounts,
"recurring": config.tabs["recurring"].giftArrayAmounts,
};
if (((Array.isArray(config.tabs["one-time"].giftArrayAmounts) && config.tabs["one-time"].giftArrayAmounts.length > 0) || (Array.isArray(config.tabs["recurring"].giftArrayAmounts) && config.tabs["recurring"].giftArrayAmounts.length > 0)) // if either one-time or recurring gift array is set,
&& !(Array.isArray(config.tabs["one-time"].giftArrayAmounts) && config.tabs["one-time"].giftArrayAmounts.length > 0) && (Array.isArray(config.tabs["recurring"].giftArrayAmounts) && config.tabs["recurring"].giftArrayAmounts.length > 0)) { // but not both (unforntuantely no JS XOR).
if (!config.tabs["one-time"].giftArrayAmounts)
config.tabs["one-time"].giftArrayAmounts = window.NA.DonationForm.getGiftArrayValues();
if (!splitGiftArrayAmounts["recurring"])
config.tabs["recurring"].giftArrayAmounts = window.NA.DonationForm.getGiftArrayValues();
}
if ((Array.isArray(config.tabs["one-time"].giftArrayAmounts) && config.tabs["one-time"].giftArrayAmounts.length > 0) || (Array.isArray(config.tabs["recurring"].giftArrayAmounts) && config.tabs["recurring"].giftArrayAmounts.length > 0)) {
window.NA.DonationForm.onFrequencyChange.push(function updateGiftArrayAmounts (newFrequency) {
let tabKeyName;
switch (newFrequency) {
case "One-Time":
tabKeyName = "one-time";
if (config.hasOwnProperty("tabs") && config.tabs.hasOwnProperty(tabKeyName) && config.tabs[tabKeyName].hasOwnProperty("giftArrayAmounts") && Array.isArray(config.tabs[tabKeyName].giftArrayAmounts)) // if tabs are enabled and configured and gift array values are provided,
this.setGiftArrayValues(config.tabs[tabKeyName].giftArrayAmounts); // update the gift array values
this.setAmount('unset'); // unselect gift array options whenever frequency changes
break;
case "Recurring":
tabKeyName = "recurring";
if (config.hasOwnProperty("tabs") && config.tabs.hasOwnProperty(tabKeyName) && config.tabs[tabKeyName].hasOwnProperty("giftArrayAmounts") && Array.isArray(config.tabs[tabKeyName].giftArrayAmounts)) // if tabs are enabled and configured and gift array values are provided,
this.setGiftArrayValues(config.tabs[tabKeyName].giftArrayAmounts); // update the gift array values
this.setAmount('unset'); // unselect gift array options whenever frequency changes
break;
default:
throw new Error("Failed to updated gift array for frequency " + newFrequency + '.');
}
});
}
window.NA.DonationForm.elements.Tabs?.find((tab) => tab.classList.contains('selected'))?.click(); // apply default selected tab to the form's checkbox
}
if (config.hasOwnProperty("tabs") && (Object.keys(config.tabs)).length == 2) { // if tabs are enabled and configured
makeTabbed();
}
//
//
//
//
//
//
//
//
function configureDonationFormFromURL (searchParams) {
const GIFT_ARRAY_VALUE_DELIMITER = ',',
MULTIPLE_GIFT_ARRAY_DELIMETER = ';';
if (searchParams.get('amounts') || searchParams.get('array-amounts')) {
let amountsParamValue = searchParams.get('amounts') || searchParams.get('array-amounts') || '';
amountsParamValue = decodeURIComponent(amountsParamValue); // convert URI encoded string to normal characters before parsing
if (amountsParamValue.includes(MULTIPLE_GIFT_ARRAY_DELIMETER)) { // multiple gift array provided with gift arrays separated by ';' and values separated by ','
const amountArrays = amountsParamValue.split(MULTIPLE_GIFT_ARRAY_DELIMETER).map((amountArrayString) => amountArrayString.includes(GIFT_ARRAY_VALUE_DELIMITER) ? amountArrayString.split(GIFT_ARRAY_VALUE_DELIMITER).map((amount) => parseInt(amount)) : undefined) // convert string to array of arrays of numbers split by ',' and gift arrays separated by ';'
if (amountArrays && Array.isArray(amountArrays) && amountArrays.length === 2 && amountArrays.every((amountArray) => amountArray.every((amount) => !Number.isNaN(amount) && Number.isInteger(amount) && amount > 0))) { // if amount arrays is defined as an array with 2 arrays, where every item in EACH of the array is an integer greater than 0
if ((Array.isArray(config.tabs["one-time"].giftArrayAmounts) && config.tabs["one-time"].giftArrayAmounts.length > 0) || (Array.isArray(config.tabs["recurring"].giftArrayAmounts && config.tabs["recurring"].giftArrayAmounts.length > 0))) // if either of the split gift array options are configured
console.warn("Split gift array values were configured but the URL contains parameters to set the gift array. The gifty array values from the URL will override the split gift array values configured.");
config.tabs["one-time"].giftArrayAmounts = amountArrays[0]; // set configuration one-time gift array values to the first array of values from amountArrays
config.tabs["recurring"].giftArrayAmounts = amountArrays[1]; // set configuration recurring gift array values to the second array of values from amountArrays
const isRecurring = window.NA.DonationForm.isRecurring; // get the current frequency,
window.NA.DonationForm.setGiftArrayValues(amountArrays[isRecurring ? 1 : 0]); // set the gift array values to the new values assigned for that frequency
}
} else { // single gift array provided with values separated by ','
const amountArray = amountsParamValue.includes(GIFT_ARRAY_VALUE_DELIMITER) ? amountsParamValue.split(GIFT_ARRAY_VALUE_DELIMITER).map((amount) => parseInt(amount)) : undefined; // convert string to array of numbers split by ','
if (amountArray && Array.isArray(amountArray) && amountArray.every((amount) => !Number.isNaN(amount) && Number.isInteger(amount) && amount > 0)) { // if amount array is defined as an array where every item in EACH of the array is an integer greater than 0
if ((Array.isArray(config.tabs["one-time"].giftArrayAmounts) && config.tabs["one-time"].giftArrayAmounts.length > 0) || (Array.isArray(config.tabs["recurring"].giftArrayAmounts && config.tabs["recurring"].giftArrayAmounts.length > 0))) // if either of the split gift array options are configured
console.warn("Split gift array values were configured but the URL contains parameters to set the gift array. The gifty array values from the URL will override the split gift array values configured.");
config.tabs["one-time"].giftArrayAmounts = amountArray; // set configuration one-time gift array values to the array of values from amountArray
config.tabs["recurring"].giftArrayAmounts = amountArray; // set configuration of recurring gift array values to the array of values from amountArray
window.NA.DonationForm.setGiftArrayValues(amountArray); // set the gift array values to the new values from the amountArray
}
}
}
if (searchParams.get('frequency') || searchParams.get('freq')) {
const frequencyParamValue = searchParams.get('frequency') || searchParams.get('freq') || undefined;
const frequency = decodeURIComponent(frequencyParamValue);
if (frequency) {
if (config.defaultRecurring !== undefined && config.defaultRecurring !== null)
console.warn("Default frequency is configured but the URL contains parameters to set the default frequency. The frequency from the URL will override the default frequency configured.");
window.NA.DonationForm.recurring = reRecurring.test(frequency);
}
}
if (searchParams.get('amount') || searchParams.get('amt')) {
const amountParamValue = decodeURIComponent(searchParams.get('amount') || searchParams.get('amt') || undefined);
const amount = !Number.isNaN(parseFloat(amountParamValue)) ? parseFloat(amountParamValue) : undefined;
if (amount) {
if (config.defaultAmount !== undefined && config.defaultAmount !== null)
console.warn("Default amount is configured but the URL contains parameters to set the default amount. The amount from the URL will override the default amount configured.");
window.NA.DonationForm.setAmount(amount);
}
}
}
if (window.location.search.length > 1) {
configureDonationFormFromURL(new URLSearchParams(window.location.search));
}
//
//
//
//
//
//
//
//
function addDonationInterrupter (config) {
const { content } = config;
const DONATION_INTERRUPTER_HTML = ``;
document.body.insertAdjacentHTML('beforeend', DONATION_INTERRUPTER_HTML);
const dialog = config.uniqueName ? document.getElementById(config.uniqueName) : document.querySelector('dialog.donation-interrupter');
//
//
//
const calculateAskAmount = config.askAmount;
const evaluateConditions = config.askConditions;
function getMemoryModeStorageApi (memoryMode) {
if (memoryMode === 'forever')
return localStorage;
if (memoryMode === 'session')
return sessionStorage;
if (memoryMode === 'none')
return null;
}
const DonationInterrupterApi = {};
Object.defineProperties(DonationInterrupterApi, {
id: {
value: config.uniqueName,
writable: false,
configurable: true,
enumerable: true,
},
element: {
value: dialog,
writable: true,
configurable: true,
enumerable: true,
},
getCTAButtons: {
value: function () {
const dialog = this.element;
const ctaButtons = Array.from(dialog.querySelectorAll('.donation-interrupter--cta button'));
return ctaButtons;
},
writable: false,
configurable: false,
enumerable: false,
},
memoryMode: {
value: config.memoryMode ?? 'none',
writable: false,
configurable: false,
enumerable: false,
},
getStoredState: {
value: function () {
const storageApi = getMemoryModeStorageApi(this.memoryMode);
if ( !storageApi ) {
return console.error("Failed to read Donation Interrupter status. `memoryMode` is not set."), null;
} else {
return getToken(this.id, storageApi);
}
},
writable: false,
configurable: false,
enumerable: false,
},
setStoredState: {
value: function (newState) {
const storageApi = getMemoryModeStorageApi(this.memoryMode);
if ( !storageApi ) {
throw new Error("Failed to store Donation Interrupter status. `memoryMode` is not set.");
} else {
setToken(this.id, newState, storageApi);
}
},
writable: false,
configurable: false,
enumerable: false,
},
storedState: {
get () {
return this.getStoredState();
},
set (newStatus) {
this.setStoredState(newStatus);
}
},
getStatus: {
value: function () {
const state = this.storedState;
if (state && state.hasOwnProperty('status')) {
return state.status;
} else {
return state || null;
}
},
writable: false,
configurable: false,
enumerable: false,
},
setStatus: {
value: function (newStatus) {
const state = this.storedState;
if (state && state.hasOwnProperty('status')) {
this.storedState = { ...this.storedState, state: newStatus };
} else if (!state) {
this.storedState = { status: newStatus };
} else {
this.storedState = newStatus;
}
},
writable: false,
configurable: false,
enumerable: false,
},
status: {
get () {
return this.getStatus() || {};
},
set (newStatus) {
this.setStatus(newStatus);
}
},
hide: {
value: function hide () {
const dialog = this.element;
const close = () => {
dialog.close();
this.onHide?.forEach((callback) => {
callback.call(this, dialog);
});
this.status = "dismissed";
};
close();
},
writable: false,
configurable: true,
enumerable: true,
},
show: {
value: function show (force = false) {
const dialog = this.element;
const show = () => {
this.update();
dialog.showModal();
this.onShow?.forEach((callback) => {
callback.call(this, dialog);
});
};
if (this.evaluateConditions) {
if (typeof this.evaluateConditions === 'function') { // function that returns a boolean or truthy/falsy value
if (this.evaluateConditions() ? true : false) // call the function with this context to be evalutated
show();
} else if (Array.isArray(this.evaluateConditions)) { // array of conditions -- each item is evaluated to ensure all are truthy
if (this.evaluateConditions.every((condition) => condition ? true : false)) // evaluate each item in teh array
show();
} else { // booleans, string, numbers, etc.
if (this.evaluateConditions) // any other truthy value
show();
}
} else {
show();
}
if (force) {
show();
}
},
writable: false,
configurable: true,
enumerable: true,
},
evaluateConditions: {
value: function () {
return evaluateConditions.call(config, window.NA.DonationForm.getAmount(), window.NA.DonationForm.getFrequency(), window.NA.DonationForm.DonationInterrupter?.getStoredState()) ? true : false;
},
writable: false,
configurable: true,
enumerable: false,
},
onHide: {
value: new Array(),
writable: false,
configurable: false,
enumerable: false,
},
onShow: {
value: new Array(),
writable: false,
configurable: false,
enumerable: false,
},
onCTAButtonClick: {
value: new Array(),
writable: false,
configurable: false,
enumerable: false,
},
update: {
value: function updateData () {
const dialog = this.element;
if (dialog) {
const originalAmount = window.NA.DonationForm.amount,
suggestedAmount = calculateAskAmount(originalAmount);
[...dialog.querySelectorAll('span[data="amount_original"]')].forEach((span) => span.textContent = originalAmount.toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 2 }));
[...dialog.querySelectorAll('span[data="amount_suggested"]')].forEach((span) => span.textContent = suggestedAmount.toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 2 }));
}
},
writable: false,
configurable: false,
enumerable: true,
},
handleYesClick: {
value: function (e) {
const suggestedAmount = calculateAskAmount(window.NA.DonationForm.amount);
window.NA.DonationForm.recurring = true;
window.NA.DonationForm.amount = suggestedAmount;
//vwoCustomEvent("yes");
this.hide();
this.status = "converted";
setTimeout(() => {
window.NA.DonationForm.submit();
}, 200);
},
writable: true,
configurable: true,
enumerable: false,
},
handleNoClick: {
value: function (e) {
//vwoCustomEvent("no");
this.hide();
window.NA.DonationForm.submit();
},
writable: true,
configurable: true,
enumerable: false,
},
handleOtherClick: {
value: function (e) {},
writable: true,
configurable: true,
enumerable: false,
},
});
if (Array.isArray(DonationInterrupterApi.onShow)) {
DonationInterrupterApi.onShow.push(function updateState () {
const newState = {
...this.getStoredState(),
status: "shown",
lastSeenDate: getCurrentDate(),
};
this.setStoredState(newState);
});
DonationInterrupterApi.onShow.push(function sendVWOConversionEvent () {
vwoCustomEvent("donationInterrupterShown");
});
}
const ctaButtons = DonationInterrupterApi.getCTAButtons();
DonationInterrupterApi.hasOwnProperty('handleYesClick') && ctaButtons.find((ctaButton) => ctaButton.value.match(/yes/gi))?.addEventListener('click', DonationInterrupterApi.handleYesClick.bind(DonationInterrupterApi));
DonationInterrupterApi.hasOwnProperty('handleNoClick') && ctaButtons.find((ctaButton) => ctaButton.value.match(/no/gi))?.addEventListener('click', DonationInterrupterApi.handleNoClick.bind(DonationInterrupterApi));
DonationInterrupterApi.hasOwnProperty('handleOtherClick') && ctaButtons.find((ctaButton) => ctaButton.value.match(/other/gi))?.addEventListener('click', DonationInterrupterApi.handleOtherClick.bind(DonationInterrupterApi));
ctaButtons.forEach((ctaButton, ctaButtonIndex) => {
ctaButton.addEventListener('click', (e) => {
DonationInterrupterApi.onCTAButtonClick?.forEach((callback) => callback.call(DonationInterrupterApi, e.target, e.target.value));
});
});
if (!DonationInterrupterApi.getStoredState() || !DonationInterrupterApi.getStatus()) // if no state already found on browser storage
DonationInterrupterApi.setStoredState({ status: "initialized" });
window.NA.DonationForm.DonationInterrupter = DonationInterrupterApi; // assign the function that initialized the donation interrupter to the DonationInterrupterApi
return DonationInterrupterApi;
}
Object.defineProperty(window.NA.DonationForm, 'DonationInterrupter', {
value: addDonationInterrupter,
writable: true,
configurable: true,
enumerable: true,
});
//
//
//
//
//
//
//
//
resolve(window.NA.DonationForm); // resolves the Promise of the init function with the DonationForm API object
}
//
//
//
//
// Initialize only after required custom elements are defined in the custom element registry and appear on the page
try {
console.group("Donation Form: Init");
asyncWaitForCustomElements(['c-donate-community-staff-information', 'c-donate-community-donate-buttons', 'lightning-input', 'lightning-primitive-input-simple', 'lightning-primitive-input-checkbox', 'lightning-formatted-text'], main);
asyncWaitForCustomElements(['c-donate-community-staff-information', 'c-donate-community-donate-buttons', 'lightning-input', 'lightning-primitive-input-simple', 'lightning-primitive-input-checkbox', 'lightning-formatted-rich-text'], main);
} catch (error) {
console.error(error);
reject(error);
} finally {
console.groupEnd();
}
});
}
(function(){
window.NA.DonationForm.init = window.NA.DonationForm.init || init;
})();
}catch(e) {VWO._.vAEH(e);}
return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("head")}}, R_722072_79_1_2_0:{ fn:function(){return (function(x) { try{
var el,ctx=vwo_$(x);
/*vwo_debug log("Revert","addElement","body"); vwo_debug*/(el=vwo_$('[vwo-element-id="1734023425042"]')).remove();
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1734023425003"]');
el.revertContentOp().remove();
return vwo_$('head')[0] && vwo_$('head')[0].lastChild; } catch(e) {} })("HEAD")}}, C_722072_157_1_2_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, R_722072_157_1_2_0:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1744062807510"]');
el.revertContentOp().remove();})("HEAD")}}, C_722072_157_1_2_1:{ fn:function(log,nonce=''){return (function(x) {var el,ctx=vwo_$(x);
/*vwo_debug log("addElement","body"); vwo_debug*/!(el=vwo_$("body")).find('[vwo-op-1744062793557=""]').length&&el.vwoElement({html:'
\n \x3c!--
\n
\n \n
\n
--\x3e\n
\n
\n \n
\n
\n
\n
\n \n \x3c!--
\n If you have a moment...\n
--\x3e\n
\nYou can be the difference in a child making a decision to follow Jesus at camp this summer. Will you help a kid get to Eagle Lake Camps of The Navigators this summer? Give here »\n
',position:"append"});})("body")}}, R_722072_157_1_2_1:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var el,ctx=vwo_$(x);
/*vwo_debug log("Revert","addElement","body"); vwo_debug*/(el=vwo_$('[vwo-element-id="1744048814304"]')).remove();})("body")}}, C_722072_157_1_2_2:{ fn:function(log,nonce=''){return (function(x) {var el,ctx=vwo_$(x);
/*vwo_debug log("content",".pushdown-copy > p:nth-of-type(1)"); vwo_debug*/el=vwo_$(".pushdown-copy > p:nth-of-type(1)"),vwo_$(".pushdown-copy > p:nth-of-type(1)").each((function(){this.__vwoControlOuterHTML=this.__vwoControlOuterHTML||this.outerHTML,!vwo_$(this).find('[vwo-op-1744062807509-0=""]').length&&vwo_$(this).append('Will you help a kid get to Eagle Lake Camps of The Navigators this summer?'),vwo_$(this).nonEmptyContents().eq(0).replaceWith2(document.createTextNode("You can be the difference in a child making a decision to follow Jesus at camp this summer. "))})),el=vwo_$(".pushdown-copy > p:nth-of-type(1)");})(".pushdown-copy > p:nth-of-type(1)")}}, R_722072_157_1_2_2:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var el,ctx=vwo_$(x);
/*vwo_debug log("Revert","content",".pushdown-copy > p:nth-of-type(1)"); vwo_debug*/(el=vwo_$(".pushdown-copy > p:nth-of-type(1)")).revertContentOp(),el=vwo_$(".pushdown-copy > p:nth-of-type(1)");})(".pushdown-copy > p:nth-of-type(1)")}}, C_722072_157_1_2_3:{ fn:function(log,nonce=''){return (function(x) {})(".na-pushdown-wrapper,.mw-w-button,input.mw-w-button,#page,.pushdownbar,.div-block-16,.pushdownheadline,.pushdown,.div-block-7,.div-block-8,.paragraph-2,.div-block-15,.mw-btn,.mw-btn:visited,.mw-white,.mw-btn.mw-white,.mw-btn.mw-whitemw-btn:link,.na-pushdown-wrapper .close span,.na-pushdown-wrapper .close,.fa-angle-down:before,/*#donate-menu,.close-wrapper,.btn-dismiss,#masthead .close-menu,.pushdown .pushdown__row,.pushdown .pushdown__col,.pushdown .pushdown__content,.pushdown .pushdown-copy > *:last-child,.pushdown .grid-area,.pushdown .grid-card,.pushdown .grid-card div > p,.pushdown .grid-card div > p > span,.pushdown .grid-card .flex-col,.pushdown .grid-card div > p > b,.pushdown .grid-card button,.pushdown div div.centered,.pushdown div a.other-link,.pushdown .pushdown__close,.pushdown .grid-card p:nth-of-type(3),.pushdown .grid-card p > b")}}, R_722072_157_1_2_3:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
})(".na-pushdown-wrapper,.mw-w-button,input.mw-w-button,#page,.pushdownbar,.div-block-16,.pushdownheadline,.pushdown,.div-block-7,.div-block-8,.paragraph-2,.div-block-15,.mw-btn,.mw-btn:visited,.mw-white,.mw-btn.mw-white,.mw-btn.mw-whitemw-btn:link,.na-pushdown-wrapper .close span,.na-pushdown-wrapper .close,.fa-angle-down:before,/*#donate-menu,.close-wrapper,.btn-dismiss,#masthead .close-menu,.pushdown .pushdown__row,.pushdown .pushdown__col,.pushdown .pushdown__content,.pushdown .pushdown-copy > *:last-child,.pushdown .grid-area,.pushdown .grid-card,.pushdown .grid-card div > p,.pushdown .grid-card div > p > span,.pushdown .grid-card .flex-col,.pushdown .grid-card div > p > b,.pushdown .grid-card button,.pushdown div div.centered,.pushdown div a.other-link,.pushdown .pushdown__close,.pushdown .grid-card p:nth-of-type(3),.pushdown .grid-card p > b")}}, C_722072_157_1_3_0:{ fn:function(log,nonce=''){return (function(x) {;var _vwo_sel=vwo_$("");vwo_$('head').append(_vwo_sel);return vwo_$('head')[0] && vwo_$('head')[0].lastChild;})("HEAD")}}, R_722072_157_1_3_0:{ fn:function(log,nonce=''){return (function(x) {
if(!vwo_$.fn.vwoRevertHtml){
return;
};
var ctx=vwo_$(x),el;
/*vwo_debug log("Revert","content",""); vwo_debug*/;
el=vwo_$('[vwo-element-id="1744062807520"]');
el.revertContentOp().remove();})("HEAD")}}, C_722072_157_1_3_1:{ fn:function(log,nonce=''){return (function(x) {var el,ctx=vwo_$(x);
/*vwo_debug log("addElement","body"); vwo_debug*/!(el=vwo_$("body")).find('[vwo-op-1744062806872=""]').length&&el.vwoElement({html:'
\n \x3c!--
\n
\n \n
\n
--\x3e\n
\n
\n \n
\n
\n
\n
\n \n \x3c!--
\n If you have a moment...\n
--\x3e\n
\n You can be the difference in a child making a decision to follow Jesus at camp this summer. Will you help a kid get to Eagle Lake Camps of The Navigators this summer? Give here »\n
Our statement of faith is the core foundation for our ministry. We believe:
That the Scriptures of the Old and New Testaments are inspired by God and inerrant in the original writings, and that they are of supreme and final authority in faith and life.
In one God, the Creator; eternally existing in three persons: Father, Son, and Holy Spirit.
That Jesus Christ was conceived by the Holy Spirit and born of the virgin Mary, and that He was and remains true God and true man.
That God created Adam and Eve in the divine image; that they sinned, and thereby incurred not only physical death but also spiritual death, which is separation from God; and that, as a result of Adam’s sin, all human beings are now born with a sinful nature and stand guilty before God.
That the Lord Jesus Christ died for our sins according to the Scriptures, as a representative and substitutionary sacrifice; and that all who believe in Him are justified on the ground of His shed blood.
In the resurrection of the crucified body of our Lord, in His ascension into Heaven, and in His present life there for us, as High Priest and Advocate.
In the blessed hope of the personal and imminent return of our Lord and Savior, Jesus Christ.
That all who by faith receive the Lord Jesus Christ are born again of the Holy Spirit and thereby become children of God.
That the Holy Spirit indwells and gives spiritual life to all believers, enables them to understand biblical truth, empowers them for godly living, and equips them for service and witness.
In the bodily resurrection of the just and unjust, the everlasting blessedness of the saved, and the everlasting punishment of the lost.
Our Calling
To advance the gospel of Jesus and His Kingdom into the nations through spiritual generations of laborers living and discipling among the lost.
Our Core Values
The passion to know, love, and become like Jesus Christ.
The truth and sufficiency of the Scriptures for the whole of life.
The transforming power of the gospel.
The leading and empowering of the Holy Spirit.
Expectant faith and persevering prayer rooted in the promises of God.
The dignity and value of every person.
Love and grace expressed among us in community.
Families and relational networks in discipling the nations.
Interdependent relationships in the Body of Christ in advancing the gospel.
Our Vision Statement
We see a vital movement of the gospel, fueled by prevailing prayer, flowing freely through relational networks and out into the nations. Workers for the Kingdom are next door to everywhere!
What characterizes this movement?
A heart for the whole person, climates of grace, compassion for the vulnerable and broken, sacrificial unity embracing diversity, cultural relevance and sensitivity, interdependence with others in the wider family of God, transformed men and women, fragrant with humility and the aroma of Christ.
They are marked by a deep engagement with and obedience to the Scriptures as the Word of God. They believe the promises of God. Both personally and in committed communities, they seek to know and pursue the purposes of God.
Laborers and leaders are emerging, with an increasing passion for Jesus Christ. They demonstrate faith and courage as they live and move among their friends and families. As spiritual parents, they model authenticity and relevance.
Ordinary people, in many walks of life, are joyfully leading integrated lives. They live as fruitful insiders among the lost. There is perseverance in the face of hardship and suffering. Around the world, many are coming to faith. As they become established in discipleship, some grow to be foundational for further generations. The gospel spreads naturally and powerfully, as believers share Christ, life upon life, family to family.
Crossing cultures into new cities and nations, teams of mobile pioneers intentionally proclaim and embody the Good News of Jesus Christ, in such a way that transformed communities multiply. These communities are bringing joy and hope to their surrounding environments as relationships are healed and justice increases. Indeed, the lost and unreached burn in their hearts, as they move the gospel into the nations.
The leaders of this movement, developed and empowered for God’s service, live out a growing commitment to Christlikeness. They are dependent upon the Holy Spirit. New generations of leaders are emerging, rooted incarnationally in their local and national contexts. An international leadership community brings focus, alignment, and energy to their movement. These leaders are clearly committed to long-term impact in generational ministry.