function getCookies(e){for(var t=e+"=",o=decodeURIComponent(document.cookie).split(";"),n=0;n */function url3CXChat(e){return"https://gala.3cx.co.uk:5001/livechat/#%7B%22inviteMessage%22%3A%22Hello!%20How%20can%20we%20help%20you%20today%3F%22%2C%22endingMessage%22%3A%22Your%20session%20is%20over.%20Please%20feel%20free%20to%20contact%20us%20again!%22%2C%22unavailableMessage%22%3A%22All%20our%20agents%20are%20currently%20busy%2C%20leave%20us%20a%20message!%22%2C%22allowVideo%22%3A%22false%22%2C%22enableMute%22%3A%22true%22%2C%22gdprMessage%22%3A%22I%20agree%20that%20my%20personal%20data%20to%20be%20processed%20and%20for%20the%20use%20of%20cookies%20in%20order%20to%20engage%20in%20a%20chat%20processed%20by%20COMPANY%2C%20for%20the%20purpose%20of%20Chat%2FSupport%20for%20the%20time%20of%20%2030%20day(s)%20as%20per%20the%20GDPR.%22%2C%22showOperatorActualName%22%3A%22true%22%2C%22forceToOpen%22%3A%22true%22%2C%22isPopout%22%3Atrue%2C%22allowMinimize%22%3A%22false%22%2C%22minimized%22%3A%22false%22%2C%22party%22%3A%22"+e+"%22%2C%22operatorName%22%3A%22Support%22%2C%22windowTitle%22%3A%22Live%20Chat%20%26%20Talk%22%2C%22visitorName%22%3A%22"+encodeURIComponent(window.__3cxwebchat.email)+"%22%2C%22authenticationMessage%22%3A%22Could%20we%20have%20your%20name%20and%20email%3F%22%2C%22authentication%22%3A%22both%22%2C%22messageDateformat%22%3A%22both%22%2C%22messageUserinfoFormat%22%3A%22both%22%2C%22callTitle%22%3A%22Call%20Us%22%2C%22popout%22%3A%22false%22%2C%22startChatButtonText%22%3A%22Chat%22%2C%22authenticationString%22%3A%22%7B%5C%22name%5C%22%3A%5C%22"+encodeURIComponent(window.__3cxwebchat.name+" : "+window.__3cxwebchat.phone)+"%5C%22%2C%5C%22email%5C%22%3A%5C%22"+encodeURIComponent(window.__3cxwebchat.email)+"%5C%22%2C%5C%22department%5C%22%3A-1%7D%22%2C%22offlineEmailMessage%22%3A%22Could%20we%20have%20your%20email%3F%22%2C%22offlineNameMessage%22%3A%22Could%20we%20have%20your%20name%3F%22%2C%22offlineFormInvalidEmail%22%3A%22I'm%20sorry%2C%20that%20doesn't%20look%20like%20an%20email%20address%22%2C%22offlineFormMaximumCharactersReached%22%3A%22Maximum%20characters%20reached%22%2C%22offlineFormInvalidName%22%3A%22I'm%20sorry%2C%20the%20provided%20name%20is%20not%20valid.%22%2C%22lang%22%3A%22en%22%2C%22cssVariables%22%3A%22%7B%5C%22--call-us-form-header-background%5C%22%3A%5C%22%23373737%5C%22%2C%5C%22--call-us-main-button-background%5C%22%3A%5C%22%230596d4%5C%22%2C%5C%22--call-us-client-text-color%5C%22%3A%5C%22%23d4d4d4%5C%22%2C%5C%22--call-us-agent-text-color%5C%22%3A%5C%22%23eeeeee%5C%22%7D%22%7D"}function open3CXChat(e){var t=url3CXChat(e);return window.open(t,"_blank","directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes, width=800, height=480, top=400, left=240")}function getProducts(e){fetch("/reviews/products-in-review?invoiceNum="+e,{method:"GET",headers:{"Content-Type":"application/json"}}).then((e=>{if(!e.ok)throw new Error("Network response was not ok");return e.json()})).then((e=>{const t=document.querySelector(".modal .panel-body table tbody");for(;t.firstChild;)t.removeChild(t.firstChild);e.forEach((e=>{const o=t.insertRow();o.dataset.prodCode=e.PartCode;const n=o.insertCell(0),i=o.insertCell(1),a=o.insertCell(2),r=o.insertCell(3);n.textContent=e.Description,a.textContent=e.Qty;const s=document.createElement("i"),l=document.createElement("input");l.type="checkbox",e.TotalAvailable>=e.Qty&&!e.quoteOnly?(s.className="icon-ok-circled",s.style.color="green",l.checked=!0):(s.className="icon-cancel-circled",s.style.color="red",l.disabled=!0),i.appendChild(l),r.appendChild(s)}))})).catch((e=>{console.error("Fetch error:",e)}))}function addProductsToBasket(){const e=[];document.querySelectorAll(".modal table tbody tr").forEach((t=>{const o=t.querySelector('input[type="checkbox"]');if(o&&o.checked){const o={sku:t.dataset.prodCode,qty:t.cells[2].textContent};e.push(o)}}));const t={items:e};fetch("/basket/add-multiple",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((e=>{if(!e.ok)throw new Error("Network response was not ok");return e.json()})).then((e=>{setBasket({Qty:e.totalQty,Cost:e.totalPrice}),showAlert("icon-ok-circled",CONST_PRODUCT_ADD_TITLE,CONST_PRODUCT_ADDED+" "+CONST_PRODUCT_ADDED_APPEND,"#FFFFFF",!1),modalClose()})).catch((e=>{console.error("Fetch error:",e)}))}function modalOpen(e){try{if(e){document.body.classList.remove("modal-open"),document.body.classList.add("modal-open"),e.style.display="block",setTimeout((function(){e.classList.add("in")}),0);var t=document.createElement("div");t.classList.add("modal-backdrop"),t.classList.add("fade"),document.body.appendChild(t),setTimeout((function(){t.classList.add("in")}),0),setTimeout((function(){void 0!==validatorInit&&validatorInit&&validatorInit()}),0)}}catch(e){console.error("Error in modalOpen function:",e)}}function modalClose(){modalCloseId(document.querySelector(".modal.in"))}function modalCloseId(e){try{document.body.classList.remove("modal-open");var t=e;t&&(t.classList.remove("in"),setTimeout((function(){t.style.display=""}),200));var o=document.querySelector(".modal-backdrop");o&&(o.classList.remove("in"),setTimeout((function(){o.remove()}),200))}catch(e){console.error("Error in modalClose function:",e)}}window.jsLoaded=function(){},function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Validator=t():e.Validator=t()}(window,(function(){return o={},e.m=t=[function(e,t,o){(function(t){function o(){return d.Date.now()}var n=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,r=/^0o[0-7]+$/i,s=parseInt,l="object"==typeof t&&t&&t.Object===Object&&t,c="object"==typeof self&&self&&self.Object===Object&&self,d=l||c||Function("return this")(),u=Object.prototype.toString,f=Math.max,h=Math.min;function m(e){var t=typeof e;return e&&("object"==t||"function"==t)}function p(e){if("number"==typeof e)return e;if("symbol"==typeof(t=e)||(o=t)&&"object"==typeof o&&"[object Symbol]"==u.call(t))return NaN;var t,o,l;if(m(e)&&(e=m(l="function"==typeof e.valueOf?e.valueOf():e)?l+"":l),"string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var c=a.test(e);return c||r.test(e)?s(e.slice(2),c?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,n){var i,a,r,s,l,c,d=0,u=!1,v=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var o=i,n=a;return i=a=void 0,d=t,s=e.apply(n,o)}function b(e){var o=e-c;return void 0===c||t<=o||o<0||v&&r<=e-d}function C(){var e,n,i=o();if(b(i))return w(i);l=setTimeout(C,(n=t-((e=i)-c),v?h(n,r-(e-d)):n))}function w(e){return l=void 0,y&&i?g(e):(i=a=void 0,s)}function k(){var e,n=o(),r=b(n);if(i=arguments,a=this,c=n,r){if(void 0===l)return d=e=c,l=setTimeout(C,t),u?g(e):s;if(v)return l=setTimeout(C,t),g(c)}return void 0===l&&(l=setTimeout(C,t)),s}return t=p(t)||0,m(n)&&(u=!!n.leading,r=(v="maxWait"in n)?f(p(n.maxWait)||0,t):r,y="trailing"in n?!!n.trailing:y),k.cancel=function(){void 0!==l&&clearTimeout(l),i=c=a=l=void(d=0)},k.flush=function(){return void 0===l?s:w(o())},k}}).call(this,o(2))},function(e,t,o){var n=o(5).default;n.plugin=n.prototype.plugin,n.plugin("match",o(3).default),n.plugin("email",o(4).default),e.exports=n},function(e,t){var o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,o){"use strict";o.r(t),t.default={install:function(){},validate:function(e,t){return e.value===document.querySelector(t).value}}},function(e,t,o){"use strict";o.r(t),t.default={install:function(){},validate:function(e){return/^[_A-z0-9._%+-]+@[_A-z0-9.-]+\.[_A-z]{2,}$/.test(e.value)}}},function(e,t,o){"use strict";o.r(t),o.d(t,"default",(function(){return l}));var n=o(0),i=o.n(n);function a(e,t){for(Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),o=t.length;0<=--o&&t.item(o)!==this;);return-1=720&&"y"!==getCookies("lc")&&setTimeout((function(){try{document.getElementById("callbackBubbleQuote").classList.remove("noshow"),setTimeout((function(){document.getElementById("callbackBubbleQuote").classList.add("cbshow")}),0)}catch(e){}}),3e3),document.addEventListener("DOMContentLoaded",(function(){var e=new IntersectionObserver((function(e){e.forEach((e=>{if(e.isIntersecting){var t=e.target.getAttribute("data-animate");t&&e.target.classList.add(t)}}))}),{threshold:.1});document.querySelectorAll("[data-animate]").forEach((t=>{e.observe(t)}))})),defer((function(){try{var e=document.querySelectorAll('[data-toggle="modal"]');Array.prototype.forEach.call(e,(function(e){e&&e.addEventListener("click",(function(e){e.preventDefault();var t=e.currentTarget.getAttribute("data-target");modalOpen(document.querySelector(t))}),!1)}));var t=document.querySelectorAll('[data-dismiss="modal"]');Array.prototype.forEach.call(t,(function(e){e&&e.addEventListener("click",(function(){modalClose()}),!1)}))}catch(e){console.error("Error in defer function:",e)}}));const cdn={getSRC:function(e,t){let o=`https://cdn.galatent.co.uk/cdn${e}`,n="";return void 0!==t.w&&(n+=`&w=${t.w}`),void 0!==t.h&&(n+=`&h=${t.h}`),o+(n?`?${n.substr(1)}`:"")}};var pjslides,acceptAllCookies=function(){var e={ad_storage:!0,ad_user_data:!0,ad_personalization:!0,analytics_storage:!0};localStorage.setItem("cookiePrefv2",JSON.stringify(e)),document.querySelectorAll(".cookiepolicy")[0].style.display="none",gtag("consent","update",{ad_storage:e.ad_storage?"granted":"denied",ad_user_data:e.ad_user_data?"granted":"denied",ad_personalization:e.ad_personalization?"granted":"denied",analytics_storage:e.analytics_storage?"granted":"denied"})};if(!localStorage.getItem("cookiePrefv2"))try{document.getElementById("cookiepolicy").innerHTML='

Privacy Settings
Our website utilizes cookies to enhance your browsing experience and provide customized marketing across various platforms.
For more information, please consult our Cookie Policy.

Manage Preferences     
'}catch(e){}function showDiscountContainer(){var e=document.querySelector(".discountContainer");e&&(sessionStorage.getItem("discountClosed")||(e.style.display="block"))}function closeDiscount(){var e=document.querySelector(".discountContainer");e&&(e.style.display="none",sessionStorage.setItem("discountClosed","true"))}function mobNavFunction(){var e=document.getElementById("mobLinks");"block"===e.style.display?e.style.display="none":e.style.display="block"}function updateVisibility(){try{var e=new Date,t=e.getDay(),o=e.getHours();if(t>=1&&t<=5&&o>=17&&o<18)return void(document.querySelector(".open-times-strip").style.display="block");if(6===t&&(o>=10||o<2))return void(document.querySelector(".open-times-strip").style.display="block");document.querySelector(".open-times-strip").style.display="none"}catch(e){}}function loadDeferredCSS(e){var t=Array.from(document.head.getElementsByTagName("link")).some((function(t){return t.href===e}));if(!t){var o=document.createElement("link");o.rel="stylesheet",o.href=e,o.type="text/css",document.head.appendChild(o)}}function pjslider_init(){if((pjslides=document.querySelectorAll(".project-slider")).length>0){var e=!1;pjslides.forEach(((t,o)=>{if(null!==t.getAttribute("data-slide"))return;let n="Y"==t.getAttribute("data-slide-autoplay"),i="Y"==t.getAttribute("data-slide-arrows"),a="Y"==t.getAttribute("data-slide-track-scroll");n&&(e=!0,t.pj_lastauto=(new Date).getTime(),t.addEventListener("mouseenter",(function(){this.classList.add("ps-hover"),t.pj_lastauto=(new Date).getTime()})),t.addEventListener("mouseleave",(function(){this.classList.remove("ps-hover")}))),t.setAttribute("data-slide",0);let r=t.querySelectorAll(".slides > div");r.forEach(((e,t)=>{e.setAttribute("slidetabindex",t)})),i&&(t.insertAdjacentHTML("beforeend",''),t.insertAdjacentHTML("beforeend",''),t.querySelector(".slick-next").addEventListener("click",(e=>{pjslider_delta(e.target.parentNode.parentNode.parentNode,1),t.pj_lastauto=(new Date).getTime()})),t.querySelector(".slick-prev").addEventListener("click",(e=>{pjslider_delta(e.target.parentNode.parentNode.parentNode,-1),t.pj_lastauto=(new Date).getTime()}))),a&&(pjslider_matrix_async(t),r.forEach((e=>{e.addEventListener("click",(e=>{e.target.parentNode.parentNode.parentNode.setAttribute("data-slide",e.target.getAttribute("slidetabindex")),pjslider_redrawAll()}))})))})),e&&setInterval((function(){pjslides.forEach(((e,t)=>{(new Date).getTime()-e.pj_lastauto>=5e3&&!e.classList.contains("ps-hover")&&pjslider_delta(e,1)}))}),1e4)}}function pjslider_redrawAll(){pjslides.forEach((e=>{pjslider_redraw(e)}))}function pjslider_delta(e,t){var o=Number(e.getAttribute("data-slide"))+t;let n=e.querySelectorAll(".slides > div");o>n.length-1&&(o=0),o<0&&(o=n.length-1),e.setAttribute("data-slide",o),pjslider_redraw(e)}function pjslider_redraw(e){e.querySelector('[slidetabindex="'+e.getAttribute("data-slide")+'"]');let t=Math.abs(e.querySelector(".slides > div").clientWidth)*e.getAttribute("data-slide");animate(e,t,{duration:500,timing:makeEaseOut(linear),draw(t){e.querySelector(".slides").scrollLeft=t}})}function animate(e,t,{duration:o=500,timing:n,draw:i,complete:a}){let r=performance.now(),s=e.querySelector(".slides").scrollLeft,l=t-s;requestAnimationFrame((function e(t){let c=(t-r)/o;c>1&&(c=1);let d=n(c);i(s+l*d),c<1?requestAnimationFrame(e):a&&a()}))}function linear(e){return e}function makeEaseOut(e){return function(t){return 1-e(1-t)}}function loadScript(e,t){try{var o=document.createElement("script");o&&(o.src=e,"function"==typeof t&&(o.onload=t),document.body.appendChild(o))}catch(e){console.error("Error in loadScript function:",e)}}setTimeout(showDiscountContainer,3e3),updateVisibility(),setInterval(updateVisibility,6e4),defer((function(){pjslider_init()})),document.addEventListener("DOMContentLoaded",(function(){try{var e=!1,t=document.getElementById("searchBox");t&&t.addEventListener("input",(function(){if(e)try{"function"==typeof searchFunction&&searchFunction()}catch(e){console.error("Error calling searchFunction:",e)}else loadScript("/public/script-search.js",(function(){e=!0;try{"function"==typeof searchFunction&&searchFunction()}catch(e){console.error("Error calling searchFunction after script load:",e)}}))}))}catch(e){console.error("Error in DOMContentLoaded event:",e)}}));const tabs=document.querySelectorAll(".tablo li, .fluid-nav li");function setActive(e){var t=downToClass(downTo(upTo(e,"DIV"),"ul"),"active");if(t){t.classList.remove("active");var o=document.querySelector("."+t.getAttribute("tab-link"));o&&o.classList.add("noshow")}var n=e;"I"!==n.tagName&&"SPAN"!==n.tagName||(n=upTo(e,"LI")),n.classList.add("active");var i=document.querySelector("."+n.getAttribute("tab-link"));i&&(i.classList.remove("noshow"),i.classList.add("fadeIn","animated")),setTimeout((function(){n.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})}),0)}function downToClass(e,t){for(var o=e.childNodes,n=0;n{e.addEventListener("click",(e=>{setActive(e.target)}))})),Validator.plugin("phone",{install(){},validate:(e,t)=>/^(\+44|01|02|03|04|05|06|07|08|09)[0-9 ()-]+$/.test(e.value)}),Validator.plugin("spam",{install(){},validate:(e,t)=>vc({currentTarget:e})}),Validator.plugin("function",{install(){},validate(e,t){const o=t;return"function"==typeof window[o]?window[o](e,t):(console.error(`Validation function ${o} does not exist.`),!1)}});var validatorInit=function(){document.querySelectorAll("form").forEach((function(e){new Validator(e,{})}));for(var e=document.getElementsByName("txtSpam"),t=0;t{if(e.ok)return e.json();throw e})).then((t=>{document.querySelectorAll(".error-message").forEach((e=>e.remove())),e.querySelector("button.af-submit").classList.remove("af-processing");var n=window[o];"function"==typeof n?n(e,t):af_success(e,t),setTimeout((function(){""!==i&&document.body.classList.remove(i)}),1500)})).catch((t=>{t.text().then((t=>{var o=JSON.parse(t);for(var i in document.querySelectorAll(".invalid-feedback").forEach((e=>e.innerHTML="")),e.querySelector("button.af-submit").classList.remove("af-processing"),o.errors){var a=e.querySelector('[name="'+i+'"]');if(a){a.classList.remove("is-valid"),a.classList.add("is-invalid");for(var r=[],s=a.nextElementSibling;s;){if(s.classList.contains("invalid-feedback")){r.push(s);break}s=s.nextElementSibling}s&&(s.innerHTML=o.errors[i].msg)}}var l=window[n];"function"==typeof l?l(e,t):console.log(o)}))}))}}function af_success(){parent.showAlert("icon-ok-circled","Success","Thank you for your interest","#FFFFFF",!1),void 0!==modalClose&&modalClose()}function af_fail(){parent.showAlert("icon-cancel-circled","Fail","There was an error with the form, please make sure all required information is entered and try again.","#FFFFFF",!1),void 0!==modalClose&&modalClose()}validatorInit(),document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll("form[data-af-success] button.af-submit").forEach((function(e){e.addEventListener("click",(function(e){if(!e.target.classList.contains("af-processing")){var t=e.target.closest("form")||null;t&&AUTOFORM_NODE(t)}}))}))}));var modaloElement=document.querySelector(".modalo"),overlay_EventAttached=!1;function isIframe(){try{return window.self!==window.top}catch(e){return!0}}function showOverlay(e){if(void 0!==e&&null!=e){var t=e.URL||"",o=e.Contents||"",n=e.W||1024,i=e.H||600,a=(e.NoExit,{W:screen.width,H:screen.height});void 0!==window.matchMedia&&(window.matchMedia("(orientation: portrait)").matches?a.W=screen.width:window.matchMedia("(orientation: landscape)").matches&&screen.height>a.W&&(a.W=screen.height,a.H=screen.width)),e.NoExit&&document.body.classList.add("noexit"),modaloElement.style.maxWidth=n+"px",modaloElement.style.maxHeight=i+"px";var r=Math.max(a.H/2-i/2-a.H/2,0);if(modaloElement.style.top=r+"px",isIframe())return window.location=t;if(modaloElement.classList.remove("loaded"),modaloElement.innerHTML=o,""!==t){var s=n,l=i;s=s>a.W?a.W:s,l=l>a.H?a.H:l;var c="/_components/web_optimised/overlay-iframe.css";if(!document.head.querySelector('link[href="'+c+'"]')){var d=document.createElement("link");d.rel="stylesheet",d.href=c,document.head.appendChild(d)}var u=document.createElement("div");u.id="close",u.innerHTML="",modaloElement.appendChild(u);var f=document.createElement("iframe");f.width=s,f.id="iframeOverlay",f.src=t,modaloElement.appendChild(f),f.addEventListener("load",(function(){modaloElement.classList.add("loaded")}))}else modaloElement.classList.add("loaded");overlay_EventAttached||(document.body.addEventListener("click",clicked),overlay_EventAttached=!0),setTimeout((function(){document.body.classList.add("overlay")}),0)}}function clicked(e){if(!document.body.classList.contains("noexit")){var t=e?.target||e?.srcElement;t&&3===t.nodeType&&(t=t.parentNode),t&&t.classList.contains("modal")||(document.body.classList.remove("overlay"),parent.document?.body.classList.remove("overlay"),setTimeout((()=>{document.body.classList.contains("overlay")||(document.querySelector(".modalo").innerHTML="")}),5e3))}}function showAlert(e,t,o,n,i){showOverlay({Contents:'

'+t+"

"+o+"

",NoExit:i})}var Basket=getBasket();function getBasket(){var e=localStorage.getItem("basket");if(null!==e&&""!==e&&"null"!==e){var t=e.split("**");return{Qty:t[0],Cost:parseFloat(t[1]).toFixed(2),TS:new Date(t[2]).toJSON()}}return{Qty:0,Cost:parseFloat(0).toFixed(2),TS:getPreviousDayJSON()}}function setBasket(e){void 0===(Basket=e).TS&&(Basket.TS=(new Date).toJSON());try{var t=localizeCost(Basket.Cost);localStorage.setItem("basket",Basket.Qty+"**"+Basket.Cost+"**"+Basket.TS);var o=document.querySelectorAll(".baskTotal");Array.prototype.forEach.call(o,(function(e,o){e.innerHTML=t}));o=document.querySelectorAll(".baskQty");Array.prototype.forEach.call(o,(function(e,t){e.innerHTML=Basket.Qty}))}catch(e){console.error("Error in setBasket:",e)}}function localizeCost(e){return parseFloat(e).toLocaleString("en-GB",{style:"currency",currency:"GBP",minimumFractionDigits:2,maximumFractionDigits:2})}function getMinutesBetweenDates(e,t){var o=new Date(e),n=new Date(t).getTime()-o.getTime(),i=Math.abs(n/6e4);return parseInt(i)}function getPreviousDayJSON(){var e=new Date;return e.setDate(e.getDate()-1),e.toJSON()}function fetchBasketTotals(){screen.width<768||fetch("/basket/totals").then((function(e){if(!e.ok)throw new Error("Network response was not ok");return e.json()})).then((function(e){setBasket({Qty:e.totalQty,Cost:e.totalPrice,TS:(new Date).toJSON()})})).catch((function(e){console.error("There has been a problem with your fetch operation:",e)}))}defer((function(){getMinutesBetweenDates(Basket.TS,new Date)<=20?setBasket({Qty:Basket.Qty,Cost:Basket.Cost,TS:Basket.TS}):fetchBasketTotals()}));