PageSourceSearch

https://www.kavovnik.cz/user/documents/public/js/app.js?v=156

js kavovnik.cz collected 2026-10-02 19:23:46 UTC 126,974 bytes, 3,801 lines download raw bytes

1// --- COMPONENTS, PARTS --- //
2var $window = $(window);
3var $windowWidth = $(window).width();
4var $document = $(document);
5var $header = $(".header");
6var body = $("body");
7var htmlElement = $("html");
8var bodyDetail = $("body.type-detail");
9var bodyIndex = $("body.in-index");
10var bodyCategory = $("body.type-category");
11var bpXsmall = 480;
12var bpSmall = 768;
13var bpMedium = 992;
14var classIsActive = "is-active";
15
16$(document).ready(function () {
17  baseEvents();
18  partsRepositionHeader();
19  repositionFooter();
20  repositionHP();
21
22  repositionContact();
23  reposition404();
24  repositionBlog();
25
26  repositionLogin();
27  // createSliderFromBanners();
28  // repositionHeader();
29  // repositionReview();
30  // repositionInstagram();
31  // repositionPartners();
32  repositionCategory();
33  repositionDetail();
34
35  repositionBasket();
36
37  repositionAboutUs();
38
39  repositionPrazirni();
40
41  repositionAdult();
42
43  if ($(".type-manufacturers-listing .category-title").length) {
44    $(".type-manufacturers-listing .category-title").text(
45      "Naše prodávané značky"
46    );
47  }
48
49  var shoptetCustomer = getShoptetDataLayer().customer;
50  if (shoptetCustomer.priceListId == 3) {
51    $("body").addClass("is-vop");
52  }
53
54  $(document).on("click", ".js-dropdown-trigger", function () {
55    $(this).closest(".js-dropdown-block").toggleClass("is-active");
56  });
57
58  $(document).on("click", ".filter-section h4", function () {
59    $(this).closest(".filter-section").toggleClass(classIsActive);
60  });
61
62  $(document).on("click", ".slider-wrapper h4", function () {
63    $(this).closest(".slider-wrapper").toggleClass(classIsActive);
64  });
65
66  $(window).resize();
67});
68
69$(window).load(function () {
70  $("body").addClass("after-load");
71  setTimeout(() => {
72    repositionRate();
73    $(window).resize();
74  }, 100);
75  repositionFiltersContent();
76  repositionFilterSections();
77  if ($("body.blur").length == 0) {
78    repositionAdult();
79  }
80  $(window).resize();
81});
82
83
84function reposition404() {
85  if ($(".in-404").length) {
86    // $(".empty-content-404 h1").text("404");
87    // $(".empty-content-404 h2").text("Tato stránka neexistuje");
88    // $(".empty-content-404 p a").closest("p").remove();
89    // $(".empty-content-404 p").text(
90    //   "Omlouváme se, ale stránku kterou hledáte se nepodařilo najít."
91    // );
92    // $(".empty-content-404").append(
93    //   '<div>Můžete se vrátit na <a href="/">domovskou stránku</a> nebo nás <a href="/kontakt">kontaktovat</a>, pokud nemůžete najít to, co hledáte.</div>'
94    // );
95  }
96}
97
98
99//====================================================
100//  Function: Reposition Advanced modal
101//====================================================
102
103function repositionContentAdvancedModal() {
104  $("#colorbox").removeClass("is-advanced-modal");
105  if ($(".advanced-order").length) {
106    $("#colorbox").addClass("is-advanced-modal");
107    $("#colorbox .h1").text("Zboží úspěšně přidáno do košíku");
108    $("#colorbox .extra.step .btn").text("Přejít do košíku");
109    $("#colorbox .extras-wrap").prepend(
110      '<div class="extra back-btn"><button class="btn btn-secondary js-close-btn">Zpět k nákupu</button></div>'
111    );
112
113    if ($(".advanced-order .products-related").length) {
114      $(".advanced-order .products-related").wrap(
115        '<div class="products-additional-group"></div>'
116      );
117      $(
118        '<div class="h4 modal-title">Zákazníci s tímto zbožím často nakupují</div>'
119      ).insertBefore(".advanced-order .products-related");
120    }
121
122    $(".js-close-btn").click(function () {
123      $("#cboxClose").trigger("click");
124    });
125  }
126}
127
128
129function baseEvents() {
130  document.addEventListener("ShoptetDOMContentLoaded", function () {
131    if (
132      $(".type-category").length ||
133      $(".product").length ||
134      $(".type-search").length ||
135      $(".type-manufacturer-detail").length
136    ) {
137      productRepo();
138      repoTopBannerCategory();
139      repositionFilterSections();
140      hideProductWithoutVOP();
141    }
142  });
143
144  document.addEventListener("ShoptetDOMPageContentLoaded", function () {
145    if ($(".type-posts-listing").length) {
146      repositionBlogItem();
147    }
148    if (
149      $(".type-category").length ||
150      $(".type-search").length ||
151      $(".product").length ||
152      $(".type-manufacturer-detail").length
153    ) {
154      productRepo();
155      repoTopBannerCategory();
156      repositionFilterSections();
157      hideProductWithoutVOP();
158      if ($("#filters").length) {
159        repositionFiltersContent();
160      }
161    }
162  });
163
164  document.addEventListener("ShoptetDOMAdvancedOrderLoaded", function () {
165    if ($(".product").length) {
166      // productRepo();
167      repoTopBannerCategory();
168      hideProductWithoutVOP();
169    }
170  });
171
172  document.addEventListener("ShoptetDOMAdvancedOrderLoaded", function () {
173    repositionContentAdvancedModal();
174  });
175
176  document.addEventListener("ShoptetDOMCartContentLoaded", function () {
177    setTimeout(() => {
178      if ($(".id--9").length) {
179        // Reorder basket step 1 elements
180        reorderBasketElements();
181      }
182    }, 10);
183  });
184}
185
186
187function repositionBlog() {
188  if ($(".type-posts-listing").length) {
189    repositionBlogItem();
190  }
191  if ($(".type-post").length) {
192    var image = $(
193      '.news-item-detail span[itemprop="image"] meta[itemprop="url"]'
194    ).attr("content");
195    $(
196      '<div class="blog-img"><img class="img-responsive img--responsive" src="' +
197        image +
198        '"></div>'
199    ).insertBefore(".news-item-detail .text");
200
201    $(".news-item-detail > time, .news-item-detail > .reading-time").wrapAll(
202      '<div class="blog-info-block"></div>'
203    );
204
205    $(".news-item-detail .share, .news-item-detail > .next-prev").wrapAll(
206      '<div class="blog-bottom-block"></div>'
207    );
208
209    $(".share").prepend('<div class="share-text">Sdílet článek:</div>');
210  }
211}
212
213function repositionBlogItem() {
214  $(".news-item").each(function () {
215    var inst = $(this);
216    var btnLink = inst.find(".title").attr("href");
217    var btnTemplate = `
218			<a class="btn-more" href="${btnLink}"><span>Celý článek</span></a>
219		`;
220    inst.find(".text").append(btnTemplate);
221  });
222}
223
224
225function createSliderFromBanners() {
226  var middleBanners = $(".next-to-carousel-banners");
227
228  var middleBanner = middleBanners.find(".banner-wrapper");
229
230  middleBanner.wrap('<div class="swiper-slide"></div>');
231
232  middleBanners.wrapInner(
233    '<div class="swiper-container js-slider-middle-banners"></div>'
234  );
235
236  middleBanners
237    .find(".swiper-container")
238    .wrapInner('<div class="swiper-wrapper"></div>');
239
240  middleBanners.wrapInner(
241    '<div class="js-slider-group slider-group-middle-banners"></div>'
242  );
243
244  var paginationTemplate =
245    '<div class="swiper-pagination js-swiper-pagination"></div>';
246
247  middleBanners.find(".slider-group-middle-banners").append(paginationTemplate);
248
249  var arrowTemplate =
250    '<div class="swiper-arrow swiper-arrow-next js-swiper-arrow-next">' +
251    '<div class="swiper-arrow-content">' +
252    '<span class="icon-svg icon-chevron-right"></span>' +
253    "</div>" +
254    "</div>" +
255    '<div class="swiper-arrow swiper-arrow-prev js-swiper-arrow-prev">' +
256    '<div class="swiper-arrow-content">' +
257    '<span class="icon-svg icon-chevron-left"></span>' +
258    "</div>" +
259    "</div>";
260  middleBanners.find(".slider-group-middle-banners").append(arrowTemplate);
261
262  middleBannersSlider();
263}
264
265function middleBannersSlider() {
266  if ($(".js-slider-middle-banners").length) {
267    $(".js-slider-middle-banners").each(function () {
268      var inst = $(this),
269        swiperBlock = inst.closest(".js-slider-group"),
270        swiperPagination = swiperBlock.find(".js-swiper-pagination"),
271        swiperArrowPrev = swiperBlock.find(".js-swiper-arrow-prev"),
272        swiperArrowNext = swiperBlock.find(".js-swiper-arrow-next");
273
274      var mySwiper = new Swiper(inst, {
275        spaceBetween: 30,
276        lazy: true,
277        loop: true,
278        speed: 600,
279        // autoplay: {
280        //   delay: 4000,
281        //   disableOnInteraction: true,
282        // },
283        navigation: {
284          nextEl: swiperArrowNext,
285          prevEl: swiperArrowPrev,
286        },
287        pagination: {
288          el: swiperPagination,
289          clickable: true,
290        },
291        breakpoints: {
292          200: {
293            slidesPerView: 1,
294          },
295          480: {
296            slidesPerView: 1,
297          },
298          768: {
299            slidesPerView: 1,
300          },
301          992: {
302            slidesPerView: 1,
303          },
304          1200: {
305            slidesPerView: 1,
306          },
307        },
308      });
309    });
310  }
311}
312
313
314//====================================================
315//  Function: Reposition Header
316// - preusporiadanie prvkov v hlavičke
317//====================================================
318var headerHeight;
319var header = $("#header");
320
321function partsRepositionHeader() {
322  repositionCartCountMobile();
323  repositionNavigationMobile();
324
325  initHeaderFunctions();
326
327  initSearchPopup();
328}
329
330function initHeaderFunctions() {
331  if ($(".top-nav-button").length) {
332    var loginLink = $(".top-nav-button");
333
334    $(".navigation-buttons").prepend(loginLink);
335
336    if ($(".click-cart").length == 0) {
337      $(".toggle-window.cart-count").wrap('<div class="click-cart"></div>');
338    }
339
340    $(document).on("click", ".click-cart", function () {
341      console.log($windowWidth);
342      console.log(bpMedium);
343      if ($windowWidth < bpMedium) {
344        window.location.href = $(this).find(".cart-count").attr("href");
345        return false;
346      }
347    });
348  }
349
350  $("#header .search .form-control").attr(
351    "placeholder",
352    "Jaký produkt hledáte?"
353  );
354
355  var contactHeader = `
356		<div class="contact-list--header">
357			<div class="contact-list">
358				<a href="tel:774772772" class="contact-list__item tel">
359					<span class="contact-list__icon"></span>
360					<span class="contact-list__text">774 772 772</span>
361				</a>
362				<a href="mailto:[email protected]" class="contact-list__item mail">
363					<span class="contact-list__icon"></span>
364					<span class="contact-list__text">[email protected]</span>
365				</a>
366			</div>
367
368		</div>
369	`;
370
371  // <p><span class="p-subtext">po – čt: <strong>10 – 17</strong> hod.</span> <span class="p-subtext p-subtext--offset">pá: <strong>10 – 16</strong> hod. </span></p>
372
373  $("#header .search").append(contactHeader);
374
375  $(".navigation-in .menu-item-682, .navigation-in .menu-item-29").wrapAll(
376    '<ul class="menu-level-1 menu-level-ext"></ul>'
377  );
378  $(".menu-level-ext").insertAfter(".navigation-in > .menu-level-1");
379
380  // <a href="/kava/?pv15=15" class="coffee-list-link bez-kofeinu">Bez kofeinu</a>
381  var coffeeTemplate = `
382		<li class="coffee-list-item">
383			<a href="/kava" class="coffee-list-link all">Všechna káva</a>
384			<a href="/kava/?pv15=15" class="coffee-list-link zrnkova">Zrnková</a>
385			<a href="/kava/?pv15=36" class="coffee-list-link mleta">Mletá</a>
386			<a href="/kava/?pv15=39" class="coffee-list-link kapsle">Kapsle</a>
387		</li>
388		<li class="coffee-title"><a>Značky</a></li>
389	`;
390
391  $(".menu-item-906 .menu-level-2").prepend(coffeeTemplate);
392
393  // $("body").addClass("submenu-visible");
394  // $(".menu-item-906").addClass("exp");
395}
396
397function repositionCartCountMobile() {
398  if ($("#header .cart-count").length) {
399    if ($windowWidth < bpSmall) {
400      var cartCount = $("#header .cart-count").clone();
401      if ($(".top-navigation-bar .click-cart").length == 0) {
402        cartCount.insertBefore(
403          '.responsive-tools .toggle-window[data-target="navigation"]'
404        );
405      } else {
406        $(".top-navigation-bar .cart-count").remove();
407        $(".responsive-tools .click-cart").append(cartCount);
408      }
409    }
410  }
411  if (
412    $("#header .site-name").length &&
413    $(".top-navigation-bar .site-name").length == 0
414  ) {
415    if ($(".top-navigation-bar .site-name").length == 0) {
416      var headerLogo = $("#header .site-name").clone();
417      $(".top-navigation-bar .container").prepend(headerLogo);
418    }
419  }
420}
421
422function repositionNavigationMobile() {
423  $("#header .navigation-in").append(
424    '<div class="navigation-in-bottom"></div>'
425  );
426}
427
428var searchForm = $(".search"),
429  searchWhisperer,
430  searchElement = $(".search .query-input"),
431  searchValue;
432
433function initSearchPopup() {
434  $(".search .query-input").keyup(function () {
435    checkSearchInputValue();
436  });
437
438  var elementOfClicked = ".search";
439  $(document).on("click", function (event) {
440    if (!$(event.target).closest(elementOfClicked).length) {
441      searchForm.removeClass("is-searching");
442    }
443  });
444}
445
446function checkSearchInputValue() {
447  searchValue = searchElement.val().length;
448
449  if (searchValue >= 3) {
450    setTimeout(() => {
451      searchWhisperer = searchForm.find(".search-whisperer");
452      if (searchWhisperer.hasClass("active")) {
453        repositionSearchWhisperers(searchWhisperer);
454        addWhisperesMoreBtn(searchWhisperer);
455        searchForm.addClass("is-searching");
456      } else {
457        searchForm.removeClass("is-searching");
458      }
459    }, 1500);
460  }
461}
462
463function repositionSearchWhisperers(search) {
464  var searchDocuments = search.find(".search-whisperer-documents");
465  var searchDocumentsCategory = search.find(
466    ".search-whisperer-documents .search-whisperer-category"
467  );
468  var searchDocumentsTag = search.find(
469    ".search-whisperer-documents .search-whisperer-document:not(.search-whisperer-category)"
470  );
471  var searchUl = search.find("> ul");
472
473  if (
474    searchDocumentsCategory.length &&
475    searchDocuments.find(".search-whisperer-category-group").length == 0
476  ) {
477    searchDocumentsCategory.wrapAll(
478      '<div class="search-whisperer-category-group"></div>'
479    );
480    searchDocuments
481      .find(".search-whisperer-category-group")
482      .prepend(
483        '<div class="search-whisperer-title">Nalezeno v kategoriích</div>'
484      );
485    // addCategoryIconToSearchWhispers(searchDocumentsCategory);
486  }
487
488  if (
489    searchDocumentsTag.length &&
490    searchDocuments.find(".search-whisperer-tags-group").length == 0
491  ) {
492    searchDocumentsTag.wrapAll(
493      '<div class="search-whisperer-tags-group"></div>'
494    );
495    searchDocuments
496      .find(".search-whisperer-tags-group")
497      .prepend('<div class="search-whisperer-title">Nalezeno v článcích</div>');
498    // addCategoryIconToSearchWhispers(searchDocumentsTag);
499  }
500
501  if (searchUl.length && searchUl.find(".search-whisperer-title").length == 0) {
502    searchUl.wrapAll('<div class="search-whisperer-ul-group"></div>');
503    $(
504      '<div class="search-whisperer-title">Nalezeno v produktech</div>'
505    ).insertBefore(searchUl);
506  }
507  $(".search-whisperer-products > li").each(function () {
508    if ($(this).find(".price-final span").length == 0) {
509      $(this).find(".price-final").append("<span>s DPH</span>");
510    }
511  });
512}
513
514function addCategoryIconToSearchWhispers(elements) {
515  elements.each(function () {
516    $(this).prepend(
517      '<span class="category-link__icon category-link__icon--medium"><span></span><span></span><span></span></span>'
518    );
519  });
520}
521
522function addWhisperesMoreBtn(search) {
523  if (
524    $(".search-whisperer-empty").length == 0 &&
525    search.find(".btn").length == 0
526  ) {
527    search
528      .find(".search-whisperer-ul-group")
529      .append(
530        '<div class="text-center search-whisperer-btn"><button type="submit" class="btn btn-primary">Zobrazit všechny produkty</button></div>'
531      );
532  }
533}
534
535
536var loginContent = $(".in-login #content");
537var forgotContent = $(".in-zapomenute-heslo #content");
538var registraceContent = $(".in-registrace #content");
539
540function repositionLogin() {
541  if ($(".in-login").length) {
542    $(".password-helper > a:first-child").remove();
543    var loginWrapper = loginContent.find(".login-wrapper");
544    loginContent.find("h1").text("Přihlášení");
545    loginContent.find(".password-helper").insertBefore(loginWrapper);
546    loginContent.find(".btn.btn-secondary").text("Přihlásit");
547    loginContent
548      .find(".content-inner")
549      .wrapInner('<div class="login-left-panel"></div>');
550
551    $('.login-left-panel input[name="email"]').attr("placeholder", "");
552    $('.login-left-panel input[name="email"]').attr("id", "login-email");
553    $('<label for="login-email">E-mail</label>').insertBefore(
554      '.login-left-panel input[name="email"]'
555    );
556
557    $('.login-left-panel input[name="password"]').attr("placeholder", "");
558    $('.login-left-panel input[name="password"]').attr("id", "login-password");
559    $('<label for="login-password">Heslo</label>').insertBefore(
560      '.login-left-panel input[name="password"]'
561    );
562
563    addLoginPanels("login");
564  }
565
566  if ($(".in-zapomenute-heslo").length) {
567    var loginWrapper = forgotContent.find(".login-wrapper");
568    forgotContent.find(".password-helper").insertBefore(loginWrapper);
569    forgotContent
570      .find(".content-inner")
571      .wrapInner('<div class="login-left-panel"></div>');
572
573    addLoginPanels("zapomenute");
574  }
575
576  if ($(".in-registrace").length) {
577    registraceContent.find("h1").text("Vytvořit účet");
578    registraceContent.find(".btn.btn-secondary").text("Zaregistrovat");
579    registraceContent
580      .find(".content-inner")
581      .wrapInner('<div class="login-left-panel"></div>');
582
583    registraceContent
584      .find("#register-form")
585      .append(registraceContent.find(".col-md-4 .register-soc"));
586
587    registraceContent.find(".register-soc h4").remove();
588
589    registraceContent
590      .find(".register-soc")
591      .prepend(
592        '<div class="social-login-buttons-divider"><span>nebo</span></div>'
593      );
594    registraceContent
595      .find('input[name="customerGroupId"]')
596      .closest("fieldset")
597      .addClass("customer-box");
598
599    registraceContent
600      .find('input[name="password"]')
601      .closest(".form-group")
602      .addClass("width-50");
603
604    registraceContent
605      .find('input[name="passwordAgain"]')
606      .closest(".form-group")
607      .addClass("width-50");
608
609    registraceContent
610      .find('input[name="billCity"]')
611      .closest(".form-group")
612      .addClass("width-50");
613
614    registraceContent
615      .find('input[name="billZip"]')
616      .closest(".form-group")
617      .addClass("width-50");
618
619    $(".co-box.co-registration").each(function () {
620      var inst = $(this);
621      inst.find(".width-50").wrapAll('<div class="reg-column"></div>');
622    });
623
624    registraceContent
625      .find(".register-soc")
626      .wrapInner('<div class="social-login-buttons"></div>');
627    addLoginPanels("registration");
628
629    $(".login-left-panel .col-md-8 fieldset:first-child h4").remove();
630    var fullName = $("#billFullName").closest(".form-group");
631    $(".login-left-panel .col-md-8 fieldset:first-child").prepend(fullName);
632
633    $(".js-phone-form-group").insertBefore(
634      ".login-left-panel .col-md-8 fieldset .reg-column"
635    );
636
637    $("#captcha").closest(".form-group").addClass("form-group-captcha");
638  }
639}
640
641function addLoginPanels(type) {
642  if (type == "zapomenute") {
643    forgotContent
644      .find(".content-inner")
645      .append('<div class="login-right-panel"></div>');
646    var btnAppend = `
647				<a href="/registrace" class="btn btn-secondary">Registrovat se</a>
648			`;
649  }
650
651  if (type == "login") {
652    loginContent
653      .find(".content-inner")
654      .append('<div class="login-right-panel"></div>');
655    var btnAppend = `
656				<a href="/registrace" class="btn btn-secondary">Registrovat se</a>
657			`;
658  }
659
660  if (type == "registration") {
661    registraceContent
662      .find(".content-inner")
663      .append('<div class="login-right-panel"></div>');
664    var btnAppend = "";
665  }
666
667  var loginTemplate = `
668		<div class="login-right-panel__content">
669			<img src="/user/documents/upload/kavovnik-logo-piktogram-3.svg" alt="logo piktogram" loading="lazy" class="img--responsive login-piktogram">
670			<div class="login-right-panel__logo">
671				<img src="/user/documents/upload/kavovnik-logo.svg" alt="logo" loading="lazy" class="img--responsive">
672			</div>
673			<div class="login-right-panel__title">Díky registraci získáváte</div>
674			<div class="benefits-login-list">
675				<div class="benefits-login-list__item">
676					<div class="benefits-login-list__image">
677						<img src="/user/documents/upload/benefit-1.svg" alt="Možnost opakovaných objednávek" loading="lazy" class="img--responsive">
678					</div>
679					<div class="benefits-login-list__text">Možnost opakovaných objednávek</div>
680				</div>
681				<div class="benefits-login-list__item">
682					<div class="benefits-login-list__image">
683						<img src="/user/documents/upload/benefit-2.svg" alt="Lehčí práce s e-shopem" loading="lazy" class="img--responsive">
684					</div>
685					<div class="benefits-login-list__text">Lehčí práce s e-shopem</div>
686				</div>
687				<div class="benefits-login-list__item">
688					<div class="benefits-login-list__image">
689						<img src="/user/documents/upload/benefit-3.svg" alt="Možnost personalizace e-shopu" loading="lazy" class="img--responsive">
690					</div>
691					<div class="benefits-login-list__text">Možnost personalizace e-shopu</div>
692				</div>
693				<div class="benefits-login-list__item">
694					<div class="benefits-login-list__image">
695						<img src="/user/documents/upload/benefit-4.svg" alt="Věrnostní výhody" loading="lazy" class="img--responsive">
696					</div>
697					<div class="benefits-login-list__text">Věrnostní výhody</div>
698				</div>
699			</div>
700			<div class="login-btn-group">
701				${btnAppend}
702			</div>
703		</div>
704	`;
705
706  $(".login-right-panel").append(loginTemplate);
707}
708
709
710function repositionRate() {
711  if ($("#hodnoceniobchodu").length) {
712    $("#hodnoceniobchodu").insertBefore(".custom-footer__newsletter");
713    $("#hodnoceniobchodu h2").text("Co říkají naši věrní zákazníci");
714    $(".shop-eval-stars").next().remove();
715
716    createSliderFromRates();
717  }
718}
719
720function createSliderFromRates() {
721  $("#hodnoceniobchodu .shop-eval").each(function () {
722    var rateItems = $(this);
723
724    var rateSlide = rateItems.find(".vote-wrap");
725
726    rateSlide.wrap('<div class="swiper-slide"></div>');
727
728    rateItems.wrapInner('<div class="swiper-container js-slider-rate"></div>');
729
730    rateItems
731      .find(".swiper-container")
732      .wrapInner('<div class="swiper-wrapper"></div>');
733
734    rateItems.wrapInner(
735      '<div class="js-slider-group slider-group-rate"></div>'
736    );
737
738    var arrowTemplate =
739      '<div class="swiper-arrow swiper-arrow-next js-swiper-arrow-next">' +
740      '<div class="swiper-arrow-content">' +
741      "<span></span>" +
742      "</div>" +
743      "</div>" +
744      '<div class="swiper-arrow swiper-arrow-prev js-swiper-arrow-prev">' +
745      '<div class="swiper-arrow-content">' +
746      "<span></span>" +
747      "</div>" +
748      "</div>";
749    rateItems.find(".slider-group-rate").append(arrowTemplate);
750
751    ratesSliderCreate();
752  });
753}
754
755function ratesSliderCreate() {
756  if ($(".js-slider-rate").length) {
757    $(".js-slider-rate").each(function () {
758      var inst = $(this),
759        swiperBlock = inst.closest(".js-slider-group"),
760        // swiperPagination = swiperBlock.find(".js-swiper-pagination"),
761        swiperArrowPrev = swiperBlock.find(".js-swiper-arrow-prev"),
762        swiperArrowNext = swiperBlock.find(".js-swiper-arrow-next");
763
764      var productsBreakpoints = {
765        200: {
766          slidesPerView: 1,
767        },
768        570: {
769          slidesPerView: 2,
770          // slidesPerGroup: 1,
771        },
772        771: {
773          slidesPerView: 3,
774          // slidesPerGroup: 1,
775        },
776        992: {
777          slidesPerView: 3,
778          // slidesPerGroup: 1,
779        },
780        1200: {
781          slidesPerView: 3,
782          // slidesPerGroup: 1,
783        },
784        1440: {
785          slidesPerView: 3,
786          // slidesPerGroup: 1,
787        },
788      };
789
790      var mySwiper = new Swiper(inst, {
791        spaceBetween: 0,
792        lazy: true,
793        loop: true,
794        speed: 600,
795        // autoplay: {
796        //   // speed: 3000,
797        // },
798        // pagination: {
799        //   el: swiperPagination,
800        //   clickable: true,
801        // },
802        navigation: {
803          nextEl: swiperArrowNext,
804          prevEl: swiperArrowPrev,
805        },
806        breakpoints: productsBreakpoints,
807      });
808    });
809  }
810}
811
812
813function repositionAboutUs() {
814  if ($(".in-o-nas").length) {
815    sliderTimeline();
816  }
817}
818
819function sliderTimeline() {
820  if ($(".js-slider-timeline").length) {
821    var inst = $(".js-slider-timeline"),
822      swiperBlock = inst.closest(".js-slider-group"),
823      // swiperPagination = swiperBlock.find(".js-swiper-pagination"),
824      swiperArrowPrev = swiperBlock.find(".js-swiper-arrow-prev"),
825      swiperArrowNext = swiperBlock.find(".js-swiper-arrow-next");
826
827    var productsBreakpoints = {
828      200: {
829        freeMode: false,
830        slidesPerView: 1,
831      },
832      480: {
833        slidesPerView: 1,
834        // slidesPerGroup: 1,
835      },
836      771: {
837        freeMode: true,
838        slidesPerView: "auto",
839      },
840      992: {
841        freeMode: true,
842        slidesPerView: "auto",
843      },
844      1200: {
845        freeMode: true,
846        slidesPerView: "auto",
847      },
848      1440: {
849        freeMode: true,
850        slidesPerView: "auto",
851        // slidesPerGroup: 1,
852      },
853    };
854
855    var mySwiper = new Swiper(inst, {
856      spaceBetween: 30,
857      lazy: true,
858      loop: false,
859      speed: 600,
860      // pagination: {
861      //   el: swiperPagination,
862      //   clickable: true,
863      // },
864      navigation: {
865        nextEl: swiperArrowNext,
866        prevEl: swiperArrowPrev,
867      },
868      breakpoints: productsBreakpoints,
869    });
870  }
871}
872
873
874function repositionBasket() {
875  if ($(".id--16").length) {
876    // $(".cart-content .next-step-back").text("Späť do Obchodu");
877    $(".order-summary-inner").append('<div class="next-btn"></div>');
878    $(".order-summary-inner .next-btn").append(
879      $(".cart-content .next-step-forward")
880    );
881
882    $(".cart-content .next-step .next-step-back").addClass("btn btn-secondary");
883    $(".cart-content .next-step .next-step-back").text("Zpět do košíku");
884
885    $(".cart-content .order-summary-inner .next-btn").insertBefore(
886      "#checkoutSidebar .cart-content > .next-step"
887    );
888
889    $("#checkoutSidebar .cart-content .next-btn span").text(
890      "Pokračovat na kontaktní údaje"
891    );
892
893    $(".cart-inner").prepend($("ol.cart-header"));
894
895    $(".co-delivery-method h4").text("Způsob dopravy");
896    $(".co-payment-method h4").text("Způsob platby");
897
898    $(".order-summary-inner h4:first-child").text("Položky v košíku");
899
900    $(
901      ".order-summary-inner .order-summary-item.helper, .order-summary-inner .shipping-billing-summary, .order-summary-inner .order-summary-item.price"
902    ).wrapAll('<div class="order-summar-result"></div>');
903    $(".order-summary").append(
904      '<div class="order-summary-inner order-summary-inner-ext"></div>'
905    );
906    $(".order-summary-inner-ext").append($(".order-summar-result"));
907    $("<h4>Shrnutí objednávky</h4>").insertBefore(
908      ".order-summary-inner-ext .order-summary-item.helper"
909    );
910
911    $(".cart-toggle-unselected-options").text("");
912    $(".cart-toggle-unselected-options").append("<span>Změnit</span>");
913
914    $(".cart-item-price").append("s DPH");
915
916    if ($(".cart-item-gift").length) {
917      var giftName = $(".cart-item-gift span").text();
918      var giftTemplate = `
919				<div class="recapitulation-single recapitulation-shipping-billing">
920					<strong class="recapitulation-shipping-billing-info">
921						<span>${giftName}</span>
922						Dárek zdarma
923					</strong>
924	 			</div>
925			`;
926
927      setTimeout(() => {
928        $("#shipping-billing-summary").prepend($(giftTemplate));
929      }, 100);
930    }
931
932    if ($(".cart-items .recapitulation-single").length) {
933      var discountName = $(".cart-items .recapitulation-single strong").text();
934      var discountNameFormatted = discountName.split("Sleva").pop().trim();
935      var code = getShoptetDataLayer().cartInfo.discountCoupon.code;
936      var discountTemplate = `
937				<div class="recapitulation-single recapitulation-shipping-billing">
938					<strong class="recapitulation-shipping-billing-info">
939						<span class="txt-red">-${discountNameFormatted}</span>
940						<div>Sleva: <small>${code}</small></div>
941					</strong>
942	 			</div>
943			`;
944
945      setTimeout(() => {
946        $("#shipping-billing-summary").prepend($(discountTemplate));
947      }, 100);
948    }
949
950    var summaryWrapper = $(".order-summar-result .price-wrapper");
951    summaryWrapper.find(".price-label.price-primary").text("Celková cena");
952    summaryWrapper.find(".price.price-primary").append("<span> s DPH</span>");
953    summaryWrapper.find(".price-label.price-secondary").text("");
954    summaryWrapper
955      .find(".price.price-secondary")
956      .append("<span> bez DPH</span>");
957
958    if ($(".co-box.co-delivery-method").length) {
959      var deliveryMethod = $(
960        ".co-box.co-delivery-method .shipping-billing-table .radio-wrapper"
961      );
962
963      setTimeout(() => {
964        deliveryMethod.each(function () {
965          var inst = $(this);
966          if (inst.find(".question-tooltip").length) {
967            var questionText = inst
968              .find(".question-tooltip")
969              .attr("data-original-title");
970            inst.find(".question-tooltip").closest("span").remove();
971            inst
972              .find(".payment-info")
973              .append(
974                '<span class="payment-additional-text">' +
975                  questionText +
976                  "</span>"
977              );
978          }
979        });
980      }, 200);
981    }
982
983    var firstSelect = false;
984    if ($("#order-shipping-methods").length) {
985      setTimeout(() => {
986        $("#order-shipping-methods input").attr("checked", false);
987        $("#order-shipping-methods .radio-wrapper").removeClass("active");
988        $("#order-shipping-methods label").removeClass("active");
989
990        $("#order-billing-methods input").attr("checked", false);
991        $("#order-billing-methods .radio-wrapper").removeClass("active");
992        $("#order-billing-methods label").removeClass("active");
993
994        $("#order-billing-methods .radio-wrapper").addClass(
995          "unselected-option"
996        );
997
998        $("#order-shipping-methods .radio-wrapper").click(function () {
999          if (!firstSelect) {
1000            $("#order-billing-methods .radio-wrapper").removeClass(
1001              "unselected-option"
1002            );
1003            $("#order-billing-methods input").attr("checked", false);
1004            $("#order-billing-methods label").removeClass("active");
1005            firstSelect = true;
1006          }
1007        });
1008      }, 100);
1009    }
1010
1011    var getShoptetCustomer = getShoptetDataLayer().customer;
1012    if (getShoptetCustomer.groupId != 6) {
1013      $('.radio-wrapper[data-id="billing-289"]').remove();
1014    }
1015  }
1016
1017  if ($(".id--15").length) {
1018    $(".order-summary-item.summary-thx")
1019      .closest(".recapitulation-wrapper")
1020      .hide();
1021
1022    $(".content-inner h1").text("Děkujeme vám za vaši objednávku");
1023    var number = $(".reca-number strong").text();
1024    $(".content-inner h1").append('<span class="code">č.' + number + "</span>");
1025
1026    $(".order-summary-heading").wrap(
1027      '<div class="order-summary-heading-group"></div>'
1028    );
1029
1030    $(".order-summary-heading-group").prepend(
1031      '<img src="/user/documents/upload/icons/cart-complete.svg">'
1032    );
1033
1034    $(
1035      "<p>Vaše objednávka se právě zpracovává a další infomace vám příjdou na email.</p>"
1036    ).insertAfter(".order-summary-heading-group");
1037
1038    var contactBanner = `
1039			<div class="contact-group">
1040				<h4 class="txt-c">Potřebujete s něčím pomoci?</h4>
1041				<div class="box box-white">
1042						<div class="margin-bottom-2"><img src="/user/logos/kavovnik_logo-piktogram-v2_1.png" alt="" class="img--responsive" loading="lazy"></div>
1043						<div class="margin-bottom-3">
1044							<p>H-PARK Brno <br> Heršpická 1035/11f</p>
1045						</div>
1046						<div class="contact-list"><a href="tel:774772772" class="contact-list__item tel"> <span class="contact-list__icon"></span> <span class="contact-list__text">774 772 772</span> </a> <a href="mailto:[email protected]" class="contact-list__item mail"> <span class="contact-list__icon"></span> <span class="contact-list__text">[email protected]</span> </a></div>
1047						<div class="contact-subtext">Otevírací doba</div>
1048				</div>
1049    	</div>
1050		`;
1051
1052    // <p><span class="p-subtext">Pondělí – Čtvrtek: <strong>10 – 17</strong> hod.</span> <span class="p-subtext">Pátek: <strong>10 – 16</strong> hod. </span></p>
1053
1054    $(".content-inner").append($(contactBanner));
1055
1056    // $(".order-summary-heading").wrap('<div class="reca-first"></div>');
1057    // $(".reca-first").append($(".order-summary-item.total"));
1058    // $(".reca-first").append($(".reca-number"));
1059    // $(".order-summary-item.summary-thx").remove();
1060    // $(".order-complete-links")
1061    //   .closest(".recapitulation-wrapper")
1062    //   .addClass("reca-btn");
1063    // $(".cart-table tr").each(function () {
1064    //   $(this)
1065    //     .find(".cart-p-image")
1066    //     .wrapInner('<span class="cart-p-image-inner"></span>');
1067    // });
1068  }
1069
1070  if ($(".id--17").length) {
1071    // $(".cart-content .next-step-back").text("Späť do Obchodu");
1072
1073    $(".order-summary-inner").append('<div class="next-btn"></div>');
1074    $(".order-summary-inner .next-btn").append(
1075      $(".cart-content .next-step-forward")
1076    );
1077
1078    $(".cart-content .next-step .next-step-back").addClass("btn btn-secondary");
1079    $(".cart-content .next-step .next-step-back").text("Zpět do košíku");
1080
1081    $(".cart-content .order-summary-inner .next-btn").insertBefore(
1082      "#checkoutSidebar .cart-content > .next-step"
1083    );
1084
1085    $(".cart-content .next-btn").append(
1086      $(".cart-content .next-step button.btn")
1087    );
1088    $("#checkoutSidebar .cart-content .next-btn .btn span").text(
1089      "Objednávka zavazující k platbě"
1090    );
1091    $("#checkoutSidebar .cart-content .next-btn .btn span:last-child").remove();
1092
1093    $(".cart-inner").prepend($("ol.cart-header"));
1094
1095    $(".co-contact-information h4").text("Kontaktní údaje");
1096    $(".co-billing-address h4").text("Fakturační adresa");
1097
1098    $(".order-summary-inner h4:first-child").text("Položky v košíku");
1099
1100    $(
1101      ".order-summary-inner .order-summary-item.helper, .order-summary-inner .shipping-billing-summary, .order-summary-inner .order-summary-item.price"
1102    ).wrapAll('<div class="order-summar-result"></div>');
1103    $(".order-summary").append(
1104      '<div class="order-summary-inner order-summary-inner-ext"></div>'
1105    );
1106    $(".order-summary-inner-ext").append($(".order-summar-result"));
1107    $("<h4>Shrnutí objednávky</h4>").insertBefore(
1108      ".order-summary-inner-ext .order-summary-item.helper"
1109    );
1110
1111    $(".cart-toggle-unselected-options").text("");
1112    $(".cart-toggle-unselected-options").append("<span>Změnit</span>");
1113
1114    $(".cart-item-name").closest(".cart-items").addClass("cart-items--first");
1115
1116    if ($(".cart-item-gift").length) {
1117      var giftName = $(".cart-item-gift span").text();
1118      var giftTemplate = `
1119				<div class="recapitulation-single recapitulation-shipping-billing">
1120					<strong class="recapitulation-shipping-billing-info">
1121						<span>${giftName}</span>
1122						Dárek zdarma
1123					</strong>
1124	 			</div>
1125			`;
1126
1127      setTimeout(() => {
1128        $("#shipping-billing-summary").prepend($(giftTemplate));
1129      }, 100);
1130    }
1131
1132    if ($(".cart-items--first .recapitulation-single").length) {
1133      var discountName = $(
1134        ".cart-items--first .recapitulation-single strong"
1135      ).text();
1136      var discountNameFormatted = discountName.split("Sleva").pop().trim();
1137      var code = getShoptetDataLayer().cartInfo.discountCoupon.code;
1138      var discountTemplate = `
1139    		<div class="recapitulation-single recapitulation-shipping-billing">
1140    			<strong class="recapitulation-shipping-billing-info">
1141    				<span class="txt-red">-${discountNameFormatted}</span>
1142    				<div>Sleva: <small>${code}</small></div>
1143    			</strong>
1144    		</div>
1145    	`;
1146      setTimeout(() => {
1147        $("#shipping-billing-summary").prepend($(discountTemplate));
1148      }, 100);
1149    }
1150
1151    if (
1152      $(".order-summary-inner > .cart-items:not(.cart-items--first)").length
1153    ) {
1154      // $('.order-summary-inner > .cart-items:not(.cart-items--first) .')
1155      setTimeout(() => {
1156        $("#shipping-billing-summary").append(
1157          $(
1158            ".order-summary-inner > .cart-items:not(.cart-items--first) .recapitulation-single"
1159          )
1160        );
1161        // $("#shipping-billing-summary").prepend($(discountTemplate));
1162      }, 100);
1163    }
1164
1165    if ($('label[for="login"]').length) {
1166      $('label[for="login"]')
1167        .closest(".form-group")
1168        .addClass("form-group--login");
1169      $(".form-group--login label").remove();
1170
1171      var loginTemplate = `
1172				<div class="form-group--login-content">
1173					<div class="form-group--login-name">
1174						Máte již u nás účet?
1175					</div>
1176					<div class="form-group--login-text">
1177						Přihlašte se pro jednodušší práci s e-shopem.
1178					</div>
1179				</div>
1180			`;
1181
1182      $(".form-group--login").prepend($(loginTemplate));
1183      $(".form-group--login .btn").text("Přihlásit");
1184    }
1185
1186    $("#email").closest(".form-group").addClass("w-50");
1187    $("#companyId").closest(".form-group").addClass("w-50");
1188    $("#vatId").closest(".form-group").addClass("w-50");
1189    // $("#billStreet").closest(".form-group").addClass("w-66");
1190    $("#billCity").closest(".form-group").addClass("w-66");
1191    $("#deliveryCity").closest(".form-group").addClass("w-66");
1192    $("#billZip").closest(".form-group").addClass("w-33");
1193    $("#deliveryZip").closest(".form-group").addClass("w-33");
1194    $(".js-phone-form-group").addClass("w-50");
1195
1196    var summaryWrapper = $(".order-summar-result .price-wrapper");
1197    summaryWrapper.find(".price-label.price-primary").text("Celková cena");
1198    summaryWrapper.find(".price.price-primary").append("<span> s DPH</span>");
1199    summaryWrapper.find(".price-label.price-secondary").text("");
1200    summaryWrapper
1201      .find(".price.price-secondary")
1202      .append("<span> bez DPH</span>");
1203
1204    var inputCity = $(".co-billing-address fieldset > .w-66").prev();
1205    inputCity.insertAfter(".co-billing-address fieldset > .w-33");
1206
1207    setTimeout(() => {
1208      var inputCityShippin = $(
1209        ".co-shipping-address .form-option-block > .w-66"
1210      ).prev();
1211      inputCityShippin.insertAfter(
1212        ".co-shipping-address .form-option-block > .w-33"
1213      );
1214    }, 500);
1215
1216    // $(".co-box.co-box-additional").insertAfter(".cart-content .order-summary");
1217    // $(".co-box.co-box-additional .js-hidden#note").addClass("visible");
1218    // $(
1219    //   '<label for="remark" style="display: block; margin-bottom: 10px;">Poznámka k objednávce</label>'
1220    // ).insertBefore("#remark");
1221    // $("#remark").attr("placeholder", "");
1222
1223    $("#billCountryId").closest(".form-group").addClass("country-form-group");
1224  }
1225
1226  // Change Free delivery Range
1227  reorderBasketElements();
1228}
1229
1230function reorderBasketElements() {
1231  $(".step.step-1 span").text("Košík");
1232  $(".step-2 span").text("Doprava a platba");
1233  $(".step-3 span").text("Kontaktní informace");
1234  if ($(".id--9").length) {
1235    $(".sidebar-in-cart").append($(".summary-wrapper .next-step"));
1236
1237    $(".summary-wrapper .box").append('<div class="next-btn"></div>');
1238
1239    $(".summary-wrapper .next-btn").append(
1240      $(".sidebar-in-cart .next-step-forward")
1241    );
1242
1243    $(".next-step--cart .next-step-back").addClass("btn btn-secondary");
1244
1245    $(".cart-content.summary-wrapper .next-btn").insertBefore(
1246      ".sidebar-in-cart > .next-step"
1247    );
1248
1249    $(".sidebar-in-cart > .next-btn .btn").text("Pokračovat na výběr dopravy");
1250
1251    $(".cart-content.summary-wrapper .box").prepend(
1252      "<h4>Shrnutí objednávky</h4>"
1253    );
1254
1255    // Add title to discount coupon
1256    if ($(".discount-coupon").length) {
1257      var discountCoupon = $(".discount-coupon");
1258      discountCoupon.closest(".extras-col").addClass("extras-col-basket");
1259
1260      discountCoupon.prepend('<div class="h4">Máte slevový kupón?</div>');
1261
1262      discountCoupon.find("input").attr("placeholder", "Vložte kód");
1263      discountCoupon.find(".btn").text("Použít");
1264    }
1265
1266    if ($(".cart-summary #fvstudio-delivery-info").length) {
1267      $(".cart-summary #fvstudio-delivery-info").insertAfter(
1268        ".cart-content.summary-wrapper"
1269      );
1270      $("#fvstudio-delivery-info").addClass("extras-col");
1271      $("#fvstudio-delivery-info").wrapInner('<div class="extras-wrap"></div>');
1272
1273      $(".cart-summary .gift").insertAfter("#fvstudio-delivery-info .delivery");
1274    } else {
1275      $(".cart-summary .extras-col:not(.extras-col-basket)").insertAfter(
1276        ".cart-content.summary-wrapper"
1277      );
1278    }
1279
1280    $(".cart-summary .discount-coupon").insertBefore(
1281      ".cart-content.summary-wrapper"
1282    );
1283
1284    $(".cart-inner").prepend($("ol.cart-header"));
1285
1286    if ($(".free-gift").length) {
1287      $('<div class="free-gift-title">Dárky k objednávce</div>').insertBefore(
1288        ".free-gift"
1289      );
1290
1291      $(".free-gifts li").each(function () {
1292        var inst = $(this);
1293        inst
1294          .find(".free-gift-label")
1295          .append(
1296            '<div class="text-right"><button class="btn btn-default"><span class="btn-classic">Vybrat</span><span class="btn-selected">Vybráno</span></button></div>'
1297          );
1298      });
1299    }
1300
1301    var summaryWrapper = $(".summary-wrapper .price-wrapper");
1302    summaryWrapper.find(".price-label.price-primary").text("Celková cena");
1303    summaryWrapper.find(".price.price-primary").append("<span> s DPH</span>");
1304    summaryWrapper.find(".price-label.price-secondary").text("");
1305    summaryWrapper
1306      .find(".price.price-secondary")
1307      .append("<span> bez DPH</span>");
1308
1309    $(".cart-table").prepend(
1310      "<thead><th>Produkt</th><th></th><th>Množství</th><th>Dostupnost</th><th>Cena</th></thead>"
1311    );
1312
1313    // Reposition card table items
1314    if ($(".cart-table").length) {
1315      $(".cart-table tr.removeable").each(function () {
1316        var cartItem = $(this);
1317        var cartName = cartItem.find(".p-name");
1318        var cartAvailability = cartItem.find(".p-availability");
1319        var cartQuantity = cartItem.find(".p-quantity");
1320        // var cartRelated = cartItem.find(".show-related");
1321        var cartPrice = cartItem.find(".p-price");
1322        var cartPriceTotal = cartItem.find(".p-total");
1323        var cartDiscount = cartItem.find(".p-discount");
1324
1325        cartPrice.wrapInner(
1326          '<span class="p-price-content js-price-content"></span>'
1327        );
1328        // cartDiscount.wrapInner(
1329        //   '<span class="p-discount-content js-discount-content"></span>'
1330        // );
1331
1332        if ($(window).width() > 768) {
1333          cartQuantity.insertAfter(cartName);
1334        } else {
1335          cartName.append(cartQuantity);
1336        }
1337        cartItem.find(".price-final").append("<span> s DPH</span>");
1338        cartPriceTotal.append(cartPrice.find(".js-price-content"));
1339        // cartPriceTotal.prepend(cartDiscount.find(".js-discount-content"));
1340      });
1341
1342      $(".cart-table tr.related .cart-related-product").each(function () {
1343        var cartItem = $(this);
1344        var cartName = cartItem.find(".cart-related-name");
1345        var cartAvail = cartItem.find(".cart-related-availability").clone();
1346        var cartPrice = cartItem.find(".price");
1347
1348        cartName.append(cartAvail);
1349        cartName.append(cartPrice);
1350      });
1351    }
1352  }
1353}
1354
1355
1356function repositionCategory() {
1357  repoTopBannerCategory();
1358
1359  repositionSideFilterAccordion();
1360
1361  hideProductWithoutVOP();
1362
1363  $("#category-filter-hover").addClass("visible");
1364  $(".filter-sections .filter-section-button").hide();
1365  $(".filters-wrapper").prepend('<div class="filter-title">Filtrace</div>');
1366}
1367
1368function hideProductWithoutVOP() {
1369  var shoptetCustomer = getShoptetDataLayer().customer;
1370  if (shoptetCustomer.priceListId == 3) {
1371    $(".products-block .product").each(function (i) {
1372      var inst = $(this);
1373      if (inst.find(".flag-velkoobchodna-cena").length == 0) {
1374        inst.remove();
1375      }
1376    });
1377
1378    $(".products-top").each(function () {
1379      var inst = $(this);
1380      if (inst.find(".swiper-slide .product").length == 0) {
1381        inst.addClass("is-hidden");
1382      }
1383    });
1384  }
1385}
1386
1387function repoTopBannerCategory() {
1388  if (
1389    $(".category-top").length &&
1390    $("#content-wrapper > .category-top").length == 0
1391  ) {
1392    $("#content-wrapper").prepend($(".category-top"));
1393
1394    var categoryTitle = $("#navigation-1 a").text();
1395    $(".category-top").prepend(
1396      '<div class="category-subtitle">' + categoryTitle + "</div>"
1397    );
1398  }
1399  if ($("#content > .category-top").length) {
1400    $("#content > .category-top").remove();
1401  }
1402
1403  if ($("#category-header").length) {
1404    addSortDropdown();
1405  }
1406
1407  if ($(".filter-section-parametric-id-15").length) {
1408    // addCoffeeList();
1409  }
1410
1411  if ($(".filter-section-parametric-id-36").length) {
1412    changeWeightLabel();
1413  }
1414
1415  if ($(".category-perex > p:hidden").length) {
1416    var paragraphLast = $(".category-perex > p:hidden").prev();
1417    paragraphLast.append($(".category-perex .fvstudio-showmore-wrapper"));
1418  }
1419
1420  $(".pagination-loader .btn").text("NAČÍST DALŠÍ");
1421}
1422
1423function repositionFilterSections() {
1424  $("#filters #category-filter-hover .filter-section input").each(function () {
1425    var inst = $(this);
1426    if (inst.prop("checked") === true) {
1427      inst.closest(".filter-section").addClass("is-active");
1428    }
1429  });
1430  if ($(".ui-slider-range").length) {
1431    var loc = window.location.href;
1432    if (/priceMin/.test(loc)) {
1433      $(".slider-wrapper").addClass("is-active");
1434    }
1435  }
1436  if ($(window).width() < 768 || $(".mobile").length) {
1437    if ($("#filters.visible").length) {
1438      $(".filters-unveil-button-wrapper a").trigger("click");
1439    }
1440  } else {
1441    $("#category-filter-hover").addClass("visible");
1442    $(".filter-sections .filter-section-button").hide();
1443  }
1444}
1445
1446function addSortDropdown() {
1447  if ($("#category-header > .dropdown").length == 0) {
1448    $("#category-header").prepend(
1449      '<div class="dropdown dropdown--classic js-dropdown-block"></div>'
1450    );
1451    var checkedText = $('#category-header input[type="radio"]:checked')
1452      .next()
1453      .text();
1454    $("#category-header .js-dropdown-block").prepend(
1455      '<div class="dropdown__trigger js-dropdown-trigger">' +
1456        checkedText +
1457        "</div>"
1458    );
1459    $("#category-header .js-dropdown-block").append(
1460      '<div class="dropdown__content"></div>'
1461    );
1462    $("#category-header .dropdown__content").append($("#category-header form"));
1463  }
1464}
1465
1466function changeWeightLabel() {
1467  $(".filter-section-parametric-id-36 fieldset > div input").each(function () {
1468    var input = $(this);
1469    var label = input.next();
1470    var name = input.val().trim();
1471    var filerCountClone = label.find(".filter-count").clone();
1472    var text;
1473    if (name.includes(".")) {
1474      if (name === "0.12") {
1475        text = "120g";
1476        label.text(text);
1477        label.append(filerCountClone);
1478      }
1479      if (name === "0.25") {
1480        text = "250g";
1481        label.text(text);
1482        label.append(filerCountClone);
1483      }
1484      if (name === "0.5") {
1485        text = "500g";
1486        label.text(text);
1487        label.append(filerCountClone);
1488      }
1489      if (name === "0.7") {
1490        text = "700g";
1491        label.text(text);
1492        label.append(filerCountClone);
1493      }
1494    } else {
1495      label.text(name + "kg");
1496      label.append(filerCountClone);
1497    }
1498  });
1499}
1500
1501function addCoffeeList() {
1502  if ($(".category-top > .coffee-list-type").length == 0) {
1503    var coffeeCategoryTemplate = `
1504			<li class="coffee-list-type">
1505
1506			</li>
1507		`;
1508
1509    $(".category-top").append(coffeeCategoryTemplate);
1510
1511    $(".filter-section-parametric-id-15 fieldset > div input").each(
1512      function () {
1513        var input = $(this);
1514        var name = input.val().trim();
1515        var nameFormatted = toNormalForm(name.toLowerCase());
1516        var url = input.attr("data-url");
1517        if (input.prop("checked")) {
1518          var checked = "is-active";
1519        }
1520        var templateItem = `
1521				<a href="${url}" class="coffee-list-link ${checked} ${nameFormatted}">${name}</a>
1522			`;
1523
1524        $(".category-top .coffee-list-type").append(templateItem);
1525      }
1526    );
1527
1528    // <a href="/kava/?pv15=15" class="coffee-list-link zrnkova">Zrnková</a>
1529    // <a href="/kava/?pv15=15" class="coffee-list-link bez-kofeinu">Bez kofeinu</a>
1530    // <a href="/kava/?pv15=36" class="coffee-list-link mleta">Mletá</a>
1531    // <a href="/kava/?pv15=39" class="coffee-list-link kapsle">Kapsle</a>
1532  }
1533}
1534
1535function toNormalForm(str) {
1536  return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
1537}
1538
1539function repositionSideFilterAccordion() {
1540  body.addClass("side-filter-accordion");
1541
1542  // $(".slider-wrapper").addClass(classIsActive);
1543}
1544
1545function initFilterAccordion() {
1546  $("#filters h4")
1547    .closest("div")
1548    .each(function () {
1549      if ($(this).find(".filter-label.active").length) {
1550        $(this).addClass("is-active");
1551      }
1552      if ($(this).find(".ui-slider-range").length) {
1553        var percentage = parseInt(
1554          $(this).find(".ui-slider-range")[0].style.width,
1555          10
1556        );
1557        if (percentage < 100) {
1558          $(this).addClass("is-active");
1559        }
1560      }
1561    });
1562
1563  $("#filters .filter-section h4, #filters .slider-wrapper h4").on(
1564    "click",
1565    function () {
1566      var inst = $(this);
1567      var thisAccordionItem = inst.closest("div");
1568      if (thisAccordionItem.hasClass("is-active")) {
1569        thisAccordionItem.toggleClass("is-active");
1570      } else {
1571        inst.closest("div").addClass("is-active");
1572      }
1573      return false;
1574    }
1575  );
1576}
1577
1578function repositionFiltersContent() {
1579  // $(".slider-wrapper").addClass(classIsActive);
1580  // $(".toggle-filters").trigger("click");
1581}
1582
1583
1584function repositionContact() {
1585  if ($(".in-kontakt").length) {
1586    // $(".contact-image-block").insertBefore(".content-wrapper-in");
1587    // $(".form-panel > p:first-child").text("Napíšte nám");
1588    $("#formContact").prev().remove();
1589    $("#formContact").prev().remove();
1590    $("#formContact").next().remove();
1591    $(
1592      "#formContact .js-validated-element-wrapper.consents.consents-first"
1593    ).remove();
1594    $("#formContact .btn").val("Odeslat zprávu");
1595
1596    // $(".content-inner article > div").append(
1597    //   '<div class="contact-map" id="contact-map"></div>'
1598    // );
1599
1600    // var center = SMap.Coords.fromWGS84(16.6041797, 49.1737831);
1601    // var mapa = new SMap(JAK.gel("contact-map"), center, 17);
1602    // mapa.addDefaultLayer(SMap.DEF_BASE).enable();
1603    // // m.addDefaultControls();
1604
1605    // var o = { title: "Posun mapy" };
1606    // var c = new SMap.Control.Compass(o);
1607    // mapa.addControl(c, { right: "30px", top: "25px" });
1608
1609    // var o = { title: "Zoom" };
1610    // var c = new SMap.Control.Zoom(o);
1611    // mapa.addControl(c, { right: "30px", top: "110px" });
1612
1613    // var layer = new SMap.Layer.Marker();
1614    // mapa.addLayer(layer);
1615    // layer.enable();
1616
1617    // var options = {};
1618    // var marker = new SMap.Marker(center, "myMarker", options);
1619    // layer.addMarker(marker);
1620  }
1621}
1622
1623
1624var detailHeader;
1625var detailHeaderInner;
1626var detailImageWrapper;
1627var detailInfoWrapper;
1628var detailInfoHeadline;
1629
1630function repositionDetail() {
1631  if ($(".type-detail").length) {
1632    detailHeader = $(".p-detail-inner");
1633    detailHeaderInner = $(".p-detail-inner-header");
1634    detailProductTop = $(".product-top");
1635    detailImageWrapper = $(".product-top > .p-image-wrapper");
1636    detailInfoWrapper = $(".product-top > .p-info-wrapper");
1637
1638    // reposition detail info
1639    repositionDetailHeader();
1640    // reposition detail products
1641    repositionDetailProducts();
1642
1643    // repositionDetailParameterToNewTab();
1644
1645    $('.shp-tab[data-testid="tabBrand"] a').text("Historie značky");
1646
1647    repositionDetailParametersTable();
1648
1649    repositionImageFlags();
1650
1651    detailInfoWrapper
1652      .find(
1653        ".detail-parameters .extended-description:not(.highlight-parameters) tr th"
1654      )
1655      .text("Varianty:");
1656
1657    detailInfoWrapper.find(".add-to-cart-button").text("Přidat do košíku");
1658
1659    // detailInfoWrapper.append($(".extended-description"));
1660
1661    $(".basic-description > h3:first-child").text("Popis");
1662    $(".shp-tab-link[href='#description']").text("Popis a parametry");
1663
1664    $(".basic-description iframe").each(function () {
1665      $(this).wrap('<div class="iframe-responsive"></div>');
1666    });
1667
1668    if (detailImageWrapper.find(".flag-freeshipping").length) {
1669      detailImageWrapper
1670        .find(".flag-freeshipping .flag-text")
1671        .text("Doprava zdarma");
1672      if (detailImageWrapper.find(".flags-default").length) {
1673        detailImageWrapper
1674          .find(".flags-default")
1675          .prepend(detailImageWrapper.find(".flag-freeshipping"));
1676      } else {
1677        detailImageWrapper
1678          .find(".p-image")
1679          .prepend('<div class="flags flags-default"></div>');
1680        detailImageWrapper
1681          .find(".flags-default")
1682          .prepend(detailImageWrapper.find(".flag-freeshipping"));
1683      }
1684    }
1685
1686    // if ($(".p-thumbnails-wrapper").length) {
1687    //   detailImageWrapper.find(".p-image").addClass("p-image-sticky");
1688    // }
1689
1690    var shoptetCustomer = getShoptetDataLayer().customer;
1691    if (shoptetCustomer.priceListId == 3) {
1692      if (detailImageWrapper.find(".flag-velkoobchodna-cena").length == 0) {
1693        $(".detail-submit-block").remove();
1694      }
1695
1696      if ($(".products-alternative-block").length) {
1697        if ($(".products-alternative-block .product").length == 0) {
1698          $(".products-alternative-block").remove();
1699        }
1700      }
1701
1702      if ($(".products-related-block").length) {
1703        if ($(".products-related-block .product").length == 0) {
1704          $(".products-related-block").remove();
1705        }
1706      }
1707    }
1708
1709    detailNotAvailable();
1710
1711    addHiddenDescriptionContent();
1712
1713    $(".benefitBanner .h4").remove();
1714
1715    repoPositionBenefitDetail();
1716  }
1717}
1718
1719function repoPositionBenefitDetail() {
1720  $(".position--benefitProduct").insertBefore(".detail-submit-block");
1721
1722  const $title = $(".position--benefitProduct .benefitBanner__title");
1723
1724  if ($(".flag-freeshipping").length) {
1725    $title.text("Přidejte si kávu do košíku a máte dopravu zdarma");
1726  } else {
1727    $title.text("doprava zdarma od 2 500Kč");
1728  }
1729}
1730
1731function addHiddenDescriptionContent() {
1732  const $container = $("#description .description-inner");
1733
1734  if (!$container.length) return;
1735
1736  // počkáme na render (Shoptet niekedy dosádza obsah neskôr)
1737  setTimeout(function () {
1738    const fullHeight = $container.prop("scrollHeight");
1739
1740    // ak je obsah krátky → nič nerob
1741    if (fullHeight <= 180) return;
1742
1743    // pridáme tlačidlo na koniec description-inner
1744    const $btn = $(
1745      '<button class="jt-description-toggle">Zobraziť celý popis</button>'
1746    );
1747    $("#description").append($btn);
1748
1749    // toggle
1750    $btn.on("click", function () {
1751      $container.toggleClass("expanded");
1752
1753      if ($container.hasClass("expanded")) {
1754        $btn.text("Skryť popis");
1755      } else {
1756        $btn.text("Zobraziť celý popis");
1757
1758        $("html, body").animate(
1759          {
1760            scrollTop: $container.offset().top - 100,
1761          },
1762          300
1763        );
1764      }
1765    });
1766  }, 200);
1767}
1768
1769function detailNotAvailable() {
1770  if (
1771    $(".detail-submit-block .availability-label").text().trim() ==
1772    "Není skladem"
1773  ) {
1774    if ($(".detail-submit-block .add-to-cart").length == 0) {
1775      $(".detail-submit-block").append('<div class="add-to-cart"></div>');
1776    }
1777    var addToCart = $(".detail-submit-block .add-to-cart");
1778    addToCart.find(".quantity").remove();
1779    addToCart.find(".btn").remove();
1780    addToCart.addClass("btn-available");
1781    addToCart.append(
1782      '<span class="btn btn-default btn-watch js-btn-watch">Hlídat dostupnost</span>'
1783    );
1784    $(document).on("click", ".js-btn-watch", function () {
1785      $(".link-icon.watchdog").trigger("click");
1786    });
1787
1788    if ($(".products-alternative-block").length) {
1789      addToCart.append(
1790        '<span class="btn btn-secondary btn-alternative js-btn-alternative">Alternativní zboží</span>'
1791      );
1792      $(document).on("click", ".js-btn-alternative", function () {
1793        $("html, body")
1794          .stop()
1795          .animate({
1796            scrollTop: $(".products-alternative-block").offset().top,
1797          });
1798      });
1799    }
1800  }
1801}
1802
1803function stringContainsNumber(string) {
1804  return /\d/.test(string);
1805}
1806
1807function repositionDetailHeader() {
1808  // reposition flags default
1809  var flags = detailProductTop.find(".flags-default");
1810  $(".p-image").prepend(flags);
1811
1812  // replace discount text
1813  // if (detailImageWrapper.find(".price-save").length) {
1814  //   if (detailImageWrapper.find(".price-save .parameter-dependent").length) {
1815  //     detailImageWrapper
1816  //       .find(".price-save .parameter-dependent")
1817  //       .each(function () {
1818  //         var priceSave = $(this);
1819  //         var newPriceSave = priceSave.text().split("–")[1];
1820  //         var testNumber = stringContainsNumber(newPriceSave);
1821  //         if (testNumber) {
1822  //           var newPriceSaveExt = newPriceSave.replace(/\s/g, "").split("%")[0];
1823  //           priceSave.html(
1824  //             "AKCE <span>-" + newPriceSaveExt + "<sub>%</sub></span>"
1825  //           );
1826  //         }
1827  //       });
1828  //   } else if (detailImageWrapper.find(".price-save .choose-variant").length) {
1829  //     detailImageWrapper.find(".price-save .choose-variant").each(function () {
1830  //       var priceSave = $(this);
1831  //       var newPriceSave = priceSave.text().split("–")[1];
1832  //       var testNumber = stringContainsNumber(newPriceSave);
1833  //       if (priceSave.hasClass("default-variant")) {
1834  //         var priceSaveFrom = "až";
1835  //       } else {
1836  //         var priceSaveFrom = "";
1837  //       }
1838  //       if (testNumber) {
1839  //         var newPriceSaveExt = newPriceSave.replace(/\s/g, "").split("%")[0];
1840  //         priceSave.html(
1841  //           '<span class="price-save-from">' +
1842  //             priceSaveFrom +
1843  //             "</span><span>-" +
1844  //             newPriceSaveExt +
1845  //             "<sub>%</sub></span>"
1846  //         );
1847  //       }
1848  //     });
1849  //   } else {
1850  //     var priceSave = $(".p-image .price-save");
1851  //     var newPriceSave = priceSave
1852  //       .text()
1853  //       .split("–")[1]
1854  //       .replace(/\s/g, "")
1855  //       .split("%")[0];
1856  //     priceSave.html("<span>-" + newPriceSave + "<sub>%</sub></span>");
1857  //   }
1858  // }
1859
1860  if (
1861    detailImageWrapper.find(".flag-discount").length &&
1862    detailImageWrapper.find(".flag-discount .price-save").length == 0
1863  ) {
1864    detailImageWrapper.find(".flag-discount").remove();
1865  }
1866
1867  // reposition thumbnails arrows
1868  if (detailImageWrapper.find(".p-thumbnails-wrapper .thumbnail-prev").length) {
1869    $(".p-thumbnails-wrapper").append(
1870      $(".p-thumbnails-wrapper .thumbnail-prev")
1871    );
1872    $(".p-thumbnails-wrapper").append(
1873      $(".p-thumbnails-wrapper .thumbnail-next")
1874    );
1875
1876    $(".p-thumbnails-wrapper > a").wrapAll(
1877      '<div class="p-thumbnails-arrows"></div>'
1878    );
1879  }
1880
1881  // reposition h1
1882  detailInfoWrapper.prepend('<div class="p-info-headline"></div>');
1883  detailInfoHeadline = $(".p-info-headline");
1884  var detailName = $(".p-detail-inner-header h1");
1885  var detailRating = $(".p-detail-info");
1886  var detailCode = $(".p-detail-inner-header .p-code");
1887
1888  // reposition h1
1889  detailInfoHeadline.append(detailName);
1890
1891  // reposition stars wrapper
1892  detailInfoHeadline.append(detailRating);
1893
1894  // reposition products code
1895  detailInfoHeadline.find(".p-detail-info").append(detailCode);
1896
1897  // reposition product label
1898  if ($(".p-detail-info > div:not(.stars-wrapper)").length) {
1899    var productLabel = $(".p-detail-info > div:not(.stars-wrapper)");
1900    var productCode = $(".p-detail-info .p-code");
1901    productLabel.prepend(productCode);
1902  }
1903
1904  // Create clone of product headline
1905  var detailInfoHeadlineClone = $(".p-info-headline").clone();
1906  detailHeaderInner.append(detailInfoHeadlineClone);
1907  detailHeaderInner
1908    .find("h1")
1909    .replaceWith(
1910      $("<div class='h1'>" + detailHeaderInner.find("h1").text() + "</div>")
1911    );
1912
1913  // reposition product perex
1914  detailInfoWrapper
1915    .find(".p-short-description, .p-short-description + p")
1916    .wrapAll('<div class="p-short-description-block"></div>');
1917  $(".p-short-description-block").insertAfter(detailInfoHeadline);
1918
1919  if ($(".p-info-wrapper .detail-parameters").length) {
1920    $(".p-info-wrapper .detail-parameters").insertBefore(
1921      ".p-info-wrapper .p-final-price-wrapper"
1922    );
1923  }
1924
1925  if ($(".p-info-wrapper .availability-value").length) {
1926    $(".p-info-wrapper .availability-value").insertBefore(
1927      ".p-info-wrapper .p-final-price-wrapper"
1928    );
1929  }
1930
1931  detailInfoWrapper.find(".p-final-price-wrapper .price-save").prepend("Akce ");
1932  detailInfoWrapper.find(".price-final-holder span").text("s DPH");
1933
1934  if (detailInfoWrapper.find("#dkLabFavouriteDiv").length) {
1935    if ($(window).width() > 768) {
1936      $(".p-info-headline h1").append(
1937        detailInfoWrapper.find("#dkLabFavouriteDiv")
1938      );
1939    } else {
1940      $(".p-detail-inner-header .p-info-headline .h1").append(
1941        detailInfoWrapper.find("#dkLabFavouriteDiv")
1942      );
1943    }
1944  }
1945
1946  detailInfoWrapper
1947    .find(".availability-value, .p-final-price-wrapper, .add-to-cart")
1948    .wrapAll('<div class="detail-submit-block"></div>');
1949
1950  detailInfoWrapper
1951    .find(".p-code")
1952    .insertAfter(
1953      detailInfoWrapper.find(".detail-submit-block .availability-value")
1954    );
1955
1956  $(".p-code-label").text("Kód výrobku:");
1957
1958  $(".p-short-description p").each(function () {
1959    var inst = $(this);
1960    var str = inst.text();
1961    if (str.length > 0 && str.replace(/\s/g, "").length == 0) {
1962      // console.log("empty");
1963      inst.hide();
1964    }
1965  });
1966
1967  $('.shp-tab-link[href="#description"]').text("Doplňující informace");
1968  $("#description .detail-tab-item").text("Doplňující informace");
1969
1970  $(".chevron-after.chevron-down-after").text("Zobrazit celý popis");
1971
1972  $(".chevron-after.chevron-down-after").click(function () {
1973    $(".p-short-description").toggleClass("full-text");
1974    $(".p-short-description-block").toggleClass("show-text");
1975    if ($(this).text() == "Zobrazit celý popis") $(this).text("Méně informací");
1976    else $(this).text("Zobrazit celý popis");
1977
1978    return false;
1979  });
1980}
1981
1982function repositionDetailProducts() {
1983  // reposition products related
1984  if ($(".products-related-header").length) {
1985    $(
1986      ".products-related-header, .products-related, .products-related  + .browse-p"
1987    ).wrapAll('<div class="products-related-block"></div>');
1988    if ($(".products-related-block .p-detail-tabs-wrapper").length) {
1989      $(".p-detail").append($(".products-related-block"));
1990      $(".p-detail-tabs-wrapper").insertBefore(".products-related-block");
1991    } else {
1992      $(".products-related-block").insertAfter(
1993        ".p-detail-tabs-wrapper > .row .col-sm-12:last-child"
1994      );
1995    }
1996    productsRelated = $(".products-related .product");
1997
1998    $(".products-related-header").text("Související zboží");
1999  }
2000
2001  if ($(".products-alternative").length) {
2002    productsAlternativeItems = $(".products-alternative .product");
2003  }
2004
2005  // reposition products alternative
2006  if ($(".tab-pane#productsAlternative").length) {
2007    var productsAlternative = $(".tab-pane#productsAlternative");
2008    productsAlternative.wrapInner(
2009      '<div class="products-alternative-block"></div>'
2010    );
2011    if ($(".products-related-header").length) {
2012      $(".products-alternative-block").insertAfter(".products-related-block");
2013    } else {
2014      $(".products-alternative-block").insertAfter(
2015        ".p-detail-tabs-wrapper > .row .col-sm-12:last-child"
2016      );
2017    }
2018    $('.shp-tab-link[href="#productsAlternative"]')
2019      .closest(".shp-tab")
2020      .remove();
2021
2022    $(".products-alternative-block").prepend(
2023      '<h2 class="products-alternative-header">Alternativní zboží</h2>'
2024    );
2025  }
2026
2027  if (
2028    $(".products-related-header").length ||
2029    $(".products-alternative-block").length
2030  ) {
2031    // create slider from products
2032    createSliderFromProductsDetail();
2033  }
2034}
2035
2036function createSliderFromProductsDetail() {
2037  $(".products-block").each(function () {
2038    var productsItems = $(this);
2039
2040    var productsSlide = productsItems.find(".product");
2041
2042    productsSlide.wrap('<div class="swiper-slide"></div>');
2043
2044    productsItems.wrapInner(
2045      '<div class="swiper-container js-slider-products-detail"></div>'
2046    );
2047
2048    productsItems
2049      .find(".swiper-container")
2050      .wrapInner('<div class="swiper-wrapper"></div>');
2051
2052    productsItems.wrapInner(
2053      '<div class="js-slider-group slider-group-products"></div>'
2054    );
2055
2056    var paginationTemplate =
2057      '<div class="swiper-pagination js-swiper-pagination"></div>';
2058
2059    productsItems.find(".slider-group-products").append(paginationTemplate);
2060
2061    var arrowTemplate =
2062      '<div class="swiper-arrow swiper-arrow-next js-swiper-arrow-next">' +
2063      '<div class="swiper-arrow-content">' +
2064      "<span></span>" +
2065      "</div>" +
2066      "</div>" +
2067      '<div class="swiper-arrow swiper-arrow-prev js-swiper-arrow-prev">' +
2068      '<div class="swiper-arrow-content">' +
2069      "<span></span>" +
2070      "</div>" +
2071      "</div>";
2072    productsItems.find(".slider-group-products").append(arrowTemplate);
2073
2074    productsDetailImagesSlider();
2075  });
2076}
2077
2078function productsDetailImagesSlider() {
2079  if ($(".js-slider-products-detail").length) {
2080    $(".js-slider-products-detail").each(function () {
2081      var inst = $(this),
2082        swiperBlock = inst.closest(".js-slider-group"),
2083        swiperPagination = swiperBlock.find(".js-swiper-pagination"),
2084        swiperArrowPrev = swiperBlock.find(".js-swiper-arrow-prev"),
2085        swiperArrowNext = swiperBlock.find(".js-swiper-arrow-next");
2086
2087      var productsBreakpoints = {
2088        200: {
2089          slidesPerView: 1,
2090        },
2091        480: {
2092          slidesPerView: 2,
2093          // slidesPerGroup: 1,
2094        },
2095        771: {
2096          slidesPerView: 3,
2097          // slidesPerGroup: 1,
2098        },
2099        992: {
2100          slidesPerView: 3,
2101          // slidesPerGroup: 1,
2102        },
2103        1200: {
2104          slidesPerView: 4,
2105          // slidesPerGroup: 1,
2106        },
2107        1440: {
2108          slidesPerView: 4,
2109          // slidesPerGroup: 1,
2110        },
2111      };
2112
2113      var mySwiper = new Swiper(inst, {
2114        spaceBetween: 0,
2115        lazy: true,
2116        loop: false,
2117        speed: 600,
2118        pagination: {
2119          el: swiperPagination,
2120          clickable: true,
2121        },
2122        navigation: {
2123          nextEl: swiperArrowNext,
2124          prevEl: swiperArrowPrev,
2125        },
2126        breakpoints: productsBreakpoints,
2127      });
2128    });
2129  }
2130}
2131
2132function repositionDetailParameterToNewTab() {
2133  if ($("#manufacturerDescription").length) {
2134    var detailParameterContent = $("#manufacturerDescription").html();
2135
2136    var detailParameterTab = `
2137			<li class="shp-tab" data-width="226">
2138				<a href="#productBrand" class="shp-tab-link" role="tab" data-toggle="tab">Historie</a>
2139			</li>`;
2140
2141    var detailParameterTabContent = `
2142			<div id="productBrand">
2143				<h3>Historie značky</h3>
2144			</div>`;
2145
2146    $(detailParameterTab).insertAfter(
2147      $('#p-detail-tabs li a[href="#description"]').closest("li")
2148    );
2149    $("#tab-content .tab-pane#description .basic-description").append(
2150      $(detailParameterTabContent)
2151    );
2152
2153    $("#productBrand").append(detailParameterContent);
2154
2155    // $("#description .extended-description").remove();
2156
2157    $('.shp-tab-link[href="#productBrand"]').click(function () {
2158      $(".tab-pane.active").removeClass("active");
2159      $(".tab-pane#description").addClass("active in");
2160
2161      $("html, body")
2162        .stop()
2163        .animate({
2164          scrollTop: $("#productBrand").offset().top,
2165        });
2166    });
2167  }
2168
2169  if ($("#description").length) {
2170    $('.shp-tab-link[href="#description"]').click(function () {
2171      $("html, body")
2172        .stop()
2173        .animate({
2174          scrollTop: $("#description").offset().top - 60,
2175        });
2176    });
2177  }
2178
2179  if ($(".products-related").length) {
2180    var detailRelatedTab = `
2181			<li class="shp-tab" data-width="226">
2182				<a href="#productRelated" class="shp-tab-link" role="tab" data-toggle="tab">Související zboží</a>
2183			</li>`;
2184
2185    $(detailRelatedTab).insertAfter($("#p-detail-tabs li:nth-child(2)"));
2186
2187    $('.shp-tab-link[href="#productRelated"]').click(function () {
2188      $("html, body")
2189        .stop()
2190        .animate({
2191          scrollTop: $(".products-related-block").offset().top,
2192        });
2193    });
2194  }
2195
2196  if ($(".products-alternative").length) {
2197    var detailRelatedTab = `
2198			<li class="shp-tab" data-width="226">
2199				<a href="#productAlternative" class="shp-tab-link" role="tab" data-toggle="tab">Alternativní zboží</a>
2200			</li>`;
2201
2202    $(detailRelatedTab).insertAfter($("#p-detail-tabs li:nth-child(3)"));
2203
2204    $('.shp-tab-link[href="#productAlternative"]').click(function () {
2205      $("html, body")
2206        .stop()
2207        .animate({
2208          scrollTop: $(".products-alternative-block").offset().top,
2209        });
2210    });
2211  }
2212
2213  if ($("#ratingTab").length) {
2214    $(".shp-tab[data-testid='tabRating']").remove();
2215
2216    var detailParameterContentReview = $("#ratingTab").html();
2217
2218    var detailParameterTabReview = `
2219			<li class="shp-tab" data-width="226">
2220				<a href="#ratingTabContent" class="shp-tab-link" role="tab" data-toggle="tab">Hodnocení</a>
2221			</li>`;
2222
2223    var detailParameterTabContentReview = `
2224			<div id="ratingTabContent">
2225				<h3>Hodnocení</h3>
2226			</div>`;
2227
2228    $(detailParameterTabReview).insertAfter(
2229      $('#p-detail-tabs li a[href="#productBrand"]').closest("li")
2230    );
2231
2232    $("#tab-content .tab-pane#description .basic-description").append(
2233      $(detailParameterTabContentReview)
2234    );
2235
2236    $("#ratingTabContent").append(detailParameterContentReview);
2237
2238    // $("#description .extended-description").remove();
2239
2240    $('.shp-tab-link[href="#ratingTabContent"]').click(function () {
2241      $(".tab-pane.active").removeClass("active");
2242      $(".tab-pane#description").addClass("active in");
2243
2244      $("html, body")
2245        .stop()
2246        .animate({
2247          scrollTop: $("#ratingTabContent").offset().top,
2248        });
2249    });
2250  }
2251}
2252
2253function repositionDetailParametersTable() {
2254  var extendedDescription = $(".extended-description");
2255
2256  // typ kávy
2257  extendedDescription.find("td a:contains(Zrnková)").addClass("zrnkova");
2258  extendedDescription.find("td a:contains(Mletá)").addClass("mleta");
2259  extendedDescription.find("td a:contains(Kapsle)").addClass("kapsle");
2260
2261  let highlightRows = [];
2262
2263  extendedDescription.find("tr").each(function () {
2264    var inst = $(this);
2265    var labelEl = inst.find(".row-header-label");
2266    var label = labelEl.text().trim();
2267
2268    // -------------------
2269    // HMOTNOSŤ (remove + úprava)
2270    // -------------------
2271    if (label === "Hmotnost:") {
2272      if (
2273        inst.find("td:contains(kg)").length ||
2274        inst.find("td:contains(g)").length
2275      ) {
2276        inst.remove();
2277        return;
2278      }
2279
2280      var labelLink = inst.find("td a");
2281      var name = labelLink.text().trim();
2282
2283      if (name.includes(".")) {
2284        if (name === "0.12") labelLink.text("120g");
2285        if (name === "0.25") labelLink.text("250g");
2286        if (name === "0.5") labelLink.text("500g");
2287        if (name === "0.7") labelLink.text("700g");
2288      } else {
2289        labelLink.text(name + "kg");
2290      }
2291    }
2292
2293    // -------------------
2294    // INTENZITA (hviezdičky)
2295    // -------------------
2296    if (label === "Intenzita:") {
2297      var text = inst.find("td").text().trim();
2298      var count = 0;
2299
2300      if (text === "Velmi jemná") count = 1;
2301      if (text === "Jemná") count = 2;
2302      if (text === "Středně silná") count = 3;
2303      if (text === "Silná") count = 4;
2304      if (text === "Extra silná") count = 5;
2305
2306      inst.find("td").text("");
2307      inst.find("td").addClass("intenzita show-tooltip-ext");
2308      inst.find("td.intenzita").attr("data-original-title", text);
2309
2310      var templateRate = `
2311        <span></span>
2312        <span></span>
2313        <span></span>
2314        <span></span>
2315        <span></span>
2316      `;
2317
2318      inst.find(".intenzita").append(templateRate);
2319
2320      inst.find(".intenzita span").each(function (i) {
2321        if (i < count) {
2322          $(this).addClass("is-active");
2323        }
2324      });
2325
2326      $(".tooltip").hide();
2327      $(".show-tooltip-ext").tooltip({
2328        html: true,
2329        placement: "auto",
2330        container: "body",
2331      });
2332    }
2333
2334    // -------------------
2335    // CUSTOM PARAMETRE
2336    // -------------------
2337    if (label.includes("Custom")) {
2338      const valueText = inst.find("td").text().trim();
2339      const tooltipText = labelEl.find(".question-tooltip").attr("title") || "";
2340
2341      const newRow = $(`
2342        <tr class="highlight-row">
2343          <th>${valueText}</th>
2344          <td>${tooltipText}</td>
2345        </tr>
2346      `);
2347
2348      highlightRows.push(newRow);
2349      inst.remove();
2350      return;
2351    }
2352
2353    // -------------------
2354    // INTENZITA → highlight (clone)
2355    // -------------------
2356    if (label === "Intenzita:") {
2357      highlightRows.push(inst.clone());
2358      inst.remove();
2359      return;
2360    }
2361
2362    // -------------------
2363    // OBSAH KOFEINU
2364    // -------------------
2365    if (label === "Obsah kofeinu:") {
2366      const value = inst.find("td").text().trim();
2367
2368      const newRow = $(`
2369        <tr class="highlight-row">
2370          <th>Obsah kofeinu</th>
2371          <td>${value}</td>
2372        </tr>
2373      `);
2374
2375      highlightRows.push(newRow);
2376      inst.remove();
2377      return;
2378    }
2379
2380    // -------------------
2381    // AROMA
2382    // -------------------
2383    if (label === "Aroma:") {
2384      const value = inst.find("td").text().trim();
2385
2386      const newRow = $(`
2387        <tr class="highlight-row">
2388          <th>Aroma</th>
2389          <td>${value}</td>
2390        </tr>
2391      `);
2392
2393      highlightRows.push(newRow);
2394      inst.remove();
2395      return;
2396    }
2397
2398    // -------------------
2399    // Typ kávy
2400    // -------------------
2401    if (label === "Typ kávy:") {
2402      const value = inst.find("td").text().trim();
2403
2404      const newRow = $(`
2405        <tr class="highlight-row">
2406          <th>Typ kávy</th>
2407          <td>${value}</td>
2408        </tr>
2409      `);
2410
2411      highlightRows.push(newRow);
2412      inst.remove();
2413      return;
2414    }
2415  });
2416
2417  // -------------------
2418  // RENDER POD CENU
2419  // -------------------
2420  if (highlightRows.length > 0) {
2421    const highlightWrapper = $(`
2422      <div class="extended-description highlight-parameters">
2423        <table class="detail-parameters">
2424          <tbody></tbody>
2425        </table>
2426      </div>
2427    `);
2428
2429    const tbody = highlightWrapper.find("tbody");
2430
2431    highlightRows.forEach((row) => {
2432      tbody.append(row);
2433    });
2434
2435    detailInfoWrapper.append(highlightWrapper);
2436  }
2437}
2438
2439function repositionImageFlags() {
2440  var inst = detailImageWrapper;
2441
2442  if (inst.find(".flag-kapsle").length) {
2443    inst.find(".flag-kapsle").text("");
2444    if (inst.find(".flags-extra").length) {
2445      inst.find(".flags-extra").prepend(inst.find(".flag-kapsle"));
2446    } else {
2447      inst.find(".p-image").prepend('<div class="flags flags-extra"></div>');
2448      inst.find(".flags-extra").prepend(inst.find(".flag-kapsle"));
2449    }
2450  }
2451
2452  if (inst.find(".flag-bez-kofeinu").length) {
2453    inst.find(".flag-bez-kofeinu").text("");
2454    if (inst.find(".flags-extra").length) {
2455      inst.find(".flags-extra").prepend(inst.find(".flag-bez-kofeinu"));
2456    } else {
2457      inst.find(".p-image").prepend('<div class="flags flags-extra"></div>');
2458      inst.find(".flags-extra").prepend(inst.find(".flag-bez-kofeinu"));
2459    }
2460  }
2461
2462  if (inst.find(".flag-mleta").length) {
2463    inst.find(".flag-mleta").text("");
2464    if (inst.find(".flags-extra").length) {
2465      inst.find(".flags-extra").prepend(inst.find(".flag-mleta"));
2466    } else {
2467      inst.find(".p-image").prepend('<div class="flags flags-extra"></div>');
2468      inst.find(".flags-extra").prepend(inst.find(".flag-mleta"));
2469    }
2470  }
2471
2472  if (inst.find(".flag-zrnkova").length) {
2473    inst.find(".flag-zrnkova").text("");
2474    if (inst.find(".flags-extra").length) {
2475      inst.find(".flags-extra").prepend(inst.find(".flag-zrnkova"));
2476    } else {
2477      inst.find(".p-image").prepend('<div class="flags flags-extra"></div>');
2478      inst.find(".flags-extra").prepend(inst.find(".flag-zrnkova"));
2479    }
2480  }
2481}
2482
2483
2484function repositionPrazirni() {
2485  if ($(".distributors-list").length && $(".col-lg-9").length) {
2486    console.log("asdxx");
2487    $(".col-lg-9").html("");
2488    $(".col-lg-9").append('<div id="distributorsMapId"></div>');
2489    distributorList();
2490    distributorMap();
2491  }
2492}
2493
2494function distributorList() {
2495  var dList = $(".distributors-list");
2496  for (let i = 0; i < prazirni.length; i++) {
2497    const name = prazirni[i].name;
2498    const url = prazirni[i].url;
2499    const address = prazirni[i].adr;
2500    const city = prazirni[i].city;
2501    const img = prazirni[i].img;
2502    const lon = prazirni[i].lon;
2503    const lat = prazirni[i].lat;
2504    var prazirnaItem = `
2505			<div class="distributor-row">
2506				<div role="button" data-index="${i}" class="distributor-item distributor-${i}" data-location="${lat}, ${lon}">
2507					<div class="distributor_group"><img src="/user/documents/upload/prazirna/${img}" class="distributor_image" /></div>
2508					<h3>${name}</h3>
2509					<p class="distributor_text distributor_city"><strong>Město:</strong> <span>${city}</span></p>
2510					<p class="distributor_text distributor_address"><strong>Adresa:</strong> <span>${address}</span></p>
2511				</div>
2512				<p class="distributor_web"><strong>Produkty:</strong> <span><a href="/${url}" rel="noopener noreferrer">${url}</a></span></p>
2513			</div>
2514		`;
2515
2516    dList.append(prazirnaItem);
2517  }
2518}
2519
2520function distributorMap() {
2521  var locations = [];
2522
2523  $(".distributor-item").each(function () {
2524    var inst = $(this);
2525    var dataLocation = inst.data("location");
2526    var dataLang = dataLocation.split(",")[0];
2527    var dataLong = dataLocation.split(",")[1].trim();
2528    var title = inst.find("h3").text();
2529    locations.push([title, dataLang, dataLong]);
2530  });
2531
2532  var markerArray = [];
2533
2534  var map = L.map("distributorsMapId", {
2535    gestureHandling: true,
2536  }).setView([11.206051, 122.447886], 4);
2537  var mapLink = '<a href="https://openstreetmap.org">OpenStreetMap</a>';
2538
2539  L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
2540    attribution: "&copy; " + mapLink + " Contributors",
2541  }).addTo(map);
2542
2543  // specify popup options
2544  var marker;
2545
2546  var countryMarkers = L.markerClusterGroup({
2547    showCoverageOnHover: true,
2548  });
2549
2550  var allMarkers = {};
2551
2552  for (var i = 0; i < locations.length; i++) {
2553    var distributor = $(".distributor-" + i);
2554
2555    let website = distributor
2556      .closest(".distributor-row")
2557      .find(".distributor_web")
2558      .html();
2559    let email = distributor
2560      .closest(".distributor-row")
2561      .find(".distributor_email")
2562      .html();
2563    let tel = distributor
2564      .closest(".distributor-row")
2565      .find(".distributor_tel")
2566      .html();
2567    let img = distributor.find(".distributor_group").html();
2568    let imgSrc = distributor.find(".distributor_group img").attr("src");
2569    let city = distributor.find(".distributor_city").html();
2570    let address = distributor.find(".distributor_address").html();
2571    let title = distributor.find("h3").html();
2572
2573    const popupContent = `
2574			<div>
2575				${img}
2576				<h3>${title}</h3>
2577				<p>${city}</p>
2578				<p>${address}</p>
2579				<p>${website}</p>
2580			</div>`;
2581
2582    const popup = L.responsivePopup({
2583      maxWidth: 250,
2584      minWidth: 170,
2585      className: "custom-map-popup",
2586      offset: [10, 10],
2587      hasTip: true,
2588      autoPan: false,
2589    }).setContent(popupContent);
2590
2591    var markerIcon = L.icon({
2592      iconUrl: imgSrc,
2593      iconSize: [100, 50], // size of the icon
2594      iconAnchor: [50, 25], // point of the icon which will correspond to marker's location
2595      popupAnchor: [0, -5], // point from which the popup should open relative to the iconAnchor
2596    });
2597
2598    marker = new L.marker([locations[i][1], locations[i][2]], {
2599      icon: markerIcon,
2600    }).bindPopup(popup);
2601    markerArray.push(marker);
2602
2603    countryMarkers.addLayer(marker);
2604
2605    allMarkers[i] = marker;
2606  }
2607
2608  map.addLayer(countryMarkers);
2609
2610  var group = L.featureGroup(markerArray);
2611  map.fitBounds(group.getBounds().pad(0.1));
2612
2613  $(".distributor-item").on("click", function () {
2614    var id = $(this).data("index");
2615    map.setView(allMarkers[id].getLatLng(), 12);
2616    setTimeout(() => {
2617      allMarkers[id].openPopup();
2618    }, 500);
2619  });
2620}
2621
2622
2623var bannerPartners;
2624function repositionPartners() {
2625  if ($(".js-partners-block").length) {
2626    bannerPartners = $(".js-partners-block").clone();
2627    if ($(".in-index").length == 0) {
2628      var footerServiceItem = $(".js-partners-block").closest(".banner");
2629      var partnersBlock = $(".js-partners-block");
2630      footerServiceItem.parent().remove();
2631      partnersBlock.insertBefore(".js-instagram-block");
2632    } else {
2633      $(".js-partners-block").closest(".banner").parent().remove();
2634    }
2635  }
2636}
2637
2638
2639function repositionAdult() {
2640  if ($(".type-category").length || $(".type-detail").length) {
2641    var breadcrumbsText;
2642    if ($(".breadcrumbs #navigation-1 meta[itemprop='item']").length) {
2643      breadcrumbsText = $(
2644        ".breadcrumbs #navigation-1 meta[itemprop='item']"
2645      ).attr("content");
2646    }
2647
2648    if ($(".breadcrumbs #navigation-1 a[itemprop='item']").length) {
2649      breadcrumbsText = $(".breadcrumbs #navigation-1 a[itemprop='item']").attr(
2650        "href"
2651      );
2652      breadcrumbsText.replaceAll("/", "");
2653    }
2654
2655    for (let i = 0; i < adultPages.length; i++) {
2656      const url = adultPages[i].url;
2657      const text = adultPages[i].text;
2658
2659      if (breadcrumbsText.includes(url)) {
2660        showModalInfo(text);
2661      }
2662    }
2663  }
2664}
2665
2666function showModalInfo(text) {
2667  let storageDataAdult = localStorage.getItem("adult");
2668
2669  if (storageDataAdult === null) {
2670    componentCreateCategoryForm(text);
2671    componentModal();
2672    $("body").addClass("blur");
2673  } else {
2674    const item = JSON.parse(storageDataAdult);
2675    const now = new Date();
2676
2677    if (now.getTime() > item.expiry) {
2678      componentCreateCategoryForm(text);
2679      componentModal();
2680      $("body").addClass("blur");
2681    } else {
2682      // componentCreateCategoryForm(text);
2683      // componentModal();
2684      // $("body").addClass("blur");
2685    }
2686  }
2687}
2688
2689function componentCreateCategoryForm(text) {
2690  var modalCategoryTemplate = `
2691		<div class="modal__overlay js-modal-overlay"></div>
2692		<div class="modal js-modal" data-modal="modal-contact-form">
2693			<div class="modal__scroll">
2694				<div class="modal__box">
2695					<a href="/" class="modal__close close-trigger js-close-modal"></a>
2696					<div class="modal__body js-modal-body">
2697						<div class="txt-c">
2698							<div class="modal-title">${text}</div>
2699						</div>
2700						<div class="modal-btn">
2701							<a  class="btn btn-primary js-close-modal">Potvrzuji</a>
2702							<a href="/" class="btn btn-tertiary">Úvodní stránka</a>
2703						</div>
2704					</div>
2705				</div>
2706			</div>
2707		</div>
2708	`;
2709
2710  $("body").append(modalCategoryTemplate);
2711  $(".js-modal-overlay").addClass(classIsActive);
2712  $(".js-modal").addClass(classIsActive);
2713}
2714
2715function componentModal() {
2716  // open modal
2717  $(document).on("click", ".js-modal-trigger", function () {
2718    var inst = $(this);
2719    var modalId = inst.data("modal");
2720
2721    if ($(".js-modal.is-active").length) {
2722      $(".js-modal." + classIsActive + "").addClass("modal-hidden");
2723    } else {
2724      $(".js-modal." + classIsActive + "").removeClass(classIsActive);
2725      $(".js-modal-overlay").addClass(classIsActive);
2726    }
2727    $(".js-modal[data-modal=" + modalId + "]").addClass(classIsActive);
2728
2729    $("body").addClass("is-modal-open");
2730    return false;
2731  });
2732
2733  // close modal
2734  $(document).on("click", ".js-close-modal", function () {
2735    if ($(".modal-hidden").length) {
2736      $(".modal-hidden").removeClass("modal-hidden");
2737    } else {
2738      $(".js-modal-overlay").removeClass(classIsActive);
2739    }
2740    $(this)
2741      .closest(".js-modal." + classIsActive + "")
2742      .removeClass(classIsActive);
2743    $("body").removeClass("is-modal-open");
2744    $("body").removeClass("blur");
2745
2746    const now = new Date();
2747    const itemDataAdult = {
2748      expiry: now.getTime() + 86400000 * 2,
2749    };
2750
2751    localStorage.setItem("adult", JSON.stringify(itemDataAdult));
2752
2753    return false;
2754  });
2755}
2756
2757
2758var bannerInstagram;
2759function repositionInstagram() {
2760  if ($(".instagram-widget").length) {
2761    if ($(".in-index").length) {
2762      createInstagramBlock();
2763    } else {
2764      createInstagramBlock();
2765    }
2766  }
2767}
2768
2769function createInstagramBlock() {
2770  var instagramBlock = $(".instagram-widget");
2771  var instagramContainer = `
2772		<div class="content-wrapper instagram-block js-instagram-block">
2773		</div>
2774	`;
2775
2776  $(".instagram-widget").closest("div").parent().remove();
2777  $(instagramContainer).insertBefore("#footer");
2778  $(".js-instagram-block").append(instagramBlock);
2779
2780  $(".js-instagram-block .instagram-widget > a").wrap(
2781    '<div class="instagram-widget-item"></div>'
2782  );
2783
2784  $(".instagram-block").prepend(
2785    '<div class="h4 homepage-group-title">SLEDUJTE NÁS NA<span class="instagram-subheadline"><a href="https://www.facebook.com/chrusticek.sk" target="_blank">FB</a><span>/</span><a href="https://www.instagram.com/chrusticek.eu" target="_blank">IG</a></span></div>'
2786  );
2787}
2788
2789
2790function repositionFooter() {
2791  // $("#footer .contact-box .facebook a").text("");
2792  // $("#footer .contact-box .instagram a").text("");
2793
2794  $("#footer .contact-box .facebook")
2795    .find("a")
2796    .text("Facebook")
2797    .closest("li")
2798    .addClass("social-item");
2799  $("#footer .contact-box .instagram")
2800    .find("a")
2801    .text("Instagram")
2802    .closest("li")
2803    .addClass("social-item");
2804  $("#footer .contact-box .twitter")
2805    .find("a")
2806    .text("Twitter")
2807    .closest("li")
2808    .addClass("social-item");
2809  $("#footer .contact-box .youtube")
2810    .find("a")
2811    .text("Youtube")
2812    .closest("li")
2813    .addClass("social-item");
2814
2815  var signatureTemplate = `
2816		<span class="signature-author">
2817			Vytvořil
2818			<a class="signature-link" href="https://www.vojtechpetovsky.cz/blog/jak-jsem-implementoval-velkoobchodni-e-shop-s-kavou-na-shoptet-premium" target="_blank">Vojtěch Peťovský</a>
2819		</span>
2820		<a class="signature-logo" href="https://www.shoptetpremium.cz/?utm_source=footer&amp;utm_medium=link&amp;utm_campaign=create_by_shoptet"target="_blank"><img src="https://cdn.myshoptet.com/prj/eadb389a/master/cms/img/shoptetPremiumLogo.svg" width="17" height="17" alt="Shoptet Premium" class="vam"></a>
2821		<a class="signature-premium" href="https://www.shoptetpremium.cz/?utm_source=footer&amp;utm_medium=link&amp;utm_campaign=create_by_shoptet" target="_blank">Shoptet Premium</a>
2822	`;
2823
2824  $("#signature").html(signatureTemplate);
2825
2826  var footerAddress = `
2827		<li>
2828			<span class="address">
2829					<a href="https://goo.gl/maps/aidrLtUkUMVcPTHw8" target="_blank">
2830					 H-PARK Brno<br/>Heršpická 1035/11f
2831					</a>
2832			</span>
2833		</li>
2834
2835	`;
2836
2837  // $("#footer .contact-box .tel").append(
2838  //   "<small>po – čt: <strong>10 – 17</strong> hod.<br/>pá: <strong>10 – 16</strong> hod. </small>"
2839  // );
2840
2841  $(".custom-footer__contact h4").remove();
2842
2843  $(".custom-footer__contact ul").prepend($(footerAddress));
2844
2845  $(".social-list").append($(".social-item"));
2846
2847  var twitter = $(".social-list .twitter").closest("li");
2848  var instagram = $(".social-list .instagram").closest("li");
2849  $(twitter).insertAfter(instagram);
2850
2851  var mail = $(".custom-footer__contact .mail").closest("li");
2852  var tel = $(".custom-footer__contact .tel").closest("li");
2853  $(mail).insertAfter(tel);
2854
2855  var siteNameFooter = $(".footer-rows > .site-name").clone();
2856
2857  $(".custom-footer").prepend('<div class="custom-footer__site-name"></div>');
2858  $(".custom-footer__site-name").append(siteNameFooter);
2859
2860  if ($(".custom-footer__newsletter").length) {
2861    $("#footer .custom-footer__newsletter .form-control").attr(
2862      "placeholder",
2863      "Zadejte Váš e-mail"
2864    );
2865
2866    $("#footer .custom-footer__newsletter .btn").text("Přihlásit odběr");
2867    $("#footer .custom-footer__newsletter h4 span").text("Novinky z Kávovníku");
2868
2869    $(".custom-footer__newsletter").insertBefore("#footer");
2870
2871    $(".custom-footer__newsletter .newsletter-header").append(
2872      '<div class="newsletter-text">Vložením e-mailu souhlasíte s <a href="/ochrana-osobnich-udaju/" rel="noopener noreferrer">podmínkami ochrany osobních údajů</a></div>'
2873    );
2874
2875    $(".custom-footer__newsletter").wrapInner(
2876      '<div class="container"><div class="newsletter-content"></div></div>'
2877    );
2878  }
2879}
2880
2881
2882function repositionHeader() {
2883  $(".top-navigation-bar").remove();
2884  $("#header").remove();
2885  $(".menu-level-1 a").attr("target", "_blank");
2886}
2887
2888
2889function repositionHP() {
2890  repositionBenefits();
2891  if ($(".in-index").length) {
2892    // repositionTopBanners();
2893    repositionMiddleBanners();
2894
2895    repositionWelcome();
2896    createSliderFromProductImages();
2897  }
2898
2899  if ($(".product").length) {
2900    productRepo();
2901  }
2902
2903  // repositionTopBannerText();
2904}
2905
2906function repositionWelcome() {
2907  $(".homepage-box.welcome-wrapper h1").insertAfter(".welcome-subheadline");
2908  $(".homepage-box.welcome-wrapper").insertAfter(
2909    ".products-top.products-top--first"
2910  );
2911  $(".homepage-box.welcome-wrapper h1").text("Najdi svoji oblíbenou pražírnu");
2912}
2913
2914function repositionBenefits() {
2915  if ($(".benefitBanner").length) {
2916    $(".benefitBanner").prepend(
2917      '<div class="homepage-group-title h4">Proč si nás vybrat</div>'
2918    );
2919  }
2920}
2921
2922function repositionTopBannerText() {
2923  $(
2924    ".benefitBanner .benefitBanner__item:nth-child(1) .benefitBanner__title"
2925  ).html("SKLADOVKY EXPEDUJEME DO <strong>24H</strong>");
2926  $(
2927    ".benefitBanner .benefitBanner__item:nth-child(2) .benefitBanner__title"
2928  ).html("DOPRAVA ZDARMA OD <strong>130€</strong>");
2929  $(
2930    ".benefitBanner .benefitBanner__item:nth-child(3) .benefitBanner__title"
2931  ).html("GARANCIA <strong>KVALITNÉHO</strong> TOVARU");
2932  $(
2933    ".benefitBanner .benefitBanner__item:nth-child(4) .benefitBanner__title"
2934  ).html("PORADENSKÝ SERVIS SME VÁM K <strong>DISPOZICIÍ</strong>");
2935}
2936
2937function repositionTopBanners() {
2938  var bannerLeftPanel = $(
2939    ".next-to-carousel-banners .banner-wrapper:not(:last-child)"
2940  );
2941  var bannerRightPanel = $(
2942    ".next-to-carousel-banners .banner-wrapper:last-child"
2943  );
2944  bannerLeftPanel.wrapAll('<div class="banner-left-panel"></div>');
2945  bannerRightPanel.wrapAll('<div class="banner-right-panel"></div>');
2946}
2947
2948function repositionMiddleBanners() {
2949  var productsGroupFirst = $(".homepage-products-heading-1, #products-1");
2950  var productsGroupSecond = $(".homepage-products-heading-2, #products-2");
2951  productsGroupFirst.wrapAll(
2952    '<div class="products-top-group products-top-group--first"></div>'
2953  );
2954  productsGroupSecond.wrapAll(
2955    '<div class="products-top-group products-top-group--second"></div>'
2956  );
2957
2958  $(".products-top-group--first").wrap(
2959    '<div class="products-top products-top--first"></div>'
2960  );
2961  $(".products-top-group--second").wrap(
2962    '<div class="products-top products-top--second"></div>'
2963  );
2964
2965  if ($(".body-banners").length) {
2966    $(".products-top--first").prepend(
2967      $(".body-banners > div:first-child .banner-wrapper")
2968    );
2969    $(".products-top--second").prepend(
2970      $(".body-banners > div:last-child .banner-wrapper")
2971    );
2972  }
2973
2974  $(".products-top").each(function () {
2975    var inst = $(this);
2976    inst.prepend(inst.find(".homepage-group-title"));
2977    inst.append(
2978      '<div class="product-btn-block"><a href="" class="btn btn-secondary">Prohlédnout si více</a></div>'
2979    );
2980  });
2981
2982  $(".products-top.products-top--first .btn-secondary").attr("href", "/kava/");
2983  $(".products-top.products-top--second .btn-secondary").attr(
2984    "href",
2985    "/udrzba-kavovaru/"
2986  );
2987}
2988
2989function productRepo() {
2990  $(".products-block .product").each(function (i) {
2991    var inst = $(this);
2992    inst
2993      .find(".availability")
2994      .insertAfter(inst.find(".p-bottom > div .prices"));
2995
2996    inst.find(".p-in-in").append(inst.find(".p-desc"));
2997
2998    if (inst.find(".price-final strong span").length == 0) {
2999      inst.find(".price-final strong").append("<span>s DPH</span>");
3000    }
3001
3002    inst.find(".add-to-cart-button span").text("Přidat do košíku");
3003
3004    if (inst.find(".flag.flag-freeshipping").length) {
3005      inst.find(".flags.flags-extra .flag.flag-freeshipping").remove();
3006      if (
3007        inst.find(".flags.flags-default .flag.flag-freeshipping").length == 0
3008      ) {
3009        inst
3010          .find(".flags.flags-default")
3011          .prepend(
3012            '<span class="flag flag-freeshipping" style="background-color:#cccccc;">Doprava zdarma</span>'
3013          );
3014      }
3015    }
3016
3017    if (inst.find(".flag-discount").length) {
3018      if (inst.find(".flags-default").length) {
3019        inst.find(".flags-default").append(inst.find(".flag-discount"));
3020      } else {
3021        inst.find(".image").prepend('<div class="flags flags-default"></div>');
3022        inst.find(".flags-default").append(inst.find(".flag-discount"));
3023      }
3024      var discountPrice = inst.find(".flag-discount .price-standard span");
3025      inst.find(".prices .price-final").append(discountPrice);
3026
3027      if (inst.find(".flag-action").length) {
3028        inst.find(".flag-action").remove();
3029      }
3030
3031      if (inst.find(".flag-discount .price-save span").length == 0) {
3032        inst.find(".flag-discount .price-save").prepend("<span>Akce </span>");
3033      }
3034    }
3035
3036    if (inst.find(".flag-kapsle").length) {
3037      inst.find(".flag-kapsle").text("");
3038      if (inst.find(".flags-extra").length) {
3039        inst.find(".flags-extra").prepend(inst.find(".flag-kapsle"));
3040      } else {
3041        inst.find(".image").prepend('<div class="flags flags-extra"></div>');
3042        inst.find(".flags-extra").prepend(inst.find(".flag-kapsle"));
3043      }
3044    }
3045
3046    if (inst.find(".flag-bez-kofeinu").length) {
3047      inst.find(".flag-bez-kofeinu").text("");
3048      if (inst.find(".flags-extra").length) {
3049        inst.find(".flags-extra").prepend(inst.find(".flag-bez-kofeinu"));
3050      } else {
3051        inst.find(".image").prepend('<div class="flags flags-extra"></div>');
3052        inst.find(".flags-extra").prepend(inst.find(".flag-bez-kofeinu"));
3053      }
3054    }
3055
3056    if (inst.find(".flag-mleta").length) {
3057      inst.find(".flag-mleta").text("");
3058      if (inst.find(".flags-extra").length) {
3059        inst.find(".flags-extra").prepend(inst.find(".flag-mleta"));
3060      } else {
3061        inst.find(".image").prepend('<div class="flags flags-extra"></div>');
3062        inst.find(".flags-extra").prepend(inst.find(".flag-mleta"));
3063      }
3064    }
3065
3066    if (inst.find(".flag-zrnkova").length) {
3067      inst.find(".flag-zrnkova").text("");
3068      if (inst.find(".flags-extra").length) {
3069        inst.find(".flags-extra").prepend(inst.find(".flag-zrnkova"));
3070      } else {
3071        inst.find(".image").prepend('<div class="flags flags-extra"></div>');
3072        inst.find(".flags-extra").prepend(inst.find(".flag-zrnkova"));
3073      }
3074    }
3075  });
3076}
3077
3078function createSliderFromProductImages() {
3079  $(".products-top-group .products-block").each(function () {
3080    var productsItems = $(this);
3081
3082    var productsSlide = productsItems.find(".product");
3083
3084    productsSlide.wrap('<div class="swiper-slide"></div>');
3085
3086    productsItems.wrapInner(
3087      '<div class="swiper-container js-slider-products"></div>'
3088    );
3089
3090    productsItems
3091      .find(".swiper-container")
3092      .wrapInner('<div class="swiper-wrapper"></div>');
3093
3094    productsItems.wrapInner(
3095      '<div class="js-slider-group slider-group-products"></div>'
3096    );
3097
3098    var paginationTemplate =
3099      '<div class="swiper-pagination js-swiper-pagination"></div>';
3100
3101    productsItems.find(".slider-group-products").append(paginationTemplate);
3102
3103    var arrowTemplate =
3104      '<div class="swiper-arrow swiper-arrow-next js-swiper-arrow-next">' +
3105      '<div class="swiper-arrow-content">' +
3106      "<span></span>" +
3107      "</div>" +
3108      "</div>" +
3109      '<div class="swiper-arrow swiper-arrow-prev js-swiper-arrow-prev">' +
3110      '<div class="swiper-arrow-content">' +
3111      "<span></span>" +
3112      "</div>" +
3113      "</div>";
3114    productsItems.find(".slider-group-products").append(arrowTemplate);
3115
3116    productsImagesSlider();
3117  });
3118}
3119
3120function productsImagesSlider() {
3121  if ($(".js-slider-products").length) {
3122    $(".js-slider-products").each(function () {
3123      var inst = $(this),
3124        swiperBlock = inst.closest(".js-slider-group"),
3125        // swiperPagination = swiperBlock.find(".js-swiper-pagination"),
3126        swiperArrowPrev = swiperBlock.find(".js-swiper-arrow-prev"),
3127        swiperArrowNext = swiperBlock.find(".js-swiper-arrow-next");
3128
3129      var productsBreakpoints = {
3130        200: {
3131          slidesPerView: 1,
3132        },
3133        480: {
3134          slidesPerView: 2,
3135          // slidesPerGroup: 1,
3136        },
3137        771: {
3138          slidesPerView: 2,
3139          // slidesPerGroup: 1,
3140        },
3141        992: {
3142          slidesPerView: 3,
3143          // slidesPerGroup: 1,
3144        },
3145        1200: {
3146          slidesPerView: 4,
3147          // slidesPerGroup: 1,
3148        },
3149        1440: {
3150          slidesPerView: 4,
3151          // slidesPerGroup: 1,
3152        },
3153      };
3154
3155      var mySwiper = new Swiper(inst, {
3156        spaceBetween: 0,
3157        lazy: true,
3158        loop: true,
3159        speed: 600,
3160        // pagination: {
3161        //   el: swiperPagination,
3162        //   clickable: true,
3163        // },
3164        navigation: {
3165          nextEl: swiperArrowNext,
3166          prevEl: swiperArrowPrev,
3167        },
3168        breakpoints: productsBreakpoints,
3169      });
3170    });
3171  }
3172}
3173
3174
3175function repositionReview() {
3176  var templateReview = `
3177		<div class="content-wrapper ratings-block js-ratings-block">
3178			<div class="container">
3179				<div class="h4 homepage-group-title"> Reviews </div>
3180				<div class="rating-block">
3181						<div class="votes-wrap simple-vote">
3182							<div class="vote-wrap">
3183									<div class="vote-header">
3184										<span class="vote-pic">
3185										<span class="vote-initials" style="background-color: #000000;">
3186										F
3187										</span>
3188										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/d26dfbf184b8a49f39e3de16e6a3cb61?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3189										</span>
3190										<span class="vote-summary">
3191										<span class="vote-name vote-name--nowrap" data-testid="author">
3192										<span>FB</span>
3193										</span>
3194										<span class="vote-rating">
3195										<span class="stars" data-testid="authorStars">
3196										<span class="star star-on"></span>
3197										<span class="star star-on"></span>
3198										<span class="star star-on"></span>
3199										<span class="star star-on"></span>
3200										<span class="star star-on"></span>
3201										</span>
3202										<span class="vote-delimeter">|</span>
3203										<span class="vote-time" data-testid="latestContributionDate">
3204										10/06/2023
3205										</span>
3206										</span>
3207										</span>
3208									</div>
3209									<div class="vote-content" data-testid="authorText">
3210										They gave info on when the product I wanted would be in stock and delivered fast. Good one!
3211									</div>
3212							</div>
3213							<div class="vote-wrap">
3214									<div class="vote-header">
3215										<span class="vote-pic">
3216										<span class="vote-initials" style="background-color: #000000;">
3217										KD
3218										</span>
3219										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/994dd96e9b0d8a6078638bdd50be4893?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3220										</span>
3221										<span class="vote-summary">
3222										<span class="vote-name vote-name--nowrap" data-testid="author">
3223										<span>Karolina Duszkiewicz</span>
3224										</span>
3225										<span class="vote-rating">
3226										<span class="stars" data-testid="authorStars">
3227										<span class="star star-on"></span>
3228										<span class="star star-on"></span>
3229										<span class="star star-on"></span>
3230										<span class="star star-on"></span>
3231										<span class="star star-on"></span>
3232										</span>
3233										<span class="vote-delimeter">|</span>
3234										<span class="vote-time" data-testid="latestContributionDate">
3235										10/06/2023
3236										</span>
3237										</span>
3238										</span>
3239									</div>
3240									<div class="vote-content" data-testid="authorText">
3241										Great products and quick shipping 👌🏻
3242									</div>
3243							</div>
3244							<div class="vote-wrap">
3245									<div class="vote-header">
3246										<span class="vote-pic">
3247										<span class="vote-initials" style="background-color: #0B3C5D;">
3248										S
3249										</span>
3250										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/29844d4121bd6e6a0cde03f557179913?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3251										</span>
3252										<span class="vote-summary">
3253										<span class="vote-name vote-name--nowrap" data-testid="author">
3254										<span>Sarunas Z</span>
3255										</span>
3256										<span class="vote-rating">
3257										<span class="stars" data-testid="authorStars">
3258										<span class="star star-on"></span>
3259										<span class="star star-on"></span>
3260										<span class="star star-on"></span>
3261										<span class="star star-on"></span>
3262										<span class="star star-on"></span>
3263										</span>
3264										<span class="vote-delimeter">|</span>
3265										<span class="vote-time" data-testid="latestContributionDate">
3266										09/06/2023
3267										</span>
3268										</span>
3269										</span>
3270									</div>
3271									<div class="vote-content" data-testid="authorText">
3272										Shop at it's best as usually.
3273									</div>
3274							</div>
3275							<div class="vote-wrap">
3276									<div class="vote-header">
3277										<span class="vote-pic">
3278										<span class="vote-initials" style="background-color: #0B3C5D;">
3279										JL
3280										</span>
3281										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/1166029a79a337c7b73f9001e48d03b0?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3282										</span>
3283										<span class="vote-summary">
3284										<span class="vote-name vote-name--nowrap" data-testid="author">
3285										<span>Jensen Lekeux</span>
3286										</span>
3287										<span class="vote-rating">
3288										<span class="stars" data-testid="authorStars">
3289										<span class="star star-on"></span>
3290										<span class="star star-on"></span>
3291										<span class="star star-on"></span>
3292										<span class="star star-on"></span>
3293										<span class="star star-on"></span>
3294										</span>
3295										<span class="vote-delimeter">|</span>
3296										<span class="vote-time" data-testid="latestContributionDate">
3297										09/06/2023
3298										</span>
3299										</span>
3300										</span>
3301									</div>
3302									<div class="vote-content" data-testid="authorText">
3303										Verry satisfied in a few days delivery to Belgium and the hhc-p is nice.
3304									</div>
3305							</div>
3306							<div class="vote-wrap">
3307									<div class="vote-header">
3308										<span class="vote-pic">
3309										<span class="vote-initials" style="background-color: #0B3C5D;">
3310										J
3311										</span>
3312										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/28bc26ad6768d1743342b64f31040f2b?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3313										</span>
3314										<span class="vote-summary">
3315										<span class="vote-name vote-name--nowrap" data-testid="author">
3316										<span>JJ</span>
3317										</span>
3318										<span class="vote-rating">
3319										<span class="stars" data-testid="authorStars">
3320										<span class="star star-on"></span>
3321										<span class="star star-on"></span>
3322										<span class="star star-on"></span>
3323										<span class="star star-on"></span>
3324										<span class="star star-on"></span>
3325										</span>
3326										<span class="vote-delimeter">|</span>
3327										<span class="vote-time" data-testid="latestContributionDate">
3328										09/06/2023
3329										</span>
3330										</span>
3331										</span>
3332									</div>
3333									<div class="vote-content" data-testid="authorText">
3334										Great shop, high quality products, pretty fast delivery (5 days) and good customer service (no problem with speaking english). 10/10
3335									</div>
3336							</div>
3337							<div class="vote-wrap">
3338									<div class="vote-header">
3339										<span class="vote-pic">
3340										<span class="vote-initials" style="background-color: #3F3250;">
3341										E
3342										</span>
3343										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/87dfa2db96cb77333e4b79e459569e95?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3344										</span>
3345										<span class="vote-summary">
3346										<span class="vote-name vote-name--nowrap" data-testid="author">
3347										<span>Equality_First</span>
3348										</span>
3349										<span class="vote-rating">
3350										<span class="stars" data-testid="authorStars">
3351										<span class="star star-on"></span>
3352										<span class="star star-on"></span>
3353										<span class="star star-on"></span>
3354										<span class="star star-on"></span>
3355										<span class="star star-on"></span>
3356										</span>
3357										<span class="vote-delimeter">|</span>
3358										<span class="vote-time" data-testid="latestContributionDate">
3359										06/06/2023
3360										</span>
3361										</span>
3362										</span>
3363									</div>
3364									<div class="vote-content" data-testid="authorText">
3365										Great products and quick shipping to Sweden. The HHC-P vapes are truly revolutionizing! Straight up sativa goodness with no heaviness to mind or body.
3366										These are also the most potent vapes i have tried. As long as hhc get to stay legal in my country i will never buy from elsewhere again!
3367									</div>
3368							</div>
3369							<div class="vote-wrap">
3370									<div class="vote-header">
3371										<span class="vote-pic">
3372										<span class="vote-initials" style="background-color: #0B3C5D;">
3373										LM
3374										</span>
3375										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/842a07b2bc089166df2f263778662605?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3376										</span>
3377										<span class="vote-summary">
3378										<span class="vote-name vote-name--nowrap" data-testid="author">
3379										<span>Loren metikos</span>
3380										</span>
3381										<span class="vote-rating">
3382										<span class="stars" data-testid="authorStars">
3383										<span class="star star-on"></span>
3384										<span class="star star-on"></span>
3385										<span class="star star-on"></span>
3386										<span class="star star-on"></span>
3387										<span class="star star-on"></span>
3388										</span>
3389										<span class="vote-delimeter">|</span>
3390										<span class="vote-time" data-testid="latestContributionDate">
3391										05/06/2023
3392										</span>
3393										</span>
3394										</span>
3395									</div>
3396									<div class="vote-content" data-testid="authorText">
3397										Excellent canapuff flowers,Professional team and fast delivery.
3398									</div>
3399							</div>
3400							<div class="vote-wrap">
3401									<div class="vote-header">
3402										<span class="vote-pic">
3403										<span class="vote-initials" style="background-color: #FF6666;">
3404										BJ
3405										</span>
3406										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/8a22f938570348ba35dcaee0f34e9651?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3407										</span>
3408										<span class="vote-summary">
3409										<span class="vote-name vote-name--nowrap" data-testid="author">
3410										<span>Bart janik</span>
3411										</span>
3412										<span class="vote-rating">
3413										<span class="stars" data-testid="authorStars">
3414										<span class="star star-on"></span>
3415										<span class="star star-on"></span>
3416										<span class="star star-on"></span>
3417										<span class="star star-on"></span>
3418										<span class="star star-on"></span>
3419										</span>
3420										<span class="vote-delimeter">|</span>
3421										<span class="vote-time" data-testid="latestContributionDate">
3422										02/06/2023
3423										</span>
3424										</span>
3425										</span>
3426									</div>
3427									<div class="vote-content" data-testid="authorText">
3428										Excellent selection of products, i have ordered several times and have been very satisfied. Very good support team and shipping is quick. Top quality store and product. Delivered to ireland with no problems, go for it. 😉👍
3429									</div>
3430							</div>
3431							<div class="vote-wrap">
3432									<div class="vote-header">
3433										<span class="vote-pic">
3434										<span class="vote-initials" style="background-color: #4FB7B9;">
3435										O
3436										</span>
3437										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/3e0f907b87b8ecb90c9e5da95282ca98?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3438										</span>
3439										<span class="vote-summary">
3440										<span class="vote-name vote-name--nowrap" data-testid="author">
3441										<span>Olena</span>
3442										</span>
3443										<span class="vote-rating">
3444										<span class="stars" data-testid="authorStars">
3445										<span class="star star-on"></span>
3446										<span class="star star-on"></span>
3447										<span class="star star-on"></span>
3448										<span class="star star-on"></span>
3449										<span class="star star-on"></span>
3450										</span>
3451										<span class="vote-delimeter">|</span>
3452										<span class="vote-time" data-testid="latestContributionDate">
3453										01/06/2023
3454										</span>
3455										</span>
3456										</span>
3457									</div>
3458									<div class="vote-content" data-testid="authorText">
3459										Ha comprato il mio fratello un paio di prodotti e sono di ottima qualità. Ha raccontato anche a me,sono in attesa del ordine 😍
3460									</div>
3461							</div>
3462							<div class="vote-wrap">
3463									<div class="vote-header">
3464										<span class="vote-pic">
3465										<span class="vote-initials" style="background-color: #000000;">
3466										FB
3467										</span>
3468										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/69393f0b327076d7c48c5352768478c2?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3469										</span>
3470										<span class="vote-summary">
3471										<span class="vote-name vote-name--nowrap" data-testid="author">
3472										<span>Francesco Bottardi</span>
3473										</span>
3474										<span class="vote-rating">
3475										<span class="stars" data-testid="authorStars">
3476										<span class="star star-on"></span>
3477										<span class="star star-on"></span>
3478										<span class="star star-on"></span>
3479										<span class="star star-on"></span>
3480										<span class="star star-on"></span>
3481										</span>
3482										<span class="vote-delimeter">|</span>
3483										<span class="vote-time" data-testid="latestContributionDate">
3484										01/06/2023
3485										</span>
3486										</span>
3487										</span>
3488									</div>
3489									<div class="vote-content" data-testid="authorText">
3490										Analogy é stupefacente!
3491										Aromi fedeli all'originale
3492										Piacevole durante e dopo l'uso
3493									</div>
3494							</div>
3495							<div class="vote-wrap">
3496									<div class="vote-header">
3497										<span class="vote-pic">
3498										<span class="vote-initials" style="background-color: #000000;">
3499										M
3500										</span>
3501										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/73b2a11d79cedfbeff4dffd30ceb5ff0?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3502										</span>
3503										<span class="vote-summary">
3504										<span class="vote-name vote-name--nowrap" data-testid="author">
3505										<span>
3505Moe</span>
3506										</span>
3507										<span class="vote-rating">
3508										<span class="stars" data-testid="authorStars">
3509										<span class="star star-on"></span>
3510										<span class="star star-on"></span>
3511										<span class="star star-on"></span>
3512										<span class="star star-on"></span>
3513										<span class="star star-on"></span>
3514										</span>
3515										<span class="vote-delimeter">|</span>
3516										<span class="vote-time" data-testid="latestContributionDate">
3517										27/05/2023
3518										</span>
3519										</span>
3520										</span>
3521									</div>
3522									<div class="vote-content" data-testid="authorText">
3523										Really good stuff, came to sweden with out problems, very potent
3524									</div>
3525							</div>
3526							<div class="vote-wrap">
3527									<div class="vote-header">
3528										<span class="vote-pic">
3529										<span class="vote-initials" style="background-color: #000000;">
3530										KD
3531										</span>
3532										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/994dd96e9b0d8a6078638bdd50be4893?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3533										</span>
3534										<span class="vote-summary">
3535										<span class="vote-name vote-name--nowrap" data-testid="author">
3536										<span>Karolina Duszkiewicz</span>
3537										</span>
3538										<span class="vote-rating">
3539										<span class="stars" data-testid="authorStars">
3540										<span class="star star-on"></span>
3541										<span class="star star-on"></span>
3542										<span class="star star-on"></span>
3543										<span class="star star-on"></span>
3544										<span class="star star-on"></span>
3545										</span>
3546										<span class="vote-delimeter">|</span>
3547										<span class="vote-time" data-testid="latestContributionDate">
3548										27/05/2023
3549										</span>
3550										</span>
3551										</span>
3552									</div>
3553									<div class="vote-content" data-testid="authorText">
3554										The best products ❤️
3555									</div>
3556							</div>
3557							<div class="vote-wrap">
3558									<div class="vote-header">
3559										<span class="vote-pic">
3560										<span class="vote-initials" style="background-color: #0B3C5D;">
3561										A
3562										</span>
3563										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/fdd0e1b4dbea6570a02aee7036de2f4d?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3564										</span>
3565										<span class="vote-summary">
3566										<span class="vote-name vote-name--nowrap" data-testid="author">
3567										<span>Alex</span>
3568										</span>
3569										<span class="vote-rating">
3570										<span class="stars" data-testid="authorStars">
3571										<span class="star star-on"></span>
3572										<span class="star star-on"></span>
3573										<span class="star star-on"></span>
3574										<span class="star star-on"></span>
3575										<span class="star star-on"></span>
3576										</span>
3577										<span class="vote-delimeter">|</span>
3578										<span class="vote-time" data-testid="latestContributionDate">
3579										26/05/2023
3580										</span>
3581										</span>
3582										</span>
3583									</div>
3584									<div class="vote-content" data-testid="authorText">
3585										Seems very good :) waiting for order now
3586									</div>
3587							</div>
3588							<div class="vote-wrap">
3589									<div class="vote-header">
3590										<span class="vote-pic">
3591										<span class="vote-initials" style="background-color: #4FB7B9;">
3592										OD
3593										</span>
3594										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/652cd5d3f66c0d63416ace95b137b918?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3595										</span>
3596										<span class="vote-summary">
3597										<span class="vote-name vote-name--nowrap" data-testid="author">
3598										<span>Oran Devers</span>
3599										</span>
3600										<span class="vote-rating">
3601										<span class="stars" data-testid="authorStars">
3602										<span class="star star-on"></span>
3603										<span class="star star-on"></span>
3604										<span class="star star-on"></span>
3605										<span class="star star-on"></span>
3606										<span class="star star-on"></span>
3607										</span>
3608										<span class="vote-delimeter">|</span>
3609										<span class="vote-time" data-testid="latestContributionDate">
3610										25/05/2023
3611										</span>
3612										</span>
3613										</span>
3614									</div>
3615									<div class="vote-content" data-testid="authorText">
3616										Excellent selection of products, i have ordered several times and have been very satisfied. Very good support team and shipping is quick. Top quality store and product 👍
3617									</div>
3618							</div>
3619							<div class="vote-wrap">
3620									<div class="vote-header">
3621										<span class="vote-pic">
3622										<span class="vote-initials" style="background-color: #FF6666;">
3623										DR
3624										</span>
3625										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/255d98c660a0870e382b789235c84f12?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3626										</span>
3627										<span class="vote-summary">
3628										<span class="vote-name vote-name--nowrap" data-testid="author">
3629										<span>Dawid Referda</span>
3630										</span>
3631										<span class="vote-rating">
3632										<span class="stars" data-testid="authorStars">
3633										<span class="star star-on"></span>
3634										<span class="star star-on"></span>
3635										<span class="star star-on"></span>
3636										<span class="star star-on"></span>
3637										<span class="star star-on"></span>
3638										</span>
3639										<span class="vote-delimeter">|</span>
3640										<span class="vote-time" data-testid="latestContributionDate">
3641										25/05/2023
3642										</span>
3643										</span>
3644										</span>
3645									</div>
3646									<div class="vote-content" data-testid="authorText">
3647										The best shop in the world!! ❤️
3648									</div>
3649							</div>
3650							<div class="vote-wrap">
3651									<div class="vote-header">
3652										<span class="vote-pic">
3653										<span class="vote-initials" style="background-color: #3F3250;">
3654										N
3655										</span>
3656										<img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="//www.gravatar.com/avatar/55a45dd46acf16b69a779a2e41f27a0a?s=60&amp;d=blank&amp;r=g" class="" width="60" height="60" alt="Avatar of author">
3657										</span>
3658										<span class="vote-summary">
3659										<span class="vote-name vote-name--nowrap" data-testid="author">
3660										<span>NikB</span>
3661										</span>
3662										<span class="vote-rating">
3663										<span class="stars" data-testid="authorStars">
3664										<span class="star star-on"></span>
3665										<span class="star star-on"></span>
3666										<span class="star star-on"></span>
3667										<span class="star star-on"></span>
3668										<span class="star star-on"></span>
3669										</span>
3670										<span class="vote-delimeter">|</span>
3671										<span class="vote-time" data-testid="latestContributionDate">
3672										25/05/2023
3673										</span>
3674										</span>
3675										</span>
3676									</div>
3677									<div class="vote-content" data-testid="authorText">
3678										Fantastic products and after sales assistance. Very kind people. I recommend this 
3678shop. Thank you very much!
3679									</div>
3680							</div>
3681						</div>
3682						<div id="ratingWrapper" class="rate-wrapper unveil-wrapper">
3683							<div class="rate-wrap row">
3684									<div class="rate-average-wrap col-xs-12 col-sm-6">
3685										<div class="rate-average-inner">
3686												<span class="rate-average">
3687												5,0
3688												</span>
3689												<span class="rate-star-wrap">
3690												<span class="stars">
3691												<a class="star star-on"></a>
3692												<a class="star star-on"></a>
3693												<a class="star star-on"></a>
3694												<a class="star star-on"></a>
3695												<a class="star star-on"></a>
3696												</span>
3697												<span class="stars-label">
3698												447 ratings
3699												</span>
3700												</span>
3701										</div>
3702										<a href="/store-rating" class="add-comment">
3703										<span class="link-like rating-icon">Add rating</span>
3704										</a>
3705									</div>
3706									<div class="col-xs-12 col-sm-6">
3707										<div class="rate-list" data-score="5">
3708												<div class="rate-star stars">
3709													<span class="rate-value">
3710													5
3711													</span>
3712													<span class="star star-off"></span>
3713												</div>
3714												<div class="rate-block">
3715													<span class="rate-bar" style="width: 98%;">
3716													<span class="rate-count active">437x</span>
3717													</span>
3718												</div>
3719										</div>
3720										<div class="rate-list" data-score="4">
3721												<div class="rate-star stars">
3722													<span class="rate-value">
3723													4
3724													</span>
3725													<span class="star star-off"></span>
3726												</div>
3727												<div class="rate-block">
3728													<span class="rate-bar" style="width: 2%;">
3729													<span class="rate-count active">8x</span>
3730													</span>
3731												</div>
3732										</div>
3733										<div class="rate-list" data-score="3">
3734												<div class="rate-star stars">
3735													<span class="rate-value">
3736													3
3737													</span>
3738													<span class="star star-off"></span>
3739												</div>
3740												<div class="rate-block">
3741													<span class="rate-bar" style="width: 0%;">
3742													<span class="rate-count">1x</span>
3743													</span>
3744												</div>
3745										</div>
3746										<div class="rate-list" data-score="2">
3747												<div class="rate-star stars">
3748													<span class="rate-value">
3749													2
3750													</span>
3751													<span class="star star-off"></span>
3752												</div>
3753												<div class="rate-block">
3754													<span class="rate-bar" style="width: 0%;">
3755													<span class="rate-count">0x</span>
3756													</span>
3757												</div>
3758										</div>
3759										<div class="rate-list" data-score="1">
3760												<div class="rate-star stars">
3761													<span class="rate-value">
3762													1
3763													</span>
3764													<span class="star star-off"></span>
3765												</div>
3766												<div class="rate-block">
3767													<span class="rate-bar" style="width: 0%;">
3768													<span class="rate-count">1x</span>
3769													</span>
3770												</div>
3771										</div>
3772									</div>
3773							</div>
3774						</div>
3775				</div>
3776			</div>
3777		</div>
3778	`;
3779
3780  $(templateReview).insertBefore(".container--bannersBenefit");
3781
3782  $(".js-ratings-block .homepage-group-title").wrapInner("<span></span>");
3783  $(".rate-average-inner .rate-star-wrap").append($(".add-comment"));
3784  $(".add-comment span").text("Add review");
3785  $(".vote-wrap").each(function () {
3786    $(this).append($(this).find(".vote-rating"));
3787  });
3788  $(".rate-list").each(function () {
3789    $(this).find(".rate-block").append($(this).find(".rate-count"));
3790  });
3791}
3792
3793
3794function repositionStore() {
3795  if ($(".store-block").length) {
3796    var storeBlock = $(".store-block");
3797    $(storeBlock).insertBefore("#footer");
3798
3799    $(".custom-footer__banner16").remove();
3800  }
3801}

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.