$('body').ready(function () { // Variables that will be used later. var page_before = null; var products_before = null; var compare_selects = null; var slider = null; var ajaxProcessing = false; var data = {}; var specific = $("#specific"); if (!/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) { compare_selects = $('.selectize-drop').selectize({ selectOnTab: true, plugins: ['continue_editing'], onInitialize: function () { this.$wrapper.closest('.select-wrapper').removeClass('select-wrapper'); }, onFocus: function () { var value = this.getValue(); this.oldValue = value; var self = this; if (this.$input.attr('data-values')) { this.clearOptions(true); try { var possiblesValues = JSON.parse(this.$input.attr('data-values')); possiblesValues.forEach(function (val) { self.addOption({value: val, text: val}); }); } catch (e) { } } }, onDropdownClose: function () { if (this.getValue() === '' && this.oldValue != "") { this.setTextboxValue(this.oldValue); this.setValue(this.oldValue, true); } } }); // Used on click for prev, first, next and last page $('.link-pages button').on('click', function (e) { var actual_page = parseInt($('[name=num-page]').val()); var selectize = null; for (var key in compare_selects) { if (compare_selects[key].name === 'num-page') selectize = compare_selects[key].selectize; } if (selectize) { selectize.clear(true); if ($(this).attr('data-supp') == 'next') { if (actual_page < parseInt($('#total_pages').html())) selectize.addItem(actual_page + parseInt(1), true); } else if ($(this).attr('data-supp') == 'prev') { if (actual_page > 1) selectize.addItem(actual_page - parseInt(1), true); } else if ($(this).attr('data-supp') == 'last') { selectize.addItem(parseInt($('#total_pages').html()), true); } else { selectize.addItem(1, true); } scrollToHead(); } }); $('#input-nbr').change(function () { changeOptions(); }); $('#input-page, #input-num-page').change(function () { scrollToHead(); }); } else { // Used on click for prev, first, next and last page $('.link-pages button').on('click', function (e) { var actual_page = parseInt($('[name=num-page]').val()); var newPage = 1 if ($(this).attr('data-supp') == 'next') { if (actual_page < parseInt($('#total_pages').html())) newPage = actual_page + 1; } else if ($(this).attr('data-supp') == 'prev') { if (actual_page > 1) newPage = actual_page - 1; } else if ($(this).attr('data-supp') == 'last') { newPage = parseInt($('#total_pages').html()); } $('[name="num-page"]').val(newPage); scrollToHead(); }); $('#input-nbr').change(function () { changeOptions(); }); $('#input-page, #input-num-page').change(function () { scrollToHead(); }); } makeSlider(); displayPrices(); function scrollToHead() { if ($('.results').offset().top - $(document).scrollTop() < 0) { $('html, body').animate({ scrollTop: ($('.results').offset().top - 20) }, { 'duration': 300, complete: function () { changeOptions(); } }); } else { changeOptions(); } } $('.results-body').on('click', '.discountPrice', function(e) { e.stopPropagation(); var parent = $(this); var index = parent.index(); var details = parent.parent().children('div:nth-child(' + (index+parseInt(1)+1) + ')').first(); if (parent.hasClass('open')) { $('.open').removeClass('open'); details.hide(); } else { $('.open').removeClass('open'); parent.addClass('open'); $('.details').hide(); details.show(); } }); /* Used to display/hide all brands $('.brand .title, .brand .more').on('click', function (e) { var target = null; if ($(this).hasClass('.more')) { target = $('title', $(this).parents('.category')); } else { target = this; } $(target).parents('.category').toggleClass('active'); $('i', target).toggleClass('icon-down-circled'); $('i', target).toggleClass('icon-up-circled'); $('.more-brands').toggleClass('hide'); $('.less-brands').toggleClass('hide'); if ($('.brand .one_brand').is(':hidden')) $('.brand .one_brand').show(); else $('.brand .one_brand').hide(); }); */ // Used to change text for retailer in the filter column on expand/minimize $('.wrapable').each((index, wrapable) => { $(wrapable).find('.title, .more').on('click', function (e) { const more_option = $(wrapable).find('.more-options'); const less_option = $(wrapable).find('.less-options'); const isHidden = $(wrapable).hasClass("active"); if(more_option){ if(isHidden){ more_option.removeClass('hide'); less_option.addClass('hide'); }else{ more_option.addClass('hide'); less_option.removeClass('hide'); } } $(wrapable).toggleClass('active') $(wrapable).find('.all-options').slideToggle(); }) }); // Used to select/deselect all retailers $('.sidebar-wrapper #coche-retailers').on('click', function (e) { if ($(this).is(':checked')) $('.all-retailers input').each(function (e) { $(this).attr('checked', true); }); else $('.all-retailers input').each(function (e) { $(this).attr('checked', false); }); }); // Used to select/deselect all brands $('.sidebar-wrapper #coche-brands').on('click', function (e) { if ($(this).is(':checked')) $('.brand_list input').each(function (e) { $(this).attr('checked', true); }); else $('.brand_list input').each(function (e) { $(this).attr('checked', false); }); }); // Used to redirect on click to the given product $('.results-body').on('click', '.btn-offer, .btn-offer-mobile', function (e) { e.stopPropagation(); $('#jwt-redirect').val($(this).parents('.result-item').attr('data-token')); var url = base_url + 'redirect.htm'; $('.view-offer').attr('action', url); $('.view-offer').submit(); }); //Used to do a new search on compare page. $('.btn-search').on('click', function (e) { e.preventDefault(); data.vehicle_en = $('meta[name="vehicle_en"]').attr('content'); data['width'] = $('[name=search-width]').val(); data['height'] = $('[name=search-height]').val(); data['diameter'] = $('[name=search-diameter]').val(); if ($('[name=search-speed]').length > 0) { $('[name=search-speed]').val() != "all" && $('[name=search-speed]').val() != "" ? data['speed'] = "-" + $('[name=search-speed]').val() : data['speed'] = ""; } $('[name=search-brand]').val() != "all" && $('[name=search-brand]').val() != "" ? data['brand'] = $('[name=search-brand]').val() : data['brand'] = null; data['brand'] == "high_perf" ? data['brand'] = lang.high_perf_url : null; if (data['width'].length && data['height'].length && data['diameter'].length) { if (data['height'] != 'null') { if (data['brand']) url = ilang(data, 'search_form', 'search_url_brand'); else url = ilang(data, 'search_form', 'search_url_nobrand'); } else { if (data['brand']) url = ilang(data, 'search_form_noheight', 'search_url_brand'); else url = ilang(data, 'search_form_noheight', 'search_url_nobrand'); } url = url.toLowerCase().replace(/ /g, '_'); $('.new-search form').attr('action', url); $('.new-search form').submit(); } }); // Used to adapt displayed products by filters within the page. $('.sidebar-wrapper').on('click', 'input', function (e) { changeOptions(); }); // Used to adapt displayed products on price change function makeSlider() { slider = $('#price').slider(); slider.on('slideStop', function (e) { changeOptions(); }); slider.on('slide', function (e) { var value = slider.slider('getValue'); var min = value[0]; var max = value[1]; $('#min').html(make_price(min, false)); $('#max').html(make_price(max, false)); }); } var placeholder = $('.placeholder')[0].outerHTML; var table = $('.results-body'); function changeOptions() { if (ajaxProcessing === true) return null; $('.search-left-column [type="checkbox"]').attr('disabled', 'disabled'); slider.slider('disable'); ajaxProcessing = true; var brand_array = []; var retailer_array = []; var season_array = []; var eco_array = []; var wet_array = []; var noise_array = []; var width = $('#selectize-input-width').val(); var height = $('#selectize-input-height').val(); var diameter = $('#selectize-input-diameter').val(); var speed = $('#selectize-input-speed').val(); var load = $('#selectize-input-load').val(); var nbr = $('#input-nbr').val(); var model = data.model || null; // Récupération des prix min et max var price = JSON.parse($('#price').attr('data-slider-value')); var min = $('#price').val().split(',')[0] || 0; var max = $('#price').val().split(',')[1] || 0; if (price[0] == min) min = 0; if (price[1] == max) max = 0; // Récupération de l'option charge supérieure var load_sup = !!$('[id=load-sup]').is(':checked'); if (load !== "all" || speed !== "all") { $(".loadsup-wrapper").removeClass('hidden'); } else { $(".loadsup-wrapper").addClass('hidden'); load_sup = true; } // Récupération de l'option runflat var runflat = $('[id=runflat]').is(':checked') ? 1 : 0; // Récupération de l'option reinforced var reinforced = $('[id=reinforced]').is(':checked') ? 1 : 0; // Récupération du tableau des marques cochées if (!$('#coche-brands').is(':checked')) { $('.sidebar-wrapper .brand input[name=brand]').each(function (e) { if ($(this).is(':checked')) brand_array.push($(this).attr('value').toUpperCase()); }); } if (!$('#coche-retailers').is(':checked')) { // Récupération du tableau des marchands cochés $('.sidebar-wrapper .retailer input[name!=0]').each(function (e) { if ($(this).is(':checked')) retailer_array.push($(this).attr('value').toLowerCase()); }); } //Rècupération du tableau de la note éco $('.rolling_resistance').each(function (e) { if ($(this).is(':checked')) eco_array.push($(this).attr('name')); }); //Rècupération du tableau de la note éco $('.wet_grip').each(function (e) { if ($(this).is(':checked')) wet_array.push($(this).attr('name')); }); //Rècupération du tableau de la note éco $('.noise_level').each(function (e) { if ($(this).is(':checked')) noise_array.push($(this).attr('name')); }); // Récupération du tableau des saisons cochées $('.sidebar-wrapper .season input').each(function (e) { if ($(this).is(':checked')) season_array.push($(this).attr('name')); }); if (season_array.length >= 3) { season_array.push('0'); } var page_new = parseInt($('[name=num-page]').val()) || 1; if (page_new == 0) page_new = 1; var products = parseInt($('[name=num-per-page]').val()) || 15; table.html(''); for (var i = 0; i < products; i++) { table.append(placeholder); } $.ajax({ type: "POST", url: $('meta[name="jymeo_url_products"]').attr('content'), data: { width: width, height: height, diameter: diameter, speed: speed, load: load, load_sup: load_sup, runflat: runflat, reinforced: reinforced, rolling_resistance_grades: eco_array, wet_grip_grades: wet_array, noise_level_grades: noise_array, season: season_array, retailers: retailer_array, brands: brand_array, price_min: min, price_max: max, page: page_new, products: products, nbr: nbr }, dataType: "json", success: function (data) { changeResults(data); if (specific.length) { var url = specific.attr('href').split('?')[0]; specific.attr('href', url + '?' + (+new Date)); } ajaxProcessing = false; $('.search-left-column [type="checkbox"]').attr('disabled', null); slider.slider('enable'); }, error: function () { location.reload(); } }); page_before = null; products_before = null; } // Used to adapt the table of results, by creating a new list of products and deleting the old one. function changeResults(data) { var number = data.count; var page_new = data.page; var nbr_products = data.nbr_products; if (data.price) var price = data.price; else var price = null; var oldPrices = slider.slider('getValue'); if (price !== null) { if (oldPrices[0] == slider.attr('data-slider-min')) { oldPrices[0] = Math.floor(price.min); } else if (oldPrices[0] <= Math.floor(price.min)) oldPrices[0] = Math.floor(price.min); if (oldPrices[1] == slider.attr('data-slider-max')) { oldPrices[1] = Math.ceil(price.max) } else if (oldPrices[1] >= Math.ceil(price.max)) oldPrices[1] = Math.ceil(price.max); $('#price') .attr('data-slider-min', Math.floor(price.min)) .attr('data-slider-max', Math.ceil(price.max)); slider.slider('destroy'); makeSlider(); slider.slider('setValue', oldPrices, true, true); $('#min').html(make_price(Math.floor(oldPrices[0]), false)); $('#max').html(make_price(Math.ceil(oldPrices[1]), false)); } if (data.html.length === 0) { $('.no-results').show(); $('.result-pagination').hide(); } else { $('.no-results').hide(); $('.result-pagination').show(); } table.html(data.html); $('[data-discount=true]').each(function () { getDiscount($(this).attr('data-id')); }); $('.count-result-nbr').html(number); if (number > 1) { $(".count-result-txt").html(ilang('result', 'found_products')); } else { $(".count-result-txt").html(ilang('result', 'found_product')); } $('#total_pages').html(Math.ceil(number / nbr_products)); var showBrands = false; if ($('.brand .one_brand').is(':visible')) { showBrands = true; } $('.brand_list').html(data.brands_html); if (showBrands) { $('.brand .one_brand').show(); } if ($('#coche-brands').is(':checked')) { $('.brand input').attr('checked', true); } $('#retailers_list').html(data.retailers_html); if ($('#coche-retailers').is(':checked')) { $('#retailers_list input').attr('checked', true); } adaptListPages(page_new, Math.ceil(number / nbr_products)); $('[data-toggle="tooltip"]').tooltip(); displayPrices(); } // Used to adapt the list of pages available depending on the number of products sent back by the AJAX call. function adaptListPages(page, pages) { var selectize = null; for (var key in compare_selects) { if (compare_selects[key].name === 'num-page') selectize = compare_selects[key].selectize; } if (selectize) { selectize.clear(true); selectize.clearOptions(true); for (var ii = 1; ii <= pages; ii++) { selectize.addOption({value: ii, text: ii}, true); } selectize.addItem(page, true); return true; } return false; } $('.selectfilter').on('change', function () { if ($('#selectize-input-load').val().length && $('#selectize-input-speed').val().length) changeOptions(); }) $('#input-nbr').on('change', function () { var value = $('#input-nbr').val(); if (value) { $('#total').html(ilang({nbr: value}, 'result', 'fees')); } }); $('[data-discount=true]').each(function () { getDiscount($(this).attr('data-id')); }); function getDiscount(id) { $.getJSON('/discount/' + id, {}, function (json, textStatus) { if (json.success === true) { var cell = $('#discount-' + id +' > .discountCode'); cell.append('