Connect with us

Midwest

Border Patrol chief targeted in alleged murder-for-hire plot focused on Snapchat messages

Published

on

Border Patrol chief targeted in alleged murder-for-hire plot focused on Snapchat messages

NEWYou can now listen to Fox News articles!

A federal jury is weighing a case centered on whether a Chicago man’s Snapchat messages amounted to a genuine murder-for-hire plot targeting a senior U.S. Border Patrol official or reckless talk shared online.

The defense rested Wednesday in the federal trial of Juan Espinoza Martinez, 37, who is accused of soliciting the murder of Border Patrol Commander at Large Greg Bovino by offering cash rewards through Snapchat, according to The Associated Press. Espinoza Martinez did not testify.

U.S. District Judge Joan Lefkow sent jurors home for the day and told them to return Thursday morning for closing arguments, after which the case is expected to be handed to the jury, the AP reported.

Prosecutors allege Espinoza Martinez unknowingly sent Snapchat messages to a government informant, offering $2,000 for information on Bovino’s whereabouts and $10,000 “if you take him down.” Jurors were shown screenshots of the messages, some of which included a photograph of Bovino, according to testimony cited by the AP.

Advertisement

OKLAHOMA MAN CHARGED WITH THREATENING TO KILL ICE AGENTS, MAGA REPUBLICANS ONLINE

Border Patrol Commander Gregory Bovino in Kenner, Jefferson Parish, near New Orleans during Operation Catahoula Crunch Dec. 6. (Madison Thorn/Anadolu via Getty Images)

Federal prosecutors argued in opening statements that the messages went beyond angry rhetoric or political speech and represented a deliberate attempt to solicit violence against a federal law enforcement official.

“This case is not about someone expressing strong views about immigration enforcement,” Assistant U.S. Attorney Minje Shin told jurors, according to the AP. Prosecutors maintain the messages showed intent, not a joke or gossip.

Defense attorneys countered that Espinoza Martinez, a carpenter with little money in his bank account, was merely repeating rumors circulating on social media and in his neighborhood. His attorneys argued the messages amounted to “neighborhood gossip,” not a real plan to harm anyone, the AP reported.

Advertisement

NEW JERSEY TWINS CHARGED IN THREATS TO KILL DHS OFFICIAL, ‘SHOOT ICE ON SIGHT’

Residents and protesters clash with U.S. Border Patrol agents and other federal agents in the Little Village neighborhood Oct. 23, 2025, in Chicago, Illinois. (Joshua Lott/The Washington Post via Getty Images)

The government’s first witness was Adrian Jimenez, a construction company owner who had communicated with Espinoza Martinez about work and later turned over the Snapchat messages to authorities. Jimenez testified that he took the messages seriously and contacted a Homeland Security investigator he knew, according to the AP.

Jimenez acknowledged under questioning that he had a prior felony conviction, had served prison time and had previously been paid as a government informant, though he did not provide details, the AP reported. Defense attorneys questioned whether Jimenez truly believed the messages were a solicitation for murder.

“You’re not somebody that commits murder for hire, right?” defense attorney Dena Singer asked Jimenez.

Advertisement

“Nope,” Jimenez replied.

Espinoza Martinez’s younger brother, Oscar Espinoza Martinez, also testified for the defense, saying he saw a Facebook post about a rumored bounty before receiving the Snapchat messages and took them as a joke. 

“Nobody’s going to do that for $10K,” he testified, according to the AP.

The case stems from an investigation launched in October, when ICE Homeland Security Investigations received information from a confidential source indicating a hit had been placed on Bovino. Espinoza Martinez was arrested Oct. 6 in Burr Ridge, Illinois.

ILLEGAL IMMIGRANT INDICTED IN ASSAULT ON ICE AGENTS IN TEXAS

Advertisement

People detained earlier in the day are taken to a parking lot on the far north side of the city before being transferred to an Immigration and Customs Enforcement center Oct. 31, 2025, in Chicago.  (Jamie Kelter Davis/Getty Images)

After the arrest, the Department of Homeland Security issued statements condemning the alleged plot.

“The arrest of this ruthless and violent member of the Latin Kings, a criminal organization notorious for its cruelty and disregard for the law, highlights the steadfast commitment of Homeland Security Investigations and our law enforcement partners to protect our communities and those who uphold justice,” Matthew Scarpino, special agent in charge of HSI Chicago, said in the October release.

“Targeting a senior federal officer is a brazen and direct assault on the rule of law, and HSI will remain persistent in dismantling violent gangs like the Latin Kings that threaten public safety.”

WAVE OF CAR ATTACKS ON ICE AGENTS FOLLOWS INCENDIARY RHETORIC FROM TARGET-CITY LEADERS

Advertisement

DHS Assistant Secretary Tricia McLaughlin also addressed the case after the arrest.

“Depraved individuals like Juan Espinoza Martinez — who do not value human life and threaten law enforcement — do NOT belong in this country,” McLaughlin said. “We will not allow criminal gangs to put hits on U.S. government officials and our law enforcement officers. Thanks to ICE and our federal law enforcement partners, this thug is off our streets and behind bars.

“These attacks on our brave law enforcement officers must END,” McLaughlin added. “Secretary Noem has been crystal clear: If you threaten or lay a hand on law enforcement, you will be prosecuted to the fullest extent of the law.”

SUSPECT WITH LENGTHY RAP SHEET ARRESTED FOR ALLEGED PAM BONDI ‘MURDER-FOR-HIRE’ SCHEME: FBI

The Department of Justice is prosecuting Espinoza Martinez on one count of murder for hire. If convicted, he faces up to 10 years in federal prison, according to the AP.

Advertisement

Bovino did not testify at the trial. Closing arguments are scheduled for Thursday, after which the jury will begin deliberations.

CLICK HERE TO DOWNLOAD THE FOX NEWS APP

Espinoza Martinez, who was born in Mexico, has lived in the United States for decades and does not have legal permission to remain in the country, according to federal authorities. In recorded interviews played for jurors, he denied threatening anyone or being a gang member and said he worked daily as a union laborer, the AP reported.

The Associated Press contributed to this report. 

Stepheny Price covers crime, including missing persons, homicides and migrant crime. Send story tips to stepheny.price@fox.com.

Advertisement

Read the full article from Here

Ohio

2 arrested at Ohio State pro-Israel event featuring IDF soldiers

Published

on

2 arrested at Ohio State pro-Israel event featuring IDF soldiers


play

Two individuals were arrested on Ohio State University’s campus April 14 during an event held by a pro-Israel student organization, the university confirmed.

The event, which was hosted at the Ohio Union by the OSU chapter of Students Supporting Israel, was part of the “Triggered: From Combat to Campus” speaking tour. The tour features Israeli Defense Forces soldiers “sharing firsthand stories from October 7th and beyond,” according to Students Supporting Israel’s website.

Advertisement

“The name plays on the irony of campus outrage, where many students were ‘triggered’ not by Hamas’ terror, but by Israel’s defense,” according to the website.

Two IDF soldiers were scheduled to speak at the event, held at 6 p.m. inside the Ohio Union.

In response to the event, Students for Justice in Palestine, Faculty and Staff for Justice in Palestine at OSU and Law Students for Justice in Palestine at Ohio State Moritz College of Law scheduled a protest.

“We vehemently oppose any attempts to commemorate or honor war criminals, in addition to any acts of normalization with the zionist entity,” an Instagram post about the protest read. “We will not stand by and allow them to be welcomed onto our campus.”

Advertisement

It was at this protest that two individuals were arrested, Ohio State spokesperson Dan Hedman said in a statement.

“Following multiple warnings, two individuals were arrested for criminal trespass after disrupting a scheduled event inside the Ohio Union and violating university space standards,” Hedman said.

Whether the arrested individuals are affiliated with Ohio State was not immediately available.

In 2024, more than 40 people were arrested on Ohio State’s campus during a string of anti-Israel protests in the days leading up to spring commencement. About half of those arrested individuals were affiliated with the university.

Advertisement

This is a breaking story and will be updated as more information is available.

Higher education reporter Sheridan Hendrix can be reached at shendrix@dispatch.com and on Signal at @sheridan.120. You can follow her on Instagram at @sheridanwrites.





Source link

Continue Reading

South Dakota

South Dakota Sports Hall of Fame to induct 21 new members in September

Published

on

South Dakota Sports Hall of Fame to induct 21 new members in September


The South Dakota Sports Hall of Fame announced on Tuesday, April 14, that its newest induction class will feature 21 people, including six who will be inducted posthumously.

The induction ceremony will be on Sunday, Sept. 13, 2026, at the Sioux Falls Convention Center. These 21 inductees will bring the total up to 418 in the hall of fame.

2026 South Dakota Sports Hall of Fame Class

  • Taylor Baker: Rapid City Stevens (1998), Kansas State (2004)
  • Mike Begeman: Parker (1975), Augustana (1979)
  • Howard Blumhardt (posthumously): Bowdle (1946), South Dakota (1950)
  • Frank Cutler: Langford (1978), South Dakota State (1983)
  • Julie (Krauth) Dearring: Des Moines Roosevelt (IA) (1989), Augustana (1994)
  • Laticia DeCory: Pine Ridge (1989), Utah State (1994)
  • Jim Dorman: Castlewood (1970), South Dakota State (1975)
  • Dan Freidel: Armour (1980), Augustana (1984)
  • Barry French (posthumously): Sioux Falls Washington (1940), Purdue (1947)
  • Jeff Fylling (posthumously): Lennox (1974), Augustana (1978)
  • Randi (Morgan) Haines: Mitchell (2000), Dakota Weslyan (2004)
  • Mylo Jackson (posthumously): Ardmore (1929), Northern State (1934)
  • Greg Jimmerson: Rapid City Stevens (1993), Stanford (1998)
  • Louis Koupal (posthumously): St. Wenceslaus Catholic Parochial High School (1915)

  • Tim Miles: Doland, South Dakota native
  • Mike Miller: Mitchell (1998), Florida
  • Kent Mueller: Freeman (1976), Dakota Weslyan, South Dakota (1985)
  • John Papendick: Bridgewater (1978), South Dakota State (1984)
  • Thelma (Austin) Smalley (posthumously): Wagner (1926)
  • Jim Sorensen: Sioux Falls Washington (1962), Augustana (1966)
  • Jason Sutherland: Watertown (1993), Missouri (1997)



Source link

Continue Reading

Wisconsin

Powerful storms move through SE Wisconsin

Published

on

Powerful storms move through SE Wisconsin


Severe storms move through southeast Wisconsin bringing damage and flooding.

Advertisement

Powerful storms move through SE Wisconsin

Severe storms move through southeast Wisconsin bringing damage and flooding.

Advertisement

>> FROM WEATHERWATCH 12. THIS IS A SEVERE WEATHER UPDATE. >> GOOD EVENING. AND WEATHERWATCH 12 CHIEF METEOROLOGIST MARK BADEN NEW SEVERE THUNDERSTORM WARNING AND NEW FLASH FLOOD WARNING TO TALK ABOUT HERE ACROSS SOUTHEASTERN WISCONSIN. SO WE STILL HAVE THIS LINE OF STORMS. THE NEW SEVERE THUNDERSTORM WARNING IS PRETTY MUCH ALL OF WANT TO STOP THIS AND TALK ABOUT THE WARNINGS THAT WE DO HAVE IN PLACE RIGHT NOW. TALK ABOUT THE LATEST WARNING. THAT’S THE SEVERE THUNDERSTORM WARNING FOR WALWORTH COUNTY GOES ALL THE WAY UNTIL 9:00. THE STORMS ARE STILL OUT TO THE WEST. THAT’S GOING TO BRING WITH IT POSSIBLY SOME STRONGER WINDS AND SOME HAIL. THERE’S ALSO A NEW FLASH FLOOD WARNING THAT CONTINUES UNTIL 11:00. I’M GOING TO ZOOM IN ON THIS AREA BECAUSE IT LOOKS A LITTLE IT’S KIND OF HARD TO FIND WHERE THIS IS. LET’S TAKE YOU BACK INTO SOUTHEASTERN WISCONSIN AND WE’LL BRING YOU BACK IN TO THIS AREA THAT WE ARE SEEING HERE. IT’S SO WE’VE GOT THIS LITTLE AREA AND THAT’S ON TOP OF THIS OTHER FLASH FLOOD WARNING. BUT THIS IS THE NEWEST ONE. THIS INCLUDES DOWNTOWN MILWAUKEE. THIS INCLUDES WAUWATOSA AND WEST ALLIS, BROOKFIELD, ELM GROVE AND PEWAUKEE. WHY? BECAUSE WE KEEP GETTING THIS SAME RAIN OVER THE SAME PLACES, GETTING HIT AGAIN AND AGAIN AND AGAIN. ADD UP. WE’RE SEEING SOME FLOODING ISSUES. WE’VE HAD FLOODING ISSUES ALONG I-43 IN NORTHERN MILWAUKEE COUNTY. WE’VE HAD SOME FLOODING ISSUES IN MEQUON, AND I’M SURE WE’RE HAVING FLOODING ISSUES ALSO INTO PARTS OF WASHINGTON COUNTY EXTENDING BACK INTO DODGE COUNTY, WHERE WE CONTINUE TO SEE THIS SAME AREA. THEN THE NEXT PART OF THIS STORM, AGAIN, THIS AREA HASN’T HAD ANY RAIN AT ALL. SO YOU’RE STILL PRIMED FOR THE POSSIBILITY OF MORE SEVERE WEATHER. THAT’S WHAT THIS NEW SEVERE THUNDERSTORM WARNING IS INTO PARTS OF WALWORTH COUNTY. AGAIN, THAT GOES UNTIL 9:00 TONIGHT. AND WE’LL CONTINUE TO SEE THIS HEAVY RAIN. WE NEED TO MAKE IT THROUGH ANOTHER HOUR OR TWO, AND THEN WE SHOULD START SEEING OURSELVES ON THE OTHER SIDE, AT LEAST OF THIS THREAT. BUT IT’S NOT DONE JUST YET. STAY WITH WEATHERWATCH 12. WE’LL CONTINUE TO HAVE UPDATES.

Advertisement

Powerful storms move through SE Wisconsin

Severe storms move through southeast Wisconsin bringing damage and flooding.

Updated: 8:15 PM CDT Apr 14, 2026

Editorial Standards

Advertisement

Severe storms move through southeast Wisconsin bringing damage and flooding.

Severe storms move through southeast Wisconsin bringing damage and flooding.

Advertisement

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

Advertisement

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

Advertisement

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wisn.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wisn.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

Advertisement

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

Advertisement

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

Advertisement

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

Advertisement

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

Advertisement

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

Advertisement

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wisn.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wisn.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

Advertisement

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

Advertisement

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Loading more articles…



Source link

Advertisement
Continue Reading

Trending