(function (moduleId) {
$(document).ready(function () {
function doOnOrientationChange() {
switch(window.orientation) {
case -90: case 90:
$('#filters').removeAttr("style")
break;
default:
break;
}
}
function toggleQuantityFilter(element) {
var visible = $(element).prop("checked");
var elements = $("[name='quantity']")
if (elements && elements.length > 0) {
var quantityInput = elements[0];
if (visible) {
$(quantityInput).show()
$(quantityInput).val(1);
} else {
$(quantityInput).hide();
$(quantityInput).val(null);
}
}
}
$('#minPriceOutput, #maxPriceOutput').change(function(event) {
var value = $(this).val()
if (value < 0) {
$(this).val(0);
}
checkSearchCriteriaEmpty();
});
window.addEventListener('orientationchange', doOnOrientationChange);
// Initial execution if needed
doOnOrientationChange();
checkSearchCriteriaEmpty();
// Show filters panel on small and medium screen
$('#show-filters').click(function() {
$('#filters').css({
"-webkit-transform":"translate(315px,0px)",
"-ms-transform":"translate(315px,0px)",
"transform":"translate(315px,0px)"
});
});
// Hide filters panel on small and medium screen
$('#hide-filters').click(function() {
$('#filters').css({
"-webkit-transform":"translate(-315px,0px)",
"-ms-transform":"translate(-315px,0px)",
"transform":"translate(-315px,0px)"
});
});
// Show/hide quantity filter
$('.filter-quantity-checkbox').change(function (event) {
toggleQuantityFilter(event.currentTarget)
});
// shows and hides filtered items
$('.filter-category-button').click(function() {
var value = $(this).attr('data-filter');
if(value === "all") {
$('.filter-category-item').show('1000');
} else {
$('.filter-category-item').not('.'+value).hide('3000');
$('.filter-category-item').filter('.'+value).show('3000');
}
});
// changes active class on filter buttons
$('.filter-category-button').click(function () {
$(this).siblings().removeClass('is-active');
$(this).addClass('is-active');
});
// Hide "see more color" link
$("#see-more-color").click(function () {
$("#see-more-color").hide();
$("#see-less-color").show();
});
// Show "see more color" link
$("#see-less-color").click(function () {
$("#see-less-color").hide();
$("#see-more-color").show(500);
});
// Show characteristics with select option
$('select[name="characteristics"]').change(function(){
var id = "characteristic_" + $(this).val();
$('div.characteristics').hide();
$('#'+id).show();
});
// Add class is-active to wishlist icon
$(".add-wishlist-icon").click(function () {
var addWishlist = $(this).closest('.add-wishlist');
var addWishlistIcon = addWishlist.find('.add-wishlist-icon');
if ($(this).hasClass('is-active')) {
addWishlistIcon.removeClass('is-active');
} else {
addWishlistIcon.addClass('is-active');
}
});
// region FILTERS
function hasValue(element) {
return !!element
}
$('.search-submit').click(function () {
submitProductsSearch()
});
$('.product-search-input').on('keypress', function (e) {
// Check if enter key was pressed
if(e.which === 13) {
submitProductsSearch()
}
});
function submitProductsSearch() {
var query = cleanedSearch();
var q = $('.product-filters input[name="query"]').val()
var queryFilter = "query=" + q;
var brandFilter = toSearchParam($('.brand-filter'), 'brands');
var flagFilter = toSearchParam($('.flag-filter'), 'flags');
var countryFilter = toSearchParam($('.country-filter'), 'countries');
var attributeFilter = toSearchParam($('.attribute-filter'), 'attributes');
var min = $('#minPriceOutput').val();
var max = $('#maxPriceOutput').val();
var quantity = $("[name='quantity']").val();
let queryCriterias = [
query,
queryFilter,
brandFilter,
flagFilter,
countryFilter,
attributeFilter,
(hasValue(min) ? 'min=' + min : null),
(hasValue(max) ? 'max=' + max : null),
(hasValue(quantity) ? 'quantity=' + quantity : null),
];
window.location.search = queryCriterias.filter(hasValue)
.join('&');
}
$('input[type=checkbox]').click(function () {
checkSearchCriteriaEmpty();
});
function checkSearchCriteriaEmpty() {
let q = $('.product-filters input[name="query"]').val()
let brandFilter = toSearchParam($('.brand-filter'), 'brands');
let flagFilter = toSearchParam($('.flag-filter'), 'flags');
let countryFilter = toSearchParam($('.country-filter'), 'countries');
let attributeFilter = toSearchParam($('.attribute-filter'), 'attributes');
let min = $('#minPriceOutput').val();
let max = $('#maxPriceOutput').val();
let quantity = $("[name='quantity']").val();
let queryCriteria = [
q,
brandFilter,
flagFilter,
countryFilter,
attributeFilter,
min,
max,
quantity
];
document.getElementById('m_0084_search_submit').disabled = queryCriteria.filter(criteria => criteria != null && criteria !== "").length <= 0;
}
var mutatedParams = ['query', 'attributes', 'brands', 'countries', 'flags', 'min', 'max', 'quantity'];
/**
* allow for quick exclusion of query params
* @param {string} param the key-value string in the form "key=value"
* @return {boolean}
*/
function paramIsNotAggregatorFilter(param) {
return !mutatedParams.includes(param.split(/=/)[0])
}
function cleanedSearch() {
var query = window.location.search;
return '?' + query
.replace(/\?/, '')
.split(/&/)
.filter(paramIsNotAggregatorFilter)
.join("&")
}
function isChecked() {
return this.checked;
}
function id() {
return this.id;
}
function toSearchParam($element, name) {
var filters = $element
.filter(isChecked)
.map(id)
.get()
.join(',');
if (hasValue(filters)) {
return name + '=' + filters;
}
return null
}
// endregion
$("select[name=per-page]").change(function () {
const limit = $(this).val();
replaceSearch('limit', limit)
});
$("select[name=order]").change(function () {
const sort = $(this).val().split('-');
replaceSearchCriteriaWithoutReload('sort', sort[1]);
replaceSearch('sortBy', sort[0]);
});
$(".pagination-noncurrent").click(function () {
const page = parseInt($(this).text()) - 1;
replaceSearch('page', page)
});
$(".pagination-next-arrow").click(function() {
const page = getPage()
replaceSearch('page', page + 1)
})
$(".pagination-previous-arrow").click(function() {
const page = getPage()
replaceSearch('page', page - 1)
})
$(".displayAsGrid").click(displayAsGrid);
$('.displayAsList').click(displayAsList);
function initDisplayStyle() {
const displayStyleParam = window.location.search.split('&').find(function (param) {
return param.includes('displayStyle');
});
if(displayStyleParam != null && displayStyleParam.split("=")[1] === "list") {
displayAsList()
} else {
displayAsGrid()
}
}
initDisplayStyle();
$('.topButton').click(function () {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
});
$('.remove-filter').click(function() {
const id = $(this).data("es-param-id");
const name = $(this).data("es-param-name");
if(name === 'categories') {
removeSearchCriteriaWithoutReload('categories')
} else {
$('#' + id).attr('checked', false);
}
checkSearchCriteriaEmpty();
});
$('.category-filter').on('click', function () {
const categoryId = $(this).data('category-id')
if (getCurrentCategory() !== categoryId) {
const categoryUrl = $(this).data('category-url');
window.location.replace(categoryUrl);
}
});
$('.top-level-category-filter').on('click', function () {
var flagFilter = toSearchParam($('.flag-filter'), 'flags');
window.location.replace("/search/" + $(this).data('locale') + "/categories/"+$(this).data('category-label') + "?" + flagFilter);
});
$('.accordion-toggle').on('click', function(event) {
$(this).closest('.accordion').foundation('toggle', $(this).parent().next('.accordion-content'));
event.stopPropagation();
})
$('.accordion')
.on('down.zf.accordion', function(target) {
const toggle = $(target.target).children('.is-active').children('.accordion-title').find('.accordion-toggle')
toggle.html('')
}).on('up.zf.accordion', function(target) {
const toggle = $(target.target).children().children('.accordion-title').find('.accordion-toggle')
toggle.html('')
})
$('#remove-all-filter').click(function() {
const searchParams = getSearchParams()
const filterExceptDisplayAndQuery = function(item) { return item[0] === 'displayStyle' || item[0] === 'query'}
setSearchParams(searchParams.filter(filterExceptDisplayAndQuery))
});
function getCurrentCategory() {
return parseInt(getSearchParamValue("categories"))
}
function getPage() {
const pageSearch = window.location.search.match(/page=(\d+)/);
return (pageSearch && pageSearch.length) ? parseInt(pageSearch[1]) : 0;
}
function replaceSearch(name, value) {
window.location.search = withSearchCriteria(window.location.search, name, value)
}
function displayAsList() {
$('.displayAsList').addClass('is-active');
$('.displayAsGrid').removeClass('is-active');
$('.gridDisplay').hide();
$('.listDisplay').show();
replaceSearchCriteriaWithoutReload('displayStyle', 'list');
}
function displayAsGrid() {
$('.displayAsList').removeClass('is-active');
$('.displayAsGrid').addClass('is-active');
$('.listDisplay').hide();
$('.gridDisplay').show();
replaceSearchCriteriaWithoutReload('displayStyle', 'grid');
}
function removeFilter(tag, url) {
let result;
const param = $(tag).data("es-param-name");
const value = $(tag).data("es-param-id");
if(url.includes(param)) {
result = url.split('&').map(function(it) {
if(it.includes(param)) {
const key = it.split('=')[0];
const values = it.split('=')[1].split(',').filter(function (localeValue) {
return localeValue != value
}).join(',');
return key + '=' + values;
}
return it
}).join('&');
} else {
result = url
}
return result;
}
$('.product-filters input[name="query"]').change(function () {
checkSearchCriteriaEmpty();
})
$('#m_0084_clear_query_input').on('click', function () {
$('.product-filters input[name="query"]').val('')
checkSearchCriteriaEmpty();
});
});
})('u-92c6e7ef-3cd4-48f4-a632-452b0a59b7de');