Stories

Hope Stories

Read stories about lives being transformed every day, thanks to people like you.

Receive Hope Stories Directly To Your Inbox:

Sign up for
Hope Mission Emails

<!–

Add a descriptive message telling what your visitor is signing up for here.

–>

<!–

Tell me stories about… Edmonton Red Deer Calgary

–>

<!–

Marketing by

–>window.cfields = {“2″:”location_city”};window._show_thank_you = function(id, message, trackcmp_url) { var form = document.getElementById(‘_form_’ + id + ‘_’), thank_you = form.querySelector(‘._form-thank-you’); form.querySelector(‘._form-content’).style.display = ‘none’; thank_you.innerHTML = message; thank_you.style.display = ‘block’; if (typeof(trackcmp_url) != ‘undefined’ && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== ‘undefined’) window._form_callback(id);};window._show_error = function(id, message, html) { var form = document.getElementById(‘_form_’ + id + ‘_’), err = document.createElement(‘div’), button = form.querySelector(‘button’), old_error = form.querySelector(‘._form_error’); if (old_error) old_error.parentNode.removeChild(old_error); err.innerHTML = message; err.className = ‘_error-inner _form_error _no_arrow’; var wrapper = document.createElement(‘div’); wrapper.className = ‘_form-inner’; wrapper.appendChild(err); button.parentNode.insertBefore(wrapper, button); document.querySelector(”).disabled = false; if (html) { var div = document.createElement(‘div’); div.className = ‘_error-html’; div.innerHTML = html; err.appendChild(div); }};window._load_script = function(url, callback) { var head = document.querySelector(‘head’), script = document.createElement(‘script’), r = false; script.type = ‘text/javascript’; script.charset = ‘utf-8’; script.src = url; if (callback) { script.onload = script.onreadystatechange = function() { if (!r && (!this.readyState || this.readyState == ‘complete’)) { r = true; callback(); } }; } head.appendChild(script);};(function() { if (window.location.search.search(“excludeform”) !== -1) return false; var getCookie = function(name) { var match = document.cookie.match(new RegExp(‘(^|; )’ + name + ‘=([^;]+)’)); return match ? match : null; } var setCookie = function(name, value) { var now = new Date(); var time = now.getTime(); var expireTime = time + 1000 * 60 * 60 * 24 * 365; now.setTime(expireTime); document.cookie = name + ‘=’ + value + ‘; expires=’ + now + ‘;path=/’; } var addEvent = function(element, event, func) { if (element.addEventListener) { element.addEventListener(event, func); } else { var oldFunc = element[‘on’ + event]; element[‘on’ + event] = function() { oldFunc.apply(this, arguments); func.apply(this, arguments); }; } } var _removed = false; var form_to_submit = document.getElementById(‘_form_3_’); var allInputs = form_to_submit.querySelectorAll(‘input, select, textarea’), tooltips = [], submitted = false; var getUrlParam = function(name) { var regexStr = ‘[?&]’ + name + ‘=([^&#]*)’; var results = new RegExp(regexStr, ‘i’).exec(window.location.href); return results != undefined ? decodeURIComponent(results) : false; }; for (var i = 0; i < allInputs.length; i++) { var regexStr = “field%92%92[(%92%92d+)%92%92]”; var results = new RegExp(regexStr).exec(allInputs.name); if (results != undefined) { allInputs.dataset.name = window.cfields; } else { allInputs.dataset.name = allInputs.name; } var fieldVal = getUrlParam(allInputs.dataset.name); if (fieldVal) { if (allInputs.type == “radio” || allInputs.type == “checkbox”) { if (allInputs.value == fieldVal) { allInputs.checked = true; } } else { allInputs.value = fieldVal; } } } var remove_tooltips = function() { for (var i = 0; i < tooltips.length; i++) { tooltips.tip.parentNode.removeChild(tooltips.tip); } tooltips = []; }; var remove_tooltip = function(elem) { for (var i = 0; i < tooltips.length; i++) { if (tooltips.elem === elem) { tooltips.tip.parentNode.removeChild(tooltips.tip); tooltips.splice(i, 1); return; } } }; var create_tooltip = function(elem, text) { var tooltip = document.createElement(‘div’), arrow = document.createElement(‘div’), inner = document.createElement(‘div’), new_tooltip = {}; if (elem.type != ‘radio’ && elem.type != ‘checkbox’) { tooltip.className = ‘_error’; arrow.className = ‘_error-arrow’; inner.className = ‘_error-inner’; inner.innerHTML = text; tooltip.appendChild(arrow); tooltip.appendChild(inner); elem.parentNode.appendChild(tooltip); } else { tooltip.className = ‘_error-inner _no_arrow’; tooltip.innerHTML = text; elem.parentNode.insertBefore(tooltip, elem); new_tooltip.no_arrow = true; } new_tooltip.tip = tooltip; new_tooltip.elem = elem; tooltips.push(new_tooltip); return new_tooltip; }; var resize_tooltip = function(tooltip) { var rect = tooltip.elem.getBoundingClientRect(); var doc = document.documentElement, scrollPosition = rect.top – ((window.pageYOffset || doc.scrollTop) – (doc.clientTop || 0)); if (scrollPosition < 40) { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, ”) + ‘ _below’; } else { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, ”) + ‘ _above’; } }; var resize_tooltips = function() { if (_removed) return; for (var i = 0; i < tooltips.length; i++) { if (!tooltips.no_arrow) resize_tooltip(tooltips); } }; var validate_field = function(elem, remove) { var tooltip = null, value = elem.value, no_error = true; remove ? remove_tooltip(elem) : false; if (elem.type != ‘checkbox’) elem.className = elem.className.replace(/ ?_has_error ?/g, ”); if (elem.getAttribute(‘required’) !== null) { if (elem.type == ‘radio’ || (elem.type == ‘checkbox’ && /any/.test(elem.className))) { var elems = form_to_submit.elements; if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) { no_error = elem.checked; } else { no_error = false; for (var i = 0; i < elems.length; i++) { if (elems.checked) no_error = true; } } if (!no_error) { tooltip = create_tooltip(elem, “Please select an option.”); } } else if (elem.type ==’checkbox’) { var elems = form_to_submit.elements, found = false, err = []; no_error = true; for (var i = 0; i < elems.length; i++) { if (elems.getAttribute(‘required’) === null) continue; if (!found && elems !== elem) return true; found = true; elems.className = elems.className.replace(/ ?_has_error ?/g, ”); if (!elems.checked) { no_error = false; elems.className = elems.className + ‘ _has_error’; err.push(“Checking %s is required”.replace(“%s”, elems.value)); } } if (!no_error) { tooltip = create_tooltip(elem, err.join(‘
‘)); } } else if (elem.tagName == ‘SELECT’) { var selected = true; if (elem.multiple) { selected = false; for (var i = 0; i < elem.options.length; i++) { if (elem.options.selected) { selected = true; break; } } } else { for (var i = 0; i < elem.options.length; i++) { if (elem.options.selected && !elem.options.value) { selected = false; } } } if (!selected || value === ‘Tell me stories about…’) { elem.className = elem.className + ‘ _has_error’; no_error = false; tooltip = create_tooltip(elem, “Please select an option.”); } } else if (value === undefined || value === null || value === ”) { elem.className = elem.className + ‘ _has_error’; no_error = false; tooltip = create_tooltip(elem, “This field is required.”); } } if (no_error && elem.name == ’email’) { if (!value.match(/^[+_a-z0-9-‘&=]+(.[+_a-z0-9-‘]+)*@+(.+)*(.{2,})$/i)) { elem.className = elem.className + ‘ _has_error’; no_error = false; tooltip = create_tooltip(elem, “Enter a valid email address.”); } } if (no_error && /date_field/.test(elem.className)) { if (!value.match(/^dddd-dd-dd$/)) { elem.className = elem.className + ‘ _has_error’; no_error = false; tooltip = create_tooltip(elem, “Enter a valid date.”); } } tooltip ? resize_tooltip(tooltip) : false; return no_error; }; var needs_validate = function(el) { return el.name == ’email’ || el.getAttribute(‘required’) !== null; }; var validate_form = function(e) { var err = form_to_submit.querySelector(‘._form_error’), no_error = true; if (!submitted) { submitted = true; for (var i = 0, len = allInputs.length; i < len; i++) { var input = allInputs; if (needs_validate(input)) { if (input.type == ‘text’) { addEvent(input, ‘blur’, function() { this.value = this.value.trim(); validate_field(this, true); }); addEvent(input, ‘input’, function() { validate_field(this, true); }); } else if (input.type == ‘radio’ || input.type == ‘checkbox’) { (function(el) { var radios = form_to_submit.elements; for (var i = 0; i < radios.length; i++) { addEvent(radios, ‘click’, function() { validate_field(el, true); }); } })(input); } else if (input.tagName == ‘SELECT’) { addEvent(input, ‘change’, function() { validate_field(this, true); }); } else if (input.type == ‘textarea’){ addEvent(input, ‘input’, function() { validate_field(this, true); }); } } } } remove_tooltips(); for (var i = 0, len = allInputs.length; i < len; i++) { var elem = allInputs; if (needs_validate(elem)) { if (elem.tagName.toLowerCase() !== “select”) { elem.value = elem.value.trim(); } validate_field(elem) ? true : no_error = false; } } if (!no_error && e) { e.preventDefault(); } resize_tooltips(); return no_error; }; addEvent(window, ‘resize’, resize_tooltips); addEvent(window, ‘scroll’, resize_tooltips); window._old_serialize = null; if (typeof serialize !== ‘undefined’) window._old_serialize = window.serialize; _load_script(“//d3rxaij56vjege.cloudfront.net/form-serialize/0.3/serialize.min.js”, function() { window._form_serialize = window.serialize; if (window._old_serialize) window.serialize = window._old_serialize; }); var form_submit = function(e) { e.preventDefault(); if (validate_form()) { // use this trick to get the submit button & disable it using plain javascript document.querySelector(‘#_form_3_submit’).disabled = true; var serialized = _form_serialize(document.getElementById(‘_form_3_’)); var err = form_to_submit.querySelector(‘._form_error’); err ? err.parentNode.removeChild(err) : false; _load_script(‘https://hopemission.activehosted.com/proc.php?’ + serialized + ‘&jsonp=true’); } return false; }; addEvent(form_to_submit, ‘submit’, form_submit);})();

Join Hearts of Hope today to give monthly meals and care to neighbours in need.

For many, a simple meal can be the beginning of a journey towards healing, hope, and transformation.

×

Just $2.70 gives a hot meal and life changing care to someone in need

Countless individuals are seeking support, compassion, and help as they work toward a brighter future. People like you make a real difference in their lives every single day. Your donation today can provide essential services like food, shelter, healthcare, and much more.

Maybe Next Time?

Please leave your email address below, and we'll send you a gentle reminder later.