Custom Logo
Hard Hats
Safety Glasses
Hearing Protection
Respiratory
Hi-Vis Apparel
Coveralls
Gloves
Foot Protection
Fall Protection
Arc Flash & FR Apparel
Welding Supplies
First Aid
Abrasives
Lubricants
Fire Extinguishers
Signage
Spill Control
Cleaning Supplies
Cabinets
Cable Protectors
Traffic Safety
Dump Hoppers
Lift Trucks
Top Featured Industrial Safety Products
/* Home banner rotator. Change SPEED (milliseconds) to retime. 0 = no auto-rotate. */
(function () {
var SPEED = 5000;
var BLUE = '#0b5cab';
var BLUE_DARK = '#084986';
if (window.__isHomeSliderLoaded) { return; }
window.__isHomeSliderLoaded = true;
function addStyles() {
if (document.getElementById('is-home-slider-css')) { return; }
var s = document.createElement('style');
s.id = 'is-home-slider-css';
s.textContent = [
'.home-slider .js_slides{scrollbar-width:none;-ms-overflow-style:none;}',
'.home-slider .js_slides::-webkit-scrollbar{display:none;}',
'.home-slider .is-slider-controls{display:flex;align-items:center;justify-content:flex-start;padding:10px 0 4px;}',
'.home-slider .previous-button,.home-slider .next-button{color:' + BLUE + ' !important;background:transparent !important;border:0 !important;padding:2px;line-height:0;cursor:pointer;flex:none;transition:color .15s ease;}',
'.home-slider .previous-button:hover,.home-slider .next-button:hover{color:' + BLUE_DARK + ' !important;}',
'.home-slider .previous-button{margin-right:1rem;}',
'.home-slider .next-button{margin-left:1rem;}',
'.home-slider .slider-dots{display:flex;flex-wrap:wrap;justify-content:flex-start;}',
'.home-slider .slider-dots .is-slider-dot{flex:none;display:block;width:.75rem;height:.75rem;margin:.25rem;border-radius:9999px;cursor:pointer;background-color:' + BLUE + ' !important;border:0 !important;box-shadow:none !important;opacity:.28;transition:opacity .15s ease;}',
'.home-slider .slider-dots .is-slider-dot:hover{opacity:.6;}',
'.home-slider .slider-dots .is-slider-dot.is-active{opacity:1;}',
'.home-slider .slider-dots .is-slider-dot.is-active::after{background-color:' + BLUE + ' !important;}'
].join('');
document.head.appendChild(s);
}
function makeArrow(label, cls, points) {
var b = document.createElement('button');
b.type = 'button';
b.className = cls;
b.setAttribute('aria-label', label);
b.innerHTML = '\x3csvg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 24 24"'
+ ' fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round"'
+ ' stroke-linejoin="round" aria-hidden="true"\x3e\x3cpolyline points="' + points + '"\x3e\x3c/polyline\x3e\x3c/svg\x3e';
return b;
}
function build() {
var root = document.querySelector('.home-slider');
if (!root) { return false; }
var track = root.querySelector('.js_slides');
if (!track) { return false; }
if (track.getAttribute('data-is-slider') === '1') { return true; }
var slides = [].slice.call(track.querySelectorAll('.js_slide'));
var n = slides.length;
if (!(n > 1)) { return false; }
track.setAttribute('data-is-slider', '1');
/* drop any leftover empty filler divs from the old markup */
[].slice.call(track.children).forEach(function (child) {
if (child.className.indexOf('js_slide') === -1) { track.removeChild(child); }
});
addStyles();
var index = 0;
var timer = null;
var bar = document.createElement('div');
bar.className = 'is-slider-controls';
var prev = makeArrow('Previous', 'previous-button', '15 18 9 12 15 6');
var next = makeArrow('Next', 'next-button', '9 18 15 12 9 6');
var dotsWrap = document.createElement('div');
dotsWrap.className = 'slider-dots';
var dots = slides.map(function (slide, i) {
var d = document.createElement('span');
d.className = 'is-slider-dot';
d.setAttribute('role', 'button');
d.setAttribute('aria-label', 'Go to slide ' + (i + 1));
d.addEventListener('click', function () { goTo(i); restart(); });
dotsWrap.appendChild(d);
return d;
});
bar.appendChild(prev);
bar.appendChild(dotsWrap);
bar.appendChild(next);
track.parentNode.parentNode.appendChild(bar);
function paint() {
dots.forEach(function (d, i) {
if (i === index) { d.classList.add('is-active'); } else { d.classList.remove('is-active'); }
});
}
function goTo(i) {
index = ((i % n) + n) % n; /* wraps in both directions */
var left = slides[index].offsetLeft - slides[0].offsetLeft;
if (track.scrollTo) {
track.scrollTo({ left: left, behavior: 'smooth' });
} else {
track.scrollLeft = left;
}
paint();
}
function stop() { if (timer) { clearInterval(timer); timer = null; } }
function restart() {
stop();
if (SPEED > 0) { timer = setInterval(function () { goTo(index + 1); }, SPEED); }
}
prev.addEventListener('click', function () { goTo(index - 1); restart(); });
next.addEventListener('click', function () { goTo(index + 1); restart(); });
/* keep the dots honest when someone swipes the strip by hand */
var tick;
track.addEventListener('scroll', function () {
clearTimeout(tick);
tick = setTimeout(function () {
var w = slides[0].offsetWidth || 1;
var i = Math.max(0, Math.min(n - 1, Math.round(track.scrollLeft / w)));
if (i !== index) { index = i; paint(); }
}, 120);
});
root.addEventListener('mouseenter', stop);
root.addEventListener('mouseleave', restart);
document.addEventListener('visibilitychange', function () {
if (document.hidden) { stop(); } else { restart(); }
});
window.addEventListener('resize', function () { goTo(index); });
paint();
restart();
return true;
}
/* the banner markup may not be parsed yet, so retry briefly */
var tries = 0;
function attempt() {
if (build()) { return; }
tries = tries + 1;
if (tries === 25) { return; }
setTimeout(attempt, 250);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', attempt);
} else {
attempt();
}
})();







