Dual Head Grinder Kits

Dual head grinders have one head that goes clockwise and one that goes counterclockwise. Our PCD and PCD+Diamond Kits for Dual Head Grinders include tooling pieces each for the two grinder heads, conveniently packaged in sets of three for each direction. No guessing!

Filter
Option Grit Abrasive Material Aggressiveness Activity / Use Application Surface Type Unit Purchase
PCD Dual Head Grinder Kit for use with Magnetic Plate 1
425-07874
Coarse Industrial Diamonds High Concrete Prep Hard Coating Removal Concrete
$1,208.32/EA
Register to see Discount In Stock
PCD+Diamond Dual Head Grinder Kit for use with Magnetic Plate 1
425-07875
Medium Industrial Diamonds Medium Concrete Prep Hard Coating Removal Concrete
$616.72/EA
Register to see Discount In Stock

/** * Product Page Enhancement Script * * This script: * 1. Moves content from a specified heading to underneath the gallery (vanilla JS) * 2. Manages product browsing history (jQuery) */ // ===== PART 1: Content Mover (Vanilla JS) ===== (() => { // Function to move content from a heading to below the gallery const moveContentBelowGallery = (headingSelector, gallerySelector) => { // Find the target heading const heading = document.querySelector(headingSelector); if (!heading) return; // Exit if heading not found // Find the gallery element const gallery = document.querySelector(gallerySelector); if (!gallery) return; // Exit if gallery not found // Create a container for the content to be moved const movedContentContainer = document.createElement('div'); movedContentContainer.className = 'moved-content-container'; // Collect the heading and all its following siblings const contentToMove = [heading]; let currentElement = heading.nextElementSibling; while (currentElement) { contentToMove.push(currentElement); currentElement = currentElement.nextElementSibling; } // Add all content to the new container contentToMove.forEach(element => { // Clone the element to avoid reference issues const clonedElement = element.cloneNode(true); movedContentContainer.appendChild(clonedElement); // Remove the original element element.parentNode.removeChild(element); }); // Insert the new container after the gallery gallery.insertAdjacentElement('afterend', movedContentContainer); return movedContentContainer; }; // Add a custom contains selector for case-insensitive text matching if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; } // Override the querySelector method to support :contains() const originalQuerySelector = Document.prototype.querySelector; Document.prototype.querySelector = function(selector) { if (selector.includes(':contains(')) { // Extract the text content from the selector const match = selector.match(/:contains\("([^"]+)"\)/); if (match) { const textToFind = match[1]; const baseSelector = selector.replace(/:contains\("([^"]+)"\)/, ''); // Find all elements that match the base selector const elements = document.querySelectorAll(baseSelector); // Return the first one that contains the text for (const element of elements) { if (element.textContent.includes(textToFind)) { return element; } } return null; } } // Fall back to the original method for standard selectors return originalQuerySelector.call(this, selector); }; // Make the function globally available if needed window.moveContentBelowGallery = moveContentBelowGallery; // Execute the function when DOM is fully loaded document.addEventListener('DOMContentLoaded', () => { // Call with specific selectors for this page moveContentBelowGallery('h2:contains("See the BOSS 4-in-1 Ultra Floor System in Action:")', '.gallery'); }); })(); // ===== PART 2: Product History Management (jQuery) ===== $(function() { // Check and clear redirect flag if it exists if (sessionStorage['has-redirect']) { sessionStorage.removeItem('has-redirect'); } // Product History jQuery plugin $.fn.productHistory = function(historyItem) { if (historyItem != null) add(historyItem); var history = getHistory(historyItem); if (history.length > 0) { $(this).append(`
Recently Viewed Products
`); const historyContainer = $('
'); history.forEach(item => { var template = ``; historyContainer.append(template); }); $(this).append(historyContainer); } }; // Add an item to history function add(historyItem) { var history = getHistory(historyItem); history.splice(0, 0, historyItem); history = history.slice(0, 5); setHistory(history); }; // Get product history from cookies function getHistory(historyItem) { var history = decodeURIComponent(document.cookie?.split('; ')?.find(x => x?.startsWith('productHistory'))?.substring(15)); if (history === 'null' || history === 'undefined' || !history) return []; try { history = JSON.parse(history); var filteredHistory = $.grep(history, function(h) { return h.url != historyItem.url; }); return filteredHistory; } catch (e) { console.error("Error parsing product history:", e); return []; } } // Save product history to cookies function setHistory(productHistoryCollection) { let history = encodeURIComponent(JSON.stringify(productHistoryCollection)); const d = new Date(); d.setTime(d.getTime() + (24 * 60 * 60 * 1000)); //24 hour expire let expires = "expires=" + d.toUTCString(); document.cookie = "productHistory=" + history + ";" + expires + ";path=/"; } // Setup product history tracking var historyItem = { url: window.location.href, image: $('#product-rail .gallery .primary img').attr('src'), description: $('#product-inner h1,#product-main h1').first().text().trim() }; if ($('#product-history-container').length < 1) { $('#related-product-sets').after(''); } if ($('#product-history-container').text().trim().length < 1) { $('#product-history-container').productHistory(historyItem); } }); // Move in-stock labels on window load $(window).on('load', function() { if (document.querySelector('.mono-item-product')) { $('span[class*="stock"]').appendTo('#product-items .product-item .purchase'); } });