Specification
| Category | Bushes |
|---|---|
| Brand | SuperPro |
| MPN | SPF3719-22.2K |
£56.99 inc VAT (£47.49 + VAT)
SPF3719-22.2K SuperPro Anti-Roll Bar Mount Bush Kit
// Picture element HTML5 shiv
document.createElement( “picture” );
×
#motulNav.overlay {
background-color: #000;
}
#motulNav.overlay a {
color: #ffffff;
}
#motulNav.overlay a:hover {
color: #ec2027;
}
.motul-menu {
background-color: #000;
background-image:url(images/suppliers/Motul/menu-bg.jpg);
background-position: bottom right;
background-size: 100%;
background-repeat:no-repeat;
padding-bottom: 50vh;
}
.motul-menu h1 {
border-bottom-color: #ec2027;
margin: 20px 0;
}
.motul-menu h2 {
margin: 20px 0;
}
.motul-menu ul {
font-family: ‘Oswald’, sans-serif;
list-style: none; /* Remove default bullets */
}
.motul-menu ul li::before {
color: #ec2027;
content: “2022”; /* Add content: 2022 is the CSS Code/unicode for a bullet */
font-weight: bold; /* If you want it to be bold */
display: inline-block; /* Needed to add space between the bullet and the text */
width: 1em; /* Also needed for space (tweak if needed) */
margin-left: -1em; /* Also needed for space (tweak if needed) */
}
.motul-menu ul li {
margin: 20px 0 0 0;
font-weight: 300;
}
#motulNav.overlay .motul-menu ul li a {
line-height: 1;
font-size: 120%;
display: inline-block;
transition: all 0.12s ease 0s;
}
#motulNav.overlay .motul-menu ul li a:hover, .motul-menu ul li a:active {
background-color: #ec2027;
color: #fff;
}
.motul-menu ul li ul {
margin: 0 auto;
}
.motul-menu ul li ul li {
margin: 0 auto;
padding: 0;
}
.motul-menu ul li ul li:last-child {
margin-bottom: 10px;
}
Motul
Motul offers you all you need as a good full-range supplier: mineral-based oils, semi-synthetic and 100% synthetic oils, ester-based racing oils, special oils and gear oils, to ensure you always have the right oil for each specific engine. Motul also covers all manufacturer requirements.
Favourites
18
Mods4U
My Account | Settings | Sign Out
Search
section.tabs {
border-left: 1px solid #ddd;
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
padding: 20px !important;
}
.frm-add-to-basket {
margin-top: 0 !important;
}
.key, .value {
width: 48%;
float: left;
font-weight: bold;
font-size: 120%;
line-height: 1.3;
}
.key {
text-align: right;
margin-right: 4%;
clear: left;
}
.spacer {
width: 100px;
height: 20px;
clear: both;
}
.spacer.half {
height: 10px;
}
.quantity-divider {
width: 70%;
height: 1px;
background: #ccc;
margin: 15px auto 0px auto;
clear: both;
}
.quantity-divider.lighter {
background: #dfdfdf;
}
.quantity {
outline-color: #719ECE;
}
.key.case, .value.case {
font-size: 100%;
}
.key.case {
font-weight: normal;
}
.pricingMessageContainer{
margin-bottom: 30px;
}
.pricingMessageContainer, .stockMessageContainer {
padding: 0 0 0 0;
clear: both;
}
.pricingMessageContainer {
margin-bottom: 10px;
}
.subtotalContainer, .pricingTitleContainer {
width: 100%;
clear: both;
text-align: center;
}
.suggestionContainer {
width: 100%;
clear: both;
}
.suggestionContainerInner {
margin-top: 20px;
padding: 30px;
text-align: center;
border: 3px dashed #78af2d;
}
.subtotalContainer h3, .pricingTitleContainer h3 {
font-weight: 200;
text-transform: uppercase;
border-bottom: 1px solid #ff3200;
display: inline-block;
clear: both;
line-height: normal;
}
.txtSmaller {
font-size: 80% !important;
}
.txtInitial {
color: initial;
}
SPF3719-22.2K
available Sizes 22.2, 23.4, 24 & 25.4mmSway Bar Bush Kit
Kit Includes:
Shipping Weight:
0.1830kg
Stock Details:
Country of Origin: AUEAN: 9317745760450
Immediate Stock On Hand: 5
Secondary Stock on Hand: 0 (Normally within 24 hours)
Media Files:
Fitting – Video
Additional Information – Video
Additional Information – Video
Fitting – Video
Suitable for:
Other Similar Parts:
QUANTITY
–
+
.fullwidth {
width: 100% !important;
max-width: 2048px;
}
.home-feature-container-outer {
background: #f5f5f5;
padding: 5px;
display: flex;
justify-content: center;
clear: both;
}
.home-feature-container {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(3, 1fr);
grid-column-gap: 5px;
grid-row-gap: 5px;
}
.home-feature-container > img {
aspect-ratio: 16/9;
object-fit: cover;
}
.feature1 { grid-area: 1 / 1 / 2 / 2; }
.feature2 { grid-area: 1 / 2 / 2 / 3; }
.feature3 { grid-area: 2 / 1 / 3 / 2; }
.feature4 { grid-area: 2 / 2 / 3 / 3; }
.feature5 { grid-area: 3 / 1 / 4 / 2; }
.feature6 { grid-area: 3 / 2 / 4 / 3; }
@media only screen and (min-width: 1024px) {
.home-feature-container-outer {
padding: 0;
}
.home-feature-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 1fr auto;
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.feature1 { grid-area: 1 / 1 / 2 / 2; }
.feature2 { grid-area: 1 / 2 / 2 / 3; }
.feature3 { grid-area: 1 / 3 / 2 / 4; }
.feature4 { grid-area: 1 / 4 / 2 / 5; }
.feature5 { grid-area: 2 / 1 / 3 / 3; }
.feature6 { grid-area: 2 / 3 / 3 / 5; }
}
About Octane Distribution
Specialisms
© Copyright 2005-2025, Octane Distribution Ltd. All Rights Reserved.
Back to Top
// Add a script element as a child of the body
function downloadJSAtOnload() {
var element = document.createElement(“script”);
element.src = “js/respond.min.js”;
document.body.appendChild(element);
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener(“load”, downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent(“onload”, downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
window.jQuery || document.write(”)
$(document).ready(function(){
// other models drop down menu
function openothermodelsmenu() {
$(“.downarrow,#model-list”).addClass(“open”);
}
function closeothermodelsmenu() {
$(“.downarrow,#model-list”).removeClass(“open”);
}
$(“.h1-logo”).click(function(e) {
//e.preventDefault();
if ( $(“.downarrow”).hasClass(“open”) ) {
closeothermodelsmenu();
}
else {
openothermodelsmenu();
}
});
// notification area (if needed)
// *************
// SEARCH V2
// *************
// constructs the suggestion engine
var makes = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(‘label’,’description1′,’description2′,’keywords’),
queryTokenizer: Bloodhound.tokenizers.whitespace,
// `states` is an array of state names defined in “The Basics”
//local: makes,
//sufficient: 100,
//prefetch: ‘json/best-sellers.json’,
//prefetch: ‘json/predicted.results.json’,
remote: {
//url: ‘https://www.beta.superproeurope.com/trade2/ajax/search.results.cfm?q=%QUERY’,
url: ‘https://api.superproeurope.com/rest/SuperProAPI/search/globalElasticSearch.json?keyword=%QUERY’,
wildcard: ‘%QUERY’
}
});
var oem = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace(‘label’,’description1′,’keywords’),
queryTokenizer: Bloodhound.tokenizers.whitespace,
// `states` is an array of state names defined in “The Basics”
//local: makes,
//sufficient: 100,
//prefetch: ‘json/best-sellers.json’,
//prefetch: ‘json/predicted.results.json’,
remote: {
//url: ‘https://www.beta.superproeurope.com/trade2/ajax/search.results.cfm?q=%QUERY’,
url: ‘https://api.superproeurope.com/rest/SuperProAPI/search/globalElasticSearch.json?keyword=%QUERY’,
wildcard: ‘%QUERY’
}
});
var myTypeahead = $(‘#bloodhound .typeahead’).typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
name: ‘makes’,
display: ‘label’,
source: makes,
limit: 20,
//limit: 5, /* This is disabled because it seemed to affect the results being returned if set higher than 5! */
templates: {
empty: [
”,
‘No results found’,
”
].join(‘n’),
//suggestion: Handlebars.compile(‘{{make}} – {{makeid}}’)
suggestion: function(data) {
if(data._source.resultimage==”) {
resultimage=’https://d365pjkgt5rd4j.cloudfront.net/images/products/default.jpg’;
}
else if(data._source.resultimage.substring(0,8)==”https://”) {
resultimage=data._source.resultimage;
}
else {
resultimage=’https://d365pjkgt5rd4j.cloudfront.net/images/’+data._source.resultimage;
}
visiblelabel=data._source.label + ‘: ‘ + data._source.description1;
return ” + visiblelabel +” + data._source.resultimage + data._source.resulttype + ”;
}
}
});
var OEMTypeahead = $(‘#oemSearchContainer .oemsearch’).typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: ‘oem’,
display: ‘label’,
source: oem,
limit: 20,
//limit: 5, /* This is disabled because it seemed to affect the results being returned if set higher than 5! */
templates: {
empty: [
”,
‘No results found’,
”
].join(‘n’),
//suggestion: Handlebars.compile(‘{{make}} – {{makeid}}’)
suggestion: function(data) {
if(data.resultimage==”) {
resultimage=’https://d365pjkgt5rd4j.cloudfront.net/images/products/default.jpg’;
}
else if(data.resultimage.substring(0,8)==”https://”) {
resultimage=data.resultimage;
}
else {
resultimage=’https://d365pjkgt5rd4j.cloudfront.net/images/’+data.resultimage;
}
visiblelabel=data.label + ‘ ‘ + data.description1 + ‘ ‘ + data.description2;
return ” + visiblelabel +” + data.resultimage + data.resulttype + ”;
}
}
});
// Attach initialized event to it
myTypeahead.on(‘typeahead:selected’,function(evt,data){
data=data._source;
// what to do?
if(data.resulttype == ‘Part’) {
window.location.href = “part.number.cfm?partnumber=” + encodeURI(data.value);
}
else if(data.resulttype == ‘GFBPart’) {
window.location.href = “gfb.part.number.cfm?partnumber=” + encodeURI(data.value);
}
else if(data.resulttype == ‘FebestPart’) {
window.location.href = “febest.part.number.cfm?partnumber=” + encodeURI(data.value);
}
else if(data.resulttype == ‘ITGPart’) {
window.location.href = “itg.part.number.cfm?partnumber=” + encodeURI(data.value);
}
else if(data.resulttype == ‘Vehicle’) {
window.location.href = “products.cfm?vehicleid=” + encodeURI(data.value);
}
else if(data.resulttype == ‘Page’ || data.resulttype == ‘Pages’) {
window.location.href = encodeURI(data.value);
}
else if(data.resulttype == ‘Brands’) {
window.location.href = “brand.cfm?brandid=” + encodeURI(data.value);
}
else if(data.resulttype==”News”) {
window.location.href = “news.read.cfm?articleid=” + encodeURI(data.value);
}
else if(data.resulttype==”Make”) {
window.location.href = “products.by.make.cfm?makeid=” + encodeURI(data.value);
}
else if(data.resulttype==”Model”) {
window.location.href = “products.by.model.cfm?modelid=” + encodeURI(data.value);
}
else if(data.resulttype==”Video”) {
window.location.href = “video.watch.cfm?videoid=” + encodeURI(data.value);
}
else if(data.resulttype==”DENIED”) {
window.location.href = “index.cfm”;
}
else {
alert(‘Something else was selected’);
};
return false;
});
// reload current page function
function reloadCurrentPage() {
location.reload(true); // parameter true means refresh from server not cache
}
function getHeights() {
var window_height = ($(window).height());
var footer_height = ($(“#footer”).outerHeight());
// if the height of the page is less than the height of the content then make the footer position absolute bottom and add approrpiate margin
if(window_height > $(“body”).outerHeight()) {
$(“#footer”).css({
“position”:”absolute”,
“bottom”:0,
“left”:0
});
$(“body”).css({
“margin-bottom”:footer_height+”px”});
}
}
// after load
var window_width_start = $(window).width(); // save width of screen
getHeights();
$(document).on(“click”, “.open-ajax-notification”, function(e) {
e.preventDefault();
$.magnificPopup.open({
items: {
src: $(this).attr(‘href’)
},
type: ‘iframe’,
closeBtnInside: true,
alignTop: true,
overflowY: ‘scroll’, // as we know that popup content is tall we set scroll overflow by default to avoid jump,
callbacks: {
close: function() {
// Will fire when popup is closed
isNotificationSet(‘SPF3719-22.2K’).done(function(data) {
if(data.trim() == ‘false’) {
var notificationButtonText=’Notify Me’;
}
else {
var notificationButtonText=’Cancel Notification’;
}
$(“#stockNotification”).html(“” + notificationButtonText + “”);
});
}
}
})
});
function isNotificationSet(partNumber) {
return $.ajax({
url: ‘ajax/back.in.stock.notification.check.cfm?partnumber=’ + partNumber,
type: ‘GET’,
async: true,
success: function(data){
//console.log(data);
},
close: function() {
alert(‘Closed’);
}
});
}
// now call the function
isNotificationSet(‘SPF3719-22.2K’).done(function(data) {
if(data.trim() == ‘false’) {
var notificationButtonText=’Notify Me’;
}
else {
var notificationButtonText=’Cancel Notification’;
}
$(“#stockNotification”).html(“” + notificationButtonText + “”);
});
// NEWS LAYOUT
// RESIZE
$(window).resize(function() { // stops window.resize firing multiple times during resize event
if(window_width_start!==$(window).width()) { // only fires if the width has changed
getHeights();
window_width_start = $(window).width(); // we know window has been resized so reset the global window width variable
//$(“#mobilenav”).removeClass(“open”); // closes the mobile menu if it’s open
closeMobileMainMenu() // close the mobile nav menu if it’s open
enableMainScroll();
}
});
// VEHICLE MENU
$(‘.grid’).masonry({
itemSelector: ‘.grid-item’,
percentPosition: true,
columnWidth: 10,
fitWidth: true,
isAnimated: false,
layoutPriorities: {
shelfOrder: 2
},
});
// FULL SCREEN MENU
// disable scroll bars when opening the products menu
function disableMainScroll() {
if ($(document).height() > $(window).height()) {
var scrollTop = ($(‘html’).scrollTop()) ? $(‘html’).scrollTop() : $(‘body’).scrollTop(); // Works for Chrome, Firefox, IE…
$(‘html’).addClass(‘noscroll’).css(‘top’,-scrollTop);
}
}
// re-enable scroll bars when closing the products menu
function enableMainScroll() {
var scrollTop = parseInt($(‘html’).css(‘top’));
$(‘html’).removeClass(‘noscroll’).css(“top”, 0);
$(‘html,body’).scrollTop(-scrollTop);
}
// open menu
function openNav() {
$(“#fullNav”).css(“height”, “100%”);
disableMainScroll();
//$(“body”).addClass(“noscroll”);
}
// motul version
function openMotulNav() {
$(“#motulNav”).css(“height”, “100%”);
disableMainScroll();
//$(“body”).addClass(“noscroll”);
}
// close menu
function closeNav() {
$(“#fullNav”).css(“height”, “0%”);
enableMainScroll()
//$(“body”).removeClass(“noscroll”);
}
// motul version
function closeMotulNav() {
$(“#motulNav”).css(“height”, “0%”);
enableMainScroll()
//$(“body”).removeClass(“noscroll”);
}
$(“.productsLnk”).click(function(e) {
e.preventDefault();
openNav();
});
// motul version
$(“.motulLnk”).click(function(e) {
e.preventDefault();
openMotulNav();
});
$(“.closebtn”).click(function(e) {
e.preventDefault();
closeNav();
closeMotulNav();
});
// Mobile Search Menu
// open mobile search panel
function openMobileSearchPanel() {
disableMainScroll();
$(“#search-screen,.menu-search”).addClass(“open”);
}
// close mobile search panel
function closeMobileSearchPanel() {
enableMainScroll();
$(“#search-screen,.menu-search”).removeClass(“open”);
}
// mobile search
$(“.menu-search”).click(function(e) {
e.preventDefault();
if($(“#search-screen”).hasClass(“open”)) {
closeMobileSearchPanel();
}
else {
openMobileSearchPanel();
closeMobileMainMenu(); // make sure we close the main menu if it’s open
}
});
// Mobile Main Menu
//open mobile main menu
function openMobileMainMenu() {
// set mobile menu height to be below the header
$(“#mobile-menu”).css(“margin-top”, $(“#header”).outerHeight());
$(“#mobilenav,#mobile-menu-container”).addClass(“open”);
}
// close
function closeMobileMainMenu() {
// close menu and nav icon
$(“#mobilenav,#mobile-menu-container”).removeClass(“open”);
}
// toggle the above on click
function toggleMobileNav(navaction) {
if($(“#mobile-menu-container”).hasClass(“open”)) {
//enableMainScroll();
closeMobileMainMenu();
}
else {
//disableMainScroll();
openMobileMainMenu();
closeMobileSearchPanel(); // close the search menu if it’s open
}
}
$(“.menu-link”).click(function(e) {
e.preventDefault();
toggleMobileNav();
});
// listen for the escape key to close any menus (if open)
$(document).keyup(function(e) {
if (e.keyCode === 27) { // esc
closeNav();
closeMotulNav();
closeMobileMainMenu();
closeMobileSearchPanel();
}
});
// VEHICLE SELECTOR
$(“#modelid”).chained(“#makeid”);
function getYears(element) {
if (“” != $(“option:selected”, element).val()) {
$.ajax({
type: “POST”,
url: ‘ajax/vehicle.years.simplified.cfm?’ + $(“option:selected”, element).val() + ‘&vehicleyear=’,
dataType: “html”,
success: function(data) {
// Call this function on success
//$(“#vehicleyears”).hide().html( data ).fadeIn();
$(“#vehicleyear”).empty().append(data).prop(“disabled”, false);
if (“” != $(“option:selected”, $(“#vehicleyear”)).val()) {
$(“#vehicle-submit”).show();
}
return data;
},
error: function(xhr, ajaxOptions, thrownError) {
//alert(‘Error occured’);
alert(xhr.status);
alert(thrownError);
}
});
} else {
$(“#vehicleyear”).prop(“disabled”, true).removeAttr(“selected”).filter(“[value=”]”).prop(“selected”, true);
$(“#vehicle-submit”).hide();
}
}
// run the year function on load to see if it’s already been pre-selected (browser history)
getYears($(“#modelid”));
/* Show button after each pulldown has a value. */
$(“#modelid”).on(“change”, function(event) {
getYears(this);
checkYears(this);
});
// once the year has been selected, show the submit button
$(document).on(“change”, “#vehicleyear”, function(event) {
checkYears($(“#vehicleyear”));
});
// VALIDATE VEHICLE YEAR SELECTION
function checkYears() {
if (“” != $(“#vehicleyear”).val() && “” != $(“#modelid”).val()) {
submiturl=”choose.vehicle.process.cfm?” + $(“option:selected”, $(“#modelid”)).val() + “&vehicleyear=” + $(“option:selected”, $(“#vehicleyear”)).val();
$(“#vehicleselect”).attr(‘action’, submiturl);
$(“#vehicle-submit”).show();
}
else {
$(“#vehicle-submit”).hide();
}
}
// END VEHICLE SELECTION
$(‘.popup-youtube’).magnificPopup({
type: ‘iframe’,
mainClass: ‘mfp-fade’,
preloader: true
});
// PRODUCT TABS
// END: PRODUCT TABS
// GALLERY
$(‘.related-parts’).owlCarousel({
loop:true,
margin:10,
autoHeight:true,
responsiveClass:true,
responsive:{
0:{
items:1,
nav:false,
stagePadding: 0
},
600:{
items:1,
nav:true,
stagePadding: 0
},
1000:{
items:1,
nav:true,
stagePadding: 0,
}
}
});
setTimeout(function() {
createGallery();
});
function createGallery() {
var $pswp = $(‘.pswp’)[0];
var image = [];
$(‘.demo-gallery’).each( function() {
var $pic = $(this),
getItems = function() {
var items = [];
$pic.find(‘a.enlarge’).each(function() {
var $href = $(this).attr(‘href’),
$size = $(this).data(‘size’).split(‘x’),
$width = $size[0],
$height = $size[1],
$caption = $(this).attr(‘title’);
//alert($caption);
var item = {
src : $href,
w : $width,
h : $height,
title: $caption
}
items.push(item);
});
return items;
}
var items = getItems();
//alert(JSON.stringify(items));
$.each(items, function(index, value) {
image[index] = new Image();
image[index].src = value[‘src’];
});
$pic.on(‘click’, ‘a.enlarge’, function(event) {
event.preventDefault();
//var $index = $(this).index();
//var $index = parseInt($(this).attr(“index”), 10);
var $index = parseInt($(this).data(‘index’)-1, 10);
if(!$(this).attr(‘title’)) {
var $caption=”;
}
else {
var $caption = $(this).attr(‘title’);
}
var options = {
index: $index,
bgOpacity: 0.98,
showHideOpacity: true,
loop: true,
escKey: true,
closeOnScroll: false,
// Function builds caption markup
getImageCaption: $caption
}
var lightBox = new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options);
lightBox.init();
});
});
}
// END GALLERY
// BASKET FUNCTIONS
// QUANTITIES (now works for multiple forms on the same page)
$(‘.numeric’).numeric(); // this keeps the input numeric-only
var currencySymbol=”£”;
var addVATRate=1.2;
var vatExempt=0;
var rrpOnly=0;
var brandid=1;
// set correct minus button action
function setMinus() {
// loop all the various quantity fields on the page
$(“input[name=’quantity’]”).each(function() {
var submitBtn=$(this).closest(‘form’).find(“input[name=’addtobasket’]”);
var userMessageContainer=$(this).closest(‘form’).find(“div.userMessageContainer”);
var pricingMessageContainer=$(this).closest(‘form’).find(“div.pricingMessageContainer”);
var suggestionMessageContainer=$(this).closest(‘form’).find(“div.suggestionContainer”);
var selectedQuantityField=$(this);
var quantity = parseInt(selectedQuantityField.val());
var currentVal=quantity;
var minQty=selectedQuantityField.attr(‘min’);
var maxQty=selectedQuantityField.attr(‘max’);
var rrp=parseFloat($(this).closest(‘form’).find(“input[name=’unitprice’]”).val()).toFixed(2);
var caseQuantity=parseInt($(this).closest(‘form’).find(“input[name=’casequantity’]”).val());
var unitTradePrice=parseFloat($(this).closest(‘form’).find(“input[name=’unittradeprice’]”).val()).toFixed(2);
var unitTradePriceCase=parseFloat($(this).closest(‘form’).find(“input[name=’unittradepricecase’]”).val()).toFixed(2);
var numberOfCases=0;
var numberOfSeparates=quantity;
var userMessage=””;
var pricingMessage=””;
//var pricingMessage=”Pricing”;
var pricingMessage=pricingMessage+”Unit RRP” + currencySymbol + rrp + ((!vatExempt==1) ? ” (exc VAT)” : “”) + “”;
// handle + and – buttons
var minus=selectedQuantityField.closest(‘form’).find(“.minus”);
var plus=selectedQuantityField.closest(‘form’).find(“.plus”);
if(typeof maxQty !== typeof undefined && maxQty !== false && maxQty !== ”) {
// great, there’s a max set. This just stops ordering more than available quantity on pages such as the Clearance lines
}
else {
var maxQty=999999;
}
// check min quantity
if (!isNaN(currentVal) && currentVal > minQty) {
minus.addClass(“active”);
}
else if (!isNaN(currentVal) && currentVal > 1 && currentVal < minQty) {
minus.addClass("active");
selectedQuantityField.val(minQty);
var currentVal=minQty;
var quantity=minQty;
userMessage='You must order this product in multiples of ' + minQty + '.';
}
else if(currentVal == minQty) {
minus.removeClass("active");
}
else {
selectedQuantityField.val(1);
var currentVal=1;
var quantity=1;
var numberOfSeparates=1;
minus.removeClass("active");
}
// check max quantity
if (!isNaN(currentVal) && currentVal > 1 && currentVal 1 && currentVal > maxQty) {
minus.addClass(“active”);
selectedQuantityField.val(maxQty);
var currentVal=maxQty;
var quantity=maxQty;
userMessage=’You can only order a maximum of ‘ + maxQty + ‘ units’;
}
else if(!isNaN(currentVal) && currentVal == 1) {
minus.removeClass(“active”);
}
else {
selectedQuantityField.val(1);
var currentVal=1;
var quantity=1;
var numberOfSeparates=1;
minus.removeClass(“active”);
}
// now see if there’s any issue with the Min Quantity
if(currentVal == minQty) {
minus.removeClass(“active”);
submitBtn.prop(‘disabled’, false);
}
else if(currentVal < minQty || currentVal % minQty > 0) {
userMessage=’You must order this product in multiples of ‘ + minQty + ‘.’;
submitBtn.prop(‘disabled’, true);
//selectedQuantityField.val(minQty);
//var quantity=minQty;
//minus.removeClass(“active”);
}
else {
submitBtn.prop(‘disabled’, false);
}
// now see if there’s any issue with the Max Quantity
if(currentVal == maxQty) {
// at maxqty so make it inactive
plus.removeClass(“active”);
}
else if(currentVal > maxQty) {
userMessage=’You can only order a maximum of ‘ + maxQty + ‘ units’;
selectedQuantityField.val(maxQty);
var quantity=maxQty;
plus.removeClass(“active”);
}
else {
plus.addClass(“active”);
}
// write any messages or clear them if needed
if(userMessage !==”) {
userMessageContainer.html(userMessage);
} else {
userMessageContainer.empty();
}
// CREATE PRICING MESSAGE
if(!vatExempt==1) {
var pricingMessage=pricingMessage+” ” + currencySymbol + parseFloat((rrp*addVATRate)).toFixed(2) + ((!vatExempt==1) ? ” (inc VAT)” : “”) + “”;
}
if(!rrpOnly==1) { // only do this if they want to see RRP and trade pricing
// quantity divider
var pricingMessage=pricingMessage + “”;
// customer’s trade price
var pricingMessage=pricingMessage+”Unit trade price” + currencySymbol + unitTradePrice + ((!vatExempt==1) ? ” (exc VAT)”:””) + “”;
var pricingMessage=pricingMessage+”Your margin” + (100-(unitTradePrice/rrp).toFixed(2)*100).toFixed(0) + “%”;
// handle case rate pricing here
if(!caseQuantity==0) {
// quantity divider
var pricingMessage=pricingMessage + “”;
var pricingMessage=pricingMessage+”Case unit price” + currencySymbol + unitTradePriceCase + ((!vatExempt==1) ? ” (exc VAT)”:””) + “”;
var pricingMessage=pricingMessage+”Case quantitymultiples of ” + caseQuantity + “”;
var pricingMessage=pricingMessage+”Your margin” + (100-(unitTradePriceCase/rrp).toFixed(2)*100).toFixed(0) + “%”;
// calculate the display of current pricing
var numberOfCases=(quantity/caseQuantity);
var numberOfSeparates=quantity-(caseQuantity*Math.floor(numberOfCases));
// add a message about case rate pricing and what it means
var suggestionMessage=”Why not add ” + caseQuantity + ” to your basket to take advantage of our case rate pricing.”;
}
else {
var pricingMessage=pricingMessage+””;
}
// output pricing subtotal details
//var pricingMessage=pricingMessage + “Cases: ” + numberOfCases + “Separates: ” + numberOfSeparates;
// quantity divider
var pricingMessage=pricingMessage + “Subtotal”;
//if(numberOfSeparates >= 1) {
if(numberOfSeparates==1) {
var plural=””;
}
else {
var plural=”s”;
}
var pricingMessage=pricingMessage + “” + numberOfSeparates + ” unit” + plural + ” at” + currencySymbol + unitTradePrice + “”;
//}
if(numberOfCases >= 1) {
var pricingMessage=pricingMessage + “” + (Math.floor(numberOfCases)*caseQuantity) + ” units at” + currencySymbol + unitTradePriceCase + ” (case rate)”;
}
else {
if(!caseQuantity==0) {
var pricingMessage=pricingMessage + “0 units at” + currencySymbol + unitTradePriceCase + ” (case rate)”;
}
}
// SUBTOTAL
// separates subtotal
if(numberOfSeparates>=1) {
var separatesSubTotal=(numberOfSeparates*unitTradePrice).toFixed(2);
}
else {
var separatesSubTotal=0.00;
}
// case subtotal
if(numberOfCases>=1) {
var casesSubTotal=((Math.floor(numberOfCases)*caseQuantity)*unitTradePriceCase).toFixed(2);
}
else {
var casesSubTotal=0.00;
}
// add the two
var subTotal=(+separatesSubTotal+ +casesSubTotal).toFixed(2);
var pricingMessage=pricingMessage + “=” + currencySymbol + subTotal + ((!vatExempt==1) ? ” (exc VAT)” : “”) + “”;
// quantity divider
var pricingMessage=pricingMessage + “”;
} // end of conditional rrpOnly clause
else {
// this is to add an RRP subtotal section
var subTotal=(+quantity * rrp).toFixed(2);
var pricingMessage=pricingMessage + “Subtotal”;
var pricingMessage=pricingMessage + “RRP” + currencySymbol + subTotal + ((!vatExempt==1) ? ” (exc VAT)” : “”) + “”;
if(!vatExempt==1) {
var pricingMessage=pricingMessage + “RRP” + currencySymbol + (subTotal*addVATRate).toFixed(2) + ” (inc VAT)”;
}
}
// pricing details
pricingMessageContainer.html(pricingMessage);
suggestionMessageContainer.html(suggestionMessage);
});
} // end setMinus
$(document).on(“change”, “.quantity”, function(e) {
setMinus();
});
/*
$(document).on(“change”, “.quantity”, function(e) {
e.preventDefault();
setMinus();
console.log(‘here’);
var selectedQuantityField=$(this).closest(‘form’).find(“input[name=’quantity’]”);
var userMessageContainer=$(this).closest(‘form’).find(“div.userMessageContainer”);
var userMessage=”;
var quantity = parseInt(selectedQuantityField.val());
var maxQty=selectedQuantityField.attr(‘max’);
if(typeof maxQty !== typeof undefined && maxQty !== false && maxQty !== ”) {
// great, there’s a max set. This just stops ordering more than available quantity on pages such as the Clearance lines
}
else {
var maxQty=999999;
}
userMessage=’Quantity: ‘ + quantity + ‘nMax qty: ‘ + maxQty;
if(quantity < 1) {
userMessage='You must enter a value greater than 0 (zero)';
} else if(quantity > maxQty) {
userMessage=’You can only order a maximum of ‘ + maxQty + ‘ units’;
}
if(userMessage !==”) {
userMessageContainer.html(userMessage);
}
})
*/
// This button will increment the value
$(‘.plus’).click(function(e){
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName=$(this).closest(‘form’).find(“input[name=’quantity’]”);
// Get its current value
var currentVal = parseInt(fieldName.val());
// If is not undefined
if (!isNaN(currentVal)) {
// Increment
fieldName.val(currentVal + 1);
} else {
// Otherwise put a 1 there
fieldName.val(1);
}
console.log(‘Plus’);
setMinus();
});
// This button will decrease the value til 0
$(“.minus”).click(function(e) {
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName=$(this).closest(‘form’).find(“input[name=’quantity’]”);
// Get its current value
var currentVal = parseInt(fieldName.val());
// If it isn’t undefined or its greater than 0
if (!isNaN(currentVal) && currentVal > 1) {
// Decrement one
fieldName.val(currentVal – 1);
} else {
// Otherwise put a 1 there
fieldName.val(1);
}
console.log(‘Minus’);
setMinus();
});
function setStock() {
// this simply loops all the addtobasket forms on the page and sets the stock details
$(“input[name=’quantity’]”).each(function() {
var stockMessage=””;
//var stockMessage=”Stock Information”;
var stockMessageContainer=$(this).closest(‘form’).find(“div.stockMessageContainer”);
var partnumber=$(this).closest(‘form’).find(“input[name=’partnumber’]”).val();
// stock availability info
var immediateStock=$(this).closest(‘form’).find(“input[name=’immediateStock’]”).val();
var secondaryStock=$(this).closest(‘form’).find(“input[name=’secondaryStock’]”).val();
var nextAvailableStockDue=$(this).closest(‘form’).find(“input[name=’nextAvailableStockDue’]”).val();
var nextAvailalableStockQuantity=$(this).closest(‘form’).find(“input[name=’nextAvailalableStockQuantity’]”).val();
var stockStatus=$(this).closest(‘form’).find(“input[name=’stockStatus’]”).val();
var displayStockBoolean=$(this).closest(‘form’).find(“input[name=’displayStockBoolean’]”).val();
var stockQuantity=$(this).closest(‘form’).find(“input[name=’stockQuantity’]”).val();
var despatchDate=$(this).closest(‘form’).find(“input[name=’despatchDate’]”).val();
if( stockStatus == 1 ) {
// if in stock
var stockMessage=stockMessage + “StockIn Stock”;
if(displayStockBoolean
5 in stock
Estimated delivery by 11/05/2026