The Tragic Accident at the Ballpark Last Night | Unfair Park | Dallas | Dallas Observer | The Leading Independent News Source in Dallas, Texas
Navigation

The Tragic Accident at the Ballpark Last Night

ryan="" reacts="" to="" fan="" s="" death="" width="560" height="420>At 10:02 last night, an email from the Texas Rangers arrived in the in-box bearing the subject heading "Statement From Texas Rangers CEO and President Nolan Ryan." This is what it said: The adult male who during tonight's game fell approximately 20 feet...
Share this:

ryan="" reacts="" to="" fan="" s="" death<="" a>="" width="560" height="420><a href="></object>At 10:02 last night, an email from the Texas Rangers arrived in the in-box bearing the subject heading "Statement From Texas Rangers CEO and President Nolan Ryan." This is what it said: <blockquote>The adult male who during tonight's game fell approximately 20 feet from section 5 in the left field lower reserved seats to the area behind the left field wall has died from injuries suffered in the fall. Texas Rangers President Nolan Ryan issued the following statement:<br /><br /> "We are deeply saddened to learn that the man who fell has passed away as a result of this tragic accident. Our thoughts and prayers are with his family."</blockquote>That man, we now know, was <a href="http://www.facebook.com/home.php#%21/profile.php?id=100002222034966" target="_blank">Brownwood firefighter Shannon Stone</a>, a Cleburne High graduate and 17-year-veteran of the fire department who was <a href="http://www.brownwoodnews.com/index.php?option=com_content&view=article&id=5647:breaking-news-brownwood-firefighter-dies-in-fall-at-rangers-game-&catid=35:news&Itemid=58" target="_blank">attending the game with his young son</a>, Cooper. Stone fell after catching a foul ball tossed to him by Josh Hamilton; said Ron Washington after the game, <a href="http://sports.espn.go.com/dallas/mlb/news/story?id=6747510" target="_blank">when speaking of Hamilton</a>, "I guess he's got to deal with it in his own way." Players knew of the fall, which occurred near the Oakland bullpen, but not the extent of Stone's injuries. <a href="http://texas.rangers.mlb.com/news/article.jsp?ymd=20110707&content_id=21564000&vkey=news_tex&c_id=tex" target="_blank">From the Rangers' website</a>:<blockquote>"When they had him on a stretcher and they were carrying him out, he was saying stuff like 'Please check on my son, he's left up there by himself.'" Athletics reliever Brad Ziegler said. "The people that carried him out reassured him that, 'We'll get your son, we'll make sure he's OK.' We just kind of assumed that he's talking, he's conscious, he'll be OK. To find out he's not is just ... tough."</blockquote><strong>Update at 11:30 a.m.:</strong> The Rangers have scheduled a 2:30 p.m. press conference with Ryan to discuss last night's tragedy. Also, notes the release from team spokesman John Blake: "All of the flags at Rangers Ballpark in Arlington have been lowered to half-mast in the memory of Shannon Stone. The Rangers will also observe a moment of silence in Mr. Stone's memory prior to Friday's game. More information will be available at the media briefing."<br /><br /><strong>Update at 2 p.m.:</strong> In advance of the Rangers' press conference, Major League Baseball has issued the <a href="http://mlb.mlb.com/news/press_releases/press_release.jsp?ymd=20110708&content_id=21589220&vkey=pr_mlb&fext=.jsp&c_id=mlb" target="_blank">following press release</a>:<blockquote>"All of us at Major League Baseball are shocked and saddened over the tragic death of Mr. Stone last evening. Our thoughts and prayers are with his son and his entire family. Major League Baseball has the utmost sensitivity to the safety of all the fans that come to our ballparks. Our players are encouraged to be fan-friendly and we will carefully review this incident with our clubs to continue to ensure a safe environment for our fans."</blockquote></p> </div> <script> Foundation.ParagraphTool = Foundation.ParagraphTool || function (element) { // Compile and store usable paragraph endings that are good for element insertion // Avoides paragraph insertions immediately following a header or block element // Includes paragraph endings before a <div> this.bodyContainer = jQuery(element); this.textNodeMatch = new RegExp('^(#text|A|I|B)$','i'); this.getPreviousNonEmptySibling = function (currentNode) { let prevNode = currentNode ? currentNode.previousSibling : null; let prevNodeFound = false; while (prevNode && !prevNodeFound) { let isText = prevNode.nodeType === Node.TEXT_NODE; // Empty text node. Move on to the next node if (isText && prevNode.nodeValue.trim() === '') { prevNode = prevNode.previousSibling; } else { prevNodeFound = true; } } return prevNode; } this.getNextNonEmptySibling = function (currentNode) { let nextNode = currentNode ? currentNode.nextSibling : null; let nextNodeFound = false; while (nextNode && !nextNodeFound) { let isText = nextNode.nodeType === Node.TEXT_NODE; // Empty text node. Move on to the next node if (isText && nextNode.nodeValue.trim() === '') { nextNode = nextNode.nextSibling; } else { nextNodeFound = true; } } return nextNode; } this.isDoubleBrParagraphBreak = function (currentNode) { let prevNode = this.getPreviousNonEmptySibling(currentNode); let prevPrevNode = this.getPreviousNonEmptySibling(prevNode); if (currentNode && prevNode && prevPrevNode) { let currentNodeIsBr = currentNode.nodeName === 'BR'; let prevNodeIsBr = prevNode.nodeName === 'BR'; let prevPrevNodeIsText = prevPrevNode.nodeName.match(this.textNodeMatch) !== null; let isBrParagraphBreak = prevPrevNodeIsText && prevNodeIsBr && currentNodeIsBr; if (isBrParagraphBreak) { return true; } } return false; } this.isBrParagraphBreakBeforeBlockElement = function (currentNode) { let prevNode = this.getPreviousNonEmptySibling(currentNode); let nextNode = this.getNextNonEmptySibling(currentNode); if (prevNode && currentNode && nextNode) { let prevNodeIsText = prevNode.nodeName.match(this.textNodeMatch) !== null; let currentNodeIsBr = currentNode.nodeName.match(/^BR$/i) !== null; let nextNodeIsBlock = nextNode.nodeName.match(/^DIV$/i) !== null; let isParagraphBreakBeforeBlock = prevNodeIsText && currentNodeIsBr && nextNodeIsBlock; if (isParagraphBreakBeforeBlock) { return true; } } return false; } this.isParagraphBreak = function (currentNode) { let prevNode = this.getPreviousNonEmptySibling(currentNode); if (currentNode && prevNode) { let currentNodeIsP = currentNode.nodeName === 'P'; let currentNodeIsNotHeader = jQuery(currentNode).children().length /* */ let prevNodeIsNotBlock = prevNode.nodeName.match(/^H\d|IMG|DIV|BLOCKQUOTE|hr$/i) === null; // Check for only one <B> or <strong> tag and empty text nodes as children let isPHeader = false; if (currentNodeIsP && currentNode.childNodes.length >= 3) { let textNodesHaveText = false; let brStrongElementCount = 0; let otherElementCount = 0; currentNode.childNodes.forEach((item)=> { if (item.nodeType === Node.TEXT_NODE) { if (item.nodeValue.trim() !== '') { textNodesHaveText = true; } } else if (item.nodeType === Node.ELEMENT_NODE) { if (item.nodeName.match(/^B|STRONG$/i) !== null) { brStrongElementCount++; } else { otherElementCount++; } } }) if (brStrongElementCount === 1 && textNodesHaveText === false && otherElementCount === 0) { isPHeader = true; } } let isParagraphBreak = prevNodeIsNotBlock && currentNodeIsP && !isPHeader; if (isParagraphBreak) { return true; } } return false; } this.isBlockAfterParagraph = function (currentNode) { if (!currentNode) { return false; } const prevNode = this.getPreviousNonEmptySibling(currentNode); if (!prevNode) { return false; } /* */ const currentNodeIsValidBlock = currentNode.nodeName.match(/^H\d|IMG|DIV|BLOCKQUOTE|hr$/i) !== null; if (!currentNodeIsValidBlock) { return false; } const prevNodeIsParagraph = prevNode.nodeName === 'P'; if (prevNodeIsParagraph) { return true; } const prevNodeIsDoubleBr = this.isDoubleBrParagraphBreak(prevNode); if (prevNodeIsDoubleBr) { return true; } return false; } // this.isBlockAfterBlock = function (currentNode) { if (!currentNode) { return false; } const prevNode = this.getPreviousNonEmptySibling(currentNode); if (!prevNode) { return false; } /* */ const currentNodeIsValidBlock = currentNode.nodeName.match(/^H\d|IMG|DIV|BLOCKQUOTE|hr$/i) !== null; if (!currentNodeIsValidBlock) { return false; } /* */ const prevNodeIsIsValidBlock = prevNode.nodeName.match(/^H\d|IMG|DIV|BLOCKQUOTE|hr$/i) !== null; if (prevNodeIsIsValidBlock) { return true; } return false; } // let myParagraphTool = this this.paragraphEndNodes = myParagraphTool.bodyContainer.first().contents().filter(function(index, element) { let isText = this.nodeType === Node.TEXT_NODE; let isElement = this.nodeType === Node.ELEMENT_NODE; // Empty text node. Move on if (isText && this.nodeValue.trim() === '') { return false; } let currentNode = this; if (myParagraphTool.isParagraphBreak(currentNode)) { return true; } if (myParagraphTool.isDoubleBrParagraphBreak(currentNode)) { return true; } if (myParagraphTool.isBrParagraphBreakBeforeBlockElement(currentNode)) { return true; } if (myParagraphTool.isBlockAfterParagraph(currentNode)) { return true; } // if (myParagraphTool.isBlockAfterBlock(currentNode)) { return true; } // return false; }) this.getParagraphEndNodeCount = function () { return this.paragraphEndNodes.length; } this.insertElemenAtIndex = function (element, index) { let isValidIndex = index < this.paragraphEndNodes.length; if (isValidIndex) { let currentNode = this.getNodeAtIndex(index); if (this.isDoubleBrParagraphBreak(currentNode) || this.isBrParagraphBreakBeforeBlockElement(currentNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('<br>').insertAfter(this.paragraphEndNodes[index]); jQuery('<br>').insertAfter(this.paragraphEndNodes[index]); } else { // jQuery('div.fdn-content-body, div #storyBody').append('<div line-height-check>&nbsp;</div>') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('<div line-height-check>&nbsp;</div>') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`<style ${styleElementHook}></style>`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('<br>').insertAfter(this.paragraphEndNodes[index]); jQuery('<br>').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('<div line-height-check>&nbsp;</div>') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } } </script> <script> window.Foundation = window.Foundation || {}; Foundation.Content = Foundation.Content || {}; Foundation.Content['7117785'] = Foundation.Content['7117785'] || {}; Foundation.Content['7117785'].inlineComponents = [{ componentOid: '18855504', parentWrapperClass: '', insertPoint: '2', startingPoint: '1', requiredCountToDisplay: '2', componentHtml: "<hidden hidden>\n<br><br>\n<div class=\"ComponentZoneA AirMediumRectangleInlineContentMobileDisplaySizeAdresponsive uk-margin-remove fdn-labeled uk-root fdn-margin-vert AirMediumRectangleInlineContentMobileDisplaySize comp-\" data-component-id=\"AirMediumRectangleInlineContentMobileDisplaySize\"\nfdn-ad-component>\n<style>\n[apn-fixed-size-hook=\"rectangle\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"rectangle\" display-targets=\"mobile\" apn-fixed-size-hook=\"rectangle\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<\/hidden>", },{ componentOid: '17105533', parentWrapperClass: '', insertPoint: '4', startingPoint: '1', requiredCountToDisplay: '1', componentHtml: "\n<div class=\"ComponentZoneA EditorsPicksInlineContentresponsive uk-root fdn-margin-vert EditorsPicksInlineContent comp-content-editorspicks\" data-component-id=\"EditorsPicksInlineContent\">\n<div micro-component>\n<div class=\"MicroComponent EditorsPicksInlineContentresponsive fdn-labeled uk-flex uk-flex-row uk-flex-around uk-width-1-1 uk-root fdn-margin-vert AirMediumRectangleComboInlineContent comp-\" data-component-id=\"AirMediumRectangleComboInlineContent\">\n<div class=\"uk-visible@s\">\n<style>\n[apn-fixed-size-hook=\"rectangle\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"rectangle\" display-targets=\"desktop|tablet\" apn-fixed-size-hook=\"rectangle\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<style>\n[apn-fixed-size-hook=\"rectangle\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"rectangle\" display-targets=\"desktop|tablet|mobile\" apn-fixed-size-hook=\"rectangle\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<\/div>\n<\/div>", },{ componentOid: '18349797', parentWrapperClass: '', insertPoint: '8th', maxInsertions: '25', startingPoint: '8', requiredCountToDisplay: '7', componentHtml: "\n<div inline-story-link>\n<script>\n(() => {\nconst container = jQuery(`[inline-story-link]`).first();\nif (window.Foundation && Foundation.Content && Foundation.Content.InlineStoryLinks) {\nif (Foundation.Content.InlineStoryLinks.length > 0) {\ncontainer.replaceWith(Foundation.Content.InlineStoryLinks.shift());\n}\nelse {\ncontainer.remove();\n}\n}\nelse {\ncontainer.remove();\n}\n})();\n<\/script>\n<\/div>", },{ componentOid: '17105532', parentWrapperClass: '', insertPoint: '8th', maxInsertions: '25', startingPoint: '8', requiredCountToDisplay: '7', componentHtml: "<div class=\"ComponentZoneA AirMediumRectangleComboInlineContentresponsive fdn-labeled uk-flex uk-flex-row uk-flex-around uk-width-1-1 uk-root fdn-margin-vert AirMediumRectangleComboInlineContent comp-\" data-component-id=\"AirMediumRectangleComboInlineContent\">\n<div class=\"uk-visible@s\">\n<style>\n[apn-fixed-size-hook=\"rectangle\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"rectangle\" display-targets=\"desktop|tablet\" apn-fixed-size-hook=\"rectangle\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<style>\n[apn-fixed-size-hook=\"rectangle\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"rectangle\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"rectangle\" display-targets=\"desktop|tablet|mobile\" apn-fixed-size-hook=\"rectangle\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>", },{ componentOid: '18349797', parentWrapperClass: '', insertPoint: '8th', maxInsertions: '25', startingPoint: '12', requiredCountToDisplay: '11', componentHtml: "\n<div inline-story-link>\n<script>\n(() => {\nconst container = jQuery(`[inline-story-link]`).first();\nif (window.Foundation && Foundation.Content && Foundation.Content.InlineStoryLinks) {\nif (Foundation.Content.InlineStoryLinks.length > 0) {\ncontainer.replaceWith(Foundation.Content.InlineStoryLinks.shift());\n}\nelse {\ncontainer.remove();\n}\n}\nelse {\ncontainer.remove();\n}\n})();\n<\/script>\n<\/div>", },{ componentOid: '17105535', parentWrapperClass: '', insertPoint: '8th', maxInsertions: '25', startingPoint: '12', requiredCountToDisplay: '11', componentHtml: "<div class=\"ComponentZoneA AirLeaderboardTowerorMediumRectanglesComboInlineContentresponsive fdn-labeled uk-flex uk-flex-row uk-flex-around uk-margin-large-top uk-width-1-1 uk-root fdn-margin-vert AirLeaderboardMediumRectanglesComboInlineContent comp-\" data-component-id=\"AirLeaderboardMediumRectanglesComboInlineContent\">\n<div class=\"uk-visible@s\">\n<style>\n[apn-fixed-size-hook=\"leaderboardInlineContent\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 250px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"leaderboardInlineContent\"] {\nwidth: 728px;\nheight: 90px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"leaderboardInlineContent\"] {\nwidth: 728px;\nheight: 90px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"leaderboardInlineContent\" display-targets=\"desktop|tablet\" apn-fixed-size-hook=\"leaderboardInlineContent\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<div class=\"uk-hidden@s\">\n<style>\n[apn-fixed-size-hook=\"tower\"] {\nbackground-color:#EEEEEE;\nwidth: 300px;\nheight: 600px;\n}\n@media (min-width: 760px) {\n[apn-fixed-size-hook=\"tower\"] {\nwidth: 300px;\nheight: 600px;\n}\n}\n@media (min-width: 990px) {\n[apn-fixed-size-hook=\"tower\"] {\nwidth: 300px;\nheight: 250px;\n}\n}\n<\/style>\n<div apn-ad-hook=\"tower\" display-targets=\"mobile\" apn-fixed-size-hook=\"tower\">\n<script>\nif (typeof apntag === 'object') {\napntag.anq.push(function() {\nif (typeof Foundation.ApnAds.fillAds === 'function') {\nFoundation.ApnAds.fillAds()\n}\n})\n}\n<\/script>\n<\/div>\n<\/div>\n<\/div>", }]; Foundation.Content['7117785'].setupInlineComponents = function (callback) { setTimeout(() => { let contentBody = jQuery('[fdn-content-multi-item="7117785"] .fdn-content-body, div#storyBody'); // For multiple content scenarios if (contentBody.length) { Foundation.Content['7117785'].paragraphTool = new window.Foundation.ParagraphTool(contentBody); } // Assume only a single content else { contentBody = jQuery('.fdn-content-body, #storyBody'); Foundation.Content['7117785'].paragraphTool = new window.Foundation.ParagraphTool(contentBody); } var myParagraphTool = Foundation.Content['7117785'].paragraphTool Foundation.Content['7117785'].inlineComponents.forEach((item,index) => { if (item.parentWrapperClass.trim() === '') { var componentElement = jQuery(item.componentHtml); } else { var componentElement = jQuery(`<div class="${item.parentWrapperClass.trim()}">${item.componentHtml}</div>`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['7117785'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['7117785'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['7117785'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(` <div style="width:100%;padding:10px;background-color:lightgreen;border:1px solid darkgreen;box-sizing:border-box;"> Insertion point ${index+1} </div>`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; } </script> <script> jQuery(function () { Foundation.Content['7117785'].setupInlineComponents(); }); </script> </div> </div> <div class="uk-width-1-1 uk-margin-auto uk-width-medium@s uk-visible@m fdn-component-grid-zone fdn-component-grid-zone-300"> <div uk-sticky=" top: 0; offset: 145; bottom: true; media: 1108; "> <hidden hidden> <div class="ComponentZoneB StoryLayoutwithSidebarresponsive fdn-labeled uk-root fdn-margin-vert AirMediumRectangleRightColumnContentDesktopOnly comp-" data-component-id="AirMediumRectangleRightColumnContentDesktopOnly" fdn-ad-component> <style> [apn-fixed-size-hook="rectangle"] { background-color:#EEEEEE; width: 300px; height: 250px; } @media (min-width: 760px) { [apn-fixed-size-hook="rectangle"] { width: 300px; height: 250px; } } @media (min-width: 990px) { [apn-fixed-size-hook="rectangle"] { width: 300px; height: 250px; } } </style> <div apn-ad-hook="rectangle" display-targets="desktop" apn-fixed-size-hook="rectangle"> <script> if (typeof apntag === 'object') { apntag.anq.push(function() { if (typeof Foundation.ApnAds.fillAds === 'function') { Foundation.ApnAds.fillAds() } }) } </script> </div> </div> </hidden> </div> </div> </div> <div class="ZoneA ContentDefault uk-root fdn-margin-vert KeepFreeBannerContent comp-content-keepfreebannercontent" data-component-id="KeepFreeBannerContent"> <div class="fdn-keep-free-block"> <div class="uk-flex-inline fdn-keep-free-logo"> <span> <img class="fdn-keep-free-logo-image" src="https://www.dallasobserver.com/images/dal-keep-free.png" alt="Dallas Observer" width="110"> </span> </div> <div class="fdn-keep-free-body"> <strong>KEEP THE OBSERVER FREE...</strong> Since we started the <i>Dallas Observer</i>, it has been defined as the free, independent voice of Dallas, and we'd like to keep it that way. Your membership allows us to continue offering readers access to our incisive coverage of local news, food, and culture with no paywalls. <a href="https://dallas-observer.fundjournalism.org/support/?campaign=701Ho0000016WZMIA2" onclick="ga('send', 'event', 'VMG-Widget', 'Click', '-VMG-ISupport-AfterArticle', {'NonInteraction': 1});"> You can support us by joining as a member for as little as $1. </a> </div> </div> </div> <div class="ZoneA ContentDefault uk-root fdn-margin-vert ContentFooterAbouttheAuthorNewsletter comp-content-contentfooter" data-component-id="ContentFooterAbouttheAuthorNewsletter"> <div class="componentGrid-TwoZones-2x-1x uk-width-1-1 uk-flex uk-flex-row uk-flex-wrap fdn-component-grid-row@m" uk-height-match data-component-grid-id="ContentFooterAbouttheAuthorNewsletter"> <div class="uk-width-1-1 uk-width-2-3@m uk-flex uk-flex-column uk-inline fdn-component-grid-zone"> <div class="ZoneA ContentDefault uk-root fdn-margin-vert ContentFooterAbouttheAuthorNewsletter comp-content-contentfooter" data-component-id="ContentFooterAbouttheAuthorNewsletter"> <div class="uk-flex uk-margin-xsmall-bottom fdn-about-author-block"> <div class="uk-width-1-4 uk-flex uk-flex-center uk-padding-xsmall-right fdn-about-author-image-block fdn-about-author-image-block-default"> <div> <img src="/images/air/NT-dal.png" alt="Robert Wilonsky"> </div> </div> <div class="uk-width-expand fdn-about-author-content-block"> <div class="bio"> <strong>Robert Wilonsky</strong> </div> <div class="contact"> <strong class="uk-text-uppercase">Contact:</strong> <a href="https://posting.dallasobserver.com/about/contact?to=6371392">Robert Wilonsky</a> </div> </div> </div> </div> </div> <div class="uk-width-1-1 uk-width-1-3@m uk-flex uk-flex-column uk-inline fdn-component-grid-zone"> <div class="ZoneA NewsletterSignupInArticleresponsive uk-root fdn-margin-vert NewsletterSignupInArticle comp-newsletter-newslettersignup" data-component-id="NewsletterSignupInArticle"> <div class="NewsletterSignupSmall"> <div class="fdn-newsletter-signup-block"> <div class="fdn-newsletter-signup-block-logo"> <img src="/images/air/newsletter-insiders-dal.png" alt="Dallas Observer Insiders" width="360"> <div> <a href="#" class="fdn-newsletter-signup-button" uk-toggle="target: #fdn-newsletter-form-block-newslettersignupinarticle">Join Today <i class="fas fa-caret-right"></i></a> </div> <div id="fdn-newsletter-form-block-newslettersignupinarticle" uk-modal> <div class="uk-modal-dialog uk-modal-body"> <button class="uk-modal-close-default" type="button" uk-close></button> <div class="uk-text-center fdn-newsletter-form-block-header"> <img src="/images/dal-main-logo.svg" alt="" width="200" loading="lazy"> </div> <div class="uk-text-center fdn-newsletter-form-block-subheader"> <h3>Newsletter Sign Up</h3> <h4>Enter your name, zip code, and email</h4> </div> <div class="uk-text-center fdn-newsletter-form-block-form"> <form id="newslettersignupinarticle-form" class="uk-form-stacked" method="get" action="/dallas/Responsive/Custom/Components/Newsletter/SignupFormSave"> <div error-message style="display: none;"></div> <input type="hidden" name="idHook" value="newslettersignupinarticle"> <input type="hidden" name="pageState" value="submit"> <input type="hidden" name="verticalId" value="News"> <input type="hidden" name="newsletterSourceSub" value="In-Article Sign Up"> <input type="hidden" name="newsletterProviderId" value="Dallas Weekly"> <div class="uk-margin-medium"> <label class="fdn-interface-label" for="newslettersignupinarticle-newsletterFirstName"> First Name <span class="fdn-interface-form-required-marker">&#8226;</span> </label> <div class="uk-form-controls"> <input type="text" name="newsletterFirstName" value="" class="uk-input" id="newslettersignupinarticle-newsletterFirstName" placeholder="First Name" required> </div> </div> <div class="uk-margin-medium"> <label class="fdn-interface-label" for="newslettersignupinarticle-newsletterLastName"> Last Name <span class="fdn-interface-form-required-marker">&#8226;</span> </label> <div class="uk-form-controls"> <input type="text" name="newsletterLastName" value="" class="uk-input" id="newslettersignupinarticle-newsletterLastName" placeholder="Last Name" required> </div> </div> <div class="uk-margin-medium"> <label class="fdn-interface-label" for="newslettersignupinarticle-newsletterPostalCode"> Zip Code <span class="fdn-interface-form-required-marker">&#8226;</span> </label> <div class="uk-form-controls"> <input type="text" name="newsletterPostalCode" value="" class="uk-input" id="newslettersignupinarticle-newsletterPostalCode" placeholder="Zip Code" required> </div> </div> <div class="uk-margin-medium"> <label class="fdn-interface-label" for="newslettersignupinarticle-newsletterEmail"> Email <span class="fdn-interface-form-required-marker">&#8226;</span> </label> <div class="uk-form-controls"> <input type="email" name="newsletterEmail" value="" class="uk-input" id="newslettersignupinarticle-newsletterEmail" placeholder="Email" required> </div> </div> <div id="newslettersignupinarticle-captcha" class="uk-flex uk-flex-center uk-margin"> <div data-view="recaptcha" data-view-subclass="Foundation.Form.ReCaptcha" data-recaptcha-sitekey="6LeMFDMUAAAAADAprGeBdA_15iBPBdEQBvBnxmbd" ></div> </div> <script> new Foundation.Form.ReCaptcha(jQuery('#newslettersignupinarticle-captcha div')[0]) </script> <div class="uk-margin-medium"> <div class="uk-form-controls"> <div class="uk-text-right"> <input type="submit" type="submit" value="Sign Up" class="uk-input fdn-button-submit fdn-button-control"> </div> </div> </div> </form> </div> <div class="uk-text-center fdn-newsletter-form-block-footer"> I agree to the <a href="/about/terms-of-use">Terms of Service</a> and <a href="/about/privacy-policy">Privacy Policy</a> </div> <script> (() => { var signupForm = jQuery(`#newslettersignupinarticle-form`); var errorContainer = signupForm.find(`[error-message]`); function submitModal (e) { e.preventDefault(); console.log(jQuery(e.target).serialize()); errorContainer.slideUp(); // errorContainer.attr(`hidden`, ''); jQuery.ajax({ url: signupForm.attr(`action`), type: 'GET', data: jQuery(e.target).serialize(), dataType: 'json', beforeSend: function () { console.log('Fetching results') }, success: function (data) { // console.log('success', data.results, data.results.length, data.error, data) if (data) { console.log(data); if (data.error) { new Foundation.Form.ReCaptcha(jQuery('#newslettersignupinarticle-captcha div')[0]) errorContainer.html(data.error); errorContainer.slideDown(); // errorContainer.removeAttr(`hidden`); console.log(data.error); } else if (data.html) { signupForm.off(`submit`, submitModal); signupForm.closest(`.uk-modal-body`) .find(`.fdn-newsletter-form-block-subheader h4`) .slideUp(); signupForm.closest(`.uk-modal-body`) .find(`.fdn-newsletter-form-block-footer`) .slideUp(() => { signupForm.replaceWith(data.html) }); } else { console.log('How did we get here?') } } else { console.log('No result or error returned from request.') } }, complete: function () { if (typeof callback === 'function') { callback() } }, error: function (error) { console.log(error); } }); } signupForm.on(`submit`, submitModal); })(); </script> </div> </div> </div> <div class="fdn-newsletter-signup-text"> <h3>Sign up for our newsletters</h3> <div>Get the latest music, news, free stuff and more!</div> </div> </div> </div> </div> </div> </div> </div> <div class="ZoneA ContentDefault trending-by-day TrendinginthisSection-7117785 uk-root fdn-margin-vert TrendinginthisSection comp-content-sailthrutrending" data-component-id="TrendinginthisSection"> <div class="fdn-component-header-block uk-margin "> <h3 class="fdn-component-header-text uk-margin-remove " role="presentation"> Trending </h3> </div> <div class="uk-child-width-1-1 uk-child-width-1-2@s uk-child-width-1-4@l fdn-landing-block-section-teasers" uk-grid> <div class="uk-flex uk-flex-wrap uk-flex-column fdn-landing-block-teaser-item"> <a class="uk-display-block fdn-landing-block-teaser-item-image" href="https://www.dallasobserver.com/news/man-misidentified-as-allen-premium-outlets-mall-shooter-sues-media-19135958" onclick=""> <img src="https://media1.dallasobserver.com/dal/imager/man-misidentified-as-allen-premium-outlets-mall-shooter-sues-media-commentators/u/golden-m/19135962/gettyimages-1252815272.jpg?cb=1713299879" alt="Man Misidentified as Allen Shooter Sues Right-Wing Media Outlets" width="1320" height="816" loading="lazy" /> <div class="fdn-landing-block-teaser-item-text"> <h4 class="fdn-teaser-topic">Crime</h4> <h3 class="fdn-teaser-headline">Man Misidentified as Allen Shooter Sues Right-Wing Media Outlets</h3> <p class="fdn-teaser-infoline">By Jacob Vaughn</p> </div> </a> </div> <div class="uk-flex uk-flex-wrap uk-flex-column fdn-landing-block-teaser-item"> <a class="uk-display-block fdn-landing-block-teaser-item-image" href="https://www.dallasobserver.com/news/texas-rule-changes-for-hemp-products-could-be-around-the-corner-19147608" onclick=""> <img src="https://media2.dallasobserver.com/dal/imager/rule-changes-for-hemp-products-could-be-around-the-corner-in-texas/u/golden-m/19148724/copy_of_hh_delta_8_-22.jpg?cb=1713387328" alt="Rule Changes for Hemp Products in Texas Could Be Around the Corner" width="1320" height="816" loading="lazy" /> <div class="fdn-landing-block-teaser-item-text"> <h4 class="fdn-teaser-topic">Drugs</h4> <h3 class="fdn-teaser-headline">Rule Changes for Hemp Products in Texas Could Be Around the Corner</h3> <p class="fdn-teaser-infoline">By Jacob Vaughn</p> </div> </a> </div> <div class="uk-flex uk-flex-wrap uk-flex-column fdn-landing-block-teaser-item"> <a class="uk-display-block fdn-landing-block-teaser-item-image" href="https://www.dallasobserver.com/news/key-texas-legislature-runoff-could-tilt-republican-party-further-right-19040824" onclick=""> <img src="https://media1.dallasobserver.com/dal/imager/after-punishing-primaries-key-runoffs-could-tilt-texas-legislature-further-right/u/golden-m/19135546/0418opener.png?cb=1713295730" alt="After Punishing Primaries, Key Runoffs Could Tilt Texas Legislature Further Right" width="1320" height="816" loading="lazy" /> <div class="fdn-landing-block-teaser-item-text"> <h4 class="fdn-teaser-topic">News</h4> <h3 class="fdn-teaser-headline">After Punishing Primaries, Key Runoffs Could Tilt Texas Legislature Further Right</h3> <p class="fdn-teaser-infoline">By Tyler Hicks</p> </div> </a> </div> <div class="uk-flex uk-flex-wrap uk-flex-column fdn-landing-block-teaser-item"> <a class="uk-display-block fdn-landing-block-teaser-item-image" href="https://www.dallasobserver.com/news/proposed-south-dallas-police-training-facility-faces-local-opposition-19126966" onclick=""> <img src="https://media1.dallasobserver.com/dal/imager/stop-cop-city-proposed-dpd-training-facility-faces-local-opposition/u/golden-m/19126983/police-car-lights-siren-scott-rodgerson-unsplash.jpg?cb=1713217357" alt="&#39;Stop Cop City&#39;: Proposed DPD Training Facility Faces Local Opposition" width="1320" height="816" loading="lazy" /> <div class="fdn-landing-block-teaser-item-text"> <h4 class="fdn-teaser-topic">Crime</h4> <h3 class="fdn-teaser-headline">'Stop Cop City': Proposed DPD Training Facility Faces Local Opposition</h3> <p class="fdn-teaser-infoline">By Jacob Vaughn</p> </div> </a> </div> </div> </div> <script> jQuery(document).ready(function($) { Sailthru.personalize({ "sections": [ { "id": "a688ce6c-a044-11e6-b232-002590d1a2f6", "selector": ".TrendinginthisSection-7117785 > div.fdn-landing-block-section-teasers", "onSuccess": function(response) { Foundation.SailthruSPM.Personalize({ "selector": ".TrendinginthisSection-7117785 > div.fdn-landing-block-section-teasers", "data": response, "count": 4, "template": (article) => `<div class="uk-flex uk-flex-wrap uk-flex-column fdn-landing-block-teaser-item uk-first-column"> <a class="uk-display-block fdn-landing-block-teaser-item-image" href="${article.url}"><img src="${article.image.replace('/original/','/golden-m/')}" alt="${article.title}" width="1320" height="816" loading="lazy"> <div class="fdn-landing-block-teaser-item-text"> <h4 class="fdn-teaser-topic"> ${article.vars.topic_names[0]} </h4> <h3 class="fdn-teaser-headline"> ${article.title} </h3> <p class="fdn-teaser-infoline"> By ${article.author} </p> </div></a> </div>` }); } } ], "vars": { "placed": "7117785" } }); }); </script> <div stn-embed class="ZoneA ContentDefault uk-root fdn-margin-vert STNPlayerFloat comp-shell-stnplayer" data-component-id="STNPlayerFloat"> <div class='s2nPlayer k-YVSzPKyZ' data-type='float'></div> <script type='text/javascript' src='//embed.sendtonews.com/player3/embedcode.js?fk=YVSzPKyZ&cid=13268&offsetx=0&offsety=0&floatwidth=400&floatposition=bottom-right' data-type='s2nScript'></script> </div> <hidden hidden> <div class="ZoneA ContentDefault uk-margin-remove fdn-labeled uk-root fdn-margin-vert AirBillboard comp-" data-component-id="AirBillboard" inline-content-billboard fdn-ad-component> <div class="uk-flex uk-flex-row uk-width-1-1 uk-flex uk-flex-center" style=" border-top: thin solid #ccc; margin-top: 30px !important; padding-top: 30px; border-bottom: thin solid #ccc; margin-bottom: 0px; padding-bottom: 30px;"> <style> [apn-fixed-size-hook="billboard"] { background-color:#EEEEEE; width: 320px; height: 100px; } @media (min-width: 760px) { [apn-fixed-size-hook="billboard"] { width: 728px; height: 90px; } } @media (min-width: 990px) { [apn-fixed-size-hook="billboard"] { width: 970px; height: 250px; } } </style> <div apn-ad-hook="billboard" display-targets="desktop|tablet|mobile" apn-fixed-size-hook="billboard"> <script> if (typeof apntag === 'object') { apntag.anq.push(function() { if (typeof Foundation.ApnAds.fillAds === 'function') { Foundation.ApnAds.fillAds() } }) } </script> </div> </div> </div> </hidden> </div> </div> <div class="ev-grid-zone ev-column-zone uk-flex uk-flex-wrap uk-child-width-1-2@m"> <div class="ev-grid-col" data-ev-zone="ZoneB"> </div> <div class="ev-grid-col" data-ev-zone="ZoneC"> </div> </div> <div class="ev-grid-zone ev-secondary-zone" data-ev-zone="ZoneD"> <div class="ev-grid-col uk-width-1-1"> </div> </div> <div class="ev-grid-zone ev-footer-zone" data-ev-zone="GlobalFooter"> <div class="ev-grid-col uk-width-1-1"> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '274857686046164'); // Insert your pixel ID here. fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=274857686046164&ev=PageView&noscript=1"/></noscript> <script type='text/javascript'> (function() { window._sf_async_config = window._sf_async_config || {}; _sf_async_config.uid = 10424; _sf_async_config.domain = 'dallasobserver.com'; _sf_async_config.useCanonical = true; _sf_async_config.sections = '/news'; _sf_async_config.authors = "Robert Wilonsky"; function loadChartbeat() { window._sf_endpt = (new Date()).getTime(); var e = document.createElement('script'); var n = document.getElementsByTagName('script')[0]; e.type = 'text/javascript'; e.async = true; e.src = '//static.chartbeat.com/js/chartbeat.js'; n.parentNode.insertBefore(e, n); } loadChartbeat(); })(); </script> <!-- Quantcast Tag --> <script> var ezt = ezt ||[]; (function(){ var elem = document.createElement('script'); elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://pixel") + ".quantserve.com/aquant.js?a=p-a4LDpi_DEopn-"; elem.async = true; elem.type = "text/javascript"; var scpt = document.getElementsByTagName('script')[0]; scpt.parentNode.insertBefore(elem,scpt); }()); ezt.push({qacct: 'p-a4LDpi_DEopn-', uid: '' }); </script> <noscript> <img src="//pixel.quantserve.com/pixel/p-a4LDpi_DEopn-.gif" style="display: none;" border="0" height="1" width="1" alt="Quantcast"/> </noscript> <!-- End Quantcast Tag --> <!-- Adcellerant --> <script src="https://js.adsrvr.org/up_loader.1.1.0.js" type="text/javascript"></script> <script type="text/javascript"> ttd_dom_ready( function() { if (typeof TTDUniversalPixelApi === 'function') { var universalPixelApi = new TTDUniversalPixelApi(); universalPixelApi.init("eac6kka", ["07ypglr"], "https://insight.adsrvr.org/track/up"); } }); </script> <!-- End Adcellerant --> <script> var slideModalClassHook = `SurveyLinkSlideModal-slide-modal-container` var localStorageDismissedKey = `SurveyLinkSlideModalSlideModalDismissed`; var localStorageVersionKey = `SurveyLinkSlideModalSlideModalVersion`; var slideModalVersion = 1; var delayBeforeShow = 7 * 1000; var delayAfterDismissed = 3 * 24 * 60 * 60 * 1000; var slideModalBlock = jQuery(` <div class="GlobalFooter ContentDefault SurveyLinkSlideModal-slide-modal-container uk-root fdn-margin-vert SurveyLinkSlideModal comp-page-slidemodal" data-component-id="SurveyLinkSlideModal"> <button type="button" class="uk-icon-button" uk-icon="close"></button> <a target="_blank" href="https://www.surveymonkey.com/r/MJBX8B7"><img src="/binary/b05e/DAL_Audience-Survey_300x250.jpg" width="300" height="250" alt="" /></a> </div> `); var slideModalStylesText = ` .${slideModalClassHook} { position: fixed; top: calc(50% - 125px); right: -300px; width: 300px; height: 250px; transition: right 750ms ease-in-out; box-shadow: 4px 4px 4px rgba(0,0,0,0.5); background-color: #FFF; border: solid 1px rgba(0, 0, 0, 0.5); box-sizing:border-box; z-index:44; } .${slideModalClassHook}.showSlideModal { right: 0; } .${slideModalClassHook}.hideSlideModal { right: -300px; transition: right 300ms ease-in-out; } .${slideModalClassHook} .uk-icon-button { position: absolute; top: 5px; right: 5px; width: 26px; height: 26px; } `; var getLocalStorageVersion = function () { return parseInt(window.localStorage.getItem(localStorageVersionKey)) || slideModalVersion; } var getLastDismissedTime = function () { return parseInt(window.localStorage.getItem(localStorageDismissedKey)) || 0; } var clearSlideModalLocalStorage = function () { window.localStorage.removeItem(localStorageVersionKey, slideModalVersion); window.localStorage.removeItem(localStorageDismissedKey); } var resetSlideModalLocalStorage = function () { window.localStorage.setItem(localStorageVersionKey, slideModalVersion); window.localStorage.removeItem(localStorageDismissedKey); } var injectSlideModalStyles = function () { var slideModalStyleContainer = jQuery(`<style></style>`); slideModalStyleContainer.text(slideModalStylesText); jQuery('head').append(slideModalStyleContainer); } var injectSlideModalBlock = function () { jQuery('body').append(slideModalBlock); } var showSlideModal = function () { slideModalBlock.addClass(`showSlideModal`).removeClass(`hideSlideModal`); } var hideSlideModal = function () { slideModalBlock.addClass(`hideSlideModal`).removeClass(`showSlideModal`); } var dismissSlideModal = function () { window.localStorage.setItem(localStorageVersionKey, slideModalVersion); window.localStorage.setItem(localStorageDismissedKey, new Date().getTime()); hideSlideModal(); } var setupSlideModalBehavior = function () { var dismissSelectors = [ `.${slideModalClassHook} .uk-icon-button`, `.${slideModalClassHook} a`, ]; jQuery(document).on(`keydown`, (e) => { if (e.key === `Escape`) hideSlideModal(); }); jQuery(document).on(`click`, `:not(.${slideModalClassHook})`, hideSlideModal); jQuery(document).on(`click`, dismissSelectors.join(`, `), dismissSlideModal); } if (getLocalStorageVersion() < slideModalVersion) { resetSlideModalLocalStorage(); } if (new Date().getTime() > getLastDismissedTime() + delayAfterDismissed) { injectSlideModalStyles(); injectSlideModalBlock(); setupSlideModalBehavior(); setTimeout(showSlideModal, delayBeforeShow); } </script> </div> </div> <div class="ev-grid-zone ev-closer-zone" data-ev-zone="Closer"> <div class="ev-grid-col uk-width-1-1"> <style> .uk-root .isAdmin .ev-footer-zone { padding:0; background:none; margin:30px 0 0; display: block; } .uk-root .isAdmin .ev-footer-zone .ev-grid-col { padding:0; width: 100%; } </style> <div class="Closer ContentDefault uk-margin-remove comp-shell-siteglobalfooter uk-root fdn-margin-vert SiteGlobalFooter comp-shell-siteglobalfooter" data-component-id="SiteGlobalFooter"> <div class="fdn-site-footer-logo"> <a href="https://www.dallasobserver.com/"><img src="/images/air/NT-dal.png" alt="Dallas Observer"></a> </div> <div class="fdn-site-footer-block"> <div class="fdn-custom-footer-navigation-link-block fdn-custom-footer-navigation-link-block-wide uk-visible@s"> <div class="uk-flex uk-child-width-1-5 fdn-custom-footer-navigation-link-block-wide-columns"> <div class="fdn-custom-footer-navigation-link-block-column fdn-custom-footer-navigation-link-block-issue-block"> <ul class="uk-list"> <li> <a href="https://voice-media-group.dcatalog.com/v/Dallas-Observer-flipbook-04-18-24/" class="uk-display-block" target="_blank" title=""><img src="/imager//b/r-cover/19149991/c420/04-18-24-cover.jpg" alt="" width="600" height="704" class="no-foundation-imgeditor " loading="lazy" /></a> </li> <li class="uk-margin-remove"> <a href="https://voice-media-group.dcatalog.com/v/Dallas-Observer-flipbook-04-18-24/" target="_blank">View This Week's Print Issue</a> </li> <li> <a href="https://www.dallasobserver.com/about/circulation">Where To Find Dallas Observer In Print</a> </li> </ul> </div> <div class="fdn-custom-footer-navigation-link-block-column"> <ul class="uk-list"> <li class="fdn-custom-footer-navigation-link-block-column-header"><a href="https://www.dallasobserver.com/" title="" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Editorial')" >Editorial</a></li> <li><a href="https://www.dallasobserver.com/news" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'News')" title="">News</a></li> <li><a href="https://www.dallasobserver.com/restaurants" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Food & Drink')" title="">Food & Drink</a></li> <li><a href="https://www.dallasobserver.com/arts" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Arts & Culture')" title="">Arts & Culture</a></li> <li><a href="https://www.dallasobserver.com/music" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Music')" title="">Music</a></li> <li><a href="https://www.dallasobserver.com/things-to-do" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Things to Do')" title="">Things to Do</a></li> <li><a href="https://www.dallasobserver.com/topic/dallas-observer-events-17084419" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Observer Events')" title="">Observer Events</a></li> <li><a href="https://www.dallasobserver.com/newsletters" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Newsletters')" title="">Newsletters</a></li> </ul> </div> <div class="fdn-custom-footer-navigation-link-block-column"> <ul class="uk-list"> <li class="fdn-custom-footer-navigation-link-block-column-header"><a href="https://www.dallasobserver.com/promotions" title="" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Marketing')" >Marketing</a></li> <li><a href="https://www.dallasobserver.com/promotions" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Promotions & Free Stuff')" title="">Promotions & Free Stuff</a></li> <li><a href="https://www.dallasobserver.com/advertise" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Advertise With Us')" title="">Advertise With Us</a></li> <li><a href="https://www.dallasobserver.com/about/terms-of-use" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Terms of Use')" title="">Terms of Use</a></li> <li><a href="https://www.dallasobserver.com/about/privacy-policy" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Privacy Policy')" title="">Privacy Policy</a></li> </ul> </div> <div class="fdn-custom-footer-navigation-link-block-column"> <ul class="uk-list"> <li class="fdn-custom-footer-navigation-link-block-column-header"><a href="https://www.dallasobserver.com/about" title="" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'More')" >More</a></li> <li><a href="https://www.dallasobserver.com/about" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'About Us')" title="">About Us</a></li> <li><a href="https://www.dallasobserver.com/about/contact" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Contact Us')" title="">Contact Us</a></li> <li><a href="https://www.dallasobserver.com/about/staff" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Staff')" title="">Staff</a></li> <li><a href="https://www.dallasobserver.com/about/careers" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Careers')" title="">Careers</a></li> <li><a href="https://www.dallasobserver.com/about/flipbooks" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Flipbook Archive')" title="">Flipbook Archive</a></li> </ul> </div> <div class="fdn-custom-footer-navigation-link-block-column"> <ul class="uk-list"> <li class="fdn-custom-footer-navigation-link-block-column-header"><a href="https://www.voicemediagroup.com/" title="" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Voice Media Group')" >Voice Media Group</a></li> <li><a href="https://www.westword.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Denver Westword')" title="">Denver Westword</a></li> <li><a href="https://www.browardpalmbeach.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'New Times Broward-Palm Beach')" title="">New Times Broward-Palm Beach</a></li> <li><a href="https://www.miaminewtimes.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Miami New Times')" title="">Miami New Times</a></li> <li><a href="https://www.phoenixnewtimes.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Phoenix New Times')" title="">Phoenix New Times</a></li> <li><a href="https://www.vaudiencelabs.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'V Audience Labs')" title="">V Audience Labs</a></li> <li><a href="https://www.vdigitalservices.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'V Digital Services')" title="">V Digital Services</a></li> </ul> </div> </div> </div> <div class="fdn-custom-footer-navigation-link-block fdn-custom-footer-navigation-link-block-narrow uk-hidden@s"> <div class="fdn-custom-footer-navigation-link-block-narrow-rows"> <div class="fdn-custom-footer-navigation-link-block-row"> <ul class="uk-nav-default uk-nav-parent-icon" uk-nav="multiple: false"> <li class="uk-parent"> <a href="https://www.dallasobserver.com/" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Editorial')" class="fdn-custom-footer-navigation-link-block-row-header" title="">Editorial</a> <ul class="uk-nav-sub uk-child-width-1-2 uk-grid-small" uk-grid> <li><a href="https://www.dallasobserver.com/news" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'News')" title="">News</a></li> <li><a href="https://www.dallasobserver.com/restaurants" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Food & Drink')" title="">Food & Drink</a></li> <li><a href="https://www.dallasobserver.com/arts" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Arts & Culture')" title="">Arts & Culture</a></li> <li><a href="https://www.dallasobserver.com/music" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Music')" title="">Music</a></li> <li><a href="https://www.dallasobserver.com/things-to-do" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Things to Do')" title="">Things to Do</a></li> <li><a href="https://www.dallasobserver.com/topic/dallas-observer-events-17084419" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Observer Events')" title="">Observer Events</a></li> <li><a href="https://www.dallasobserver.com/newsletters" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Newsletters')" title="">Newsletters</a></li> </ul> </li> <li class="uk-parent"> <a href="https://www.dallasobserver.com/promotions" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Marketing')" class="fdn-custom-footer-navigation-link-block-row-header" title="">Marketing</a> <ul class="uk-nav-sub uk-child-width-1-2 uk-grid-small" uk-grid> <li><a href="https://www.dallasobserver.com/promotions" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Promotions & Free Stuff')" title="">Promotions & Free Stuff</a></li> <li><a href="https://www.dallasobserver.com/advertise" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Advertise With Us')" title="">Advertise With Us</a></li> <li><a href="https://www.dallasobserver.com/about/terms-of-use" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Terms of Use')" title="">Terms of Use</a></li> <li><a href="https://www.dallasobserver.com/about/privacy-policy" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Privacy Policy')" title="">Privacy Policy</a></li> </ul> </li> <li class="uk-parent"> <a href="https://www.dallasobserver.com/about" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'More')" class="fdn-custom-footer-navigation-link-block-row-header" title="">More</a> <ul class="uk-nav-sub uk-child-width-1-2 uk-grid-small" uk-grid> <li><a href="https://www.dallasobserver.com/about" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'About Us')" title="">About Us</a></li> <li><a href="https://www.dallasobserver.com/about/contact" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Contact Us')" title="">Contact Us</a></li> <li><a href="https://www.dallasobserver.com/about/staff" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Staff')" title="">Staff</a></li> <li><a href="https://www.dallasobserver.com/about/careers" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Careers')" title="">Careers</a></li> <li><a href="https://www.dallasobserver.com/about/flipbooks" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Flipbook Archive')" title="">Flipbook Archive</a></li> </ul> </li> <li class="uk-parent"> <a href="https://www.voicemediagroup.com/" target="_self" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Voice Media Group')" class="fdn-custom-footer-navigation-link-block-row-header" title="">Voice Media Group</a> <ul class="uk-nav-sub uk-child-width-1-2 uk-grid-small" uk-grid> <li><a href="https://www.westword.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Denver Westword')" title="">Denver Westword</a></li> <li><a href="https://www.browardpalmbeach.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'New Times Broward-Palm Beach')" title="">New Times Broward-Palm Beach</a></li> <li><a href="https://www.miaminewtimes.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Miami New Times')" title="">Miami New Times</a></li> <li><a href="https://www.phoenixnewtimes.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Phoenix New Times')" title="">Phoenix New Times</a></li> <li><a href="https://www.vaudiencelabs.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'V Audience Labs')" title="">V Audience Labs</a></li> <li><a href="https://www.vdigitalservices.com/" target="_blank" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'V Digital Services')" title="">V Digital Services</a></li> </ul> </li> </ul> </div> </div> </div> <div class="uk-flex uk-flex-center uk-flex-column uk-flex-middle custom-footer-row-bottom custom-footer-row"> <div class="fdn-custom-footer-navigation-link-social-block"> <div> <a class="fdn-site-header-social-icon-facebook" href="https://www.facebook.com/DallasObserver" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Facebook')" target="_blank" rel="nofollow"><span>facebook</span></a> </div> <div> <a class="fdn-site-header-social-icon-instagram" href="https://www.instagram.com/dallasobserver/" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Instagram')" target="_blank" rel="nofollow"><span>instagram</span></a> </div> <div> <a class="fdn-site-header-social-icon-twitter" href="https://twitter.com/dallas_observer" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Twitter')" target="_blank" rel="nofollow"><span>twitter</span></a> </div> <div> <a class="fdn-site-header-social-icon-linkedin" href="https://www.linkedin.com/company/dallas-observer/" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'LinkedIn')" target="_blank" rel="nofollow"><span>linkedin</span></a> </div> <div> <a class="fdn-site-header-social-icon-tiktok" href="https://www.tiktok.com/@dallas_observer" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'TikTok')" target="_blank" rel="nofollow"><span>tiktok</span></a> </div> <div> <a class="fdn-site-header-social-icon-threads" href="https://www.threads.net/@dallasobserver" onclick="ga('send', 'event', 'Nav-Bottom', 'Click', 'Threads')" target="_blank" rel="nofollow"><span>threads</span></a> </div> </div> <div class="uk-text-center"> <div class="fdn-copyright-text"> Use of this website constitutes acceptance of our <a href="/about/terms-of-use">terms of use</a>, <a href="/about/cookies">our cookies policy</a>, and our <a href="/about/privacy-policy">privacy policy</a> The Dallas Observer may earn a portion of sales from products & services purchased through links on our site from our affiliate partners. &copy;2024 Dallas Observer, LP. All rights reserved.<br> <a onclick="illow.showWidget()">Do Not Sell or Share My Information</a> </div> <div class="fdn-copyright-text uk-margin-small-top"> <a class="fdn-copyright-link" href="https://publishwithfoundation.com/" target="_blank"><img loading="lazy" width="110" alt="Powered By Foundation" src="/images/PoweredByFoundation.svg"></a> </div> </div> </div> </div> </div> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsMediaOrganization", "name": "Dallas Observer", "url": "https://www.dallasobserver.com", "logo": "https://www.dallasobserver.com/images/dal-main-logo.svg", "telephone": "(214) 757-9000", "address": { "@type": "PostalAddress", "streetAddress": "2030 Main St", "addressLocality": "Dallas", "addressRegion": "TX", "postalCode": "75201", "addressCountry": "US" }, "sameAs": [ "https://www.facebook.com/DallasObserver", "https://twitter.com/dallas_observer", "https://www.instagram.com/dallasobserver/", "https://www.linkedin.com/company/dallas-observer/" ] } </script> </div> </div> </div> </div> </body> </html>