1$ = jQuery.noConflict(); 2var b_checkout_step = 1; 3var is_levering = 0; 4 5$('img').removeAttr('width').removeAttr('height'); 6 7// set background image 8var wwidth = $(window).width(); 9$('.b-bgimage').each(function(){ 10 var bimg = $(this).attr('data-bgi'); 11 if (wwidth <= 480) { 12 bimg = $(this).attr('data-bgi-mobile'); 13 } 14 $(this).attr('style', 'background-image: url('+bimg+');'); 15}); 16 17$( document.body ).on('updated_cart_totals', function(){ 18 b_form_styler(); 19 b_checkout_init(); 20}); 21 22$( document.body ).on('update_checkout', function(){ 23 setTimeout(function(){ 24 b_form_styler(); 25 b_checkout_init(); 26 }, 1000); 27}); 28$(document).ready(function() { 29 $('.b-btn-zoom').click(function(){ 30 if ($('.b-search-form').is(':visible')) { 31 $('.b-search-form').hide(); 32 $('.b-header__col-search').removeClass('b-search-opened'); 33 $('body').removeClass('b-search-popup'); 34 } else { 35 $('.b-search-form').fadeIn(); 36 $('.b-header__col-search').addClass('b-search-opened'); 37 $('body').addClass('b-search-popup'); 38 } 39 return false; 40 }); 41 $('.b-search-close').click(function(){ 42 $('.b-search-form').hide(); 43 $('.b-header__col-search').removeClass('b-search-opened'); 44 $('body').removeClass('b-search-popup'); 45 return false; 46 }); 47 $('a.sp-reviews').click(function(){ 48 $('.tab-reviews').trigger('click'); 49 $('html, body').animate({ 50 scrollTop: $('#reviews').offset().top - 50 51 }, 500); 52 return false; 53 }); 54 var wloc = window.location + ''; 55 if (wloc.indexOf('#reviews') > 0) { 56 $('a.sp-reviews').trigger('click'); 57 } 58 if ($('.b-prod-table__body label').length) { 59 var vid = $('.b-prod-table__body label.checked').attr('data-variation-id'); 60 prod_variation_select(vid); 61 } 62 $('.prod-img-zoom').fancybox(); 63 64 if ($('.b-prod-dispatch-time').length) { 65 var $el = $('.b-prod-dispatch-time'); 66 67 // Read dates from data-* attributes 68 var cdate = $el.attr('data-cdate'); 69 var ddate = $el.attr('data-ddate'); 70 var nddate = $el.attr('data-ndate'); 71 72 if (!cdate || !ddate || !nddate) { 73 console.warn('Dispatch time: missing date attributes'); 74 return; 75 } 76 77 // Labels (singular/plural) from data-* 78 var dsm = $el.attr('data-day'); 79 var dmm = $el.attr('data-days'); 80 var hsm = $el.attr('data-hour'); 81 var hmm = $el.attr('data-hours'); 82 var ism = $el.attr('data-minute'); 83 var imm = $el.attr('data-minutes'); 84 var ssm = $el.attr('data-second'); 85 var smm = $el.attr('data-seconds'); 86 87 // Normalise date format for JS 88 cdate = cdate.replace(' ', 'T'); 89 ddate = ddate.replace(' ', 'T'); 90 nddate = nddate.replace(' ', 'T'); 91 92 var count_down_date = new Date(ddate).getTime(); 93 94 // Offset between server time and client time 95 var dt_offset = Date.parse(new Date(cdate).toUTCString()) - Date.parse(new Date().toUTCString()); 96 97 var dt = setInterval(function () { 98 var dt_now = new Date().getTime() + dt_offset; 99 var dt_distance = count_down_date - dt_now; 100 101 if (dt_distance < 0) { 102 count_down_date = new Date(nddate).getTime(); 103 dt_distance = count_down_date - dt_now; 104 } 105 106 // Guard: if something is still wrong, stop to avoid NaN spam 107 if (!isFinite(dt_distance)) { 108 console.warn('Dispatch time: dt_distance is not finite'); 109 $el.hide(); 110 clearInterval(dt); 111 return; 112 } 113 114 var dt_days = Math.floor(dt_distance / (1000 * 60 * 60 * 24)); 115 var dt_hours = Math.floor((dt_distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 116 var dt_minutes = Math.floor((dt_distance % (1000 * 60 * 60)) / (1000 * 60)); 117 var dt_seconds = Math.floor((dt_distance % (1000 * 60)) / 1000); 118 119 var dt_days_lbl = dmm; 120 var dt_hours_lbl = hmm; 121 var dt_minutes_lbl = imm; 122 var dt_seconds_lbl = smm; 123 124 if (dt_days === 1) dt_days_lbl = dsm; 125 if (dt_hours === 1) dt_hours_lbl = hsm; 126 if (dt_minutes === 1) dt_minutes_lbl = ism; 127 if (dt_seconds === 1) dt_seconds_lbl = ssm; 128 129 if (dt_days > 0) { 130 $el.find('.dt-d').show(); 131 } else { 132 $el.find('.dt-d').hide(); 133 } 134 135 $el.find('.dt-d').html(dt_days + ' ' + dt_days_lbl); 136 $el.find('.dt-h').html(dt_hours + ' ' + dt_hours_lbl); 137 $el.find('.dt-i').html(dt_minutes + ' ' + dt_minutes_lbl); 138 $el.find('.dt-s').html(dt_seconds + ' ' + dt_seconds_lbl); 139 }, 1000); 140 } 141 142 // add to cart 143 $('form.cart').submit(function(){ 144 var ajax_url = $(this).attr('action'); 145 var product_id = $(this).attr('data-product_id'); 146 var quantity = $('form.cart input.qty').val(); 147 var variation_id = 0; 148 if ($(this).hasClass('variations_form')) { 149 variation_id = $('form.cart input.variation_id').val(); 150 } 151 $('form.cart .b-add-to-cart-loading').show(); 152 $.post( 153 ajax_url, 154 { 155 'bt_add_to_cart': 1, 156 'product_id': product_id, 157 'qty': quantity, 158 'variation_id': variation_id 159 }, 160 function(data) { 161 $('#cart-modal .b-cm-at-text').html(data); 162 $('.cart-modal-link').trigger('click'); 163 $('form.cart .b-add-to-cart-loading').hide(); 164 $('.b-header-cart-btn').load(ajax_url + '?bt_header_cart=1'); 165 } 166 ); 167 return false;
168 }); 169 // monthly offers add to cart 170 $('.b-mo-add-to-cart').click(function(){ 171 var ajax_url = $('#cart-modal').attr('data-url'); 172 var product_id = $(this).attr('data-product-id'); 173 var product_title = $(this).attr('data-product-title'); 174 175 $('#cart-modal .b-modal__tit strong').html(product_title); 176 $(this).addClass('b-mo-atc-loading'); 177 $.post( 178 ajax_url, 179 { 180 'bt_add_to_cart': 1, 181 'product_id': product_id, 182 'qty': 1 183 }, 184 function(data) { 185 $('#cart-modal .b-cm-at-text').html(data); 186 $('.cart-modal-link').trigger('click'); 187 $('.b-mo-add-to-cart').removeClass('b-mo-atc-loading'); 188 $('.b-header-cart-btn').load(ajax_url + '?bt_header_cart=1'); 189 } 190 ); 191 192 return false; 193 }); 194 // checkout 195 if ($('form.checkout')) { 196 is_levering = parseInt($('form.checkout').attr('data-levering')); 197 $('form.checkout .b-checkout-next').click(function(){ 198 var cstep = $(this).attr('data-step'); 199 var valid = b_checkout_validate_step(cstep); 200 if (valid) { 201 if (b_checkout_step == 1) { 202 var ajax_url = $('form.checkout').attr('action'); 203 var email = $('form.checkout #billing_email').val(); 204 $('form.checkout .ch-loading').show(); 205 $.post( 206 ajax_url, 207 { 208 'bt_checkout_data': 'true', 209 'email': email, 210 'unkey': Date.now() 211 }, 212 function(data) { 213 var chdata = JSON.parse(data); 214 $('form.checkout .ch-loading').hide(); 215 216 $('form.checkout .b-checkout-step2-newsletter').hide(); 217 if (chdata.subscribed == 'no') { 218 $('form.checkout .b-checkout-step2-newsletter').show(); 219 } 220 if (chdata.noemail == 1) { 221 $('form.checkout .b-checkout-step2-text input').attr('checked', 'checked'); 222 } else { 223 $('form.checkout .b-checkout-step2-text input').removeAttr('checked'); 224 } 225 226 b_checkout_next_step(); 227 } 228 ); 229 } else { 230 b_checkout_next_step(); 231 } 232 } 233 return false; 234 }); 235 $('form.checkout .b-checkout-accordion').click(function(){ 236 var ahref = $(this).attr('href'); 237 if ($('form.checkout '+ahref).is(':visible')) { 238 $('form.checkout '+ahref).slideUp(); 239 } else { 240 $('form.checkout '+ahref).slideDown(); 241 } 242 return false; 243 }); 244 $('form.checkout .b-checkout-edit').click(function(){ 245 b_checkout_step = parseInt($(this).attr('data-tostep')); 246 b_checkout_show_step(); 247 return false; 248 }); 249 b_checkout_init(); 250 b_checkout_update_summary(); 251 b_checkout_company_field(); 252 $('#billing_company_address_field .jq-radio').click(function(){ 253 b_checkout_company_field(); 254 }); 255 $('form.checkout #billing_phone').keyup(function(){ 256 var fval = $(this).val(); 257 $('form.checkout .b-mobile-phone').val(fval); 258 }); 259 $('form.checkout .b-mobile-phone').keyup(function(){ 260 var fval = $(this).val(); 261 $('form.checkout #billing_phone').val(fval); 262 }); 263 $('form.checkout #billing_phone').trigger('keyup'); 264 $('form.checkout .b-shipping-method').click(function(){ 265 var smkey = $(this).attr('data-smkey'); 266 if (!$(this).hasClass('checked')) { 267 $('form.checkout .b-shipping-method').removeClass('checked'); 268 $('form.checkout .b-shipping-method .b-sm-check .jq-radio').removeClass('checked'); 269 $('form.checkout .b-shipping-method .b-sm-check input').removeAttr('checked'); 270 271 $(this).addClass('checked'); 272 $(this).find('.b-sm-check .jq-radio').addClass('checked'); 273 $(this).find('.b-sm-check input').attr('checked', 'checked'); 274 b_checkout_smethod(smkey); 275 276 if ($(this).find('.b-sm-additional').length) { 277 if (!$(this).find('.b-sm-additional').is(':visible')) { 278 $('form.checkout .b-shipping-method .b-sm-additional').hide(); 279 $(this).find('.b-sm-additional').slideDown(); 280 } 281 } else { 282 $('form.checkout .b-shipping-method .b-sm-additional').slideUp(); 283 } 284 } 285 }); 286 $('.ch-terms-link a').click(function(){ 287 var ltype = $(this).attr('class'); 288 if ($('.ch-terms-content').is(':visible')) { 289 if (ltype == 'l-terms') { 290 if ($('.ch-terms-content .c-terms').is(':visible')) { 291 $('.ch-terms-content').slideUp(300, function(){ 292 $('.ch-terms-content .c-terms').hide(); 293 }); 294 } else { 295 $('.ch-terms-content .c-policy').hide(); 296 $('.ch-terms-content .c-terms').fadeIn(); 297 } 298 } else { 299 if ($('.ch-terms-content .c-policy').is(':visible')) { 300 $('.ch-terms-content').slideUp(300, function(){ 301 $('.ch-terms-content .c-policy').hide(); 302 }); 303 } else { 304 $('.ch-terms-content .c-terms').hide(); 305 $('.ch-terms-content .c-policy').fadeIn(); 306 } 307 } 308 } else { 309 if (ltype == 'l-terms') { 310 $('.ch-terms-content .c-policy').hide(); 311 $('.ch-terms-content .c-terms').show(); 312 } else { 313 $('.ch-terms-content .c-terms').hide(); 314 $('.ch-terms-content .c-policy').show(); 315 } 316 $('.ch-terms-content').slideDown(); 317 } 318 return false;
319 }); 320 $('.b-cart-step__list li').click(function(){ 321 if ($(this).hasClass('is-done')) { 322 b_checkout_step = parseInt($(this).attr('data-tostep')); 323 b_checkout_show_step(); 324 } 325 }); 326 } 327}); 328 329function b_form_styler() { 330 $('.js-select, .js-input, input[type=number]').styler(); 331} 332 333function prod_variation_select(vid) { 334 $('.b-prod-full-post__price .b-prod-price').hide(); 335 $('.b-prod-full-post__price .b-prod-price-'+vid).fadeIn(); 336 $('input.variation_id').val(vid); 337} 338 339function b_modal_popup_close() { 340 $.fancybox.close(); 341} 342 343function b_top_checkout_button() { 344 if ($('.b-ptc-button').hasClass('b-limit-is-more')) { 345 $('.b-ptc-button').trigger('click'); 346 return false; 347 } 348} 349 350function b_cart_to_checkout() { 351 $('a.cart-popup-link').trigger('click'); 352} 353 354function b_cart_to_checkout_process(b) { 355 var cartchok = $('.b-cart-popup .cart-ch-ok').val().toUpperCase(); 356 if (cartchok == 'OK') { 357 var checkout_url = $('.b-cart-popup').attr('data-url'); 358 $(b).attr('href', checkout_url); 359 return true; 360 } else { 361 alert($('.b-cart-popup').attr('data-ok-message')); 362 $('.b-cart-popup .cart-ch-ok').trigger('focus'); 363 return false; 364 } 365} 366 367function b_checkout_init() { 368 if ($('.b-ch-btn--grey').length) { 369 $('.b-woo-page__head-btn .checkout-button').fadeOut(); 370 } else { 371 $('.b-woo-page__head-btn .checkout-button').fadeIn(); 372 } 373} 374 375function b_checkout_scroll_step_to_top(s) { 376 $('html, body').animate({ 377 scrollTop: $('.b-content-checkout-step-'+s).offset().top 378 }, 500); 379} 380 381function b_checkout_next_step() { 382 b_checkout_step++; 383 if (!is_levering && b_checkout_step == 2) { 384 b_checkout_step = 3; 385 } 386 b_checkout_update_summary(); 387 b_checkout_show_step(); 388} 389 390function b_checkout_show_step() { 391 $('form.checkout .b-content-checkout-step').hide(); 392 $('form.checkout .b-content-checkout-step-'+b_checkout_step).fadeIn(); 393 394 $('html, body').animate({ 395 scrollTop: $('.b-checkout-page').offset().top 396 }, 500); 397 398 $('.b-checkout-steps li').removeClass('is-active').removeClass('is-done'); 399 for (var s=1; s<=4; s++) { 400 if (s < b_checkout_step) { 401 $('.b-checkout-steps .b-checkout-step-'+s).addClass('is-done'); 402 } else if (s == b_checkout_step) { 403 $('.b-checkout-steps .b-checkout-step-'+s).addClass('is-active'); 404 } 405 } 406} 407 408function b_checkout_company_field() { 409 var val = $('#billing_company_address_field .jq-radio.checked').find('input.js-input').val(); 410 if (val == 'yes') { 411 $('form.checkout .billing-company').slideDown(); 412 } else { 413 $('form.checkout .billing-company').slideUp(); 414 } 415} 416 417function b_checkout_payment_check(mid) { 418} 419 420function b_checkout_coupon_show() { 421 if ($('#coupon-part').is(':visible')) { 422 $('#coupon-part').slideUp(); 423 } else { 424 $('#coupon-part').slideDown(); 425 } 426} 427 428function b_checkout_apply_coupon() { 429 var bcoupon = $('#coupon-part .b-coupon').val(); 430 $('form.checkout .b-coupon-box').addClass('c-loading'); 431 $('form.woocommerce-form-coupon .input-text').val(bcoupon); 432 $('form.woocommerce-form-coupon').submit(); 433 setTimeout(function(){ 434 $('html, body').animate({ 435 scrollTop: 0 436 }, 500); 437 $('form.checkout .b-coupon-box').removeClass('c-loading'); 438 }, 1500); 439} 440 441function customValidateEmail(email) { 442 const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 443 return re.test(String(email).toLowerCase()); 444} 445 446function b_checkout_validate_step(step) { 447 var valid = true; 448 if (step == 'information') { 449 var b_required_error = false; 450 var b_email_error = false; 451 $('form.checkout .form-row').removeClass('woocommerce-invalid'); 452 $('form.checkout .b-content-checkout-step-1 .b-step-errors').hide(); 453 $('form.checkout .b-content-checkout-step-1 .b-step-errors span').hide(); 454 455 $('form.checkout .b-content-checkout-step-1 .form-row').each(function(){ 456 if ($(this).hasClass('validate-required')) { 457 if ($(this).hasClass('billing-company-field')) { 458 var fvalue = $(this).find('.country_select').val(); 459 } else { 460 var fvalue = $(this).find('.input-text').val(); 461 } 462 if (fvalue == '') { 463 valid = false; 464 b_required_error = true; 465 $(this).addClass('woocommerce-invalid'); 466 } else if ($(this).hasClass('validate-email') && ! customValidateEmail(fvalue)) { 467 valid = false;
468 b_email_error = true; 469 $(this).addClass('woocommerce-invalid'); 470 } 471 } 472 }); 473 if (!valid) { 474 if (b_required_error) { 475 $('form.checkout .b-content-checkout-step-1 .b-step-errors span.b-required-error').show(); 476 } 477 if (b_email_error) { 478 $('form.checkout .b-content-checkout-step-1 .b-step-errors span.b-email-error').show(); 479 } 480 b_checkout_scroll_step_to_top(1); 481 $('form.checkout .b-content-checkout-step-1 .b-step-errors').slideDown(); 482 } 483 } else if (step == 'delivery') { 484 var smchecked = false; 485 $('form.checkout .b-content-checkout-step-2 .b-step-errors').slideUp(100); 486 $('form.checkout .b-shipping-methods .b-shipping-method').each(function(){ 487 if ($(this).is(':visible')) { 488 if ($(this).find('input.b-smethod').attr('checked') == 'checked') { 489 smchecked = true; 490 } 491 } 492 }); 493 if (!smchecked) { 494 valid = false; 495 b_checkout_scroll_step_to_top(1); 496 $('form.checkout .b-content-checkout-step-2 .b-step-errors').slideDown(); 497 } 498 if (valid) { 499 $('body').trigger('update_checkout'); 500 } 501 } 502 return valid; 503} 504 505function b_checkout_update_summary() { 506 var c_first_name = $('form.checkout #billing_first_name').val(); 507 var c_last_name = $('form.checkout #billing_last_name').val(); 508 var c_company = $('form.checkout #billing_company').val(); 509 var c_company_address = $('form.checkout .billing-company-address-field input:checked').val(); 510 511 var c_address_1 = $('form.checkout #billing_address_1').val(); 512 var c_postcode = $('form.checkout #billing_postcode').val(); 513 var c_city = $('form.checkout #billing_city').val(); 514 var c_country = $('form.checkout #billing_country').val(); 515 var c_country_name = $('form.checkout #billing_country option[value="'+c_country+'"]').html(); 516 var c_phone = $('form.checkout #billing_phone').val(); 517 var c_email = $('form.checkout #billing_email').val(); 518 519 var c_name = c_first_name+' '+c_last_name; 520 var c_addr = c_address_1; 521 var c_addr2 = c_postcode + ' ' + c_city; 522 523 if (c_company_address == 'yes' && c_company != '') { 524 c_name = c_name + '<br>' + c_company; 525 } 526 527 $('.b-checkout-cinfo .ch-c-name').html(c_name); 528 $('.b-checkout-cinfo .ch-c-addr').html(c_addr); 529 $('.b-checkout-cinfo .ch-c-addr2').html(c_addr2); 530 $('.b-checkout-cinfo .ch-c-country').html(c_country_name); 531 $('.b-checkout-cinfo .ch-c-email').html(c_email); 532 $('.b-checkout-cinfo .ch-c-phone').html(c_phone); 533} 534 535function b_checkout_smethod(smkey) { 536 $('#shipping_method input.shipping_method').removeAttr('checked'); 537 $('#shipping_method input[value="'+smkey+'"]').attr('checked', 'checked').trigger('click'); 538 $(document.body).trigger('update_checkout'); 539} 540 541function b_checkout_submit() { 542 $('form.checkout').submit(); 543} 544 545function b_ao_filter(o) { 546 var clink = $(o).val(); 547 window.location.href = clink; 548} 549 550$(document).ready(function() { 551 var headerHeight = $('.b-header').height(); 552 var scrollPosition = 0, 553 lastScrollPosition = 0, 554 headerFixed; 555 $(window).scroll(function(){ 556 //console.log($(window).scrollTop()); 557 scrollPosition = $(this).scrollTop(); 558 if( scrollPosition > headerHeight + 50 ){ 559 headerFixed = true; 560 $('body').addClass('header-fixed'); 561 }else{ 562 $('body').removeClass('header-fixed'); 563 headerFixed = false; 564 } 565 if( headerFixed && scrollPosition > lastScrollPosition ){ 566 $('.b-header').removeClass('open'); 567 }else{ 568 if(scrollPosition - 100 > headerHeight){ 569 $('.b-header').addClass('open'); 570 }else{ 571 $('.b-header').removeClass('open'); 572 /*setTimeout(function(){ 573 574 }, 500);*/ 575 } 576 } 577 lastScrollPosition = scrollPosition; 578 }); 579});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.