(function () {
/* ========= 1) CONFIG ========= */
var TAB_MAP = {
revolution: '1760967628360-6',
freestyle: '1760967628556-5',
landing: '1760967628666-4',
gymnast: '1760967629393-0'
};
// Optional: run only on the stock-sale page
// if (!/\/stock-sale\/?$/.test(location.pathname)) return;
var SCROLL_OFFSET = 80; // adjust for sticky header height
/* ========= 2) HELPERS ========= */
function qs(sel, ctx) { return (ctx || document).querySelector(sel); }
function qsa(sel, ctx) { return Array.prototype.slice.call((ctx || document).querySelectorAll(sel)); }
function findTabLinkByFixedId(fixedId) {
// WPBakery tab links typically use #tab- or #
var selector =
'.vc_tta-tabs-list a[href="#tab-' + fixedId + '"], ' +
'.vc_tta-tabs-list a[href="#' + fixedId + '"]';
return qs(selector);
}
function getTabsContainerFromLink(link) {
return link ? link.closest('.vc_tta') : null;
}
function scrollToTabs(container) {
if (!container) return;
var top = container.getBoundingClientRect().top + window.pageYOffset - SCROLL_OFFSET;
window.scrollTo({ top: top, behavior: 'smooth' });
}
function friendlyToFixed(hash) {
// if it's one of our friendly names, map it
if (TAB_MAP[hash]) return TAB_MAP[hash];
// if a fixed id was used directly (with or without 'tab-' prefix), normalize it
return hash.replace(/^tab-/, '');
}
function fixedToFriendly(fixedId) {
// reverse lookup for updating the URL hash on click
for (var k in TAB_MAP) if (TAB_MAP[k] === fixedId) return k;
return null;
}
/* ========= 3) CORE LOGIC ========= */
function activateTabFromHash() {
var raw = window.location.hash.replace('#', '');
if (!raw) return;
var fixedId = friendlyToFixed(raw);
var link = findTabLinkByFixedId(fixedId);
if (link) {
// Click the tab link to activate it
link.click();
scrollToTabs(getTabsContainerFromLink(link));
}
}
function attachClickHandlers() {
// Keep URL hash in sync when user clicks between tabs
qsa('.vc_tta-tabs-list a').forEach(function (a) {
a.addEventListener('click', function (e) {
// Extract fixed id from href (#tab- or #)
var href = (a.getAttribute('href') || '').replace('#', '');
var fixedId = href.replace(/^tab-/, '');
var friendly = fixedToFriendly(fixedId) || fixedId; // fallback to fixed if no friendly
if (friendly) {
// Update hash without jumping
history.replaceState(null, '', '#' + friendly);
}
});
});
}
/* ========= 4) WAIT FOR TABS, THEN INIT ========= */
function waitForTabsAndInit(retries) {
retries = retries || 40; // ~2s @ 50ms
if (qs('.vc_tta-tabs-list a')) {
attachClickHandlers();
activateTabFromHash();
window.addEventListener('hashchange', activateTabFromHash);
return;
}
if (retries > 0) {
setTimeout(function () { waitForTabsAndInit(retries - 1); }, 50);
}
}
// Kick off when DOM is ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', waitForTabsAndInit);
} else {
waitForTabsAndInit();
}
})();Skip to main content
If you are in search of a quality airbag solution for your trampoline park or gymnastics facility then sooner or later you will end up in the Netherlands at BigAirBag.
The incredible BOUNCEinc trampoline parks in Australia are some of the most popular on the planet. BOUNCEinc has been using airbags at their parks for years and was in search of a product and company that can fulfill their expectations.
We are proud to supply BOUNCEinc with a highly advanced solution that delivers on all key aspects: safety, durability, practicality, reliability and good looks.
The colorful BOUNCEinc branded Topsheet not only looks awesome but feels it. The super soft satin developed for high performance gymnastics provides the softest landings and the ultimate user experience.
The perfect place for gymnasts, freestylers, free runners, trampolinists and every day bouncers to try a new move and improve!
If you want to take part in the free jumping revolution click here for your nearest bounce location.