Page Coming Soon

Enquiry Cart ×
Loading....
(function p4HeaderInteractionLayer() { "use strict"; var AVATAR_DELAY = 200; var desktopQuery = window.matchMedia("(min-width: 769px)"); var selectors = { shell: ".p4-header-shell", navigation: ".p4-header-navigation", items: ".p4-header-navigation .e-n-menu-item", trigger: ".e-n-menu-title-container", button: ".e-n-menu-dropdown-icon", surface: ".e-n-menu-content", solutions: ".p4-mega-solutions", systems: ".elementor-element-c0000041.p4-dropdown-flat", support: ".elementor-element-c0000049.p4-dropdown-flat", news: ".p4-news-dropdown", panelLinks: "a[href]", search: ".p4-header-search-form", searchToggle: ".p4-header-search-toggle", searchInput: ".p4-header-search-form #p3-search-input", avatar: ".p4-header-avatar a" }; var records = []; var search = null; var searchToggle = null; var searchInput = null; function isDesktop() { return desktopQuery.matches; } function closePanel(record) { if (record.button.getAttribute("aria-expanded") === "true") { record.button.click(); } } function openPanel(record) { if (!isDesktop()) { return; } records.forEach(function (r) { if (r !== record) { closePanel(r); } }); record.panel.style.removeProperty("display"); record.surface.style.removeProperty("pointer-events"); if (record.button.getAttribute("aria-expanded") !== "true") { record.button.click(); } } function movePanelFocus(record, step) { var links = Array.prototype.slice.call(record.panel.querySelectorAll(selectors.panelLinks)); var index = links.indexOf(document.activeElement); if (!links.length) { return; } index = index 0 ? 0 : links.length - 1) : (index + step + links.length) % links.length; links[index].focus(); } function bindPanel(record) { if (record.item.dataset.p4HeaderBound === "true") { return; } record.item.dataset.p4HeaderBound = "true"; record.trigger.setAttribute("aria-haspopup", "true"); record.trigger.setAttribute("aria-controls", record.button.getAttribute("aria-controls")); record.trigger.setAttribute("aria-expanded", "false"); record.button.setAttribute("tabindex", "-1"); record.item.addEventListener("mouseenter", function () { if (isDesktop()) { openPanel(record); } }); record.item.addEventListener("mouseleave", function () { if (isDesktop()) { closePanel(record); } }); record.trigger.addEventListener("click", function (event) { if (isDesktop() && record.name === "solutions") { event.preventDefault(); openPanel(record); } }); record.trigger.addEventListener("keydown", function (event) { if (!isDesktop()) { return; } if (event.key === "Enter" || event.key === " ") { event.preventDefault(); openPanel(record); } else if (event.key === "ArrowDown") { event.preventDefault(); openPanel(record); movePanelFocus(record, 1); } }); record.panel.addEventListener("keydown", function (event) { if (event.key === "ArrowDown" || event.key === "ArrowUp") { event.preventDefault(); movePanelFocus(record, event.key === "ArrowDown" ? 1 : -1); } }); } function openSearch() { if (!isDesktop() || !search) { return; } search.classList.add("p4-header-search-open"); searchToggle.setAttribute("aria-expanded", "true"); searchInput.focus(); } function closeSearch() { if (!search) { return; } search.classList.remove("p4-header-search-open"); searchToggle.setAttribute("aria-expanded", "false"); searchInput.value = ""; } function bindSearch(shell) { search = shell.querySelector(selectors.search); searchToggle = shell.querySelector(selectors.searchToggle); searchInput = shell.querySelector(selectors.searchInput); if (!search || !searchToggle || !searchInput || searchToggle.dataset.p4HeaderBound === "true") { return; } searchToggle.dataset.p4HeaderBound = "true"; searchToggle.setAttribute("role", "button"); searchToggle.setAttribute("tabindex", "0"); searchToggle.setAttribute("aria-controls", "p3-search-input"); searchToggle.setAttribute("aria-expanded", "false"); searchToggle.addEventListener("mouseenter", function () { openSearch(); }); searchToggle.addEventListener("click", function (event) { event.preventDefault(); openSearch(); }); searchToggle.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); openSearch(); } }); } function bindAvatar(shell) { var avatar = shell.querySelector(selectors.avatar); var timer = 0; if (!avatar || avatar.dataset.p4HeaderBound === "true") { return; } avatar.dataset.p4HeaderBound = "true"; avatar.addEventListener("mouseenter", function () { if (!isDesktop()) { return; } window.clearTimeout(timer); timer = window.setTimeout(function () { avatar.click(); }, AVATAR_DELAY); }); avatar.addEventListener("mouseleave", function () { window.clearTimeout(timer); }); } function bindGlobalClose(shell) { if (shell.dataset.p4HeaderGlobalBound === "true") { return; } shell.dataset.p4HeaderGlobalBound = "true"; document.addEventListener("click", function (event) { if (!event.target.closest(selectors.shell)) { records.forEach(function (r) { closePanel(r); }); closeSearch(); } }); document.addEventListener("keydown", function (event) { if (event.key !== "Escape") { return; } event.preventDefault(); event.stopPropagation(); closeSearch(); records.forEach(function (record) { closePanel(record); record.panel.style.setProperty("display", "none", "important"); record.surface.style.setProperty("pointer-events", "none", "important"); }); }, true); } function identifyPanel(item) { var panel = item.querySelector(selectors.solutions); if (panel) { return {name: "solutions", panel: panel}; } panel = item.querySelector(selectors.systems); if (panel) { return {name: "systems", panel: panel}; } panel = item.querySelector(selectors.support); if (panel) { return {name: "support", panel: panel}; } panel = item.querySelector(selectors.news); return panel ? {name: "news", panel: panel} : null; } function initialise() { var shell = document.querySelector(selectors.shell); var navigation, items; if (!shell || shell.dataset.p4HeaderReady === "true") { return; } shell.dataset.p4HeaderReady = "true"; navigation = shell.querySelector(selectors.navigation); if (navigation) { items = Array.prototype.slice.call(navigation.querySelectorAll(selectors.items)); items.forEach(function (item) { var identity = identifyPanel(item); var trigger = identity ? item.querySelector(selectors.trigger) : null; var button = identity ? item.querySelector(selectors.button) : null; var surface = identity ? item.querySelector(selectors.surface) : null; if (!identity || !trigger || !button || !surface) { return; } item.classList.add("p4-header-item--" + identity.name); surface.classList.add("p4-header-surface"); identity.panel.classList.add("p4-header-panel", "p4-header-panel--" + identity.name); identity.panel.setAttribute("role", "menu"); identity.panel.querySelectorAll(selectors.panelLinks).forEach(function (link) { link.setAttribute("role", "menuitem"); }); records.push({name: identity.name, item: item, surface: surface, panel: identity.panel, trigger: trigger, button: button}); }); records.forEach(function (record) { bindPanel(record); }); } bindSearch(shell); bindAvatar(shell); bindGlobalClose(shell); } function startInteractionLayer() { initialise(); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", startInteractionLayer); } else { startInteractionLayer(); } window.addEventListener("elementor/frontend/init", startInteractionLayer); }());