Great customer service
Transparent prices and secure payments
Nationwide delivery possible for all orders
UK's largest online roofing shop
Get started right away with a 4-month payment period
Benefit from 0% in 4 monthly installments*
See financing options
*Status dependent. Minimum spend required. Terms and Conditions apply.
The SMART way to buy commercial building materials
Sign up for a cash or credit account, exclusive rebates, rebates and rewards with a CMO business account today
Good building starts with us
Consult our specialty stores
Be the first to know about special offers, product offers, exclusive discounts and industry news.
Would you like to empty your shopping cart?
Sim no
'); } }); } Funktion callBackValidation() { var charexp = / /gi; // zum Entfernen von Leerzeichen verwendet var formError = false; $('#form__callback').find('.input__callback, .selectioncallback').each(function () { if ($(this).val().replace(charexp, "") = = "") { formError = wahr; } }); if (true === formError) { return false; } else { pushFormSubmission('Rückruf anfordern'); $('#js-call-back-save-btn').css('visibility', 'hidden').attr('disabled', true); grecaptcha.execute(recaptchaCallBack); } } Funktion CallBackRecapcha (Token) { InsertCallBackRequest (); } function insertProductQuestion() { var thisForm = $("#product-question__form"); var questionFormHeader = $("#js-product-question-header-wrapper"); var questionHeaderWrapper = $("#js-product-question-header-wrapper"); var questionSaveBtn = $('#js-product-question-save-btn'); $.ajax({ url: thisForm.attr('action'), type: thisForm.attr('method'), data: thisForm.serialize(), dataType: "json", cache: false, erro: function() { alert('Oder unsichtbares reCAPTCHA fehlgeschlagen, versuchen Sie es erneut.'); grecaptcha.reset(recaptchaProductQuestion); grecaptcha.execute(recaptchaProductQuestion); questionSaveBtn.css('visibility', '').attr('disabled', false) ; }, Erfolg: Funktion (Antwort) { if (false === Antwort['E-Mail-Fehler']) { thisForm.hide(); questionFormHeader.html('
Thanks for the question about the product.
When your question has been answered, it will appear in the list above.
'); questionHeaderWrapper.addClass('product-question-success').removeClass('product-question-error'); grecaptcha.reset(recaptchaProduktfrage); } else { questionFormHeader.html('
There was a problem
'); questionHeaderWrapper.addClass('product-question-error').removeClass('product-question-success'); grecaptcha.reset(recaptchaproduct question); questionSaveBtn.css('Visibility', '').attr('disabled', wrong); } } }); } function productQuestionValidation() { var charexp = / /gi; // to remove or flush var alertMessage = ''; var formError = false; $('#product-question__form').find('.product-question__input').each(function () { if (($(this).attr('name') !== 'email_address' || $( this).attr('name') === 'telephone_number') && $(this).val().replace(charexp, '') === '') { alertMessage += $(this).data( 'error') + '\n'; formError = true; } else if ($(this).attr('name') === 'email_address' && /^[\w\d_-](\.?[ \w\d_-])*@[\w\d_-]+\.([\w]{1,6}\.)?[\w]{2,20}$/g.test($( this).val()) === false) { // Check that the email is not empty and valid alertMessage += $(this).data('error') + '\n'; formError = true ; } else if ( $(this).attr('name') === 'telephone_number' && /^[0-9s()-+]{6,25}$/g.test($(this) .val() .replace(charexp, '')) === false) { // Check if phone is not empty and valid alertMessage += $(this).data('error'); formError = true ; } }); if (true == formError) { alert('The following fields contain errors: \n' + alertMessage); wrong return; } else { pushFormSubmission('Product Question'); grecaptcha.execute(recaptchaproduct question); } } function contactFormSPERecaptcha(token) { woofuCaptchaValidate(token, 'collapseOne'); grecaptcha.execute(recaptchaContactFormSPE); } function contactFormCSERecaptcha(token) { woofuCaptchaValidate(token, 'collapseTwo'); grecaptcha.execute(recaptchaContactFormCSE); } function contactFormFCRecaptcha(token) { woofuCaptchaValidate(token, 'collapseThree'); grecaptcha.execute(recaptchaContactFormFC); } function contactFormValidation(contactFormReference, recaptchaVariable) { var charexp = / /gi; // to remove or flush var alertMessage = ''; var formError = false; $('#'+contactFormReference).find('.js-contact-form-input').each(function () { var field = $(this).data('label'); var required = $(this ).prop('required'); // Check if the required fields are present if (required && $(this).val() === '') { alertMessage += field + '\n'; formError = true ; } else if ('Endereço de e-mail' === Field && /^[\w\d_-](\.?[\w\d_-])*@[\w\d_-]+\ .([\ w]{1,6}\.)?[\w]{2,20}$/g.test($(this).val()) === false) { // Check se or e - mail is not empty and valid alertMessage += field + '\n'; formError = true; } else if ('phones' === field && /^[0-9s()-+]{6,25 } $/g.test($(this).val().replace(charexp, '')) === false) { // Check if phone is not empty and valid alertMessage += field + '\n '; formError = true; } else if ('Query type' === field && 'Select a query type' === $(this).val()) { alertMessage += field + '\n'; formError = true; } }); if (true === formError) { alert('The following fields contain errors: \n' + alertMessage); wrong return; } else { grecaptcha.execute(recaptchaVariable); } } function woofuCaptchaValidate(token, contactFormReference) { $.ajax({ url: 'https://www.roofingsuperstore.co.uk/verify-captcha', type: 'POST', data: { 'g-recaptcha-response ': token }, dataType: "json", cache: false, error: function () { alert('O invisible reCAPTCHA fails, try again.'); grecaptcha.reset(recaptchaProductQuestion); grecaptcha.execute(recaptchaProductQuestion ); } , Success: function(response) { if ('success' === response.response) { $('#' + contactFormReference + 'form .recaptcha-field').remove(); $('#' + contactFormReference + ' form').submit(); } else { alert('Invisible reCAPTCHA failed, try again.'); } } }); } function whatsappSharingRecaptcha(token) { grecaptcha.execute(recaptchaWhatsappSharing); } function smsSharingRecaptcha(token) { grecaptcha.execute(recaptchaSmsSharing); } function emailSharingRecaptcha(token) { grecaptcha.execute(recaptchaEmailSharing); } function validateBasketInput(inputId) { var charexp = / /gi; // to remove or flush var alertMessage = ''; if ($(inputId).attr('type') === 'tel' && /^[0-9+]{9,20}$/g.test($(inputId).val().replace( charexp, '')) === false) { // Check if phone is not empty and valid alertMessage += 'mobile number'; } else if ($(inputId).attr('type') === 'email' && /^[\w\d_-](\.?[\w\d_-])*@[\w\ d_ -]+\.([\w]{1,6}\.)?[\w]{2,20}$/g.test($(inputId).val()) === false) { / / Check if the email is empty and valid alertMessage += 'Endereço de e-mail'; } if (alertMessage.length > 0) { alert(alertMessage + 'is not valid.'); wrong return; } else { postSharingForm($(inputId).parent().parent().parent()); } } function postSharingForm(thisForm) { var shareBtn = thisForm.find('.share-button').first(); var thisFormId = thisForm[0].id; var gRecaptchaResponse = thisForm.find('.g-recaptcha-response')[0].value; var compartilhamentoVar = ''; if (thisFormId === 'smsMobileSharing') { sharingVar = recaptchaSmsSharing; } else if (thisFormId === 'whatsappMobileSharing') { sharingVar = recaptchaWhatsappSharing; } else if (thisFormId === 'emailSharing') { sharingVar = recaptchaEmailSharing; } var sharingInput = thisForm.find('.js-sharing-input'); if (gRecaptchaResponse === '') { alert('Verify or reCaptcha and try again.'); } else if (sharingVar !== '') { shareBtn.first().css('visibility', 'hidden').attr('disabled', true); $.ajax({ url: thisForm.data('url'), type: 'POST', data: { 'shareMethod': thisFormId, 'sharingInput': $(sharingInput).val(), 'permalink': $( '#basketPermalinkInput').val(), 'recaptcha': gRecaptchaResponse }, error: function () { shareBtn.first().css('visibility', '').attr('disabled', false); alert( 'Falha no compartilhamento, try again.'); grecaptcha.reset(sharingVar); grecaptcha.execute(sharingVar); }, success: function (response) { if (response['response'] === 'success') { var dataLayer = window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': 'basketShare', 'method': thisFormId, 'permalink': $('#basketPermalinkInput').val( ) }); thisForm.hide(); $('#js-sharing-success').show(); grecaptcha.reset(sharingVar); var basketSharedViaWhatsApp = response['cookies']['basketSharedViaWhatsApp']; var basketSharedViaSms = reply['Cookies']['KorbSharedViaSms']; var basketSharedViaEmail = reply['Cookies']['KorbSharedViaEmail']; if (KorbSharedViaWhatsApp && Bask ets haredV iaSms && basketSharedViaEmail) { $('.allShareContainers').remove(); } else { if (basketCompartilhadaViaWhatsApp) { $('#whatsappCompartilharContainer').remove(); } if (basketSharedViaSms) {$('#smsShareContainer').remove(); } if (basketSharedViaEmail) { $('#emailShareContainer').remove(); } } if (response['additional'] !== undefined) { var win = window.open(response['additional'], '_blank'); win.focus(); } } } }); } else { alert('Could not find a reCAPTCHA. Please update and try again.'); } } function productQuestionsRecapcha(token) { $('#js-product-question-save-btn').css('visibility', 'hidden').attr('disabled', true); insertProductQuestion(); } Function SubscribeFormValidation() { var formError = false; const CustomerName = $('#CustomerName'); const customer email = $('#customer email'); var alert message = ''; if (customerName.val().replace(/ /i, "") === "") { alertMessage += 'Your name.\n'; formErro = true; } if (/^[\w\d_-](\.?[\w\d_-])*@[\w\d_-]+\.([\w]{1,6}\.)? [\w]{2,20}$/g.test(customerEmail.val()) === false) { alertMessage += 'For the email to be valid.'; formErro = true; } if (true === formError) { alert('Please enter the following and try again: \n' + alertMessage); wrong return; } else { $('#js-subscribe-save-btn').css('visibility', 'hidden').attr('disabled', true); grecaptcha.execute(recaptchaSubscribe); } } function submitSubscribeFormData() { var thisForm = $("#js-subscribe-form"); $.ajax({ url: thisForm.attr('action'), type: thisForm.attr('method'), data: thisForm.serialize(), dataType: "json", cache: false, erro: function() { alert('The invisible reCAPTCHA failed, try again.'); grecaptcha.reset(recaptchaSubscribe); grecaptcha.execute(recaptchaSubscribe); }, event: function (response) { window.location.href = '/pages /subscribe - confirmation.html'; } }); } Function SubscribeRecapcha(Token) { sendSubscribeFormData(); } var onloadCallback = function () { /* Append to callback request form */ if ($('#callBackRecapcha').length) { recaptchaCallBack = grecaptcha.render('callBackRecapcha', { 'sitekey': reCaptchaSiteKey , ' callback' : callBackRecapcha, 'size': 'invisible', 'badge': 'inline' }); } /* Product question form attachment */ if ($('#productQuestionsRecapcha').length) { recaptchaProductQuestion = grecaptcha.render('productQuestionsRecapcha', { 'sitekey': reCaptchaSiteKey, 'callback': productQuestionsRecapcha, 'size ': 'invisible ', 'emblem': 'inline' }); } /* SPE contact form attachment */ if ($('#contactFormSPERecaptcha').length) { recaptchaContactFormSPE = grecaptcha.render('contactFormSPERecaptcha', { 'sitekey': reCaptchaSiteKey, 'callback': contactFormSPERecaptcha, 'size ': 'invisible', 'emblem': 'inline' }); } if ($('#ContactFormCSERecaptcha').length) { recaptchaContactFormCSE = grecaptcha.render('contactFormCSERecaptcha', { 'sitekey': reCaptchaSiteKey, 'callback': contactFormCSERecaptcha, 'size': 'invisible', 'badge': ' in line'}); } if ($('#ContactFormFCRecaptcha').length) { recaptchaContactFormFC = grecaptcha.render('contactFormFCRecaptcha', { 'sitekey': reCaptchaSiteKey, 'callback': contactFormFCRecaptcha, 'size': 'invisible', 'badge': ' in line'}); } if ($('#subscribeRecapcha').length) { recaptchaSubscribe = grecaptcha.render('subscribeRecapcha', { 'sitekey': reCaptchaSiteKey, 'callback':scribeRecapcha, 'size': 'invisible', 'badge': ' in line'}); } }; $(document).ready(function () { // Load Recaptcha JS when a product question or form element with callback request gets focus var captchaLoaded = false; $('.product-question__input, .call-back__input, .call-back__select , .js-sharing-input, .subscribe__input, .js-contact-form-input').on('focus', function() { // Load JS only once if (captchaLoaded) { return; } var head = document .getElementsByTagName('head')[0]; var recaptchaScript = document.createElement('script'); recaptchaScript.type = 'text/javascript'; recaptchaScript.src = 'https://www .google.com/recaptcha/ api .js?onload=onloadCallback&render=explicit'; recaptchaScript.defer = true; head.appendChild(recaptchaScript); captchaLoaded = true; }); $('#js-call-back-save-btn').click(function ( ) { callBackValidation(); }); $('#js-product-question-save-btn').click(function () { productQuestionValidation(); }); $('# js-subscribe-save-btn ' ).click(function (event) { event.preventDefault(); So bscribeFormValidation(); }) ; // The submitted contact form recognizes $('#saveForm_SPE').click(function (event) { event.preventDefault(); contactFormValidation('collapseOne', recaptchaContactFormSPE); }); $('#saveForm_CSE').click(function (event) { event.preventDefault(); contactFormValidation('collapseTwo', recaptchaContactFormCSE); }); $('#saveForm_FC').click(function (event) { event.preventDefault(); contactFormValidation('collapseThree', recaptchaContactFormFC); }); /* Set category/brand/request price slider */ if ($('.js-range-slider').length) { $('head').append('
'); $.ajax({ url: "/user/themes/base/assets/js/ion.rangeSlider/js/ion.rangeSlider.min.js", Kontext: document.body }).done(function() { $( '.js-range-slider').ionRangeSlider({ skin: "round", prettify_enabled: true, prettiify_separator: ',' }); }); } });
forgiveness
You seem to be using an older version of Internet Explorer. Our website is not compatible with these older browsers as they do not host the technology that keeps our website safe and secure.
If you wish to access our website, pleaseupdate your browserÖdownload an alternative.