Connect with us

Maine

Opinion: A clear solution to Maine’s youth hockey challenges

Published

on

Opinion: A clear solution to Maine’s youth hockey challenges


A recent article about the decline of youth hockey participation in Maine raised important concerns, but also overlooked key dynamics and solutions that could help the sport thrive (“Maine youth ice hockey is losing players. No one is sure how to stop it,” Jan. 10).

As the president of Midcoast Youth Hockey – Junior Polar Bears, I see a very different picture in our region. Our program experienced 146% growth last season and is approaching another 25% growth this season. These numbers paint a clear picture. The issue is not a lack of interest in hockey — it’s a lack of available ice time and modern facilities to meet growing demand.

Youth hockey programs across Maine are thriving when they have the resources and ice time to do so. The challenge isn’t that kids aren’t interested in hockey or that families can’t afford the sport — it’s that many families are forced to make difficult decisions because ice time is scarce and facilities are outdated.

In our region, competition for ice time is fierce. Every single arena is operating at or near capacity, juggling youth hockey, high school teams, clinics, camps and college programs. When rinks close or fail to modernize, the ripple effect forces players and families to drive 30 to 60 minutes — often in the early morning or late at night — to find practice and game slots. This is not sustainable. As I always say, “The only thing that could negatively impact demand for ice time is a lack of ice time.”

Advertisement

The article’s focus on high school hockey teams consolidating misses a larger reality. Many players are shifting to club hockey because it offers more ice time, better coaching and higher levels of competition. This is not about cost. Families are investing more in hockey because it brings their kids joy and growth opportunities. What’s needed is a solution to make hockey accessible and sustainable for all levels of play — not just those who can afford to travel to other regions.

The closing of several rinks over the past decade, while concerning, doesn’t signal a lack of interest in hockey. It highlights the need for better-designed facilities that can meet demand and operate sustainably. Single-sheet rinks are no longer viable — they lack the capacity to host tournaments or generate the revenue needed for long-term operations.

A dual-surface facility, strategically located in Brunswick, would be a game-changer for the Midcoast region. It would not only meet the growing demand for ice time but also provide an economic boost to the community. Dual-surface facilities have the capacity to host regional tournaments, clinics and recreational leagues, generating $1.4 million to $2.2 million annually in economic activity. This model has been proven successful in other parts of the country, where public-private partnerships have enabled towns to build and operate financially viable arenas.

A new dual-surface facility in Brunswick wouldn’t just serve youth hockey. It would also support middle and high school teams, adult recreation leagues, figure skating and adaptive skating programs. Programs like adaptive skating, especially for veterans with disabilities, honor Brunswick’s military heritage while making skating more inclusive.

This type of investment solves two problems at once. It ensures local players have access to sufficient ice time, reducing the need for long drives, and it helps prevent the consolidation of high school teams by supporting feeder programs. The numbers don’t lie — when kids have the chance to play, participation grows.

Advertisement

We need to stop thinking about hockey as a sport in decline and start addressing the real barriers to growth: limited ice time and outdated facilities. Rather than pulling back on investment in rinks, we need to move forward with smarter, community-driven solutions. A dual-surface arena in Brunswick is one such solution, and it’s time for government and business leaders to work together to make it happen.

The article noted a lack of a “plan to build hockey back up.” Here’s the plan: Build the infrastructure, and the players will come. Hockey isn’t fading — it’s waiting for the ice.



Source link

Maine

‘Handyman special’ Quonset hut-style home hits market for under $300K in Maine

Published

on

‘Handyman special’ Quonset hut-style home hits market for under 0K in Maine


A partially finished Quonset hut-style home in Maine is seeking out an industrious buyer who can put the finishing touches on the one-of-a-kind property—and help it to fulfill its impressive potential.

While the dwelling might not be for everyone, particularly those lacking in “tools and imagination,” its very affordable $270,000 asking price will undoubtedly make it a prime target for those with the ability to see beyond what is currently little more than an empty shell.

“This striking Quonset hut-style residence offers a one-of-a-kind ‘handyman special,’ perfect for those looking to create a custom vacation getaway or a high-potential Airbnb,” the listing notes.

Located in Shapleigh in the heart of the state’s lake region, the unfinished abode is situated on a lush 11.79-acre parcel that is within walking distance of Square Pond and Mousam Lake—as well as an array of more metropolitan amenities.

Advertisement
Maine’s got a wild one! A partially finished Quonset hut home seeks a buyer with tools and imagination. Realtor.com

“Any owner will have multiple ponds and lakes at their fingertips in addition to countless hiking trails, all while being within an easy radius for shopping and convenience,” said listing agent Ezra Hodgson of The Zoeller Group at Keller Williams Coastal and Lakes & Mountains Realty.

While 75% of the construction is already complete, the remainder provides a “blank canvas” for the next buyer’s finishing touches, although they will first need to finish the installation of the electric, plumbing, and insulation before they can embark on creating their own aesthetic for the home.

“Septic and well are in, hooked up, and functional,” Hodgson notes. “Framing is almost completed. Custom white maple kitchen cabinets are already installed. A buyer will need to complete running electrical and plumbing, then insulation and drywall, and their finish work like fixtures, trim, decks, etc.”

The 1,792-square-foot “handyman special” boasts a distinctive exterior with arched metal design in keeping with the traditional quonset hut style, which was inspired by a military structure called the Nissen hut used by British forces during World War I.

After the war, the style was adopted by American troops stationed at the Quonset Point Naval Air Station in Rhode Island—from which the huts now take their name—who worked to advance the design, making it lighter, more flexible, and faster to build.

Advertisement

According to Innovation & Technology magazine, an estimated 170,000 quonset huts were built by the Americans during World War II, and when that conflict came to an end in 1945, the surplus structures were passed to civilians, who began using them as prefabricated vacation residences, storage units, and even guesthouses.

While they have since fallen out of style somewhat, the structures continue to be favored for their ease of construction—and their multifaceted design, which allows for all kinds of personalizations, much like the unfinished dwelling in Maine.


Interior view of an unfinished Quonset hut-style home with exposed wooden framing and a pile of lumber.
Quonset huts originated from WWI military structures, advanced by US troops in Rhode Island. Realtor.com

Inside, an open-concept floor plan features high ceilings, multiple sliding glass doors, and a loft area that could be transformed into a primary suite or additional living space.

The listing features several staged images that paint a stunning picture of what the home could look like, if someone is willing to invest in its completion.

Hodgson says its location and the “ability to finish it into exactly what a buyer wants” are some of the home’s most impressive features.

The 1,700-square-foot property is configured with four bedrooms and three bathrooms, although the construction process is not so far along that a future buyer couldn’t alter that layout.

Advertisement

“The interior framing is largely in place, showing a thoughtful layout that includes a kitchen area already equipped with quality solid wood cabinetry,” the listing notes.

“The bathroom is started with a vanity, toilet, and shower pan partially installed. A spacious loft area provides excellent potential for a primary suite or additional living space overlooking the main floor.”

Hodgson believes the next owner might be seeking “the perfect blueprint for their vacation home. They could be someone looking to get away from the hustle and bustle, and take advantage of the peace and quiet that the woods of Maine have to offer, or maybe it’s an investor who just found their perfect short-term rental opportunity.”

The spacious property also has a storage shed for tools and outdoor gear, and connects to a series of recreation trails at the end of the driveway.

The sale also includes shared rights to a private beach on Square Pond, however Hodgson notes that any additional plans should only be carried out with the necessary due diligence.

Advertisement

“We would encourage any buyer to do their due diligence with the town of Shapleigh when determining if the property could be subdivided and subsequently built on,” Hodgson added.



Source link

Continue Reading

Maine

Restoring Order: Why Maine Needs a “Crime Fighter”as Governor

Published

on

Restoring Order: Why Maine Needs a “Crime Fighter”as Governor


By Senator Scott Cyrway

For decades, I have walked the beat, patrolled our roads, and worked within our halls of justice to keep Maine families safe. From my early days as a deputy sheriff in Kennebec County to my time in the State Senate, my guiding star has always been the rule of law.

But today, I look at our state and see a growing shadow. Maine is in real trouble, and if we do not act decisively, the safety and security we once took for granted will become a relic of the past.

We are currently facing a convergence of crises: an unchecked drug epidemic, a rise in organized crime, and a legal system that too often prioritizes the comfort of the offender over the protection of the victim. Our law enforcement officers are being asked to do more with less, facing recruitment shortages and a political climate that often feels more hostile than supportive. Maine doesn’t just need a manager in the governor’s office; we need a proven crime fighter. That is why I am proudly endorsing Bobby Charles for governor.

Advertisement

A Career Built on Justice

My endorsement isn’t based on political convenience; it’s based on a shared lifetime of service. My own career has been defined by the front lines—serving as one of Kennebec County’s most decorated deputies, receiving the Valor and Life Saving awards, and spending years as a D.A.R.E. coordinator to keep our kids off drugs. I know what professional, effective law enforcement looks like.

Bobby Charles doesn’t just talk about “law and order”—he has lived it at the highest levels. Bobby served as the Assistant Secretary of State for International Narcotics and Law Enforcement Affairs. He led the fight against global drug cartels and worked as chief counsel in the U.S. House of Representatives, overseeing national security and criminal justice. He understands the mechanics of crime from the street level to the federal level.

The Stakes for Maine

The statistics are sobering. While Maine remains a beautiful place to live, our small towns are being hollowed out by fentanyl, and we are now being targeted by sophisticated international crime syndicates. We are seeing hundreds of illegal, Chinese-owned marijuana houses popping up in our quiet neighborhoods, bringing with them a wave of foreign money laundering and a direct slap in the face to our sovereignty.

Advertisement

Bobby Charles has made a clear, no-nonsense promise: he will increase the law enforcement presence across all 16 counties and ensure that federal and state authorities are working together, not at cross-purposes, to shut these cartels down. He is the only candidate with the background to dismantle the trafficking networks that treat our state like an open market.

As I’ve often said, “Maine is at a crossroads where the safety of our citizens must come before the politics of the day.” We cannot afford to experiment with leadership. We need a governor who has stared down criminals and understands the weight of a badge.

Bobby Charles is a man of integrity, experience, and action. He is the crime fighter Maine needs to restore the peace and ensure that our state remains the safest place in the nation to raise a family. Join me in supporting a leader who will always have the backs of those who wear the uniform.

Scott Cyrway is a Republican State Senator from Albion and a former Kennebec County Deputy Sheriff.

Advertisement



Source link

Continue Reading

Maine

Maine Mariners clinch home ice for first round of playoffs

Published

on

Maine Mariners clinch home ice for first round of playoffs


Maine Mariners clinch home ice for first round of playoffs

Advertisement

NA

Advertisement

Maine Mariners clinch home ice for first round of playoffs

Updated: 10:38 PM EDT Apr 11, 2026

Editorial Standards

Advertisement

The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.

The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.

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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wmtw.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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wmtw.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