PageSourceSearch

https://www.vulkani.rs/nb-public/themes/nbshop7_v1_1/_static/js/nb…&ver=1044_6.2&ver=1044_6.2

js vulkani.rs collected 2026-09-25 00:38:50 UTC 104,493 bytes, 2,985 lines download raw bytes

1
2/*
3/* NB Fajl:'./components/complex/search/search-1/search-1.js.'
4*/var modelNBUI_SearchCore = new NBUI_SearchCore();
5
6$(document).ready(function (){
7
8    let $searchElement              = $('.nbf-search-input');
9    let $placeholderLargeDevice     = $('.nbf-search-button');
10    let $placeholderSmallDevice     = $('.nbf-append-search-mobile');
11
12    modelNBUI_SearchCore.appendSearchInputUnderBreakpoint($searchElement, $placeholderLargeDevice, $placeholderSmallDevice);
13})
14/*
15/* NB Fajl:'./components/complex/search/search-icon/search-icon.js.'
16*/function NBUI_Search(){};
17var modelNBUI_Search                        = new NBUI_Search();
18
19NBUI_Search.prototype.openSearch = function () {
20
21    $('body').addClass('open-search');
22    $('body').removeClass('wsactive');
23
24    setTimeout(function (){
25        $('#search-text').focus();
26    },100)
27}
28
29NBUI_Search.prototype.closeSearch           = function () {
30    $('body').removeClass('open-search');
31    $('#search-text').val('');
32}
33
34NBUI_Search.prototype.loadSearchResult      = function (query) {
35
36    var modelNBSearch   = new NBSearch();
37
38    $('.nbf-loader-search').removeClass('hidden');
39
40    setTimeout(function (){
41        //get params
42        let blockElement = $('#searchHolder').find(".block").find(".block");
43        if(blockElement.length === 0){
44            blockElement = $('#searchHolder').find(".block");
45        }
46
47        let pageId          = $(blockElement).attr('data-site-page-id');
48        let layoutId        = $(blockElement).attr('data-layout-id');
49        let blockId         = $(blockElement).attr('data-parent-block-id');
50        let position        = $(blockElement).attr('data-block-position');
51        let publicKey       = ""; //$(blockElement).attr('data-block-public-key'); //kn: Zakomentarisano jer je [4] stavka sitePageBlockId
52
53        let block   = pageId+":"+layoutId+":"+blockId+":"+position+":"+publicKey;
54
55        var params = {
56            block: block,
57            query: query,
58            allLib: -1,
59        }
60
61        //2. pozivanje funkcije iz modela
62        var result = modelNBSearch.load(params);
63
64        //3. Vrati html
65        if(result.flag && result.ret.flag && result.ret.info != ""){
66            $(blockElement).replaceWith(result.ret.info);
67        }
68
69        let eventId = generateEventId();
70
71        nb_custom_event_trigger('loadSearchProductsEvent', result.ret);
72        nb_custom_event_trigger('loadSearchProductsEventGA4', { event_id: eventId});
73
74        $('.nbf-loader-search').addClass('hidden');
75    },100)
76
77
78
79}
80
81NBUI_Search.prototype.deleteRecentSearch    = function(element){
82
83    let value           = element.data('recent-search-value');
84
85    let modelNBSearch   = new NBSearch();
86
87    //1. sakupljanje parametara sa elementa
88    var params = {
89        value: value,
90    };
91
92    //2. pozivanje funkcije iz modela
93    var result          = modelNBSearch.delete(params);
94
95    if(result.ret.flag === true){
96        //3. UI komponenta
97        // nb7_info(result.ret.info);       //ne bih pisala info da je uspesno obrisano, videce da jeste
98        element.closest('.nb-item').hide(); //da sakrijemo vrednost kako ne bismo morali da forisramo reload
99    }else if(result.ret.flag === false){
100        nb7_infoError(result.ret.info);
101    } else{
102        nb7_infoError(result.info);
103    }
104
105}
106
107NBUI_Search.prototype.deleteAllRecentSearch = function(){
108    
109    let modelNBSearch   = new NBSearch();
110
111    //1. sakupljanje parametara sa elementa
112    //nemamo params
113    
114    //2. pozivanje funkcije iz modela
115    var result          = modelNBSearch.deleteall();
116
117    if(result.ret.flag === true){
118        //3. UI komponenta
119        // nb7_info(result.ret.info);       //ne bih pisala info da je uspesno obrisano, videce da jeste
120    }else if(result.ret.flag === false){
121        nb7_infoError(result.ret.info);
122    } else{
123        nb7_infoError(result.info);
124    }
125}
126
127NBUI_Search.prototype.removeSpecialChars    = function (search) {
128    return search.replace(/´|“|ᵒ|°|\|\||„|”|®|™|’’|’|`|®|>|<|$|^|\\|"|'/g,'');
129}
130
131NBUI_Search.prototype.getQuery              = function (searchInput) {
132    let query = searchInput.val();
133    query = modelNBUI_Search.removeSpecialChars(query);
134    return query;
135}
136
137// NBUI_Search.prototype.nb_timeWait = function (f, delay){
138//
139//     var timer = null;
140//     return function(){
141//         var context = this, args = arguments;
142//         clearTimeout(timer);
143//         timer = window.setTimeout(function(){
144//                 f.apply(context, args);
145//             },
146//             delay || 800);
147//     };
148// }
149
150NBUI_Search.prototype.nb_timeWait           = function(f, delay){
151    var timer = null;
152    return function(){
153        var context = this, args = arguments;
154        clearTimeout(timer);
155        timer = window.setTimeout(function(){
156                f.apply(context, args);
157            },
158            delay || 800);
159    };
160}
161
162$(document).ready(() => {
163
164    let $searchBtn   = $('.nbf-search-button');
165    let $searchClose = $('.nbf-search-close');
166    let $searchInput = $('#search-text');
167
168    $searchBtn.on('click', function (e) {
169
170        if($(e.target).closest('.nbf-search-close').length){
171            return;
172        }
173
174        e.preventDefault();
175        e.stopPropagation();
176
177        modelNBUI_Search.openSearch();
178    });
179
180    $searchClose.on('click', function (e) {
181        e.preventDefault();
182        e.stopPropagation();
183
184        modelNBUI_Search.closeSearch();
185    });
186
187    $searchInput.keyup(
188        modelNBUI_Search.nb_timeWait(function(e){
189
190            let query = modelNBUI_Search.getQuery($searchInput);
191
192            if(e.keyCode == 13){
193
194                let permalinkProductListingPage = $('#show-all-result').val();
195                let showAllResutl = permalinkProductListingPage + "?search=" + query;
196
197                window.location.replace(showAllResutl);
198
199            } else {
200
201                setTimeout(function(){
202                    modelNBUI_Search.loadSearchResult(query);
203                },100);
204
205            }
206
207        })
208    );
209
210});
211/*
212/* NB Fajl:'./components/complex/product/product-card/product-card.js.'
213*/if (typeof NBUI_ProductCard === 'undefined') {
214    function NBUI_ProductCard() {}
215}
216
217NBUI_ProductCard.prototype.focusProductCardWithKeyboard = function () {
218    $('.nb-product-card').each(function () {
219        let $productCard = $(this);
220        let $button = $productCard.find('.nbf-add-to-cart');
221        let $link = $productCard.find('.nb-product-name .nb-link');
222
223        $button.attr('tabindex', '0');
224        $link.attr('tabindex', '0');
225
226        $productCard.on('focusin', function () {
227            $productCard.parent().addClass('nb-element-hover');
228            modelNBUI_ProductCard.addToCartWithKeyboard($button);
229        });
230
231        $productCard.on('focusout', function () {
232            setTimeout(function () {
233                if (!$productCard.has(document.activeElement).length) {
234                    $productCard.parent().removeClass('nb-element-hover');
235                }
236            }, 0);
237        });
238    });
239}
240
241NBUI_ProductCard.prototype.addToCartWithKeyboard = function (el) {
242    el.off('keydown').on('keydown', function (e) {
243        if (e.key === 'Enter') {
244            let $sizes = el.parent().find('.nbf-size-value');
245            setTimeout(function (){
246                if ($sizes.length) {
247                    $sizes.attr('tabindex', '0');
248                    $sizes[0].focus();
249                }
250            }, 200)
251
252        }
253    });
254}
255
256if (typeof modelNBUI_ProductCard === 'undefined') {
257    var modelNBUI_ProductCard = new NBUI_ProductCard();
258}
259
260$(document).ready(function (){
261    modelNBUI_ProductCard.focusProductCardWithKeyboard();
262
263    $(window).on('loadproductstatebystore loadproductsevent reloadcartevent loadlastviewedproductevent loadSearchProductsEvent',function (){
264        modelNBUI_ProductCard.focusProductCardWithKeyboard();
265    });
266})
267/*
268/* NB Fajl:'./components/core/box/box-with-link-list/box-with-link-list.js.'
269*/$(document).ready(function (){
270    let $el = $('.nbf-box-with-link-list .nbf-slider-init');
271
272    if (!$el.length) return;
273
274    NB7_slider.initSliderUnderBreakpoint($el);
275})
276
277$(window).on('loadSearchProductsEvent', function() {
278    let $el = $('.nbf-box-with-link-list .nbf-slider-init');
279    if (!$el.length) return;
280    NB7_slider.initSliderUnderBreakpoint($el);
281});
282/*
283/* NB Fajl:'./components/complex/search/search-tag-list/search-tag-list-1/search-tag-list-1.js.'
284*/function NBUI_SearchTagList1(){}
285
286var modelNBUI_SearchTagList1 = new NBUI_SearchTagList1();
287
288NBUI_SearchTagList1.prototype.reInitSlider = function () {
289    let nbSlider = $('.nbf-search-tag-list-1').find('.nbf-slider-init');
290
291    NB7_slider.initSlider(nbSlider);
292}
293
294$(window).on('loadSearchProductsEvent', function () {
295    modelNBUI_SearchTagList1.reInitSlider();
296})
297/*
298/* NB Fajl:'./components/complex/menu/menu-main-navigation/menu-main-navigation-3/menu-main-navigation-3.js.'
299*/function MenuMainNavigation3(){}
300var modelMenuMainNavigation3 = new MenuMainNavigation3();
301
302MenuMainNavigation3.prototype.appendFooterLinks = function (){
303    if(window.innerWidth < 992){
304        if($('.nbf-footer-links').length !== 0){
305            $('.nbf-footer-links-wrapper').empty().append($('.nbf-footer-links ').clone(true));
306        }
307    }
308}
309
310MenuMainNavigation3.prototype.footerLinks = function (){
311    let $elements = $('.wsmenu-list .nbf-footer-mobile-collapse');
312    $elements.each(function (){
313        let $collapseBtn = $(this).find('.nbf-collapse-button');
314        let $collapseContent = $(this).find('.nbf-collapse-content');
315
316        $collapseContent.hide();
317
318        $collapseBtn.off('click').click(function (){
319            if($(window).width() > 992) return;
320            $collapseContent.toggle();
321        })
322    })
323}
324
325MenuMainNavigation3.prototype.appendChangeSiteInstance = function (){
326    if(window.innerWidth < 992){
327        if($('.nb-change-site-instance-1').length !== 0){
328            $('.nbf-change-site-instance-wrapper').empty().append($('.nb-change-site-instance-1 ').clone(true));
329        }
330    }
331}
332
333MenuMainNavigation3.prototype.appendMiniCartAndFavoriteInMobileMenu = function() {
334    let menuOpenIcon = $('#wsnavtoggle');
335
336    let menuCartPlaceholder = $('.nbf-icons-wrapper .nbf-cart-icon-wrapper');
337    let menuFavoritePlaceholder = $('.nbf-icons-wrapper .nbf-favorites-icon-wrapper');
338    let headerCart = $('.nbf-open-mini-cart');
339    let headerFavorite = $('.nbf-favorite-total');
340
341    menuOpenIcon.click(function () {
342        if(!menuOpenIcon.hasClass('nb-menu-open')) {
343
344            menuOpenIcon.addClass('nb-menu-open');
345
346            if(menuCartPlaceholder.length != 0 && headerCart.length != 0) {
347                let cloneCart = headerCart.clone(true);
348                menuCartPlaceholder.append(cloneCart);
349            }
350
351            if(menuFavoritePlaceholder.length != 0 && headerFavorite.length != 0) {
352                let cloneFavorite = headerFavorite.clone(true);
353                menuFavoritePlaceholder.append(cloneFavorite);
354            }
355
356        } else {
357            menuOpenIcon.removeClass('nb-menu-open');
358            menuFavoritePlaceholder.find('.nbf-favorite-total').remove();
359            menuCartPlaceholder.find('.nbf-open-mini-cart').remove();
360        }
361
362    })
363
364}
365
366$(document).ready(function (){
367    modelMenuMainNavigation3.appendFooterLinks();
368    modelMenuMainNavigation3.appendChangeSiteInstance();
369    modelMenuMainNavigation3.footerLinks();
370    modelMenuMainNavigation3.appendMiniCartAndFavoriteInMobileMenu();
371
372    $(window).resize(function (){
373        modelMenuMainNavigation3.appendFooterLinks();
374        modelMenuMainNavigation3.appendChangeSiteInstance();
375        modelMenuMainNavigation3.footerLinks();
376    })
377})
378/*
379/* NB Fajl:'./components/complex/menu/menu-first-level-item-list-5/menu-first-level-item-list-5.js.'
380*/function NBUI_MenuFirstLevelItemList5() {
381    this.classMainNavigation         = '.nbf-main-navigation';
382    this.classFooterLinksWrapper     = '.nbf-footer-links-wrapper';
383    this.classChangeInstanceWrapper  = '.nbf-change-site-instance-wrapper';
384    this.classHeaderUserLinks        = '.nbf-header-user-links';
385    this.classHeaderMenuTitleWrapper = '.nbf-header-menu-title-wrapper';
386    this.classHeaderMenuTitle        = '.nbf-header-menu-title';
387    this.classMenuClose              = '.nbf-menu-close';
388    this.classMenuBack               = '.nbf-menu-back';
389    this.classMenuFirstLevelList     = '.nbf-menu-first-level-item-list';
390    this.classMenuTitle              = '.nbf-menu-title';
391    this.classMenuImage              = '.nb-menu-image';
392    this.classFirstLevelItem         = '.nbf-menu-first-level-item';
393    this.classFirstLevelItemLink     = '.nbf-first-level-menu-item-link';
394    this.classMenuDropdown           = '.nbf-menu-dropdown';
395    this.classSecondLevelItem        = '.nbf-menu-second-level-item-list .nbf-menu-second-level-item';
396    this.classSecondLevelItemLink    = '.nbf-second-level-menu-item-link';
397    this.classThirdLevelItemList     = '.nbf-menu-third-level-item-list';
398    this.classThirdLevelItem         = '.nbf-third-menu-level-item-list .nbf-menu-third-level-item';
399    this.classThirdLevelItemLink     = '.nbf-third-level-menu-item-link';
400    this.classFourthLevelItem        = '.nbf-menu-fourth-level-item';
401    this.classFourthLevelItemLink    = '.nb-menu-fourth-level-item-link';
402
403    this.initialTitle = $(this.classHeaderMenuTitle).html();
404
405    this.menuTitleStack = {
406        level0: this.initialTitle,
407        level1: '',
408        level2: '',
409    };
410}
411
412var modelNBUI_MenuFirstLevelItemList5 = new NBUI_MenuFirstLevelItemList5();
413
414NBUI_MenuFirstLevelItemList5.prototype.rewriteMenuTitle = function (currentMenuTitle) {
415    $(this.classHeaderMenuTitle).html(currentMenuTitle);
416};
417
418NBUI_MenuFirstLevelItemList5.prototype.enableMobileLinks = function () {
419    let enableLinksClass = $(".nbf-main-navigation.enable-mobile-links");
420
421    return typeof enableLinksClass !== "undefined" && enableLinksClass.length > 0;
422};
423
424NBUI_MenuFirstLevelItemList5.prototype.disableWsmenuClick = function () {
425    $('.wsmenu-click').off('click').on('click',function (e){
426        e.stopImmediatePropagation();
427        e.preventDefault();
428        $(this).siblings('.nbf-first-level-menu-item-link')[0].click();
429    });
430}
431NBUI_MenuFirstLevelItemList5.prototype.firstLevelMenuClick = function () {
432    let self = this;
433
434    $(self.classMainNavigation).off('click.nbui1').on('click.nbui1', self.classFirstLevelItemLink, function (e) {
435        const $clickedItem     = $(this).closest(self.classFirstLevelItem);
436        const $clickedLink     = $(this);
437        const $clickedDropdown = $clickedItem.find('>' + self.classMenuDropdown);
438
439        if ($clickedDropdown.length === 0) {
440            return;
441        }
442
443        if ($clickedDropdown.length !== 0) {
444
445            const $target = $(e.target);
446
447            if (($target.is('.nb-menu-image, .nbf-menu-title') || $target.closest('.nb-menu-image, .nbf-menu-title').length) && self.enableMobileLinks()) {
448                return;
449            }
450
451            e.preventDefault();
452            e.stopPropagation()
453        }
454
455        const $notClickedItems = $clickedItem.siblings(self.classFirstLevelItem);
456
457        if ($clickedItem.data('clicked')) return;
458        $clickedItem.data('clicked', true);
459
460        let $title = $clickedItem.find(self.classMenuTitle).html();
461
462        if(typeof $title === "undefined" || !$title || $title === '') {
463            $title = $clickedItem.find(self.classMenuImage).html();
464        }
465
466        self.menuTitleStack.level1 = $title;
467        self.rewriteMenuTitle(self.menuTitleStack.level1);
468
469        $clickedLink.addClass('hidden');
470        $notClickedItems.addClass('hidden');
471        $(`${self.classMenuFirstLevelList} ${self.classFooterLinksWrapper}`).addClass('hidden');
472        $(`${self.classMenuFirstLevelList} ${self.classChangeInstanceWrapper}`).addClass('hidden');
473        $(`${self.classMenuFirstLevelList} ${self.classHeaderUserLinks}`).addClass('hidden');
474
475        $clickedDropdown.addClass('active');
476        $(self.classMenuBack).addClass('show');
477    });
478};
479
480
481NBUI_MenuFirstLevelItemList5.prototype.secondLevelMenuClick = function () {
482    let self          = this;
483    const $nav                    = $(self.classMainNavigation);
484    const hasFourthLevel = $nav.find(self.classFourthLevelItem).length > 0;
485
486    $(self.classMainNavigation).off('click.nbui2').on('click.nbui2', self.classSecondLevelItem, function (e) {
487
488        const $clickedItem     = $(this);
489        const $clickedLink     = $clickedItem.find(self.classSecondLevelItemLink);
490        const $clickedDropdown = $clickedItem.find('+' + self.classThirdLevelItemList);
491        const $notClickedItems = $clickedItem.siblings(self.classSecondLevelItem);
492
493        if ($clickedDropdown.length !== 0) {
494
495            const $target = $(e.target);
496
497            if (($target.is('.nb-menu-image, .nbf-menu-title') || $target.closest('.nb-menu-image, .nbf-menu-title').length)  && self.enableMobileLinks()) {
498                return;
499            }
500
501            e.preventDefault();
502            e.stopPropagation();
503        }
504
505        if (hasFourthLevel) {
506            if ($clickedItem.data('clicked')) return;
507            $clickedItem.data('clicked', true);
508
509            const clickedLevelItemTitle      = $clickedLink.find(self.classMenuTitle).html();
510            const $clickedItemThirdLevelList = $clickedItem.find(self.classThirdLevelItemList);
511
512            self.menuTitleStack.level2 = clickedLevelItemTitle;
513            self.rewriteMenuTitle(self.menuTitleStack.level2);
514
515            $clickedLink.addClass('hidden');
516            $notClickedItems.addClass('hidden');
517            $clickedItemThirdLevelList.addClass('active');
518        } else {
519            $clickedItem.toggleClass('active');
520            $notClickedItems.removeClass('active').addClass('hidden');
521        }
522    });
523};
524
525NBUI_MenuFirstLevelItemList5.prototype.thirdLevelMenuClick = function () {
526    let self = this;
527    const $nav = $(self.classMainNavigation);
528    const hasFourthLevel = $nav.find(self.classFourthLevelItem).length > 0;
529
530    if (!hasFourthLevel) {
531        return;
532    }
533
534    $(self.classMainNavigation).off('click.nbui3').on('click.nbui3', self.classThirdLevelItem, function (e) {
535        e.preventDefault();
536        $(this).toggleClass('active');
537    });
538};
539
540NBUI_MenuFirstLevelItemList5.prototype.resetMenu = function () {
541    let self = this;
542
543    $(self.classMainNavigation).find('.hidden').removeClass('hidden');
544    $(self.classMainNavigation).find('.active').removeClass('active');
545    $(self.classMainNavigation).find('.show').removeClass('show');
546
547    self.rewriteMenuTitle(self.initialTitle);
548    $(self.classMainNavigation)
549        .find('*')
550        .filter(function () {
551            return $(this).data('clicked') === true;
552        })
553        .removeData('clicked');
554};
555
556NBUI_MenuFirstLevelItemList5.prototype.backMenuStep = function () {
557    let self = this;
558
559    const $nav = $(self.classMainNavigation);
560
561    const $activeThird = $nav.find(self.classThirdLevelItemList + '.active');
562    if ($activeThird.length) {
563        $activeThird.removeClass('active');
564
565        $nav.find(self.classSecondLevelItem).removeClass('hidden');
566        $nav.find(self.classSecondLevelItemLink + '.hidden').removeClass('hidden');
567
568        self.rewriteMenuTitle(self.menuTitleStack.level1);
569
570        $nav.find(self.classSecondLevelItem).removeData('clicked');
571        return;
572    }
573
574    const $activeDropdown = $nav.find(self.classMenuDropdown + '.active');
575    if ($activeDropdown.length) {
576        $activeDropdown.removeClass('active');
577
578        $nav.find(self.classFirstLevelItem).removeClass('hidden');
579        $nav.find(self.classFirstLevelItemLink + '.hidden').removeClass('hidden');
580        $nav.find(`${self.classFooterLinksWrapper}, ${self.classChangeInstanceWrapper}, ${self.classHeaderUserLinks}`).removeClass('hidden');
581
582        self.rewriteMenuTitle(self.initialTitle);
583
584        $nav.find(self.classFirstLevelItem).removeData('clicked');
585        $(self.classMenuBack).removeClass('show');
586        return;
587    }
588};
589
590NBUI_MenuFirstLevelItemList5.prototype.bindCloseButton = function () {
591    let self = this;
592
593    $(document).off('click.nbui-close', self.classMenuClose).on('click.nbui-close', self.classMenuClose, function () {
594        self.resetMenu();
595    });
596};
597
598NBUI_MenuFirstLevelItemList5.prototype.bindBackButton = function () {
599    let self = this;
600
601    $(document).off('click.nbui-back', self.classMenuBack).on('click.nbui-back', self.classMenuBack, function () {
602        self.backMenuStep();
603    });
604};
605
606NBUI_MenuFirstLevelItemList5.prototype.appendFooterLinks = function (){
607    if(window.innerWidth < 992){
608        if($('.nbf-footer-links').length !== 0){
609            $('.nbf-footer-links-wrapper').empty().append($('.nbf-footer-links ').clone(true));
610        }
611    }
612}
613
614NBUI_MenuFirstLevelItemList5.prototype.appendChangeSiteInstance = function (){
615    if(window.innerWidth < 992){
616        if($('.nb-change-site-instance-1').length !== 0){
617            $('.nbf-change-site-instance-wrapper').empty().append($('.nb-change-site-instance-1 ').clone(true));
618        }
619    }
620}
621
622NBUI_MenuFirstLevelItemList5.prototype.init = function () {
623    this.disableWsmenuClick();
624    this.firstLevelMenuClick();
625    this.secondLevelMenuClick();
626    this.thirdLevelMenuClick();
627    this.bindCloseButton();
628    this.bindBackButton();
629    this.appendFooterLinks();
630    this.appendChangeSiteInstance();
631};
632
633NBUI_MenuFirstLevelItemList5.prototype.handleMobileMenuInit = function () {
634    let self = this;
635    const MOBILE_BREAKPOINT = 991;
636    let initialized = false;
637
638    function initIfNeeded() {
639        const isMobile = window.innerWidth <= MOBILE_BREAKPOINT;
640
641        if (isMobile && !initialized) {
642            self.init();
643            initialized = true;
644        } else if (!isMobile && initialized) {
645            self.resetMenu();
646            initialized = false;
647        }
648    }
649
650    const throttledResize = nbThrottle(initIfNeeded, 200);
651
652    $(window).off('resize.nbui-init').on('resize.nbui-init', throttledResize);
653    initIfNeeded();
654};
655
656$(document).ready(function () {
657    modelNBUI_MenuFirstLevelItemList5.handleMobileMenuInit();
658});
659/*
660/* NB Fajl:'./_blocks/header-and-footer/header/ecommerce-header/ecommerce-header-9/ecommerce-header-9.js.'
661*/function NBUI_EcommerceHeader9() {
662    this.canFocusSearch = window.innerWidth > 576;
663}
664
665var modelNBUI_EcommerceHeader9 = new NBUI_EcommerceHeader9();
666
667NBUI_EcommerceHeader9.prototype.updateCanFocus = function () {
668    this.canFocusSearch = window.innerWidth > 576;
669}
670
671NBUI_EcommerceHeader9.prototype.openSearch = function () {
672    var self = this;
673
674    this.handleResize = nbThrottle(this.updateCanFocus.bind(this), 200);
675    $(window).on('resize', this.handleResize);
676
677    $(document).on('click', '.nbf-search', function () {
678        $('body').addClass('open-search').removeClass('wsactive');
679
680        if (self.canFocusSearch) {
681            setTimeout(function () {
682                $('#search-text').focus();
683            }, 100);
684        }
685
686        nb_custom_event_trigger('nbOpenSearch');
687    });
688}
689
690NBUI_EcommerceHeader9.prototype.init = function () {
691    this.openSearch();
692}
693
694$(document).ready(function () {
695    modelNBUI_EcommerceHeader9.init();
696});
697/*
698/* NB Fajl:'./_blocks/orders/order-tracking/order-tracking-form/order-tracking-form-1/order-tracking-form-1.js.'
699*/$(".order_type_search").on("change", function (){
700    let label          = $(this).data('label');
701    let orderNumberObj = $("#order_number");
702    orderNumberObj.attr('placeholder', label);
703    orderNumberObj.next().html(label);
704})
705
706$("#view-order-status-form").on("submit", function (){
707    let flagValidateForm = validateOrderTrackingForm();
708    if(flagValidateForm){
709        $("#view_order_submit_btn").addClass('active');
710    }
711})
712
713function validateOrderTrackingForm(){
714    let orderEmail  = $("#order_email").val();
715    let orderNumber = $("#order_number").val();
716    if(orderEmail === "" || orderNumber === ""){
717        return false;
718    }
719    return true;
720}
721/*
722/* NB Fajl:'./components/complex/order/order-split/order-split-tabs-1/order-split-tabs-1.js.'
723*/function NBUI_OrderSplitTabs1() {};
724var modelNBUI_OrderSplitTabs1 = new NBUI_OrderSplitTabs1();
725
726NBUI_OrderSplitTabs1.prototype.addClass = function (navItems) {
727    navItems.first().addClass('active');
728
729    navItems.on('click', function () {
730        let navItem         = $(this);
731        let navItemOrderId  = navItem.children(":first").data('order-id');
732        let estimatedTime   = navItem.children(":first").data('estimated-time');
733
734        navItems.removeClass('active');
735        navItem.addClass('active');
736        modelNBUI_OrderSplitTabs1.controlDisplaycontent(navItemOrderId);
737        modelNBUI_OrderSplitTabs1.controlDisplayOrderDeliveryInformation(navItemOrderId);
738        modelNBUI_OrderSplitTabs1.controlDisplayOrderTrackingItemList(navItemOrderId);
739        modelNBUI_OrderSplitTabs1.controlDisplayOrderTrackingStatusHistory(navItemOrderId);
740        modelNBUI_OrderSplitTabs1.controlEstimatedTime(estimatedTime)
741        modelNBUI_OrderSplitTabs1.reInitOrderTrackingItemListSlider($('.nb-order-tracking-progress-1'));
742    })
743}
744
745NBUI_OrderSplitTabs1.prototype.controlDisplaycontent = function (orderId){
746    let contentToHide = $('.nbf-tab-content');
747    let contentToShow = $('.nbf-tab-content[data-order-id='+orderId+']');
748    contentToHide.hide();
749    contentToShow.show();
750}
751
752NBUI_OrderSplitTabs1.prototype.controlDisplayOrderDeliveryInformation = function (orderId){
753    let contentToHide = $('.nbf-order-delivery-information-overview');
754    let contentToShow = $('.nbf-order-delivery-information-overview[data-order-id='+orderId+']');
755    contentToHide.hide();
756    contentToShow.show();
757}
758
759NBUI_OrderSplitTabs1.prototype.controlDisplayOrderTrackingItemList = function (orderId){
760    let contentToHide = $('.nbf-accordion-item-order-tracking-item');
761    let contentToShow = $('.nbf-accordion-item-order-tracking-item[data-order-id='+orderId+']');
762    contentToHide.hide();
763    contentToShow.show();
764}
765
766NBUI_OrderSplitTabs1.prototype.controlDisplayOrderTrackingStatusHistory = function (orderId){
767    let contentToHide = $('.nbf-accordion-item-order-tracking-status');
768    let contentToShow = $('.nbf-accordion-item-order-tracking-status[data-order-id='+orderId+']');
769    contentToHide.hide();
770    contentToShow.show();
771}
772
773NBUI_OrderSplitTabs1.prototype.controlEstimatedTime = function (estimatedTime){
774    $(".nbf-estimated-delivery-time-info-text").html(estimatedTime)
775}
776
777NBUI_OrderSplitTabs1.prototype.reInitOrderTrackingItemListSlider = function (element){
778    element.find('.nbf-slider-init').slick('unslick');
779    element.find('.nbf-slider-init').each(function(index,element){
780        let sliderOptions = NB7_slider._mapSlOpt($(element).data());
781        $(element).nb7_sliderFn(sliderOptions);
782    })
783}
784
785NBUI_OrderSplitTabs1.prototype.contentInit = function (){
786    let content = $('.nbf-tab-content');
787    content.hide();
788    content.first().show();
789}
790
791NBUI_OrderSplitTabs1.prototype.orderDeliveryInformationInit = function (){
792    let content = $('.nbf-order-delivery-information-overview');
793    content.hide();
794    content.first().show();
795}
796
797NBUI_OrderSplitTabs1.prototype.orderTrackingListItemInit = function (){
798    let content = $('.nbf-accordion-item-order-tracking-item');
799    content.hide();
800    content.first().show();
801}
802
803NBUI_OrderSplitTabs1.prototype.orderTrackingStatusHistoryInit = function (){
804    let content = $('.nbf-accordion-item-order-tracking-status');
805    content.hide();
806    content.first().show();
807}
808
809NBUI_OrderSplitTabs1.prototype.centerCurrentSlide = function ($slider) {
810    $slider.on('click', '.slick-slide', function () {
811        var slick = $slider.slick('getSlick');
812        var index = $(this).data("slick-index");
813
814        var slidesToShow = slick.options.slidesToShow || 1;
815        var totalSlides = slick.slideCount;
816        var currentSlide = slick.currentSlide || 0;
817
818        if (index >= totalSlides - 1) {
819            $slider.slick('slickGoTo', totalSlides - 1);
820        } else if (index >= totalSlides - slidesToShow) {
821            $slider.slick('slickGoTo', Math.max(totalSlides - slidesToShow, 0));
822        } else {
823            var targetSlide = Math.max(index - Math.floor(slidesToShow / 2), 0);
824
825            if (targetSlide + slidesToShow > totalSlides) {
826                targetSlide = totalSlides - slidesToShow;
827            }
828
829            $slider.slick('slickGoTo', targetSlide);
830        }
831    });
832};
833
834NBUI_OrderSplitTabs1.prototype.getSlidesToShow = function (slick) {
835
836    var width = $(window).width();
837    if (width >= 1200) return slick.options?.showitems || 1;
838    if (width >= 992) return slick.options?.showitemsLg || 1;
839    if (width >= 768) return slick.options?.showitemsMd || 1;
840    if (width >= 576) return slick.options?.showitemsSm || 1;
841    return slick.options?.showitemsXs || 1;
842};
843
844NBUI_OrderSplitTabs1.prototype.init = function () {
845    this.addClass($('.nbf-nav-item'))
846    this.contentInit();
847    this.orderDeliveryInformationInit();
848    this.orderTrackingListItemInit();
849    this.orderTrackingStatusHistoryInit();
850    this.centerCurrentSlide($('.nb-nav-item-wrapper'));
851
852    if ($('.nbf-nav-item-wrapper').length > 0) {
853        NB7_slider.initSlider($('.nbf-nav-item-wrapper'));
854    }
855};
856
857$(document).ready(function () {
858    modelNBUI_OrderSplitTabs1.init();
859})
860/*
861/* NB Fajl:'./components/complex/elements/scroll-to-top/scroll-to-top.js.'
862*/function NBUI_ScrollToTop() {
863    this.lastScrollTop = 0;
864}
865
866var modelNBUI_ScrollToTop = new NBUI_ScrollToTop();
867
868NBUI_ScrollToTop.prototype.handleScroll = function () {
869    const currentScrollTop = $(window).scrollTop();
870    const $el = $('.nbf-scroll-to-top');
871
872    if (currentScrollTop < this.lastScrollTop && currentScrollTop > 100) {
873        if ($el.hasClass('hidden')) {
874            $el.removeClass('hidden').hide().fadeIn();
875        }
876    } else {
877        $el.fadeOut(function () {
878            $(this).addClass('hidden');
879        });
880    }
881
882    this.lastScrollTop = currentScrollTop;
883};
884
885NBUI_ScrollToTop.prototype.scrollPage = function () {
886    const throttledScroll = nbThrottle(this.handleScroll.bind(this), 200);
887
888    $(window).off('scroll.scrollToTop').on('scroll.scrollToTop', throttledScroll);
889
890    $(document).off('click', '.nbf-scroll-to-top a').on('click', '.nbf-scroll-to-top a', function (e) {
891        e.preventDefault();
892        window.scrollTo({ top: 0, behavior: 'smooth' });
893    });
894};
895
896NBUI_ScrollToTop.prototype.cleanup = function () {
897    $(window).off('scroll.scrollToTop');
898    $('.nbf-scroll-to-top a').off('click');
899};
900
901NBUI_ScrollToTop.prototype.init = function () {
902    this.cleanup();
903    this.scrollPage();
904};
905
906$(document).ready(function () {
907    modelNBUI_ScrollToTop.init();
908});
909
910$(window).on('loadproductsevent reloadcartevent loadproductstatebystore loadlastviewedproductevent', function () {
911    modelNBUI_ScrollToTop.init();
912});
913/*
914/* NB Fajl:'./static/js/nbjs/ui.components/cookie-consent/NBUI_CookieConsent.js.'
915*/function NBUI_CookieConsent(){}
916var modelNBUI_CookieConsent = new NBUI_CookieConsent();
917
918NBUI_CookieConsent.prototype.learnMore = function () {
919    $('.nbf-cookie-learn-more').on('click', function () {
920        $('.nbf-cookie-read-more-wrapper').toggleClass('active');
921    })
922}
923
924NBUI_CookieConsent.prototype.activateTabContent = function () {
925    let $tabs = $('.nbf-cookie-tabs-wrapper').children();
926    let $contents = $('.nbf-cookie-tabs-content-wrapper').children();
927
928    if ($tabs.length > 0) {
929        let firstTabID = $tabs.first().attr('id');
930        $tabs.first().addClass('active');
931        if (firstTabID) {
932            $contents.removeClass('active');
933            $('.nbf-cookie-tabs-content-wrapper').find(`#${firstTabID}`).addClass('active');
934        }
935    }
936
937    $tabs.each(function () {
938        let tabID = $(this).attr('id');
939
940        if (tabID) {
941            $(this).on('click', function () {
942                $tabs.removeClass('active');
943                $contents.removeClass('active');
944
945                $(this).addClass('active');
946                $('.nbf-cookie-tabs-content-wrapper').find(`#${tabID}`).addClass('active');
947            });
948        }
949    });
950};
951
952NBUI_CookieConsent.prototype.acceptEverything = function () {
953    $(".nbf-cookie-accept-everything-btn").click(function() {
954        var $consent = $(this).closest('.nbf-cookie-consent');
955        $consent.find('input[type="checkbox"]:not(:checked)').prop("checked", true);
956
957        setTimeout(function () {
958            $consent.addClass('cookie-disappear');
959        }, 500);
960    });
961};
962
963NBUI_CookieConsent.prototype.showCookieContent = function () {
964    const cookieBanner = $(".nbf-cookie-consent");
965    cookieBanner.addClass('cookie-appear');
966}
967
968NBUI_CookieConsent.prototype.hideConsentIfCookieExists = function () {
969    const cookieName = "site_cookie_info";
970    if (document.cookie && new RegExp(`(?:^|; )${cookieName}=`).test(document.cookie)) {
971        document.querySelector(".nbf-cookie-consent")?.classList.add("hidden");
972    }
973}
974
975NBUI_CookieConsent.prototype.handleCookieConsentInModal = function () {
976
977    let DDEdit = $(".block-editing"); // ako se trenutno nalazimo na DD edit strani
978
979    if (typeof DDEdit !== "undefined" && DDEdit.length > 0) return;
980
981    const cookieName = "site_cookie_info";
982    const declinedCookieName = "declineCookies";
983
984    const cookieConsentInModal = document.querySelector(".nbf-cookie-consent-2");
985    const modal = document.querySelector(".nb-cookie-popup-1 .modal");
986
987    if (!cookieConsentInModal || !modal) {
988        return;
989    }
990
991    const hasCookie = document.cookie &&
992        new RegExp(`(?:^|; )${cookieName}=`).test(document.cookie);
993
994    const declinedCookies = document.cookie &&
995        new RegExp(`(?:^|; )${declinedCookieName}=`).test(document.cookie);
996
997    if (hasCookie || declinedCookies) {
998        modal.classList.add("hidden");
999    } else {
1000        const bsModal = new bootstrap.Modal(modal);
1001        bsModal.show();
1002    }
1003
1004    let declineCookiesBtn = document.querySelector(".nbf-decline-cookies");
1005    if(declineCookiesBtn) {
1006        declineCookiesBtn.addEventListener("click", function () {
1007            createCookie("declineCookies", "1", 1);
1008        })
1009    }
1010
1011};
1012NBUI_CookieConsent.prototype.handleCookieConsentInModal2 = function () {
1013
1014    let DDEdit = $(".block-editing"); // ako se trenutno nalazimo na DD edit strani
1015
1016    if (typeof DDEdit !== "undefined" && DDEdit.length > 0) return;
1017
1018    const cookieName = "site_cookie_info";
1019    const declinedCookieName = "declineCookies";
1020
1021    const cookieConsentInModal = document.querySelector(".nbf-cookie-consent-3");
1022    const modal = document.querySelector(".nb-cookie-modal-1 .modal");
1023
1024    if (!cookieConsentInModal || !modal) {
1025        return;
1026    }
1027
1028    const hasCookie = document.cookie &&
1029        new RegExp(`(?:^|; )${cookieName}=`).test(document.cookie);
1030
1031    const declinedCookies = document.cookie &&
1032        new RegExp(`(?:^|; )${declinedCookieName}=`).test(document.cookie);
1033
1034    if (hasCookie || declinedCookies) {
1035        modal.classList.add("hidden");
1036    } else {
1037        const bsModal = new bootstrap.Modal(modal);
1038        bsModal.show();
1039    }
1040
1041    let declineCookiesBtn = document.querySelector(".nbf-decline-cookie
1041s");
1042    if (declineCookiesBtn) {
1043        declineCookiesBtn.addEventListener("click", function () {
1044            createCookie("declineCookies", "1", 1);
1045        })
1046    }
1047
1048};
1049NBUI_CookieConsent.prototype.handleCookieConsent3Settings = function () {
1050
1051    const $cookieConsent3 = $('.nbf-cookie-consent-3');
1052    if (!$cookieConsent3.length) {
1053        return;
1054    }
1055
1056    $('.nbf-cookie-consent-3 .nb-cookie-settings-btn')
1057        .off('click.cookieConsent3Settings')
1058        .on('click.cookieConsent3Settings', function () {
1059            const $root = $(this).closest('.nbf-cookie-consent-3');
1060            if (!$root.length) {
1061                return;
1062            }
1063
1064            const $offcanvas = $('.nb-cookie-settings-offcanvas');
1065            if (!$offcanvas.length) {
1066                return;
1067            }
1068        });
1069
1070    $('.nb-cookie-settings-offcanvas .nb-cookie-accept-everything-btn')
1071        .off('click.cookieConsent3Settings')
1072        .on('click.cookieConsent3Settings', function () {
1073            $('.nb-cookie-settings-offcanvas')
1074                .find('input[type="checkbox"]:not(:disabled)')
1075                .prop('checked', true);
1076        });
1077
1078    $('.nb-cookie-settings-offcanvas .nb-cookie-reject-all-btn')
1079        .off('click.cookieConsent3Settings')
1080        .on('click.cookieConsent3Settings', function () {
1081            $('.nb-cookie-settings-offcanvas')
1082                .find('input[type="checkbox"]:not(:disabled)')
1083                .prop('checked', false);
1084        });
1085
1086    $('.nb-cookie-settings-offcanvas .nb-cookie-confirm-choices-btn')
1087        .off('click.cookieConsent3Settings')
1088        .on('click.cookieConsent3Settings', function () {
1089            createCookie("site_cookie_info", "1", 1);
1090
1091            const modalEl = document.querySelector('.nb-cookie-modal-1 .modal.show');
1092            if (modalEl) {
1093                const modalInstance = bootstrap.Modal.getInstance(modalEl);
1094                if (modalInstance) {
1095                    modalInstance.hide();
1096                }
1097            }
1098
1099            const offcanvasEl = document.querySelector('.nb-cookie-settings-offcanvas.show');
1100            if (offcanvasEl) {
1101                const offcanvasInstance = bootstrap.Offcanvas.getInstance(offcanvasEl);
1102                if (offcanvasInstance) {
1103                    offcanvasInstance.hide();
1104                }
1105            }
1106        });
1107};
1108
1109NBUI_CookieConsent.prototype.init = function () {
1110    this.showCookieContent();
1111    this.learnMore();
1112    this.activateTabContent();
1113    this.acceptEverything();
1114    this.hideConsentIfCookieExists();
1115    this.handleCookieConsentInModal();
1116    this.handleCookieConsentInModal2();
1117    this.handleCookieConsent3Settings();
1118}
1119
1120$(document).ready(function () {
1121    modelNBUI_CookieConsent.init();
1122})
1123/*
1124/* NB Fajl:'./static/js/nbjs/ui.components/loader/NBUI_Loader.js.'
1125*/function NBUI_Loader() {};
1126
1127NBUI_Loader.prototype.hideLoader = function ($loader) {
1128    if ($loader.length > 0) {
1129        $loader.addClass('hidden');
1130    }
1131}
1132
1133NBUI_Loader.prototype.showLoader = function ($loader) {
1134    if ($loader.length > 0) {
1135        $loader.removeClass('hidden');
1136    }
1137}
1138/*
1139/* NB Fajl:'./static/js/nbjs/ui.components/cart/NBUI_MiniCartOffcanvas.js.'
1140*/function NBUI_MiniCartOffcanvas() {
1141    //mogu naknadno da se dodaju i setteri
1142    this.miniCartPlaceholdereElement            = $('.nb-mini-cart-offcanvas-placeholder-1')
1143    this.miniCartElement                        = $('#nb-mini-cart')
1144    this.deleteProductCartItem                  = 'nbf-delete-product-cart-item';
1145    this.deleteProductCartItemElement           = $('.nbf-delete-product-cart-item');
1146    this.sizeValueMiniCartOffcanvasElement      = $('.nbf-size-value');
1147    this.loaderMiniCartElement                  = $('.nbf-loader-mini-cart');
1148    this.miniCartOffcanvasWrapper               = '.nbf-mini-cart-offcanvas-ajax-wrapper';
1149    this.miniCartOffcanvasWrapperElement        = $('.nbf-mini-cart-offcanvas-ajax-wrapper');
1150    this.miniCartQuantity                       = $('.mini-cart-quantity');
1151    this.miniCartQuantityInput                  = '.nb-quantity-input';
1152}
1153
1154var modelNBUI_MiniCartOffcanvas                 = new NBUI_MiniCartOffcanvas();
1155var modelNBUI_CartReload                        = new NBUI_CartReload();
1156var modelNBUI_Loader                            = new NBUI_Loader();
1157
1158NBUI_MiniCartOffcanvas.prototype.deleteItem     = function($element){
1159
1160    var modelNBCartItem = new NBCartItem();
1161
1162    var params = {
1163        id                          : $element.data('cart-item-delete-key'),
1164        modelOrdering               : $element.data('cart-item-delete-model-ordering')
1165    }
1166
1167    var textQuestion    = $element.data('cart-item-delete-text-question');
1168    var confirmMessage  = $element.data('cart-item-delete-confirm-message');
1169    var cancelMessage   = $element.data('cart-item-delete-cancel-message');
1170
1171    nb7ConfirmDialog(textQuestion, ()=>{
1172        modelNBUI_Loader.showLoader($('.nbf-loader-mini-cart'));
1173        setTimeout(()=>{
1174            var result = modelNBCartItem.delete(params);
1175            if(result.flag){
1176                if(result.ret.flag){
1177                    modelNBUI_MiniCartOffcanvas.reload();
1178                    nb_custom_event_trigger('deleteProductFromCartOnePage', { id : params.id });
1179                }
1180            }
1181            modelNBUI_Loader.hideLoader($('.nbf-loader-mini-cart'));
1182        }, 0);
1183    },confirmMessage,cancelMessage);
1184    return false;
1185};
1186
1187NBUI_MiniCartOffcanvas.prototype.changeAmount = function (element) {
1188    let miniCartQuantity        = $('.nbf-mini-cart-quantity');
1189    let miniCartQuantityInput   = '.nb-quantity-input';
1190    let fMiniCartQuantityInput  = '.nbf-quantity-input';
1191
1192    let changeInput             = element.closest(miniCartQuantity);
1193    let key                     = changeInput.data('cart-item-quantity-key');
1194    let id                      = changeInput.data('cart-item-quantity-id');
1195    let size                    = changeInput.data('cart-item-quantity-size');
1196    let price                   = changeInput.data('cart-item-quantity-price');
1197    let combId                  = changeInput.data('cart-item-quantity-combination-id');
1198    let modelOrdering           = changeInput.data('cart-item-quantity-model-ordering');
1199
1200    let quantityInput           = element.closest(miniCartQuantity).find(fMiniCartQuantityInput);
1201    let amount                  = quantityInput.val();
1202    element.attr('disabled', true).addClass('disabled');
1203
1204    let params = {
1205        key,
1206        id,
1207        size,
1208        price,
1209        combId,
1210        amount,
1211        modelOrdering
1212    };
1213
1214    let modelNBCartItem = new NBCartItem();
1215
1216    modelNBUI_Loader.showLoader($('.nbf-loader-mini-cart'));
1217
1218    setTimeout(() => {
1219        try {
1220            let result = modelNBCartItem.edit(params);
1221
1222            if (result.flag) {
1223                if (result.ret.flag) {
1224                    modelNBUI_MiniCartOffcanvas.reload();
1225                } else {
1226                    nb7_infoError(result.ret.info);
1227                }
1228            } else {
1229                nb7_infoError(result.info);
1230            }
1231        } catch (err) {
1232            console.error('Greška pri promjeni količine:', err);
1233        } finally {
1234            modelNBUI_Loader.hideLoader($('.nbf-loader-mini-cart'));
1235        }
1236    }, 100);
1237};
1238
1239
1240NBUI_MiniCartOffcanvas.prototype.changeSize     = function(element){
1241
1242    let self                        = this;
1243    var sizeValueMiniCartElement    = $('.nbf-size-value'); //self.sizeValueMiniCartOffcanvasElement;
1244    var loaderMiniCartElement       = $('.nbf-loader-mini-cart'); //self.loaderMiniCartElement;
1245
1246    modelNBUI_Loader.showLoader(loaderMiniCartElement);
1247
1248    sizeValueMiniCartElement.removeClass('active');
1249    element.addClass('active');
1250
1251    var params = {
1252        key         : element.data('cart-item-change-size-key'),
1253        productId   : element.data('productsize-productid'),
1254        combId      : element.data('productsize-combid'),
1255        quantity    : element.data('cart-item-change-size-quantity')
1256    }
1257
1258    var modelNBCartItemChangeSize   = new NBCartItemChangeSize();
1259
1260
1261    setTimeout(()=>{
1262        var result                      = modelNBCartItemChangeSize.edit(params);
1263        if(result.flag){
1264            if(result.ret.flag){
1265                modelNBUI_MiniCartOffcanvas.reload();
1266                modelNBUI_Loader.hideLoader(loaderMiniCartElement);
1267                // $('.nb-offcanvas').focus();
1268            }else{
1269                nb7_infoError(result.ret.info);
1270            }
1271        }else{
1272            nb7_infoError(result.info);
1273        }
1274        modelNBUI_Loader.hideLoader($('.nbf-loader-mini-cart'));
1275    }, 0);
1276}
1277
1278//reload ugnjezdenog bloka; mini cart offcanvas - sa ugnjezdenim blokom
1279NBUI_MiniCartOffcanvas.prototype.reload         = function(){
1280
1281    let self                    = this;
1282    let blockElement            = $('.nb-mini-cart-offcanvas-placeholder-1'); //self.miniCartPlaceholdereElement;
1283
1284    var  pageId                 = blockElement.data('site-page-id');
1285    var  layoutId               = blockElement.data('layout-id');
1286    var  sitePageBlockId        = blockElement.data('block-id');
1287    var  position               = blockElement.data('block-position');
1288    var  secretKey              = ""; //blockElement.data('block-public-key');
1289
1290    var params = {
1291        pageId                  : pageId,
1292        layoutId                : layoutId,
1293        sitePageBlockId         : sitePageBlockId,
1294        position                : position,
1295        secretKey               : secretKey,
1296        block                   : pageId+':'+layoutId+':'+sitePageBlockId+":"+position+':'+secretKey,
1297        typegetdata             : 'html'
1298    }
1299
1300    var modelNBCartMiniReload   = new NBCartMiniReload();
1301    var result                  = modelNBCartMiniReload.load(params);
1302
1303
1304    modelNBUI_Loader.showLoader($('.nbf-loader-mini-cart'));
1305    setTimeout(function (){
1306        let wrapperElement      = '.nbf-mini-cart-offcanvas-ajax-wrapper'; //self.miniCartOffcanvasWrapper;
1307        let loadBlockElement    = blockElement.find(wrapperElement)
1308
1309        if(result.ret.flag === true){
1310            let countProduct = result.ret.countProduct;
1311            modelNBUI_MiniCartOffcanvas.reloadPlaceholderTitleCount(blockElement, countProduct)
1312            modelNBUI_CartReload.reloadCartForMiniCart();
1313            loadBlockElement.html(result.ret.html);
1314            modelNBUI_MiniCartOffcanvas.init();
1315            $('.nbf-cart-total').html(countProduct);
1316            nb_custom_event_trigger('miniCartOpen');
1317        }
1318        else if(result.ret.flag === false){
1319            loadBlockElement.html('');
1320        }
1321        else{
1322            loadBlockElement.html('');
1323        }
1324
1325
1326        modelNBUI_Loader.hideLoader($('.nbf-loader-mini-cart'));
1327
1328    }, 0);
1329
1330    return true;
1331}
1332
1333NBUI_MiniCartOffcanvas.prototype.reloadPlaceholderTitleCount = function(element, count){
1334    let placeholderTitleCount   = element.find('.mini-cart-offcanvas-title-count');
1335    if(placeholderTitleCount.length > 0){
1336        placeholderTitleCount.text('(' + count + ')')
1337    }
1338}
1339
1340NBUI_MiniCartOffcanvas.prototype.init           = function(){
1341
1342    let self                            = this;
1343    let deleteProductCartItemElement    = $('.nbf-delete-product-cart-item'); //self.deleteProductCartItemElement;
1344    let deleteProductCartItem           = 'nbf-delete-product-cart-item'; //self.deleteProductCartItem;
1345
1346    deleteProductCartItemElement.off('click').on('click', function(event){
1347        event.stopPropagation();
1348        modelNBUI_MiniCartOffcanvas.deleteItem($(this));
1349    });
1350
1351    if (window.NBAccessibility) {
1352        modelNBUI_MiniCartOffcanvas.clickWithKeyboard(deleteProductCartItem);
1353    }
1354    return true;
1355};
1356
1357$(document).ready(function(){
1358    modelNBUI_MiniCartOffcanvas.init();
1359});
1360
1361$(window).on("loadminicart", function(){
1362    if (window.NBAccessibility){
1363        modelNBAccessibility.openMiniCartWithKeyboard();
1364    }
1365    modelNBUI_MiniCartOffcanvas.init();
1366});
1367/*
1368/* NB Fajl:'./components/complex/cart/mini-cart/cart-reserve-item-change-data/cart-reserve-item-change-data.js.'
1369*/function getEditCartItemModalFromMiniCart(enableButton = false, passedActiveSizeGlobal = false, elementCard = false, selectedQuantity = false){
1370
1371    let $blockElement                   = $('.nb-click-and-reserve-modal-placeholder-1');
1372    let $childBlockWrapper              = $('.product-reservation-block-wrapper');
1373    let modelClickAndReserveLoadEdit= new NBClickAndReserve();
1374    let loader = $(".nb-loader-click-and-reserve-loader")
1375
1376    $("#click_and_reserve_modal").modal("show");
1377
1378    loader.removeClass("hidden")
1379    $(".click-and-reserve-modal .modal-content .content-wrapper-body > .nb-btn-wrapper").addClass("unvisible")
1380
1381    localStorage.setItem("CRActiveScreen", "edit")
1382
1383    setTimeout(showEditCartItemModal, 300)
1384
1385    function showEditCartItemModal(passedActiveSize = passedActiveSizeGlobal) {
1386        let pageId              = $blockElement.data('site-page-id');
1387        let layoutId            = $blockElement.data('layout-id');
1388        let blockId             = $blockElement.data('block-id');
1389        let position            = $childBlockWrapper.data('position');
1390        let secretKey                = "";
1391
1392        let item = $(".click-and-reserve-modal .nb-slider-item.nbf-slider-item.click-and-reserve-cart-item.slick-slide.slick-current.slick-active");
1393
1394        if(typeof elementCard !== "undefined" && elementCard) {
1395            item = elementCard;
1396        }
1397
1398        let productId = item.data("productId");
1399        let combId    = item.data("productcmbinationid");
1400        let itemQuantity = item.data("quantity");
1401        let key       = item.data("key");
1402
1403        let params = {
1404            block : pageId+':'+layoutId+':'+blockId+":"+position+':'+secretKey,
1405            key : key,
1406            productId : productId,
1407            combinationId : combId,
1408            quantity : itemQuantity, // proslediti pravi
1409            mode     : "edit",
1410            indicator : ""
1411        }
1412
1413        let result         = modelClickAndReserveLoadEdit.load(params);
1414
1415        let loadBlockElement    = $blockElement.find(".product-reservation-block-wrapper");
1416
1417
1418        if(result.ret.flag === true){
1419            loadBlockElement.empty();
1420            loadBlockElement.html(result.ret.html);
1421
1422            let selectedCombination = $(CRSizeClassString + "[data-productsize-combid='" + combId + "']")
1423
1424            if(passedActiveSize) {
1425                selectedCombination = $(CRSizeClassString + "[data-productsize-combid='" + $(passedActiveSize).data("productsizeCombid") + "']")
1426            }
1427
1428            if(selectedCombination){
1429                $(".click-and-reserve-sizes .nb-product-size-list-1 .nb-size-value-box-1").removeClass("active")
1430                selectedCombination.addClass("active");
1431            }
1432
1433        }else if(result.ret.flag === false){
1434            loadBlockElement.html('');
1435        }else{
1436            loadBlockElement.html('');
1437        }
1438
1439        nb_custom_event_trigger('editConfirmedItem');
1440        nb_custom_event_trigger('CRModalContentReloaded');
1441
1442        waitForInitFunction(() => {
1443            initAllModalActions(result);
1444        });
1445
1446        if(enableButton) {
1447            enableButtons();
1448        }
1449
1450        CRModalSelectSize(showEditCartItemModal);
1451
1452        let quantityElement = $(".click-and-reserve-product .nb-quantity-product .nb-quantity-wrapper .nb-quantity-input input");
1453        if(!selectedQuantity) {
1454            CRSelectedQuantity = itemQuantity
1455        }
1456        if(selectedQuantity === 'plus') {
1457            CRSelectedQuantity++;
1458            $(quantityElement).val(CRSelectedQuantity)
1459            $(quantityElement).attr("value", CRSelectedQuantity)
1460        } else if((selectedQuantity === 'minus') && CRSelectedQuantity > 1) {
1461            CRSelectedQuantity--;
1462            $(quantityElement).val(CRSelectedQuantity)
1463            $(quantityElement).attr("value", CRSelectedQuantity)
1464        }
1465
1466        setTimeout(() => {
1467            loader.addClass("hidden")
1468            $(".click-and-reserve-modal .modal-content .content-wrapper-body > .nb-btn-wrapper").removeClass("unvisible")
1469        }, 200)
1470    }
1471
1472}
1473
1474$(document).ready(function () {
1475    $(".nbf-cart-reserve-item-change-data").click(function () {
1476        getEditCartItemModalFromMiniCart(false, false,
1477            $(this).closest('.nbf-cart-product-item'))
1478    })
1479    $(window).on('miniCartOpen', function() {
1480        $(".nbf-cart-reserve-item-change-data").click(function () {
1481            getEditCartItemModalFromMiniCart(false, false,
1482                $(this).closest('.nbf-cart-product-item'))
1483        })
1484    });
1485});
1486/*
1487/* NB Fajl:'./components/complex/cart/mini-cart/reservation-pricing-quick-basket-1/reservation-pricing-quick-basket-1.js.'
1488*/function NBUI_PricingQuickBasket() {}
1489var modelNBUI_PricingQuickBasket = new NBUI_PricingQuickBasket();
1490
1491NBUI_PricingQuickBasket.prototype.onClickInitLoader = function () {
1492    let $btn = $('.nbf-btn-reservation-pricing-quick-basket');
1493
1494    $btn.on('click', function () {
1495        $(this).addClass('addingItem');
1496    });
1497};
1498
1499NBUI_PricingQuickBasket.prototype.init = function () {
1500    this.onClickInitLoader();
1501};
1502
1503$(document).ready(function () {
1504    modelNBUI_PricingQuickBasket.init();
1505});
1506
1507/*
1508/* NB Fajl:'./components/core/quantity/quantity-1/quantity-1.js.'
1509*/function NBUI_Quantity1() {}
1510var modelNBUI_Quantity1 = new NBUI_Quantity1();
1511
1512// mobile check
1513NBUI_Quantity1.prototype.isMobile = function() {
1514    return window.matchMedia("(max-width: 768px)").matches;
1515};
1516
1517NBUI_Quantity1.prototype.quantityIncDec = function(el, value, operand) {
1518    if (operand === '-') {
1519        value = value > 1 ? value - 1 : 1;
1520    } else {
1521        value += 1;
1522    }
1523
1524    el.val(value);
1525    el.attr('value', value);
1526
1527    return value;
1528};
1529
1530NBUI_Quantity1.prototype.resetInputValue = function(el, value) {
1531    el.val(value <= 0 ? 1 : value);
1532};
1533
1534NBUI_Quantity1.prototype.onInput = function(el) {
1535    let self = this;
1536
1537    el.on('input', function () {
1538        let value = el.val();
1539
1540        value = value.replace(/[^0-9]/g, '');
1541
1542        if (self.isMobile()) {
1543
1544            if (value === '') {
1545                el.val('');
1546                el.attr('value', '');
1547                return;
1548            }
1549
1550            value = value.replace(/^0+/, '');
1551
1552            if (value === '') {
1553                value = '1';
1554            }
1555
1556        } else {
1557            value = value === '' ? '1' : value;
1558        }
1559
1560        el.val(value);
1561        el.attr('value', value);
1562    });
1563};
1564
1565NBUI_Quantity1.prototype.setQuantityDataToButton = function(elementQuantity, button, quantityData){
1566    if(elementQuantity.length < 1){
1567        return;
1568    }
1569
1570    let quantity    = elementQuantity.val();
1571    let quantityBtn = button.attr(quantityData);
1572
1573    if(quantity !== quantityBtn){
1574        button.attr(quantityData, quantity);
1575    }
1576}
1577
1578NBUI_Quantity1.prototype.init = function(elements) {
1579    let self = this;
1580
1581    $(elements).each(function () {
1582        let minus = $(this).find('.nbf-minus');
1583        let plus = $(this).find('.nbf-plus');
1584        let input = $(this).find('.nbf-quantity-input');
1585        let inputValue = parseInt(input.val(), 10);
1586
1587        self.onInput(input);
1588
1589        input.change(function (){
1590            inputValue = parseInt(input.val(), 10);
1591        });
1592
1593        if (self.isMobile()) {
1594            input.on('blur', function () {
1595                let value = parseInt(input.val(), 10);
1596
1597                if (!value || value < 1) {
1598                    value = 1;
1599                }
1600
1601                input.val(value);
1602                input.attr('value', value);
1603                inputValue = value;
1604            });
1605        }
1606
1607        minus.on('click', function () {
1608            inputValue = self.quantityIncDec(input, inputValue, '-');
1609        });
1610
1611        plus.on('click', function () {
1612            inputValue = self.quantityIncDec(input, inputValue, '+');
1613        });
1614    });
1615};
1616
1617$(document).ready(() => {
1618    modelNBUI_Quantity1.init($('.nb-quantity-1.nbf-quantity'));
1619});
1620
1621$(window).on('outfitModalLoaded', function () {
1622    modelNBUI_Quantity1.init($('.nb-quantity-1.nbf-quantity'));
1623});
1624/*
1625/* NB Fajl:'./components/complex/product/product-size-list/product-size-list-1/product-size-list-1.js.'
1626*/
1627function NBUI_ProductSizeList1() {};
1628// var modelNBUI_ProductSizeList1       = new NBUI_ProductSizeList1();
1629
1630var modelNBUI_ProductSizeList1 = new NBUI_ProductSizeList1();
1631var modelNBUI_ProductSizeList   = new NBUI_ProductSizeList();
1632var modelNBUI_ProductPrice        = new NBUI_ProductPrice();
1633
1634NBUI_ProductSizeList1.prototype.init = function () {
1635    let $sizes = $('.nbf-size-value');
1636    modelNBUI_ProductSizeList.setActive($sizes);
1637    modelNBUI_ProductPrice.init($sizes);
1638}
1639
1640$(document).ready(function () {
1641    modelNBUI_ProductSizeList1.init();
1642})
1643
1644$(window).on('loadproductsevent loadminicart', function () {
1645    modelNBUI_ProductSizeList1.init();
1646})
1647
1648// Obrisati nakon testiranja
1649
1650// $(document).ready(function () {
1651//     modelNBUI_ProductSizeList1.setActive($('.nbf-size-value'));
1652// });
1653//
1654// $(window).on('loadSearchProductsEvent', function() {
1655//     modelNBUI_ProductSizeList1.setActive($('.nb-search-results-wrapper .nbf-size-value'));
1656// });
1657/*
1658/* NB Fajl:'./components/complex/product/product-determine-size/product-determine-size-1/product-determine-size-1.js.'
1659*/$(document).ready(function (){
1660    $(".nbf-product-determine-size-1").on('click', loadModal);
1661    $(".nbf-product-determine-size-1").on('keydown', function (e) {
1662        if (e.key === 'Enter' && e.target === $(".nbf-product-determine-size-1")[0]) {
1663            $(".nbf-product-determine-size-1 div").click();
1664        }
1665    });
1666    if (window.NBAccessibility) {
1667        modelNBAccessibility.closeModalWithKeyboard('.nbf-product-determine-size-1');
1668    }
1669})
1670
1671function loadModal(e){
1672    e.preventDefault()
1673
1674    let blockElement = $(this).closest(".block")
1675    let childBlockWrapper = $("#size_chart_modal_wrapper");
1676    if(childBlockWrapper.hasClass('loaded')){
1677        return;
1678    }
1679
1680    let modelProductSizeChart = new NBProductSizeChart();
1681
1682    let productId             = childBlockWrapper.data('product-id');
1683    let position              = childBlockWrapper.data('position');
1684    let secretKey             = ""; //childBlockWrapper.data('secret-key-for-load-block');
1685    let pageId                = blockElement.data('site-page-id');
1686    let layoutId              = blockElement.data('layout-id');
1687    let blockId               = blockElement.data('block-id');
1688
1689    let params = {
1690        productId : productId,
1691        block : pageId+':'+layoutId+':'+blockId+":"+position+':'+secretKey,
1692    }
1693
1694    let result = modelProductSizeChart.load(params);
1695
1696    if(result.ret.flag === true){
1697        $('.loadblock'+'-'+pageId+'-'+layoutId+'-'+blockId+'-'+position).html(result.ret.html);
1698        childBlockWrapper.addClass('loaded');
1699        $('#determineSizeModal').modal('show');
1700    }
1701}
1702/*
1703/* NB Fajl:'./components/complex/size/size-picker/tab-size-picker/tab-size-picker-1/tab-size-picker-1.js.'
1704*/
1705function NBUI_TabSizePicker1() {};
1706var modelNBUI_TabSizePicker1       = new NBUI_TabSizePicker1();
1707var modelNBUI_ProductSizeList1    = new NBUI_ProductSizeList1();
1708
1709NBUI_TabSizePicker1.prototype.selectSizes = function($sizeField, $element){
1710    $element.each(function (i) {
1711        $(this).find('>span').html($(this).data($sizeField));
1712    });
1713}
1714NBUI_TabSizePicker1.prototype.showSizeIndicator = function($element, $elementIndicator){
1715    if(!$elementIndicator || !$elementIndicator.length){
1716        return false;
1717    }
1718    let lastClass = '';
1719    $element.each(function(){
1720
1721        let message = $(this).data('productsize-indicator-availability-label');
1722        let parentClass = $(this).data('productsize-indicator-color');
1723        let type = $(this).data('productsize-indicator-type');
1724
1725        $(this).click(function(){
1726            if(lastClass !== ''){
1727                $elementIndicator.parent().removeClass(lastClass);
1728            }
1729            $elementIndicator.text(message);
1730            $elementIndicator.parent().addClass(parentClass);
1731            lastClass = parentClass;
1732        })
1733    })
1734
1735}
1736NBUI_TabSizePicker1.prototype.init = function($typeSizeElement, $elementSizeValue, $elementSizeIndicator){
1737
1738    modelNBUI_ProductSizeList1.init();
1739    modelNBUI_TabSizePicker1.showSizeIndicator($('.nbf-tab-size-picker .nbf-size-value'), $elementSizeIndicator);
1740
1741    if($typeSizeElement.length > 0){
1742
1743        if (window.NBAccessibility) {
1744            modelNBAccessibility.clickWithKeyboard($typeSizeElement);
1745        }
1746        $typeSizeElement.click( function() {
1747            var $sizeField = $(this).data('type-size-field');
1748            modelNBUI_TabSizePicker1.selectSizes($sizeField, $elementSizeValue);
1749            $typeSizeElement.removeClass('active');
1750            $(this).addClass('active');
1751        });
1752
1753        $typeSizeElement.each(function (i) {
1754            if($(this).hasClass('active')){
1755
1756                var $sizeField = $(this).data('type-size-field');
1757                if(typeof $sizeField != 'undefined'){
1758                    modelNBUI_TabSizePicker1.selectSizes($sizeField, $elementSizeValue);
1759                }
1760            }
1761        });
1762    }
1763}
1764
1765$(document).ready(function(){
1766    $('.nbf-product').each(function() {
1767        var $product = $(this);
1768        var sizeType = $product.find('.nbf-size-type');
1769        var sizeValue = $product.find('.nbf-size-value');
1770        var sizeIndicator = $product.find('.nbf-product-size-availability-indicator-value');
1771        modelNBUI_TabSizePicker1.init(sizeType, sizeValue, sizeIndicator);
1772    });
1773});
1774
1775$(window).on('loadproductsevent loadSearchProductsEvent nbOpenSearch miniCartOpen loadminicart outfitModalLoaded', function () {
1776    $('.nbf-product').each(function() {
1777        var $product = $(this);
1778        var sizeType = $product.find('.nbf-size-type');
1779        var sizeValue = $product.find('.nbf-size-value');
1780        var sizeIndicator = $product.find('.nbf-product-size-availability-indicator-value');
1781        modelNBUI_TabSizePicker1.init(sizeType, sizeValue, sizeIndicator);
1782    });
1783})
1784
1785/*
1786/* NB Fajl:'./components/complex/product/product-button-with-bubble/product-button-with-bubble-5/product-button-with-bubble-5.js.'
1787*/function NBUI_ProductButtonWithBubble5() {}
1788
1789var modelNBUI_ProductAddToCart  = new NBUI_ProductAddToCart();
1790var modelNBUI_MiniCartOffcanvas = new NBUI_MiniCartOffcanvas();
1791
1792NBUI_ProductButtonWithBubble5.prototype.appendBubbleWrapper = function ($element) {
1793    let $wrapperWhereToAppend = $element.closest('.nb-mini-cart-offcanvas').find('.nbf-wrapper-for-size-picker');
1794    if (!$wrapperWhereToAppend.length) return;
1795
1796    let $bubbleButtons   = $element.find('.nbf-open-bubble');
1797
1798    $bubbleButtons.off('click.nbAppendBubble').on('click.nbAppendBubble', function (e) {
1799        e.preventDefault();
1800        e.stopPropagation();
1801
1802        let $bubbleButton    = $(this);
1803
1804        let quantity = $bubbleButton.closest('.nbf-product-item').find('.nbf-quantity-input').val();
1805
1806        $bubbleButton.closest('.nbf-product-item').find('.nbf-product-bubble .nbf-add-to-cart').attr('data-product-quantity', quantity);
1807
1808
1809        let $wrapperToAppend = $bubbleButton.siblings('.nbf-product-bubble');
1810
1811        if (!$wrapperWhereToAppend.hasClass('active')) {
1812            $wrapperWhereToAppend.empty()
1813                .append($wrapperToAppend.clone(true, true))
1814                .addClass('active');
1815        } else {
1816            $element.append($wrapperToAppend);
1817            $wrapperWhereToAppend.removeClass('active');
1818        }
1819
1820    });
1821};
1822
1823NBUI_ProductButtonWithBubble5.prototype.openBubble = function ($element) {
1824    let $bubbleButtons        = $element.find('.nbf-open-bubble');
1825
1826    $bubbleButtons.off('click.nbOpenBubble').on('click.nbOpenBubble', function () {
1827        let $bubbleButton = $(this);
1828        let $bubbleWrapper = $bubbleButton.closest('.nbf-product-button-with-bubble');
1829
1830        $('.nbf-product-button-with-bubble').removeClass('active');
1831        $bubbleWrapper.toggleClass('active');
1832    });
1833};
1834
1835NBUI_ProductButtonWithBubble5.prototype.closeBubble = function ($element) {
1836
1837    let $bubbleWrapper      = $element.closest('.nb-mini-cart-offcanvas').find('.nbf-wrapper-for-size-picker');
1838    let $closeBubbleButtons = $element.find('.nbf-close-bubble-btn');
1839
1840    $closeBubbleButtons.off('click.nbCloseBubbleBtn').on('click.nbCloseBubbleBtn', function () {
1841
1842        let $closeBubbleBtn = $(this);
1843
1844        if ($bubbleWrapper.length && $bubbleWrapper.hasClass('active')) {
1845            $bubbleWrapper.empty();
1846            $bubbleWrapper.removeClass('active');
1847        }
1848
1849        $closeBubbleBtn.closest('.nbf-product-button-with-bubble').removeClass('active');
1850    });
1851
1852    $(document).off('click.nbDocumentCloseBubbleBtn').on('click.nbDocumentCloseBubbleBtn', function () {
1853        $element.find('.nbf-product-button-with-bubble.active').each(function () {
1854            let $bubbleWrapper = $(this).find('.nbf-bubble-wrapper');
1855            if ($bubbleWrapper.length) $bubbleWrapper.empty();
1856            $(this).removeClass('active');
1857        });
1858    });
1859};
1860
1861NBUI_ProductButtonWithBubble5.prototype.checkQuantity = function(elementQuantity, $btnAddToCart){
1862    let quantity    = elementQuantity.val();
1863    let quantityBtn = $btnAddToCart.attr('data-product-quantity');
1864    if(quantity != quantityBtn){
1865        $btnAddToCart.attr('data-product-quantity', quantity);
1866    }
1867
1868    return true;
1869};
1870
1871NBUI_ProductButtonWithBubble5.prototype.addToCart = function ($element) {
1872    let self = this;
1873
1874    let $btn = $element.find('.nbf-add-to-cart');
1875
1876    $btn.off('click.nbAddToCart').on('click.nbAddToCart', function (e) {
1877        e.preventDefault();
1878
1879        let addToCartBtn = $(this);
1880        let clickedProductSize = addToCartBtn.find('.nbf-size-value.active');
1881        let addToCartBtnCombID = addToCartBtn.attr('data-productsize-combid');
1882        let addToCartBtnSizeName = addToCartBtn.attr('data-productsize-name');
1883        let miniCartType = $('#nb-mini-cart').data('mini-cart-type');
1884        var elementQuantity  = $(this).parents('.nbf-product-item').find('.nbf-quantity-input');
1885
1886        if(elementQuantity.length > 0){
1887            self.checkQuantity(elementQuantity, addToCartBtn);
1888        }
1889
1890        if (addToCartBtnCombID != '-1' && addToCartBtnSizeName != '') {
1891            let addToCart = modelNBUI_ProductAddToCart.addToCart(addToCartBtn);
1892
1893            if (addToCart.flag) {
1894                setTimeout(function () {
1895                    if (addToCart.ret.flag) {
1896                        addToCartBtn.addClass('addingItem');
1897
1898                        modelNBUI_ProductAddToCart.resetButtonText(addToCartBtn);
1899                        modelNBUI_ProductAddToCart.resetSize(clickedProductSize, addToCartBtn);
1900
1901                        setTimeout(function () {
1902                            addToCartBtn.removeClass('addingItem');
1903                            if (miniCartType === '1') {
1904                                openMiniCart();
1905                            } else {
1906                                modelNBUI_MiniCartOffcanvas.reload();
1907                            }
1908                        }, 300);
1909
1910                    } else {
1911                        modelNBUI_ProductAddToCart.resetButton(addToCartBtn);
1912                        modelNBUI_ProductAddToCart.resetSize(clickedProductSize, addToCartBtn);
1913                        nb7_infoError(addToCart.ret.info);
1914                    }
1915                }, 0);
1916            } else {
1917                modelNBUI_ProductAddToCart.errorMesage(addToCartBtn, addToCart.info);
1918            }
1919        } else {
1920            return false;
1921        }
1922    });
1923};
1924
1925NBUI_ProductButtonWithBubble5.prototype.init = function ($element) {
1926    this.addToCart($element);
1927    this.openBubble($element);
1928    this.closeBubble($element);
1929    this.appendBubbleWrapper($element);
1930};
1931/*
1932/* NB Fajl:'./components/complex/product/product-box/product-box-9/product-box-9.js.'
1933*/function NBUI_ProductBox9(){}
1934
1935var modelNBUI_ProductBox9                         = new NBUI_ProductBox9();
1936var modelNBUI_ProductButtonWithBubble5 = new NBUI_ProductButtonWithBubble5();
1937
1938NBUI_ProductBox9.prototype.init = function () {
1939    modelNBUI_ProductButtonWithBubble5.init($('.nbf-product-item'));
1940}
1941
1942$(document).ready(function () {
1943    modelNBUI_ProductBox9.init();
1944})
1945
1946$(window).on('loadminicart loadlastviewedproductevent miniCartOpen', function() {
1947    modelNBUI_ProductBox9.init();
1948});
1949/*
1950/* NB Fajl:'./components/complex/cart/cart-item-change-size/cart-item-change-size-3/cart-item-change-size-3.js.'
1951*/function NBCartItemChangeSize3(){}
1952
1953var modelNBCartItemChangeSize3  = new NBCartItemChangeSize3();
1954var modelNBUICartItemChangeSize = new NBUI_CartItemChangeSize();
1955
1956NBCartItemChangeSize3.prototype.openChangeSizeModal = function(){
1957    let openModalIcon = $(".nbf-cart-item-change-size-2-open-modal");
1958    openModalIcon.each(function () {
1959        $(this).click(function (){
1960
1961            let cartItemChangeSizeElement       = $(this).closest('.nbf-cart-product-item');
1962            let cartProductSizePickerElement    = $('#nb-change-size-modal').closest('.block');
1963
1964            modelNBUICartItemChangeSize.openChangeSizeModal(cartItemChangeSizeElement, cartProductSizePickerElement);
1965        })
1966    })
1967
1968}
1969
1970NBCartItemChangeSize3.prototype.init = function(){
1971    modelNBCartItemChangeSize3.openChangeSizeModal();
1972}
1973
1974$(document).ready(function (){
1975    modelNBCartItemChangeSize3.init();
1976})
1977
1978$(window).on('reloadcartevent loadminicart miniCartOpen', function () {
1979    modelNBCartItemChangeSize3.init();
1980});
1981
1982/*
1983/* NB Fajl:'./components/complex/cart/cart-item-size-picker/cart-item-size-picker-1/cart-item-size-picker-1.js.'
1984*/function NBUI_CartItemSizePicker1(){}
1985
1986var modelNBUI_CartItemSizePicker1 = new NBUI_CartItemSizePicker1();
1987var modelNBUI_CartSizeType = new NBUI_CartSizeType();
1988
1989NBUI_CartItemSizePicker1.prototype.init = function () {
1990    modelNBUI_CartSizeType.init();
1991}
1992
1993$(document).ready(function () {
1994    modelNBUI_CartItemSizePicker1.init();
1995})
1996
1997$(window).on('loadminicart loadlastviewedproductevent miniCartOpen', function() {
1998    modelNBUI_CartItemSizePicker1.init();
1999});
2000/*
2001/* NB Fajl:'./components/complex/cart/mini-cart/cart-box-9/cart-box-9.js.'
2002*/function NBCartBox9(){}
2003var modelNBCartBox9                   = new NBCartBox9();
2004var modelNBUI_MiniCartOffcanvas                 = new NBUI_MiniCartOffcanvas();
2005var modelNBUI_Quantity1                         = new NBUI_Quantity1();
2006
2007NBCartBox9.prototype.changeAmountInit = function () {
2008    $('.nbf-cart-product-item.nb-cart-box-9 .nb-quantity-arrows').off('click').on('click', function (){
2009        setTimeout(()=>{
2010            modelNBUI_MiniCartOffcanvas.changeAmount($(this));
2011        }, 0);
2012    });
2013    $('.nbf-cart-product-item.nb-cart-box-9 .nbf-quantity-input').each(function () {
2014        $(this).on('change', function (){
2015            setTimeout(()=>{
2016                modelNBUI_MiniCartOffcanvas.changeAmount($(this));
2017            }, 0);
2018        });
2019    })
2020}
2021
2022NBCartBox9.prototype.init = function(){
2023    let self = this;
2024
2025    self.changeAmountInit();
2026}
2027
2028$(window).on('loadminicart loadlastviewedproductevent miniCartOpen', function() {
2029    modelNBCartBox9.init();
2030    modelNBUI_Quantity1.init($('.nb-quantity-1.nbf-quantity'));
2031});
2032/*
2033/* NB Fajl:'./static/js/nbjs/models/quickpurchase/NBQuickPurchaseOffcanvas.js.'
2034*/if (!window.NBQuickPurchaseOffcanvas) {
2035    class NBQuickPurchaseOffcanvas extends NBModel {
2036
2037        constructor(){
2038            super();
2039        }
2040
2041        formatLoad = function(params){
2042
2043            var data = {
2044                block       : params.block,
2045                allLib      : params.allLib
2046
2047            }
2048
2049            return data;
2050        };
2051
2052        validateFormLoad = function (params){
2053            return true;
2054
2055            if(typeof params.id == 'undefined' || params.id == -1){
2056                throw new Error("Error, invalid ID");
2057            }
2058
2059
2060        };
2061    }
2062
2063    window.NBQuickPurchaseOffcanvas = NBQuickPurchaseOffcanvas;
2064}
2065
2066/*
2067/* NB Fajl:'./static/js/nbjs/ui.components/quickpurchase/NBUI_QuickPurchaseModal.js.'
2068*/function NBUI_QuickPurchaseModal(){
2069    this.clickedElement = null;
2070}
2071
2072var modelNBUI_QuickPurchaseModal = new NBUI_QuickPurchaseModal();
2073
2074NBUI_QuickPurchaseModal.prototype.reload = function (element = '', blockClass = '', modalId = "", callback = () => {}){
2075
2076    let $blockElement   =  $('.'+blockClass);
2077    let pageId          = $blockElement.data('site-page-id');
2078    let layoutId        = $blockElement.data('layout-id');
2079    let parentBlockId   = $blockElement.data('parent-block-id');
2080    let blockId         = $blockElement.data('block-id');
2081    let position        = $blockElement.data('block-position');
2082    let block    = pageId+":"+layoutId+":"+parentBlockId+":"+position+":"+blockId;
2083
2084    let permalink       = element.data('quick-view-product-permalink');
2085
2086    let params          = {
2087        block       : block,
2088        allLib      : 1
2089    }
2090
2091    let modelNBQuickPurchaseOffcanvas = new NBQuickPurchaseOffcanvas();
2092
2093    modelNBQuickPurchaseOffcanvas.urlLoad = permalink;
2094
2095    setTimeout(()=>{
2096        let result = modelNBQuickPurchaseOffcanvas.load(params);
2097        if(result.flag && result.ret.flag){
2098            $blockElement.replaceWith(result.ret.html);
2099            modelNBUI_QuickPurchaseModal.clickedElement = element;
2100            nb_custom_event_trigger('quickPurchaseModalLoaded');
2101            if($('#'+modalId).length != 0) {
2102                $('#'+modalId).nb7_modal('show');
2103            }
2104        }else{
2105            $blockElement.replaceWith('');
2106        }
2107        callback();
2108    }, 0);
2109
2110}
2111/*
2112/* NB Fajl:'./components/complex/product/product-button-with-modal-size-picker-1/product-button-with-modal-size-picker-1.js.'
2113*/function ProductButtonWithModalSizePicker1(){}
2114var modelProductButtonWithModalSizePicker1                 = new ProductButtonWithModalSizePicker1();
2115var modelNBUI_QuickPurchaseModal                           = new 
2115NBUI_QuickPurchaseModal();
2116var modelNBUI_ProductAddToCart                             = new NBUI_ProductAddToCart();
2117
2118ProductButtonWithModalSizePicker1.prototype.openQuickPurchaseModal = function(){
2119    $(".nbf-product-button-with-modal-size-picker .nbf-add-to-cart").off("click");
2120    $(".nbf-product-button-with-modal-size-picker .nbf-add-to-cart").click(function (){
2121        var addToCartBtnCombID   = $(this).attr('data-product-comb-id');
2122        var addToCartBtnSizeName = $(this).attr('data-product-size-name');
2123
2124        console.log(addToCartBtnCombID);
2125        console.log(addToCartBtnSizeName);
2126
2127        if (addToCartBtnCombID == '-1' && addToCartBtnSizeName == '') {
2128            $(this).addClass('addingItem');
2129            modelNBUI_QuickPurchaseModal.reload($(this), 'nb-product-size-picker-modal-1', 'nb-choose-size-modal');
2130        } else {
2131            modelProductButtonWithModalSizePicker1.addToCart($(this));
2132        }
2133
2134    })
2135}
2136
2137ProductButtonWithModalSizePicker1.prototype.addToCart = function (addToCartBtn) {
2138
2139    var addToCart = modelNBUI_ProductAddToCart.addToCart(addToCartBtn);
2140
2141    if(addToCart.flag){
2142
2143        addToCartBtn.addClass('addingItem');
2144
2145        setTimeout(function (){
2146            if (addToCart.ret.flag) {
2147                modelNBUI_ProductAddToCart.resetButtonText(addToCartBtn);
2148                openMiniCart();
2149            } else {
2150                modelNBUI_ProductAddToCart.resetButton(addToCartBtn);
2151                nb7_infoError(addToCart.ret.info);
2152            }
2153            addToCartBtn.removeClass('addingItem');
2154        },150);
2155    }else{
2156        modelNBUI_ProductAddToCart.errorMesage(addToCartBtn, addToCart.info);
2157        return false;
2158    }
2159
2160}
2161
2162ProductButtonWithModalSizePicker1.prototype.init  = function(){
2163    let self = this;
2164    self.openQuickPurchaseModal();
2165}
2166
2167$(document).ready(function (){
2168    modelProductButtonWithModalSizePicker1.init();
2169})
2170
2171$(window).on('loadproductsevent reloadcartevent loadminicart miniCartOpen loadlastviewedproductevent', function (){
2172    modelProductButtonWithModalSizePicker1.init();
2173})
2174
2175$(window).on('quickPurchaseModalLoaded reloadcartevent',function(){
2176    $(".nbf-product-button-with-modal-size-picker .nbf-add-to-cart").removeClass('addingItem');
2177})
2178
2179
2180
2181
2182/*
2183/* NB Fajl:'./components/complex/cart/mini-cart/pricing-quick-basket-1/pricing-quick-basket-1.js.'
2184*/function NBUI_PricingQuickBasket() {}
2185var modelNBUI_PricingQuickBasket = new NBUI_PricingQuickBasket();
2186
2187NBUI_PricingQuickBasket.prototype.onClickInitLoader = function () {
2188    let $btn = $('.nbf-btn-pricing-quick-basket');
2189
2190    $btn.on('click', function () {
2191        $(this).addClass('addingItem');
2192    });
2193};
2194
2195NBUI_PricingQuickBasket.prototype.init = function () {
2196    this.onClickInitLoader();
2197};
2198
2199$(document).ready(function () {
2200    modelNBUI_PricingQuickBasket.init();
2201});
2202
2203/*
2204/* NB Fajl:'./_blocks/checkout/mini-cart/mini-cart-offcanvas/mini-cart-offcanvas-4/mini-cart-offcanvas-4.js.'
2205*/function NBMiniCartOffcanvas4(){}
2206var modelNBMiniCartOffcanvas4                   = new NBMiniCartOffcanvas4();
2207
2208NBMiniCartOffcanvas4.prototype.reInitSlider = function () {
2209    let $slider = $('.nbf-recommended-product-list-slider-init');
2210
2211    NB7_slider.initSlider($slider);
2212}
2213
2214NBMiniCartOffcanvas4.prototype.init = function(){
2215    let self = this;
2216
2217    self.reInitSlider();
2218}
2219
2220$(document).ready(function (){
2221    modelNBMiniCartOffcanvas4.init()
2222})
2223
2224$(window).on('loadminicart miniCartOpen', function() {
2225    modelNBMiniCartOffcanvas4.init();
2226});
2227/*
2228/* NB Fajl:'./components/complex/form/password/NBShowHidePassword/NBShowHidePassword.js.'
2229*/$(document).ready(function (){
2230    $('.nbf-toggle-password').click(function (){
2231        let $input = $(this).closest('.nb-form-group').find('input');
2232
2233        if ($input.attr('type') === "password") {
2234            $input.attr('type', 'text');
2235            $(this).addClass('visible-password');
2236        } else {
2237            $input.attr('type', 'password');
2238            $(this).removeClass('visible-password');
2239        }
2240    })
2241})
2242
2243/*
2244/* NB Fajl:'./components/complex/form/checkbox/register-privacy-policy-consent-checkbox/register-privacy-policy-consent-checkbox.js.'
2245*/function NBUI_RegisterPrivacyPolicyConsentCheckbox(){}
2246
2247var modelNBUI_RegisterPrivacyPolicyConsentCheckbox = new NBUI_RegisterPrivacyPolicyConsentCheckbox();
2248
2249NBUI_RegisterPrivacyPolicyConsentCheckbox.prototype.checkAll = function () {
2250    let checkAllBtn = $('.nbf-check-all-btn');
2251
2252    if (!checkAllBtn.length) {
2253        return;
2254    }
2255
2256    checkAllBtn.on('click', function () {
2257        let container   = $(this).parent();
2258        let checkboxes  = container.find('input.nbf-form-field[type="checkbox"]:not(:disabled)');
2259
2260        let allChecked  = checkboxes.length && checkboxes.filter(':checked').length === checkboxes.length;
2261
2262        checkboxes.each(function () {
2263            $(this).prop('checked', !allChecked).trigger('change');
2264        });
2265    });
2266};
2267
2268
2269NBUI_RegisterPrivacyPolicyConsentCheckbox.prototype.init = function () {
2270    this.checkAll();
2271}
2272
2273$(document).ready(function () {
2274    modelNBUI_RegisterPrivacyPolicyConsentCheckbox.init();
2275})
2276
2277/*
2278/* NB Fajl:'./components/complex/forms/registration-forms/register-form-1/register-form-1.js.'
2279*///26.06 - KN - Zakomentarisano dok se ne potvrdi /static/js/nbjs/ui.components/user/NBUI_Register.js
2280// function selectGroupCheck(fakeField, ...fields){
2281//
2282//     let checked = true;
2283//     for (let arg of fields) {
2284//         $('#'+arg).closest('.nb-form-check').addClass('hidden');
2285//
2286//         if(!$('#'+arg).attr('checked')){
2287//             checked = false;
2288//         }
2289//     }
2290//
2291//     if(checked){
2292//         $('#'+fakeField).attr('checked',true);
2293//         $('#'+fakeField).change();
2294//     }
2295//
2296//
2297//     $('#'+fakeField).click(function (){
2298//         for (let arg of fields) {
2299//
2300//             if(($('#'+fakeField).is(':checked') && !$('#'+arg).is(':checked')) || (!$('#'+fakeField).is(':checked') && $('#'+arg).is(':checked'))){
2301//                 $('#'+arg).click();
2302//             }
2303//
2304//         }
2305//     });
2306// }
2307//
2308// function registerAction(e){
2309//     e.preventDefault();
2310//
2311//     let form            = $(this);
2312//     let formFields      = form.find('.nb-form-fields-wrapper');
2313//     let submitButton    = form.find('button[type="submit"]');
2314//     submitButton.addClass('active');
2315//
2316//     let modelRegister = new NBRegister();
2317//     modelRegister.urlAdd = form.data('permalink');
2318//
2319//     let alertElement = form.find('.nbf-alert');
2320//
2321//     //1. sakupljanje parametara sa elementa
2322//     let params = form.serializeObject();
2323//
2324//     //2. pozivanje funkcije iz modela
2325//     setTimeout(function (){
2326//         let result = modelRegister.add(params);
2327//
2328//         //3. UI akcije
2329//         submitButton.removeClass('active');
2330//
2331//         if(result.ret.flag === true){
2332//             alertElement.html(result.ret.info);
2333//             alertElement.removeClass('hidden');
2334//             alertElement.removeClass('nb-alert-2-danger');
2335//             alertElement.addClass('nb-alert-2-success');
2336//             submitButton.removeClass('active');
2337//             formFields.hide();
2338//         } else if(result.ret.flag === false){
2339//             alertElement.html(result.ret.info);
2340//             alertElement.removeClass('hidden');
2341//             alertElement.addClass('nb-alert-2-danger');
2342//         } else{
2343//             alertElement.html(result.info);
2344//             alertElement.removeClass('hidden');
2345//             alertElement.addClass('nb-alert-2-danger');
2346//         }
2347//     }, 0);
2348// }
2349// $(document).ready(function() {
2350//
2351//     $(".nbf-register-form").on("submit", registerAction);
2352//
2353//     if($('.nb-reg-checkbox-group-wrapper').length > 0){
2354//         selectGroupCheck('reg_email_checkgroup','reg_sendNewsletter');
2355//         selectGroupCheck('reg_phone_checkgroup','reg_sendSMS');
2356//
2357//         if(!$('#reg_email_checkgroup').is(':checked') && !$('#reg_phone_checkgroup').is(':checked')){
2358//             $('#reg_email_checkgroup, #reg_phone_checkgroup').closest('.nb-form-check').css({'pointerEvents':'none','opacity':'.5'});
2359//         }
2360//     }
2361//     if($('.nb-reg-checkbox-group-wrapper').length > 0){
2362//         selectGroupCheck('reg_page_email_checkgroup','reg_page_sendNewsletter_f');
2363//         selectGroupCheck('reg_page_phone_checkgroup','reg_page_sendSMS_f');
2364//
2365//         if(!$('#reg_page_email_checkgroup').is(':checked') && !$('#reg_page_phone_checkgroup').is(':checked')){
2366//             $('#reg_page_email_checkgroup, #reg_page_phone_checkgroup').closest('.nb-form-check').css({'pointerEvents':'none','opacity':'.5'});
2367//         }
2368//     }
2369//
2370//     $('#reg_sendUserAdditionalData, #reg_callMeOnPhone').click(function (){
2371//         if($(this).is(':checked')){
2372//
2373//             if(!$('#reg_email_checkgroup').is(':checked')){
2374//                 $('#reg_email_checkgroup').click().change();
2375//             }
2376//             if(!$('#reg_phone_checkgroup').is(':checked')){
2377//                 $('#reg_phone_checkgroup').click().change();
2378//             }
2379//             $('#reg_email_checkgroup, #reg_phone_checkgroup').closest('.nb-form-check').css({'pointerEvents':'','opacity':''});
2380//         }
2381//
2382//         if(!$('#reg_sendUserAdditionalData').is(':checked') && !$('#reg_callMeOnPhone').is(':checked')){
2383//             if($('#reg_email_checkgroup').is(':checked')){
2384//                 $('#reg_email_checkgroup').click().change();
2385//             }
2386//             if($('#reg_phone_checkgroup').is(':checked')){
2387//                 $('#reg_phone_checkgroup').click().change();
2388//             }
2389//         }
2390//     })
2391//     $('#reg_page_sendUserAdditionalData_f, #reg_page_callMeOnPhone_f').click(function (){
2392//         if($(this).is(':checked')){
2393//             if(!$('#reg_page_email_checkgroup').is(':checked')){
2394//                 $('#reg_page_email_checkgroup').click().change();
2395//             }
2396//             if(!$('#reg_page_phone_checkgroup').is(':checked')){
2397//                 $('#reg_page_phone_checkgroup').click().change();
2398//             }
2399//             $('#reg_page_email_checkgroup, #reg_page_phone_checkgroup').closest('.nb-form-check').css({'pointerEvents':'','opacity':''});
2400//         }
2401//
2402//         if(!$('#reg_page_sendUserAdditionalData_f').is(':checked') && !$('#reg_page_callMeOnPhone_f').is(':checked')){
2403//             if($('#reg_page_email_checkgroup').is(':checked')){
2404//                 $('#reg_page_email_checkgroup').click().change();
2405//             }
2406//             if($('#reg_page_phone_checkgroup').is(':checked')){
2407//                 $('#reg_page_phone_checkgroup').click().change();
2408//             }
2409//         }
2410//     })
2411// })
2412
2413/*
2414/* NB Fajl:'./static/js/nbjs/ui.components/user/NBUI_Register.js.'
2415*//* NB SHOP JS script
2416 * By NB SHOP & NB SOFT
2417 * www.nbsoft.rs www.nbshop.rs
2418 * NB SOFT Licensed.
2419 */
2420
2421function NBUI_Register(){}
2422
2423var modelNBUI_Register = new NBUI_Register();
2424
2425/*  AKCIJA ZA RELOAD FORME  */
2426NBUI_Register.prototype.changeTypePerson                    = function (typePersonElement = '', suffix = ''){
2427
2428    let $blockElement   = typePersonElement.closest('form').closest('.nbf-registration-form-block'); //forma za registraciju, pa njen roditeljski blok
2429
2430    let modelNBRegister = new NBRegister();
2431
2432    let pageId          = $blockElement.data('site-page-id');
2433    let layoutId        = $blockElement.data('layout-id');
2434    let parentBlockId   = $blockElement.data('parent-block-id');
2435    let blockId         = $blockElement.data('block-id');
2436    let position        = $blockElement.data('block-position');
2437    let typePerson      = typePersonElement.val();
2438
2439    let block           = pageId+":"+layoutId+":"+parentBlockId+":"+position+":"+blockId;
2440
2441    let params          = {
2442        block               : block,
2443        typePerson          : typePerson,
2444        allLib              : -1,
2445        reg_prefixNameField : suffix
2446    }
2447
2448    setTimeout(()=>{
2449        let result          = modelNBRegister.load(params);
2450        if(result.flag && result.ret.flag){
2451            $blockElement.replaceWith(result.ret.html);
2452            modelNBUI_Register.init();
2453            nb_custom_event_trigger('reinitRegisterForm');
2454            nb_custom_event_trigger('reInitCaptcha');
2455            if(typeof initNB7AutocompleteEvents === "function"){
2456                initNB7AutocompleteEvents();
2457            }
2458        }else{
2459            $blockElement.replaceWith('');
2460        }
2461    }, 0);
2462
2463}
2464
2465/*  AKCIJA ZA REGISTRACIJU  */
2466NBUI_Register.prototype.registerAction                      = function (e){
2467    e.preventDefault();
2468
2469    let form                = $(this);
2470    let formFields          = form.find('.nb-form-fields-wrapper');
2471    let formFieldsTitle     = form.find('.nb-register-title');
2472    let submitButton        = form.find('button[type="submit"]');
2473    let captchaDivGoogleV2  = form.find('.g-recaptcha')[0];
2474    submitButton.addClass('active');
2475
2476    let modelNBRegister     = new NBRegister();
2477    modelNBRegister.urlAdd  = form.data('permalink');
2478    let alertElement        = form.find('.nbf-alert');
2479
2480    //1. sakupljanje parametara sa elementa
2481    let params              = form.serializeObject();
2482
2483    //2. pozivanje funkcije iz modela
2484    setTimeout(function (){
2485        //3. UI akcije
2486        submitButton.removeClass('active');
2487
2488        let result          = modelNBRegister.add(params);
2489        if(result.ret.flag === true){
2490            alertElement.html(result.ret.info);
2491            alertElement.removeClass('hidden');
2492            alertElement.removeClass('nb-alert-2-danger');
2493            alertElement.addClass('nb-alert-2-success');
2494            submitButton.removeClass('active');
2495            formFields.hide();
2496            if(formFieldsTitle.length !== 0) {
2497                formFieldsTitle.hide();
2498            }
2499        } else if(result.ret.flag === false){
2500            alertElement.html(result.ret.info);
2501            alertElement.removeClass('hidden');
2502            alertElement.addClass('nb-alert-2-danger');
2503        } else{
2504            alertElement.html(result.info);
2505            alertElement.removeClass('hidden');
2506            alertElement.addClass('nb-alert-2-danger');
2507        }
2508        if(captchaType === "NB_RECAPTCHA_GOOGLE"){
2509            grecaptcha.reset(captchaDivGoogleV2);
2510        }
2511        if(captchaType === "NB_HCAPTCHA"){
2512            hcaptcha.reset(window.hCaptchaRegisterForm1WidgetId);
2513        }
2514    }, 0);
2515}
2516
2517/*  CEKIRANJE DODATNIH PODATAKA */
2518NBUI_Register.prototype.checkAdditionalDataByMainCheckbox   = function (){
2519    let element                 = $(this);
2520    let form                    = element.closest('form');
2521    let additionalCheckboxes    = form.find('#reg_page_email_checkgroup, #reg_page_phone_checkgroup, #reg_email_checkgroup, #reg_phone_checkgroup');
2522
2523    //ukoliko je element cekiran; cekiraj sve ukoliko nije
2524    if(element.is(':checked')){
2525        additionalCheckboxes.prop('checked', true);
2526        additionalCheckboxes.closest('.nb-form-check').css({'pointerEvents':'','opacity':''});
2527    }
2528
2529    //ukoliko su checkboxovi za sendUserAdditionalData i callMeOnPhone (klasa nbf-register-additional-data-checkbox) oba odcekirana; odcekiraj sve ostale
2530    if (form.find('input.nbf-register-additional-data-checkbox[type="checkbox"]:checked').length === 0) {
2531        additionalCheckboxes.prop('checked', false);
2532    }
2533
2534    if(additionalCheckboxes.filter(':checked').length === 0){
2535        additionalCheckboxes.closest('.nb-form-check').css({'pointerEvents':'none','opacity':'.5'});
2536    }
2537}
2538
2539NBUI_Register.prototype.checkAdditionalDataInit             = function (){
2540    if($('.nb-reg-checkbox-group-wrapper').length > 0){
2541        let fakeFieldsEmail = $('#reg_email_checkgroup, #reg_page_email_checkgroup');
2542        let fakeFieldsPhone = $('#reg_phone_checkgroup, #reg_page_phone_checkgroup');
2543        let fakeFields      = fakeFieldsEmail.add(fakeFieldsPhone);
2544
2545        this.selectGroupCheck(fakeFieldsEmail,'reg_sendNewsletter');
2546        this.selectGroupCheck(fakeFieldsPhone,'reg_sendSMS');
2547
2548        if(fakeFieldsEmail.filter(':checked').length === 0 && fakeFieldsPhone.filter(':checked').length === 0){
2549            fakeFields.closest('.nb-form-check').css({'pointerEvents':'none','opacity':'.5'});
2550        }
2551    }
2552}
2553
2554NBUI_Register.prototype.selectGroupCheck                    = function (fakeFields, ...fields){
2555    let checked = fields.every(arg => {
2556        $('#'+arg).closest('.nb-form-check').addClass('hidden');
2557        return $('#'+arg).is(':checked');
2558    });
2559
2560    if (checked) {
2561        $('#' + fakeField).prop('checked', true).change();
2562    }
2563
2564    fakeFields.on('click', function () {
2565        const isFakeChecked = $(this).is(':checked');
2566        fields.forEach(arg => {
2567            const isFieldChecked = $('#'+arg).is(':checked');
2568            if ((isFakeChecked && !isFieldChecked) || (!isFakeChecked && isFieldChecked)) {
2569                $('#'+arg).click();
2570            }
2571        });
2572    });
2573}
2574
2575/*  PROVERA DA LI JE ZAPOCET PROCES REGISTRACIJE  */
2576//akcija za proveru da li je zapocet proces registracije sa ovim mejlom
2577NBUI_Register.prototype.checkEmailExistsForRegistration     = function (){
2578    var modelNBRegister = new NBRegister();
2579
2580    let element = $(this);
2581    let email   = $.trim(element.val());
2582
2583    modelNBRegister.urlCheck = element.data('remote-url');
2584
2585    //1. sakupljanje parametara sa elementa
2586    var params = {
2587        email         : email
2588    }
2589
2590    //2. pozivanje funkcije iz modela
2591    var result = modelNBRegister.check(params);
2592
2593    //samo ukoliko je zapocet proces registracije; ta info se dobija ako imamo data u rezultatu
2594    if(result.ret.flag === false && result.ret.data != null){
2595        //3. UI komponenta
2596        NBUI_Register.prototype.showFinishRegistrationBootbox(element);
2597    }
2598}
2599
2600//otvaranje bootbox-a sa porukom za opciju zavrsavanja procesa registracije
2601NBUI_Register.prototype.showFinishRegistrationBootbox       = function (element){
2602    let question    = element.data('message-label')
2603    let messageYes  = element.data('confirm-label')
2604    let messageNo   = element.data('cancel-label')
2605
2606    nb7ConfirmDialog(question, ()=>{
2607        this.finishRegistration(element);
2608    }, messageYes, messageNo);
2609}
2610
2611//akcija za nastavak registracije ukoliko je vec zapocet proces sa tim mejlom
2612NBUI_Register.prototype.finishRegistration                  = function (element){
2613    var modelNBRegister = new NBRegister();
2614
2615    let email   = $.trim(element.val());
2616    modelNBRegister.urlSend = element.data('remote-url');
2617
2618    //1. sakupljanje parametara sa elementa
2619    var params = {
2620        email         : email
2621    }
2622
2623    //2. pozivanje funkcije iz modela
2624    var result = modelNBRegister.send(params);
2625
2626    if(result.ret.flag === true){
2627        //3. UI komponenta
2628        nb7_info(result.ret.info);
2629        location.reload();
2630
2631    }else if(result.ret.flag === false){
2632        nb7_infoError(result.ret.info);
2633    } else{
2634        nb7_infoError(result.info);
2635    }
2636}
2637
2638/*  INICIJALIZACIJA */
2639NBUI_Register.prototype.init                                = function (){
2640    //registracija korisnika
2641    $(".nbf-register-form").on('submit', this.registerAction);
2642
2643    //cekiranje dodatnih podataka
2644    this.checkAdditionalDataInit()
2645    $(".nbf-register-additional-data-checkbox").on('click', this.checkAdditionalDataByMainCheckbox);
2646
2647    //bootbox za zapocet proces registracije
2648    $(".nbf-register-email").focusout(this.checkEmailExistsForRegistration);
2649}
2650
2651$(document).ready(function (){
2652    modelNBUI_Register.init();
2653});
2654/*
2655/* NB Fajl:'./components/complex/product/product-size-list/product-size-list-5/product-size-list-5.js.'
2656*/function NBUI_ProductSizeList5(){}
2657
2658var modelNBUI_ProductSizeList5 = new NBUI_ProductSizeList5();
2659var modelNBUI_ProductSizeList   = new NBUI_ProductSizeList();
2660var modelNBUI_ProductPrice        = new NBUI_ProductPrice();
2661
2662NBUI_ProductSizeList5.prototype.init = function () {
2663    let $sizes = $('.nbf-size-value');
2664    modelNBUI_ProductSizeList.setActive($sizes);
2665    modelNBUI_ProductPrice.init($sizes);
2666}
2667
2668$(document).ready(function () {
2669    modelNBUI_ProductSizeList5.init();
2670})
2671
2672$(window).on('loadproductsevent', function () {
2673    modelNBUI_ProductSizeList5.init();
2674})
2675/*
2676/* NB Fajl:'./components/complex/size/size-picker/tab-size-picker/tab-size-picker-3/tab-size-picker-3.js.'
2677*/
2678function NBUI_TabSizePicker3() {};
2679var modelNBUI_TabSizePicker3       = new NBUI_TabSizePicker3();
2680var modelNBUI_ProductSizeList   = new NBUI_ProductSizeList();
2681var modelNBUI_ProductPrice        = new NBUI_ProductPrice();
2682
2683NBUI_TabSizePicker3.prototype.selectSizes = function($sizeField, $element){
2684    $element.each(function (i) {
2685        $(this).find('>span').html($(this).data($sizeField));
2686    });
2687
2688    let selectedSize = $('.nbf-selected-size .nbf-selected-size-value');
2689
2690    if(selectedSize.length !== 0) {
2691        $element.each(function (i) {
2692            if($(this).hasClass('active')) {
2693                selectedSize.html($(this).find('.nbf-size-value-span').text());
2694                return false;
2695            }
2696        });
2697    }
2698}
2699NBUI_TabSizePicker3.prototype.showSizeIndicator = function($element, $elementIndicator){
2700    if(!$elementIndicator || !$elementIndicator.length){
2701        return false;
2702    }
2703    let lastClass = '';
2704    $element.each(function(){
2705
2706        let message = $(this).data('productsize-indicator-availability-label');
2707        let parentClass = $(this).data('productsize-indicator-color');
2708
2709        $(this).click(function(){
2710            if(lastClass !== ''){
2711                $elementIndicator.parent().removeClass(lastClass);
2712            }
2713            $elementIndicator.text(message);
2714            $elementIndicator.parent().addClass(parentClass);
2715            lastClass = parentClass;
2716        })
2717    })
2718
2719}
2720NBUI_TabSizePicker3.prototype.init = function($typeSizeElement, $elementSizeValue, $elementSizeIndicator){
2721
2722    modelNBUI_ProductSizeList.setActive($('.nbf-tab-size-picker .nbf-size-value'));
2723    modelNBUI_ProductPrice.init($('.nbf-tab-size-picker .nbf-size-value'));
2724    modelNBUI_TabSizePicker3.showSizeIndicator($('.nbf-tab-size-picker .nbf-size-value'), $elementSizeIndicator);
2725
2726    if($typeSizeElement.length > 0){
2727
2728        if (window.NBAccessibility) {
2729            modelNBAccessibility.clickWithKeyboard($typeSizeElement);
2730        }
2731        $typeSizeElement.click( function() {
2732            var $sizeField = $(this).data('type-size-field');
2733            modelNBUI_TabSizePicker3.selectSizes($sizeField, $elementSizeValue);
2734            $typeSizeElement.removeClass('active');
2735            $(this).addClass('active');
2736        });
2737
2738        $typeSizeElement.each(function (i) {
2739            if($(this).hasClass('active')){
2740
2741                var $sizeField = $(this).data('type-size-field');
2742                if(typeof $sizeField != 'undefined'){
2743                    modelNBUI_TabSizePicker3.selectSizes($sizeField, $elementSizeValue);
2744                }
2745            }
2746        });
2747    }
2748}
2749
2750$(document).ready(function(){
2751    $('.nbf-product').each(function() {
2752        var $product = $(this);
2753        var sizeType = $product.find('.nbf-size-type');
2754        var sizeValue = $product.find('.nbf-size-value');
2755        var sizeIndicator = $product.find('.nbf-product-size-availability-indicator-value');
2756        modelNBUI_TabSizePicker3.init(sizeType, sizeValue, sizeIndicator);
2757    });
2758});
2759
2760$(window).on('loadproductsevent loadSearchProductsEvent nbOpenSearch miniCartOpen loadminicart quickPurchaseModalLoaded', function () {
2761    $('.nbf-product').each(function() {
2762        var $product = $(this);
2763        var sizeType = $product.find('.nbf-size-type');
2764        var sizeValue = $product.find('.nbf-size-value');
2765        var sizeIndicator = $product.find('.nbf-product-size-availability-indicator-value');
2766        modelNBUI_TabSizePicker3.init(sizeType, sizeValue, sizeIndicator);
2767    });
2768})
2769
2770/*
2771/* NB Fajl:'./components/complex/product/product-box/product-box-14/product-box-14.js.'
2772*/
2773function modelNBUI_ProductBox14() {};
2774
2775var modelmodelNBUI_ProductBox14 = new modelNBUI_ProductBox14();
2776var modelNBUI_ProductAddToCart= new NBUI_ProductAddToCart();
2777
2778modelNBUI_ProductBox14.prototype.init = function () {
2779
2780    const $productElement = $('.nbf-product-box-choose-size');
2781
2782    modelmodelNBUI_ProductBox14.addToCart($productElement);
2783    modelmodelNBUI_ProductBox14.changeBtnText();
2784
2785}
2786
2787modelNBUI_ProductBox14.prototype.changeBtnText = function(){
2788    var addToCartBtn = $('.nbf-product-box-choose-size .nbf-add-to-cart');
2789    var sizes = $('.nbf-product-box-choose-size .nbf-size-value');
2790    var addToCartBtnText = addToCartBtn.attr('data-btn-text-addtocart');
2791
2792    sizes.click(function () {
2793        addToCartBtn.text(addToCartBtnText);
2794    })
2795}
2796
2797modelNBUI_ProductBox14.prototype.addToCart = function ($productElement) {
2798
2799    var $addToCartBtn = $productElement.find('.nbf-add-to-cart');
2800
2801    $addToCartBtn.off("click");
2802
2803    $addToCartBtn.click(function (e) {
2804
2805        var addToCartBtn = $(this);
2806        var addToCartBtnCombID   = addToCartBtn.attr('data-product-comb-id');
2807        var addToCartBtnSizeName = addToCartBtn.attr('data-product-size-name');
2808        var addToCartBtnChooseSizeText = addToCartBtn.attr('data-btn-text-select-size');
2809        var addToCartBtnText = addToCartBtn.attr('data-btn-text-addtocart');
2810
2811        if (modelNBUI_QuickPurchaseModal.clickedElement.hasClass('nbf-bundle-choose-product-btn') && addToCartBtnCombID != '-1' && addToCartBtnSizeName != '') {
2812
2813            let addToCartBtnProductId     = addToCartBtn.attr('data-product-id');
2814            let addToCartBtnProductCombId = addToCartBtn.attr('data-product-comb-id');
2815            let addToCartBtnProductPrice  = addToCartBtn.attr('data-product-price');
2816            let selectedSizeValue         = addToCartBtn.attr('data-product-size-name');
2817            let selectedSize              = modelNBUI_QuickPurchaseModal.clickedElement.closest('.nbf-product-box').find('.nbf-selected-size');
2818
2819            selectedSize.text(selectedSizeValue);
2820            modelNBUI_QuickPurchaseModal.clickedElement.attr('data-product-id', addToCartBtnProductId);
2821            modelNBUI_QuickPurchaseModal.clickedElement.attr('data-product-combinationcode', addToCartBtnProductCombId);
2822            modelNBUI_QuickPurchaseModal.clickedElement.attr('data-product-price', addToCartBtnProductPrice);
2823
2824            $productElement.closest('.modal').nb7_modal('hide');
2825
2826            modelNBUI_ActionDetail.showSelectedProduct(modelNBUI_QuickPurchaseModal.clickedElement);
2827
2828        } else {
2829            addToCartBtn.text(addToCartBtnText);
2830
2831            if (addToCartBtnCombID != '-1' && addToCartBtnSizeName != '') {
2832
2833                var addToCart = modelNBUI_ProductAddToCart.addToCart(addToCartBtn);
2834
2835                if(addToCart.flag){
2836
2837                    addToCartBtn.addClass('addingItem');
2838
2839                    setTimeout(function (){
2840                        if (addToCart.ret.flag) {
2841
2842                            modelNBUI_ProductAddToCart.resetButtonText(addToCartBtn);
2843
2844                            $productElement.closest('.modal').nb7_modal('hide');
2845                            openMiniCart();
2846
2847                        } else {
2848
2849                            modelNBUI_ProductAddToCart.resetButton(addToCartBtn);
2850
2851                            nb7_infoError(addToCart.ret.info);
2852                        }
2853                        addToCartBtn.removeClass('addingItem');
2854                    },150);
2855                }else{
2856                    modelNBUI_ProductAddToCart.errorMesage(addToCartBtn, addToCart.info);
2857                    return false;
2858                }
2859            } else {
2860                addToCartBtn.text(addToCartBtnChooseSizeText);
2861            }
2862        }
2863
2864    });
2865}
2866
2867$(document).ready(function () {
2868    modelmodelNBUI_ProductBox14.init();
2869})
2870
2871$(window).on('quickPurchaseModalLoaded', function(){
2872    modelmodelNBUI_ProductBox14.init();
2873})
2874
2875
2876/*
2877/* NB Fajl:'./components/complex/user/mandatory-login/mandatory-login-1/mandatory-login-1.js.'
2878*/$(document).ready(function () {
2879    $("#btnMandatoryLogin").on('click', function () {
2880
2881        if (NB7.isActiveCI) {
2882            $("#nb_mandatory_login_modal_1").modal('hide')
2883            ci_login();
2884        }
2885        else {
2886            let loginModal = $('#loginModal')
2887            //ako ima modal prikazi modal
2888            if (loginModal.length > 0) {
2889                $("#nb_mandatory_login_modal_1").modal('hide')
2890                loginModal.nb7_modal('show');
2891            }
2892            //ako nema modal redirektuj na login
2893            else {
2894                window.location.href = $("#btnMandatoryLogin").data('permalink-login');
2895            }
2896        }
2897    })
2898})
2899/*
2900/* NB Fajl:'./components/complex/user/mandatory-login/mandatory-register-1/mandatory-register-1.js.'
2901*/$(document).ready(function () {
2902    $("#btnMandatoryRegister").on('click', function (e) {
2903
2904        if (NB7.isActiveCI) {
2905            $("#nb_mandatory_login_modal_1").modal('hide')
2906            ci_register(e);
2907        }
2908        else {
2909            let registerModal = $('#registrationModal')
2910            //ako ima modal prikazi modal
2911            if (registerModal.length > 0) {
2912                $("#nb_mandatory_login_modal_1").modal('hide')
2913                registerModal.nb7_modal('show');
2914            }
2915            //ako nema modal redirektuj na register
2916            else {
2917                window.location.href = $("#btnMandatoryRegister").data('permalink-register');
2918            }
2919        }
2920    })
2921})
2922/*
2923/* NB Fajl:'./nbthemes/nbshop_vulkani/js/nb7.custom.js.'
2924*/function handleMobileLinksDropdown() {
2925    if($(window).width() <= 991) {
2926        $(".nbf-main-navigation").addClass("enable-mobile-links");
2927    }
2928}
2929
2930function handleProductNotAvailable() {
2931
2932    const notAvailableBlock = $(".nb-product-available-notification-link .nb-notify-about-availability");
2933
2934    if(typeof notAvailableBlock === "undefined" || notAvailableBlock.length === 0) return;
2935
2936    notAvailableBlock.on("click", function (e) {
2937        const $link = $(this).find(".nbf-notify-about-availability-link");
2938
2939        if ($(e.target).closest($link).length) {
2940            return;
2941        }
2942
2943        $link[0].click();
2944    });
2945
2946}
2947
2948function handlePaymentAccordionsOnMobile() {
2949    let paymentAccordionContent = $(".tp-cart .accordion-collapse[data-bs-parent='#paymentOptions']")
2950    let paymentAccordionHeading = $(".nb-payment-method-options-list-2 .nb-accordion-item .nb-accordion-button")
2951
2952    if($(window).width() <= 576) {
2953        setTimeout(function () {
2954            paymentAccordionHeading.removeClass('collapsed')
2955            paymentAccordionContent.addClass('show')
2956        }, 1)
2957    }
2958
2959}
2960
2961$(document).ready(function () {
2962    handleMobileLinksDropdown();
2963    handleProductNotAvailable();
2964    handlePaymentAccordionsOnMobile();
2965})
2966
2967if (typeof window.NBUI_HowToBuyBanner1 !== 'undefined') {
2968    NBUI_HowToBuyBanner1.prototype.nbCloseSideBar = function () {
2969        let $sideBar = $('.nb-how-to-buy-banner-1');
2970        let $class = 'nb-closed'
2971
2972        $sideBar.each(function () {
2973            let $this = $(this);
2974            let $btn = $(this).find('.nbf-toggle-sidebar');
2975
2976            $btn.on('click',function () {
2977                if($this.hasClass($class)){
2978                    $this.removeClass($class);
2979                }else{
2980                    $this.addClass($class);
2981                }
2982            })
2983        })
2984    };
2985}

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.