91³Ô¹ÏÍø

Watch CBS News

Melissa and Mark Hortman's work lives on through trained service dogs

Melissa and Mark Hortman served their community in many ways, including training dogs to be service animals for people in need. 

WCCO spoke with the volunteer group and a veteran who has benefited from their efforts.

Minnie, 11, is a special Labrador. She's the perfect companion for veteran Aric Elsner. 

"She's just the greatest gift, and I've told many people, and I still say this, this dog saved my life," Elsner said.

He served in the Minnesota Air National Guard for more than 25 years and lives every day with physical and mental pain.

"I had a lot of health issues, PTSD was one diagnosis, and I was diagnosed with a very painful musculoskeletal condition too," Elsner said.

That's when Helping Paws came into his life. He was matched with Minnie. 

"If I'm anxious at home or I have a bad dream, she's right there," Elsner said.

Minnie went through two-and-a-half years of training at Helping Paws, working directly with the Hortman family, who volunteered to train her. It started as a high school service project for their daughter, but when she left for college, Mark Hortman finished training Minnie. 

"Their love for helping others, their love for doing something above themselves, is just living on every day with the gift that I got from their family," Alyssa Golob, executive director with Helping Paws, said.

Gilbert never graduated from training school, but went on to be a beloved pet of the Hortman family. Melissa and Mark Hortman and Gilbert were shot and killed on Saturday.

"It's evil on its own, and then you add in an innocent dog, and that's a certain kind of evil," Golob said.

Minnie is just one of the many examples of Melissa and Mark Hortman's legacy living on, continuing to serve Minnesotans for the better. 

Since Saturday, Helping Paws donations have been pouring in, totalling more than $10,000. The money will be used to continue connecting veterans with service dogs. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });