PageSourceSearch

https://www.buzzsneakers.sk/nb-public/themes/nbshop5_v5_8/_blocks/plugins/customer_identity/ci_function.js

js buzzsneakers.sk collected 2026-10-06 20:00:04 UTC 111,054 bytes, 3,174 lines download raw bytes

1function ci_addLog(typeAction, type, communicationData){
2
3    let url = ci_addLog_url;
4
5    let data = {
6        "typeAction": typeAction,
7        "type": type,
8        "communicationData": communicationData,
9    };
10
11    $.ajax({
12        type: 'POST',
13        url: url,
14        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
15        data: data,
16        dataType: 'json',
17        success: function(response) {
18
19        }
20    });
21}
22
23function ci_gigyaLiseners(isSsoInstance){
24    console.log('gigya EventHandlers')
25
26    if(typeof isSsoInstance === "undefined"){
27        isSsoInstance = 0;
28    }
29
30    if(isSsoInstance == 1){
31
32        gigya.accounts.addEventHandlers({
33            onLogin: function() {
34                gigya.sso.continue();
35            }
36        })
37
38        gigya.hasSession().then(function(sessionExist) {
39            if(sessionExist) {
40                gigya.sso.continue();
41            } else {
42                showLogin();
43            }
44        })
45
46    } else {
47
48        gigya.accounts.addEventHandlers({
49            onLogin: function(event) {
50
51                $("#nav-user-ci .fa-spinner").removeClass('hidden');
52                $(".nav-main-useractions .login-btn .fa-spinner, .mobile-menu-useractions .login-btn .fa-spinner").removeClass('hidden');
53
54                var uid = event.UID
55
56                gigya.accounts.getJWT({
57                    callback: function(response){
58                        if (response.errorCode === 0) {//uspesno je ulogovan!
59
60                            var jwtToken = response.id_token;
61
62                            localStorage.setItem("ci_jwtToken", jwtToken);
63
64                            let userInfo = ci_callOnLogin(uid, jwtToken)
65
66                            nbshopJS.CustomEventTrigger('LoginEvent', { userInfo: userInfo, event_id: generateEventId() });
67
68                        } else {
69                            ci_addLog('gigya.accounts.getJWT', 'response', JSON.stringify(response));
70                            console.log("Došlo je do pogreške pri preuzimanju JWT tokena: " + response.errorMessage);
71                        }
72
73
74                    }
75                });
76                nbshopJS.CustomEventTrigger('loginUserNew');
77                //nbshopJS.CustomEventTrigger('registerUserSuccess');
78            }
79        });
80
81
82
83
84        if(nb_active_page_url.indexOf('sbapply=1') > -1){
85            gigya.hasSession().then(function(sessionExist) {
86                if(sessionExist) {
87                    gigya.accounts.getAccountInfo({ callback: ci_showSportAndBonusModal });
88                }
89            })
90        }
91
92        function ci_showSportAndBonusModal(response){
93            var prefix = ci_prefix;
94
95            // var show = true;
96            var show = false;
97
98            if(response.hasOwnProperty('errorCode') && response.errorCode == 0) {
99
100                if(!response.hasOwnProperty('data')){
101                    show = true;
102                } else {
103                    if(response.data.hasOwnProperty('employee') && response.data.employee.hasOwnProperty('isCompanyEmployee') && response.data.employee.isCompanyEmployee == 1){
104                        show = false;
105                    } else {
106                        if(!response.data.hasOwnProperty('loyalty')){
107                            show = true;
108                        } else {
109                            if(!response.data.loyalty.hasOwnProperty('sportAndBonus')){
110                                show = true;
111                            } else {
112                                if(!response.data.loyalty.sportAndBonus.hasOwnProperty('cardNumber')){
113                                    show = true;
114                                } else {
115                                    if(response.data.loyalty.sportAndBonus.cardNumber == ''){
116                                        show = true;
117                                    }
118                                }
119                            }
120                        }
121                    }
122                }
123
124            }
125            if(show){
126                ciShowScreenSet.gigyaApplyForLoyaltyCardScreen(prefix+'-ProfileUpdate', 'gigya-apply-for-loyalty-card-screen', 'ci_modal', '', 'yes');
127            }
128        }
129    }
130
131}
132
133function ci_login(e){
134    //$('#ci_modal_1').modal('show');
135    var ssName = ci_register_ssName;
136    gigya.apiKey = ci_centralApi;
137
138    ciShowScreenSet.gigyaLoginScreen(ssName, 'gigya-login-screen', 'ci_modal');
139
140
141    return false;
142}
143
144function ci_register(e){
145    e.preventDefault();
146    var ssName = ci_register_ssName;
147    ciShowScreenSet.gigyaRegisterScreen(ssName, 'gigya-register-screen', 'ci_modal');
148    nbshopJS.CustomEventTrigger('openCIRegistrationModal');
149}
150
151function ci_logout(e){
152    e.preventDefault();
153    gigya.accounts.logout({callback: ci_logoutCallback});
154    return false;
155}
156
157function ci_logoutAjax(){
158    $.ajax({
159        type: "POST",
160        url: ci_logoutAjax_url, //definisano u linku
161        data: {
162            task: 'ci_logout_ajax', //definisano u linku
163            ajax:'yes'
164        },
165        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
166        dataType: 'json',
167        success: function(ret) {
168            location.reload();
169        }
170    });
171}
172
173function ci_removeMarkedForDeletion(){
174    var params =  {
175        data: {
176            deletion: {
177                isMarkedForDeletion: false
178            }
179        }
180    }
181
182    params.callback = function (response){
183        ci_addLog('ci_removeMarkedForDeletion - response', 'response', JSON.stringify(response));
184        ci_updateUserData('remove_deletion');
185        location.reload();
186    }
187
188    ci_addLog('ci_removeMarkedForDeletion - request', 'request', JSON.stringify(params));
189
190    gigya.accounts.setAccountInfo(params);
191}
192
193function ci_updateUserData(type){
194    gigya.accounts.getAccountInfo({
195        callback: function (response){
196            if(response.errorCode != 0){
197                ci_addLog('ci_updateUserData ['+type+']', 'response', JSON.stringify(response));
198            }
199            ci_callOnLogin(response.UID, '', type);
200        }
201    });
202}
203
204function ci_callOnLogin(uid, jwtToken, type){
205
206    let loader = $('#customer_identity_layout_modal .screen-set-loader');
207
208    var data = {
209        task: 'ci_onlogin_ajax',
210        ajax: 'yes',
211        uid: uid,
212        jwtToken: jwtToken,
213        type: type
214    };
215
216    let userInfo = false;
217
218    var url = ci_regUrl;
219    $.ajax({
220        type: 'POST',
221        url: url,
222        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
223        data: data,
224        dataType: 'json',
225        async: false,
226        success: function(response) {
227
228            userInfo = {
229                email: response.email,
230                firstName: response.firstname,
231                lastName: response.lastname
232            }
233
234            if(jwtToken != ''){
235                // $("#nav-user-ci").html(response.html);
236                localStorage.removeItem('ci_initOfLogin');
237
238                var ci_initOfRegister = localStorage.getItem('ci_initOfRegister')
239
240                if(typeof ci_initOfRegister !== "undefined" && ci_initOfRegister != null && ci_initOfRegister != ""){
241
242                    if(ci_initOfRegister.indexOf('?') > -1){
243                        redirectUrl = ci_initOfRegister+'&sbapply=1';
244                    } else {
245                        redirectUrl = ci_initOfRegister+'?sbapply=1';
246                    }
247
248                    var evt = new CustomEvent('registerUserSuccess', { detail: '' || true });
249                    window.dispatchEvent(evt);
250
251                    nbshopJS.CustomEventTrigger('RegisterEvent', { userInfo: userInfo, event_id: generateEventId() });
252
253                    localStorage.removeItem('ci_initOfRegister');
254                    location.href = redirectUrl;
255                } else {
256                    location.reload();
257                }
258
259            }
260
261            var ssName = ci_profileUpdate_ssName;
262            ciShowScreenSet.gigyaSubscribeWithEmailForLoggedinUserScreen(ssName, 'gigya-subscribe-with-email-for-loggedin-user', 'newsletter-ci', '', 'yes')
263
264        },
265        error: function (xhr, ajaxOptions, thrownError) {
266            ci_addLog('ci_callOnLogin', 'response', JSON.stringify(xhr));
267        }
268    });
269
270    return userInfo;
271
272}
273
274function ci_showApplyForSportAndBonus(){
275    var prefix = ci_prefix;
276    ciShowScreenSet.gigyaApplyForLoyaltyCardScreen(prefix+'-ProfileUpdate', 'gigya-apply-for-loyalty-card-screen', 'ci_modal', '', 'yes');
277}
278
279function ci_showSS(ssName, ssId, id, redirectUrl, ssCiVrfy) {
280
281    var ssFunction = {
282        'gigya-communication-screen': function () {
283            ciShowScreenSet.gigyaCommunicationScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
284        },
285        'gigya-my-family-screen': function () {
286            ciShowScreenSet.gigyaMyFamilyScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
287        },
288        'gigya-update-profile-screen': function () {
289            ciShowScreenSet.gigyaUpdateProfileScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
290        },
291        'gigya-my-favorites-screen': function () {
292            ciShowScreenSet.gigyaMyFavoritesScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
293        },
294        'gigya-change-password-screen': function () {
295            ciShowScreenSet.gigyaChangePasswordScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
296        },
297        'gigya-register-screen': function () {
298            ciShowScreenSet.gigyaRegisterScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
299        },
300        'gigya-apply-for-loyalty-card-screen': function () {
301            ciShowScreenSet.gigyaApplyForLoyaltyCardScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
302        },
303        'gigya-change-email-screen': function () {
304            ciShowScreenSet.gigyaChangeEmailScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
305        },
306        'gigya-login-screen': function () {
307            ciShowScreenSet.gigyaLoginScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
308        },
309        'gigya-reset-password-screen': function () {
310            ciShowScreenSet.gigyaResetPasswordScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
311        },
312        'gigya-request-deletion-screen': function () {
313            ciShowScreenSet.gigyaRequestDeletionScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
314        },
315        'gigya-subscribe-with-email-screen': function () {
316            ciShowScreenSet.gigyaSubscribeWithEmailScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
317        },
318        'gigya-subscribe-with-email-for-loggedin-user': function () {
319            ciShowScreenSet.gigyaSubscribeWithEmailForLoggedinUserScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
320        },
321        'gigya-verification-link-expired-screen' : function () {
322            ciShowScreenSet.gigyaVerificationLinkExpiredScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
323        },
324        'gigya-forgot-password-screen' : function () {
325            ciShowScreenSet.gigyaForgotPasswordScreen(ssName, ssId, id, redirectUrl, ssCiVrfy);
326        },
327
328    };
329
330    return ssFunction[ssId]();
331}
332
333function ci_showScreenSet(data) {
334
335    nbshopJS.CustomEventTrigger(data.startScreen);
336
337    gigya.accounts.showScreenSet(data);
338
339}
340
341function ci_publicVerification(verify) {
342    if(verify == 'yes'){
343
344        var params = {
345            callback: function (response){
346                var ci_jwtToken = localStorage.getItem('ci_jwtToken');
347
348                if(!response.hasOwnProperty('errorCode') || response.errorCode != 0){ //2.
349                    ci_logoutUser(nb_site_url);
350                } else if(ci_jwtToken == null){
351                    ci_logoutUser(nb_site_url);
352                }
353            }
354        }
355
356        gigya.accounts.session.verify(params);
357
358    }
359}
360
361function ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, onBeforeScreenLoad, onAfterScreenLoad, onAfterSubmit, onError) {
362
363    if((typeof gigya == "undefined")) {
364        ci_addLog('gigya undefined', 'response', JSON.stringify(event));
365    }
366
367    if(!containerID){
368        containerID = 'ci-screen-sets';
369    }
370
371    var jsSSPrefixParam = gigya.getUrlParam('ssPrefix');
372    if(typeof jsSSPrefixParam !== "undefined" && jsSSPrefixParam != null){
373        screenSetName = screenSetName.replace("SV-", jsSSPrefixParam+'-');
374    }
375    let lang = ci_lang;
376
377    let data =  {};
378    data.screenSet = screenSetName;
379    data.startScreen = startScreenID;
380    data.containerID = containerID;
381    data.sessionExpiration = -2;
382    data.onError = onError;
383    data.onBeforeScreenLoad = onBeforeScreenLoad;
384    data.onAfterScreenLoad = onAfterScreenLoad;
385    data.onAfterSubmit = onAfterSubmit;
386    data.lang = lang;
387
388    if(typeof redirectUrl !== "undefined"){
389        data.redirectURL = redirectUrl;
390    }
391
392    return data;
393}
394
395function CiShowScreenSet() {};
396
397var ciShowScreenSet = new CiShowScreenSet();
398
399CiShowScreenSet.prototype.gigyaCommunicationScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
400    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadCommunication, ci_onAfterSubmitNotification, ci_handleSSErrors);
401    ci_publicVerification(verify);
402    ci_showScreenSet(data);
403}
404
405CiShowScreenSet.prototype.gigyaMyFamilyScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
406    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadMyFamilyScreen, ci_onAfterMyFamily, ci_handleSSErrors);
407    ci_publicVerification(verify);
408    ci_showScreenSet(data);
409}
410
411CiShowScreenSet.prototype.gigyaUpdateProfileScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
412    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadProfileUpdate, ci_onAfterSubmitPersonalData, ci_handleSSErrors);
413    ci_publicVerification(verify);
414    ci_showScreenSet(data);
415}
416
417CiShowScreenSet.prototype.gigyaMyFavoritesScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
418    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadMyFavorites, ci_onAfterMyInterests, ci_handleSSErrors);
419    ci_publicVerification(verify);
420    ci_showScreenSet(data);
421}
422
423CiShowScreenSet.prototype.gigyaChangePasswordScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
424    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadChangePassword, ci_onAfterSubmitChangePassword, ci_handleSSErrors);
425    ci_publicVerification(verify);
426    ci_showScreenSet(data);
427}
428
429CiShowScreenSet.prototype.gigyaRegisterScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
430    localStorage.setItem('ci_initOfRegister', nb_active_page_url);
431
432    function ci_onAfterLoadRegister() {};
433    if(containerID == 'ci_modal') {
434        ci_onAfterLoadRegister = ci_onAfterScreenLoadRegisterModal;
435    } else {
436        ci_onAfterLoadRegister = ci_onAfterScreenLoadRegister;
437    }
438
439    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterLoadRegister, ci_handleVerificationSent, ci_handleRegisterErrors);
440    ci_publicVerification(verify);
441    ci_showScreenSet(data);
442}
443
444CiShowScreenSet.prototype.gigyaApplyForLoyaltyCardScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
445    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadSBModal, ci_onAfterSubmitLoyalty, ci_handleSSErrors);
446    nbshopJS.CustomEventTrigger('openCILoyaltyModal');
447    ci_publicVerification(verify);
448    ci_showScreenSet(data);
449}
450
451CiShowScreenSet.prototype.gigyaChangeEmailScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
452    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadChangeEmail, ci_onAfterChangeEmail, ci_handleSSErrors);
453    ci_publicVerification(verify);
454    ci_showScreenSet(data);
455}
456
457CiShowScreenSet.prototype.gigyaLoginScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
458    if(containerID == 'ci_modal') {
459        ci_onAfterScreenLogin = ci_onAfterScreenLoadLoginModal;
460    } else {
461        ci_onAfterScreenLogin = ci_onAfterScreenLoadLogin;
462    }
463
464    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLogin, ci_onAfterSubmitLoginModal, ci_handleSSErrors);
465
466    ci_publicVerification(verify);
467    ci_showScreenSet(data);
468}
469
470CiShowScreenSet.prototype.gigyaResetPasswordScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
471    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadResetPassword, ci_onAfterSubmitForgotPassword, ci_handleSSErrors);
472    ci_publicVerification(verify);
473    ci_showScreenSet(data);
474}
475
476CiShowScreenSet.prototype.gigyaRequestDeletionScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
477    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadRequestDeletion, ci_onAfterSubmitDeletion, ci_handleSSErrors);
478    ci_publicVerification(verify);
479    ci_showScreenSet(data);
480}
481
482CiShowScreenSet.prototype.gigyaSubscribeWithEmailScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
483    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadNewsletter, ci_newsletterGTMEvent, ci_handleSSErrors);
484    ci_publicVerification(verify);
485    ci_showScreenSet(data);
486}
487
488CiShowScreenSet.prototype.gigyaSubscribeWithEmailForLoggedinUserScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
489    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, ci_isMarkedForDeletion, ci_onAfterScreenLoadNewsletter, '', ci_handleSSErrors);
490    ci_publicVerification(verify);
491    ci_showScreenSet(data);
492}
493
494CiShowScreenSet.prototype.gigyaVerificationLinkExpiredScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
495    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadVerificationLinkExpired, '', ci_handleSSErrors);
496    ci_publicVerification(verify);
497    ci_showScreenSet(data);
498}
499
500CiShowScreenSet.prototype.gigyaForgotPasswordScreen = function(screenSetName, startScreenID, containerID, redirectUrl, verify) {
501    let data = ci_setScreenSetData(screenSetName, startScreenID, containerID, redirectUrl, verify, '', ci_onAfterScreenLoadForgotPassword, '', ci_handleSSErrors);
502    ci_publicVerification(verify);
503    ci_showScreenSet(data);
504}
505
506
507//onAfterLoad funkcije
508
509function ci_onAfterLoadForAllScreen() {
510    changeH1ElementsInSS();
511    ci_loader();
512}
513
514function ci_onAfterScreenLoadCommunication() {
515    ci_showContentOnIconHover();
516    ci_revokeConsent();
517    ci_addActiveClassOnClick();
518    ci_loadAllImages('icon', ci_imagePath);
519    ci_onAfterLoadForAllScreen();
520}
521
522function ci_onAfterScreenLoadMyFamilyScreen() {
523    ci_initYearPickerMyFamily();
524    ci_turnOffAutocomplete();
525    ci_myFamilyBirthYear();
526    removeFamilyMember();
527    ci_onAfterLoadForAllScreen();
528}
529
530function ci_onAfterScreenLoadProfileUpdate() {
531    ci_addReadonlyAttribute();
532    ci_turnOffAutocomplete();
533    ci_showContentOnIconHover();
534    ci_hidePhoneIcon();
535    ci_applyForSportAndBonus();
536    ci_openSSForEmailInModal(ci_prefix);
537    ci_onAfterLoadForAllScreen();
538    if(!$('body').hasClass('lc-ro') && !$('body').hasClass('lc-si')) {
539       ci_userCityProfile();
540       ci_userStreetProfile();
541       ci_validateAddressProfile();
542    }
543    ci_userRegionProfile();
544    ci_userCountryProfile();
545    ci_smartFormInit();
546}
547
548function ci_onAfterScreenLoadMyFavorites() {
549    ci_addActiveClassOnClick();
550    ci_loadAllImages('icon', ci_imagePath);
551    ci_onAfterLoadForAllScreen();
552}
553
554function ci_onAfterScreenLoadChangePassword() {
555    ci_forbidPasswordCopying();
556    ci_disablePasteOnPasswordInput();
557    ci_loadAllImages('icon', ci_imagePath);
558    ci_showPassword();
559    ci_passwordStrength();
560    ci_showPasswordBubble();
561    ci_closeFormErrorAlert();
562    ci_onAfterLoadForAllScreen();
563}
564
565function ci_onAfterScreenLoadRegister() {
566    ci_forbidPasswordCopying();
567    ci_disablePasteOnPasswordInput();
568    ci_loadAllImages('logo', ci_imagePath, '_3');
569    ci_loadAllImages('icon', ci_imagePath);
570    ci_showContentOnIconHover();
571    ci_showPassword();
572    ci_closeFormErrorAlert();
573    ci_initAllDateTimePickers();
574    ci_passwordStrength();
575    ci_showPasswordBubble();
576    ci_changeSBlinkOnRegistrationSS();
577    ci_checkAllCheckboxes();
578    ci_resendRegActivationLinkAlert();
579    ci_hideSocialLoginForApp();
580    ci_loginLinkInRegistration();
581    ci_onAfterLoadForAllScreen();
582}
583
584function ci_onAfterScreenLoadRegisterModal() {
585    ci_onAfterScreenLoadRegister();
586    ci_showModal();
587}
588
589function ci_onAfterScreenLoadLoginModal() {
590    ci_onAfterScreenLoadLogin();
591    ci_showModal();
592}
593
594function ci_onAfterScreenLoadForgotPassword() {
595    ci_showPassword();
596    ci_forgotPasswordClose();
597    ci_disablePasteOnPasswordInput();
598    ci_onAfterLoadForAllScreen();
599}
600
601function ci_onAfterSubmitLoginModal() {
602    let loader = $('#customer_identity_layout_modal:has(.gigya-login-container) .screen-set-loader');
603    loader.removeClass('hidden');
604
605
606    let timer = setInterval(function(){
607        let error  = $('#gigya-login-form .gigya-error-display-active, #gigya-login-form .gigya-error-msg-active');
608
609        if(error.length){
610            loader.addClass('hidden');
611            clearInterval(timer);
612        }
613
614        if($('customer_identity_layout_modal').find('.gigya-login-container').length === 0) {
615            $('#customer_identity_layout_modal .screen-set-loader').addClass('hidden');
616        }
617
618    }, 500);
619
620}
621
622function ci_onAfterScreenLoadSBModal() {
623    updateAppyForSportAndBonusFlowStatus();
624    ci_showModal();
625    ci_loadAllImages('image',ci_imagePath, '_1', "jpg");
626    ci_createInputFields(6,'',true);
627    ci_createInputFields(6,'',false);
628    ci_loadAllImages('logo', ci_imagePath, '_3');
629    ci_resendVerificationLinkForSBAlert();
630    ci_closeFormErrorAlert();
631    ci_closeSuccesSBModal();
632    ci_onAfterLoadForAllScreen();
633}
634
635function ci_onAfterScreenLoadChangeEmail() {
636    ci_createInputFields(6, '.gigya-verify-new-email-container', true);
637    ci_createInputFields(6, '.gigya-verify-new-email-container', false);
638    ci_closeFormErrorAlert();
639    ci_resendEmailVerificationAlert();
640    ci_showModal();
641    ci_onAfterLoadForAllScreen();
642}
643
644function ci_onAfterScreenLoadLogin() {
645    ci_loadAllImages('logo', ci_imagePath, '_3');
646    ci_loadAllImages('icon', ci_imagePath);
647    ci_forbidPasswordCopying();
648    ci_disablePasteOnPasswordInput();
649    ci_showContentOnIconHover();
650    ci_checkAllCheckboxes();
651    ci_initAllDateTimePickers();
652    ci_showPassword();
653    ci_closeFormErrorAlert();
654    ci_loadRegUrl(ci_defaultSiteUrl, ci_registerPermalink);
655    ci_forgotPasswordClose();
656    ci_turnOffAutocomplete();
657    ci_hideSocialLoginForApp();
658    ci_onAfterLoadForAllScreen();
659}
660
661function ci_onAfterScreenLoadResetPassword() {
662    ci_loadAllImages('icon', ci_imagePath);
663    ci_forbidPasswordCopying();
664    ci_disablePasteOnPasswordInput();
665    ci_closeFormErrorAlert();
666    ci_showPassword();
667    ci_passwordStrength();
668    ci_showPasswordBubble();
669    var isAppParamRequest = gigya.getUrlParam('isapp');
670    ci_closeWindowOnClickButton(isAppParamRequest);
671    ci_onAfterLoadForAllScreen();
672}
673
674function ci_onAfterScreenLoadRequestDeletion() {
675    ci_showModal();
676    ci_onAfterLoadForAllScreen();
677}
678
679function ci_onAfterScreenLoadNewsletter() {
680    ci_onAfterLoadForAllScreen();
681    if(typeof modelNBAccessibility != "undefined") {
682        modelNBAccessibility.checkWithKeyboard();
683    }
684}
685
686function ci_onAfterScreenLoadVerificationLinkExpired() {
687    ci_loadAllImages('logo', ci_imagePath, '_3');
688    ci_verificationEmailExpired();
689    ci_onAfterLoadForAllScreen();
690}
691
692//onAfterSubmit funkcije
693
694function ci_onAfterMyFamily(event){
695    if(event.response.errorCode == 0){
696        ci_createAlert('#ci-alert-successful-saved-changes', '#alert-successful-saved-changes');
697        ci_updateUserData('myfamily');
698    }
699}
700
701function ci_onAfterMyInterests(event){
702    if(event.response.errorCode == 0){
703        ci_createAlert('#ci-alert-successful-saved-changes', '#alert-successful-saved-changes');
704        ci_updateUserData('myinterests');
705    }
706}
707
708function ci_onAfterSubmitDeletion(event){
709    if(event.screen == "gigya-request-deletion-confirmation-screen" && event.response.errorCode == 0){
710        ci_updateUserData('deletion');
711        location.reload();
712    }
713}
714
715function ci_onAfterSubmitPersonalData(event){
716    if(event.response.errorCode == 0){
717        ci_createAlert('#ci-alert-successful-saved-changes', '#alert-successful-saved-changes');
718        ci_callOnLogin(event.response.UID, '', 'save_personal_data')
719    }
720}
721
722function ci_onAfterSubmitNotification(event){
723    if(event.response.errorCode == 0){
724        ci_createAlert('#ci-alert-successful-saved-changes', '#alert-successful-saved-changes');
725        ci_updateUserData('notification');
726    }
727}
728
729function ci_handleVerificationSent(event){
730    if(event.screen == "gigya-complete-registration-screen" && event.response.errorCode != 0){
731        nbshopJS.CustomEventTrigger('CIRegistrationSuccess');
732    }
733}
734
735function ci_onAfterChangeEmail(event){
736
737    if(event.screen == 'gigya-email-code-verification-screen' && event.response.errorCode == 0){
738
739        gigya.accounts.getAccountInfo({
740            callback: function (response){
741
742                ci_callOnLogin(response.UID, '', 'change_email');
743
744                var prefix = ci_prefix;
745                ciShowScreenSet.gigyaUpdateProfileScreen(prefix+'-ProfileUpdate', 'gigya-update-profile-screen', 'ci-profile-personal-data', '', 'yes')
746            }
747        });
748
749        $ci_modal = $('#customer_identity_layout_modal');
750        $ci_modal.modal('hide');
751    }
752
753}
754
755function ci_onAfterSubmitForgotPassword(event){
756    if(event.response.errorCode == 0){
757        ci_createAlert('#ci-alert-password-change-no-login', '#alert-password-change-no-login');
758        $(".login-btn").trigger("click");
759        ci_addLoginButtonAfterPasswordChange();
760    }
761}
762
763function ci_onAfterSubmitLoyalty(event){
764
765    if(event.screen == 'gigya-apply-for-loyalty-card-screen'){
766        nbshopJS.CustomEventTrigger('openCISmsCodeModal');
767        console.log('openCISmsCodeModal')
768    }
769
770    if(event.screen == 'gigya-apply-for-loyalty-card-verification-screen'){
771
772
773
774        gigya.accounts.getAccountInfo({
775            callback: function (response){
776                var uid = response.UID;
777
778                var phone = '';
779                if(typeof response.phoneNumber !== 'undefined'){
780                    phone = response.phoneNumber;
781                }
782
783                var email = '';
784                if(typeof response.profile.email !== 'undefined'){
785                    email = response.profile.email;
786                }
787
788                var data = {
789                    task: 'ci_loyalty_ajax',
790                    ajax: 'yes',
791                    uid: uid,
792                    phone: phone,
793                    email: email
794                };
795
796                var url = ci_profileUrl;
797                var urlLoyalty = ci_profileUrlLoyalty;
798                $.ajax({
799                    type: 'POST',
800                    url: urlLoyalty,
801                    contentType: "application/x-www-form-urlencoded;charset=UTF-8",
802                    data: data,
803                    dataType: 'json',
804                    success: function(response) {
805                        ci_callOnLogin(uid, '');
806
807                        var prefix = ci_prefix;
808                        ciShowScreenSet.gigyaUpdateProfileScreen(prefix+'-ProfileUpdate', 'gigya-update-profile-screen', 'ci-profile-personal-data', '', 'yes')
809
810                        if(response.flag) {
811                            nbshopJS.CustomEventTrigger('endCIPhoneRegister');
812                            console.log('endCIPhoneRegister')
813                        }
814                    },
815                    error: function (xhr, ajaxOptions, thrownError) {
816                        ci_addLog(event.screen, 'response', JSON.stringify(event));
817                    }
818                });
819            }
820        });
821        //nbshopJS.CustomEventTrigger('openCILoyaltyModal');
822    }
823
824    ci_getStyleForModal();
825
826}
827
828function ci_handleRegisterErrors(event){
829
830    if(event.screen == "gigya-register-screen" && event.response.errorCode != 0){
831        console.log(event);
832    }
833}
834
835function ci_showDeleteOptions(response){
836    var prefix = ci_prefix;
837
838    if(response.hasOwnProperty('data') && response.data.hasOwnProperty('deleti
838on')
839        && response.data.deletion.hasOwnProperty('isMarkedForDeletion')
840        && response.data.deletion.isMarkedForDeletion){
841
842        $('.profile .ci-header-alert').removeClass('hidden');
843        $('.gigya-communication-container .js-delete-user').remove();
844    } else {
845        $(".gigya-communication-container .js-delete-user").each(function(){
846
847            $(this).on('click', function (e){
848                e.preventDefault();
849                ciShowScreenSet.gigyaRequestDeletionScreen(prefix+'-ProfileUpdate', 'gigya-request-deletion-screen', 'ci_modal', '', 'yes');
850            });
851
852        });
853    }
854
855}
856
857function ci_isMarkedForDeletion(){
858    gigya.accounts.getAccountInfo({ callback: ci_showDeleteOptions });
859}
860
861function ci_onAfterSubmitChangePassword(event){
862    var prefix = ci_prefix;
863    if(event.response.errorCode == 0){
864        ci_succesfullPasswordChange();
865    }
866}
867
868function ci_newsletterGTMEvent(){
869    var evt = new CustomEvent('newsletter_login_success', { detail: '' || true });
870    window.dispatchEvent(evt);
871}
872
873function ci_applyForSportAndBonus(){
874    var prefix = ci_prefix;
875
876    $(".js-apply-for-sportandbonus").each(function(){
877        $(this).on('click', function (e){
878            e.preventDefault();
879            ciShowScreenSet.gigyaApplyForLoyaltyCardScreen(prefix+'-ProfileUpdate', 'gigya-apply-for-loyalty-card-screen', 'ci_modal', '', 'yes');
880        });
881    });
882}
883
884function selectAndCopy(){
885    var textToCopy = $('#text-to-copy').text();
886    var tempTextarea = $('<textarea>');
887    $('body').append(tempTextarea);
888    tempTextarea.val(textToCopy).select();
889    document.execCommand('copy');
890    tempTextarea.remove();
891    ci_createAlert("#ci-alert-copy-ticket-number", "#alert-copy-ticket-number");
892}
893
894function ci_addLog(typeAction, type, communicationData){
895
896    let url = ci_addLog_url;
897
898    let data = {
899        "typeAction": typeAction,
900        "type": type,
901        "communicationData": communicationData,
902    };
903
904    $.ajax({
905        type: 'POST',
906        url: url,
907        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
908        data: data,
909        dataType: 'json',
910        success: function(response) {
911
912        }
913    });
914}
915
916function ci_handleSSErrors(event){
917    ci_addLog(event.response.info.screen, 'response', JSON.stringify(event));
918}
919
920function ci_showModal() {
921    $ci_modal = $('#customer_identity_layout_modal');
922    $ci_modal.modal('show');
923    ci_closeModal();
924    ci_getStyleForModal();
925}
926
927function ci_logoutUser(redirectUrl){
928    $("#ci-logout-button").trigger("click", function (){
929        if(typeof redirectUrl !== "undefined" && redirectUrl != ""){
930            // window.location.href = redirectUrl;
931        }
932    });
933}
934
935function ci_verificationEmailExpired(){
936    var prefix = ci_prefix;
937    $(".js-verification-login-btn").each(function(){
938        $(this).on('click', function (e){
939            e.preventDefault();
940            $(".login-btn").trigger("click");
941        });
942    });
943}
944
945function ci_hideSocialLoginForApp() {
946    var isAppParamRequest = gigya.getUrlParam('isapp');
947
948    if(Number(isAppParamRequest) > 0){
949        $('.gigya-social-devider').remove();
950        $('.gigya-composite-control-social-login .gigya-social-login').remove();
951    }
952}
953
954const _logut = 'ci_logout_ajax';
955const _login = 'ci_login_ajax';
956function showScreenSet(screenSetName) {
957    gigya.accounts.showScreenSet({'screenSet': screenSetName});
958}
959
960function nb_dump(string,color){
961    let  style ;
962
963    if(!color){
964        style = "color: white;";
965    }else{
966        style = "color: white; background: "+color+";";
967    }
968
969    if(color){
970        console.log("%c"+string+" ",style);
971
972    }
973
974}
975
976/*Prikazivanje/sakrivanje loadera na SS-ovima*/
977function ci_loader() {
978
979    setTimeout(function (){
980        $('.ci-main-wrapper').addClass('ci-loaded');
981    }, 500)
982
983    let loader = $('.ci-main-wrapper:not(.no-remove) .screen-set-loader');
984    loader.removeClass('hidden');
985
986    if($('.ci-wrapper').find('.gigya-screen').length !== 0) {
987        loader.addClass('hidden');
988    }
989}
990
991function ci_changeSBlinkOnRegistrationSS() {
992
993    if(typeof nb_site_url_with_country_lang !== "undefined") {
994        var siteUrl = nb_site_url_with_country_lang;
995    }
996
997    let link = $('.gigya-registration-container .lnk-apply-for-sp
997ort-and-bonus');
998
999    if(link.length) {
1000        let linkHrefSplited = link.attr("href").split("/");
1001        let pageLink = linkHrefSplited[3];
1002
1003        let newLink = `${siteUrl}/${pageLink}`;
1004        link.attr("href", newLink);
1005    }
1006}
1007
1008function ci_mobileHeaderLoader() {
1009    let loginItem = $('.header .login-btn');
1010
1011    if(loginItem.find('.fa-spinner').length === 0) {
1012        $('<i class="icon fa fa-spinner hidden" aria-hidden="true"></i>').appendTo(loginItem);
1013    }
1014}
1015
1016function ci_addLoginButtonAfterPasswordChange() {
1017
1018    let loginBtnText = $('.ci-wrapper').data("loginBtnText");
1019    $('.gigya-reset-password-container .gigya-reset-password-form .gigya-layout-row').addClass('hidden');
1020    $('.gigya-reset-password-container .gigya-reset-password-form').append($(`<button class="btn ci-login-btn gigya-input-submit">${loginBtnText}</button>`));
1021
1022    $('.ci-login-btn').click(function() {
1023        $(".login-btn").trigger("click");
1024    })
1025}
1026
1027function ci_loadRegUrl(defaultSiteUrl, _ci_register){
1028
1029    // let jsSSRegUrl = gigya.getUrlParam('ssRegUrl');
1030    // if(typeof jsSSRegUrl == "undefined" || jsSSRegUrl == null){
1031    //     jsSSRegUrl = defaultSiteUrl+'/'+_ci_register;
1032    // }
1033
1034    var ssName = ci_register_ssName;
1035
1036    $(".lnk-register").on('click', function (e){
1037        e.preventDefault();
1038        // window.location.href = jsSSRegUrl;
1039        gigya.apiKey = ci_themeApi;
1040        ciShowScreenSet.gigyaRegisterScreen(ssName, 'gigya-register-screen', 'ci_modal');
1041    });
1042
1043}
1044
1045function ci_addTableClass() {
1046    let tables = $('.ci-page table');
1047
1048    tables.each(function () {
1049        if(!$(this).hasClass('table')) {
1050            $(this).addClass('table');
1051        }
1052    })
1053
1054}
1055
1056function ci_resendEmailVerificationAlert() {
1057    let resendVerificationLinkForEmail = $('.gigya-verify-new-email-container .lnk-resend-verification-code a');
1058
1059    resendVerificationLinkForEmail.click(function () {
1060        ci_createAlert("#ci-alert-resend-verification-email-change", "#alert-resend-verification-email-change");
1061    })
1062}
1063
1064function ci_resendRegActivationLinkAlert() {
1065    let resendRegActivationLink = $('.gigya-verification-sent-container .lnk-resend-verification .gigya-input-submit');
1066
1067    resendRegActivationLink.click(function () {
1068        ci_createAlert("#ci-alert-resend-verification-email-registration", "#alert-resend-verification-email-registration")
1069    })
1070}
1071
1072function ci_resendVerificationLinkForSBAlert() {
1073    let resendVerificationLinkForSB = $('.gigya-verify-sportandbonus-application-container .gigya-composite-control-link a');
1074
1075    resendVerificationLinkForSB.click(function () {
1076        ci_createAlert("#ci-alert-resend-verification-code-sb", "#alert-resend-verification-code-sb")
1077    })
1078}
1079
1080function ci_closeWindowOnClickButton(isApp) {
1081    let button = $('.ci-wrapper .gigya-forgot-password-sent-containter .js-forgot-password-ok-btn');
1082
1083    button.click(function () {
1084        if(isApp){
1085            window.history.back();
1086        }else{
1087            setTimeout('window.close();',500);
1088        }
1089
1090    })
1091}
1092
1093function ci_getStyleForModal() {
1094    let container = $('.gigya-apply-for-sportandbonus-container');
1095
1096    $('#ci_modal').find('.gigya-screen-caption').removeClass('hidden');
1097    $('#ci_modal').css("padding", "40px 20px 30px");
1098    $('#ci_modal').find('.close-icon').removeClass('white-icon');
1099
1100    if(container.find('.image-apply-for-sportandbonus').length) {
1101        container.closest('#ci_modal').find('.gigya-screen-caption').addClass('hidden');
1102        container.closest('#ci_modal').css("padding", "0 0 25px");
1103        container.closest('#ci_modal').find('.close-icon').addClass('white-icon');
1104    }
1105
1106
1107}
1108
1109function ci_succesfullPasswordChange() {
1110    ci_createAlert('#ci-alert-password-change', '#alert-password-change');
1111
1112    let inputPasswordFields = $('.gigya-change-password-container .gigya-input-password');
1113
1114    inputPasswordFields.each(function () {
1115        $(this).val('');
1116        $(this).attr("value", "");
1117    })
1118}
1119
1120function ci_addReadonlyAttribute() {
1121    let emailInput = $('.gigya-update-profile-container input[type=email]');
1122    let dateInput = $('.gigya-update-profile-container .gigya-date-of-birth .gigya-input-text')
1123
1124    emailInput.attr("readonly", "true");
1125    dateInput.attr("readonly", "true");
1126}
1127
1128function ci_myFamilyBirthYear() {
1129    let birthYearInput = $('.gigya-my-family-container .js-birthYear .gigya-input-text');
1130    let currentDate = new Date();
1131    let currentYear = currentDate.getFullYear();
1132
1133    birthYearInput.each(function () {
1134        // $(this).attr('maxlength', '4');
1135
1136        $(this).keyup(function () {
1137            if($(this).val() > currentYear) {
1138                $(this).val(currentYear);
1139            }
1140        })
1141
1142        $(this).change(function () {
1143            if($(this).val() > currentYear) {
1144                $(this).val(currentYear);
1145            }
1146        })
1147    })
1148}
1149
1150/*Zatvaranje modala na klik dugmeta nakon uspesne prijave na S&B*/
1151function ci_closeSuccesSBModal() {
1152    if($('#ci_modal .gigya-success-sportandbonus-application-container .gigya-composite-control-link').length === 0) {
1153        return false;
1154    }
1155    let button = $('#ci_modal .gigya-success-sportandbonus-application-container .gigya-composite-control-link');
1156    let closeModalIcon = button.closest('#ci_modal').find('.close-icon');
1157
1158    button.click(function () {
1159        closeModalIcon.click();
1160
1161        setTimeout(function(){
1162            location.reload();
1163        },2000);
1164
1165    })
1166}
1167
1168/*Sakrivanje ikonice za prijavu na S&B, kada je korisnik vec prijavljen*/
1169function ci_hidePhoneIcon() {
1170    let show = false;
1171    let phoneIcon = $('.gigya-update-profile-container .js-phone-info-icon');
1172    if(phoneIcon.length){
1173        gigya.accounts.getAccountInfo({
1174            callback: function (response){
1175
1176                if(response.data.hasOwnProperty('employee') && response.data.employee.hasOwnProperty('isCompanyEmployee') && response.data.employee.isCompanyEmployee == 1){
1177                    show = false;
1178                } else {
1179                    if(!response.data.hasOwnProperty('loyalty')){
1180                        show = true;
1181                    } else {
1182                        if(!response.data.loyalty.hasOwnProperty('sportAndBonus')){
1183                            show = true;
1184                        } else {
1185                            if(!response.data.loyalty.sportAndBonus.hasOwnProperty('cardNumber')){
1186                                show = true;
1187                            } else {
1188                                if(response.data.loyalty.sportAndBonus.cardNumber == ''){
1189                                    show = true;
1190                                }
1191                            }
1192                        }
1193                    }
1194                }
1195                if(!show){
1196                    phoneIcon.addClass('hidden');
1197                }
1198            }
1199        });
1200    }
1201}
1202
1203/*Zatvaranje mobilnog menija na profilu*/
1204function ci_closeMenu() {
1205    let closeIcon = $('.profile-sidebar .close-icon');
1206
1207    closeIcon.click(function() {
1208        closeIcon.parent().removeClass('open');
1209    })
1210}
1211
1212/*Aktivno stanje na check poljima*/
1213function ci_addActiveClassOnClick() {
1214
1215    let label = document.querySelectorAll('.gigya-profile-form .gigya-composite-control-checkbox .gigya-label');
1216
1217    label.forEach((l) => {
1218
1219        l.onclick = function() {
1220            l.classList.toggle('active');
1221        }
1222
1223        l.setAttribute("tabindex", "0");
1224
1225        l.removeEventListener('keydown', l._keydownHandler);
1226        l._keydownHandler = function(e) {
1227            if (e.key === 'Enter') {
1228                if (typeof preventDefault !== 'undefined' && preventDefault) {
1229                    e.preventDefault();
1230                }
1231                l.click();
1232                e.stopPropagation();
1233            }
1234        };
1235        l.addEventListener('keydown', l._keydownHandler);
1236
1237        //Podesavanje inicijalnog stanja
1238        if(l.parentElement.querySelector('input').checked) {
1239            l.classList.add('active');
1240        }
1241    });
1242}
1243
1244/*Collaps na mobilnom meniju*/
1245function ci_handleCollapsingProfileMenu() {
1246    let btnCollapse = $('.profile-sidebar .btn-menu-collapse');
1247    let profileSidebar = $('.profile-sidebar');
1248
1249    if(profileSidebar) {
1250        btnCollapse.on("click", function(){
1251            $('.profile-sidebar .nav-vertical.nav').toggleClass('open');
1252        });
1253    }
1254}
1255
1256function ci_showContentOnIconHoverFunction(icon, content) {
1257
1258    let closeIcon = $('.js-btn-close');
1259    $(icon).hover(function() {
1260        $(icon).parent().find(content).show();
1261        $(icon).parent().find('.icon-popup-close').removeClass('hidden');
1262    })
1263
1264    $(icon).mouseleave(function() {
1265        setTimeout(function(){
1266            $(content +':not(:hover)').hide();
1267        },2000);
1268    });
1269
1270    $(content).mouseleave(function() {
1271        $(content).hide();
1272    })
1273
1274    closeIcon.click(function () {
1275        $(content).hide();
1276    })
1277}
1278
1279/*S&B popup na hover ikonice*/
1280function ci_showContentOnIconHover() {
1281    ci_showContentOnIconHoverFunction('.js-phone-info-icon', '.js-phone-info');
1282    ci_showContentOnIconHoverFunction('.js-profiling-consent-icon', '.js-profiling-consent');
1283    ci_showContentOnIconHoverFunction('.js-birthday-info-icon', '.js-birthday-info');
1284}
1285
1286/*Kopiranje sadrzaja iz template tag-a*/
1287function ci_getTemplateContent(idTemplate) {
1288    var temp = document.querySelector(idTemplate);
1289    var clon = temp.content.cloneNode(true);
1290
1291    return clon;
1292}
1293
1294function ci_createAlert(idTemplate, idAlert) {
1295    var templateContent = ci_getTemplateContent(idTemplate);
1296
1297    //Dodavanje kloniranog elementa u modal ili ci-wrapper
1298    if (document.body.classList.contains('modal-open') && document.querySelector('body #ci_modal ' + idAlert) === null) {
1299        document.querySelector('#ci_modal form').appendChild(templateContent);
1300    } else if(document.querySelector('body .profile-loyalty-benefits ' + idAlert) === null && idAlert === "#alert-copy-ticket-number") {
1301        document.querySelector('.profile-loyalty-benefits .ticketing-card-wrapper .row').appendChild(templateContent);
1302    } else if (document.querySelector('body .ci-wrapper ' + idAlert) === null && document.querySelector('body ' + idAlert) === null) {
1303        document.querySelector('.ci-wrapper form').appendChild(templateContent);
1304    } else {
1305        document.querySelector(idAlert).classList.remove('hidden');
1306    }
1307
1308    setTimeout(function(){
1309        document.querySelector('body ' + idAlert).remove();
1310    },3000);
1311}
1312
1313/*Funkcija za zatvaranje alerta*/
1314function ci_closeAlert(el) {
1315    el.parentNode.classList.add('hidden');
1316}
1317
1318/*Zabrana kopiranja iz polja za unos lozinke*/
1319function ci_forbidPasswordCopying() {
1320    let inputPassword = document.querySelectorAll('.gigya-input-password');
1321
1322    inputPassword.forEach((input) => {
1323
1324        input.addEventListener("copy", (e) => {
1325            ci_createAlert('#ci-alert-password-copying', '#alert-password-copying');
1326        });
1327    })
1328}
1329
1330/*Zatvaranje alerta na formi*/
1331function ci_closeFormErrorAlert() {
1332
1333    $('.gigya-composite-control-form-error.gigya-error-display').each(function() {
1334        if($(this).find('.close-icon').length === 0) {
1335            $('<span class="close-icon"></span>').appendTo($(this))
1336        }
1337    });
1338
1339    $('.gigya-composite-control-form-error.gigya-error-display .close-icon').on("click", function() {
1340        $(this).parent().removeClass('gigya-error-display-active');
1341        $(this).parent().find('.gigya-error-msg').removeClass('gigya-error-msg-active');
1342    })
1343
1344}
1345
1346/*Dodavanje strelica na modalima za progresivno profiliranje*/
1347function ci_appendModalWithArrow() {
1348    let leftArrow = $('<span class="arrow arrow-left"></span>');
1349    let rightArrow = $('<span class="arrow arrow-right"></span>');
1350
1351    let modal = $('#ci_modal.modal-content');
1352
1353    if(modal.find('.gigya-favorite-categories-container').length) {
1354        modal.find('.arrow.arrow-left').remove();
1355        modal.find('.arrow.arrow-right').remove();
1356        modal.append(rightArrow);
1357        modal.append(leftArrow);
1358        $("#ci_modal:has(.gigya-favorite-categories-container)").find('.arrow.arrow-right').addClass('categories');
1359        $("#ci_modal:has(.gigya-favorite-categories-container)").find('.arrow.arrow-left').addClass('categories');
1360
1361    } else if(modal.find('.gigya-favorite-sports-container').length) {
1362        modal.find('.arrow.arrow-left').remove();
1363        modal.find('.arrow.arrow-right').remove();
1364        modal.append(rightArrow);
1365        modal.append(leftArrow);
1366        $("#ci_modal:has(.gigya-favorite-sports-container)").find('.arrow.arrow-right').addClass('sports');
1367        $("#ci_modal:has(.gigya-favorite-sports-container)").find('.arrow.arrow-left').addClass('sports');
1368    } else if(modal.find('.gigya-favorite-brands-container').length) {
1369        if(modal.find('.arrow.arrow-right').length === 0) {
1370            modal.append(rightArrow);
1371            $("#ci_modal:has(.gigya-favorite-brands-container)").find('.arrow.arrow-right').addClass('brands');
1372        } else {
1373            modal.find('.arrow.arrow-left').remove();
1374            modal.find('.arrow.arrow-right').remove();
1375            modal.append(rightArrow);
1376            $("#ci_modal:has(.gigya-favorite-brands-container)").find('.arrow.arrow-right').addClass('brands');
1377        }
1378
1379    } else {
1380        if(modal.find('.arrow.arrow-left').length !== 0 && modal.find('.arrow.arrow-right').length !== 0) {
1381            modal.find('.arrow.arrow-left').remove();
1382            modal.find('.arrow.arrow-right').remove();
1383        }
1384    }
1385}
1386
1387/*Dodavanja funkcionalnosti za strelice na progresivnom profiliranju*/
1388function ci_addArrow() {
1389
1390    ci_appendModalWithArrow();
1391
1392    let leftArrowSports = $('.arrow.arrow-left.sports');
1393    let leftArrowCategories =  $('.arrow.arrow-left.categories');
1394    let rightArrowBrands = $('.arrow.arrow-right.brands');
1395    let rightArrowSports = $('.arrow.arrow-right.sports');
1396    let rightArrowCategories =  $('.arrow.arrow-right.categories');
1397
1398
1399    rightArrowBrands.on('click', function () {
1400        rightArrowBrands.parent().find('.js-brands-favorites-next .gigya-input-submit').click();
1401    })
1402
1403    rightArrowSports.on('click', function() {
1404        rightArrowSports.parent().find('.js-sports-favorites-next .gigya-input-submit').click();
1405    })
1406
1407    rightArrowCategories.on('click', function() {
1408        rightArrowCategories.parent().find('.js-categories-favorites-next .gigya-input-submit').click();
1409    })
1410
1411    leftArrowSports.on('click', function() {
1412        leftArrowSports.parent().find('a.js-sports-favorites-back')[0].click();
1413    })
1414
1415    leftArrowCategories.on('click', function() {
1416        leftArrowCategories.parent().find('a.js-categories-favorites-back')[0].click();
1417    })
1418}
1419
1420/*Dodavanje ikonice koja zatvara modal*/
1421function ci_closeModal() {
1422    let closeIcon = $('<span class="close-icon" data-dismiss="modal" tabindex="0" role="button"></span>');
1423
1424    $('#ci_modal').each(function() {
1425        if($(this).children('.close-icon').length === 0) {
1426            $(this).append(closeIcon);
1427        }
1428    });
1429    if(typeof modelNBAccessibility != "undefined") {
1430        modelNBAccessibility.clickWithKeyboard('#customer_identity_layout_modal .close-icon');
1431    }
1432}
1433
1434/*Funkcija za povlacenje saglasnosti na SS Obavestenja*/
1435function ci_revokeConsent() {
1436    $(".gigya-screen-content .js-revoke-consent").each(function() {
1437        $(this).attr("tabindex", "0");
1438        $(this).attr("role", "button");
1439
1440        $(this).off('keydown').on('keydown', function (e) {
1441            if (e.key === 'Enter') {
1442                if(typeof preventDefault !== 'undefined' && preventDefault){
1443                    e.preventDefault();
1444                }
1445                $(this).click();
1446                e.stopPropagation();
1447            }
1448        });
1449
1450        $(this).click(function () {
1451            $(this).parent().next().find('.gigya-input-checkbox').prop('checked', false);
1452            $(this).parent().next().find('.gigya-label').removeClass('active');
1453        });
1454    })
1455}
1456
1457/*Prikaz popup-a za jacinu lozinke na password tipu polja*/
1458function ci_showPasswordBubble() {
1459
1460    let newPasswordInputs = $('.gigya-register-form .gigya-password .gigya-input-password, .gigya-reset-password-container .gigya-composite-control-password #gigya-password-newPassword, .gigya-change-password-container .gigya-new-password .gigya-input-password');
1461    newPasswordInputs.keyup(function() {
1462
1463        if($(this).parent().find('.password-strength-wrapper').length === 0) {
1464            var clon = $('#ci-password-strength').html();
1465            $(this).parent().append(clon);
1466        }
1467        if($(this).val().length === 0) {
1468            $(this).parent().find('.password-strength-wrapper').addClass('hidden');
1469        } else {
1470            $(this).parent().find('.password-strength-wrapper').removeClass('hidden');
1471        }
1472
1473    });
1474
1475    newPasswordInputs.click(function() {
1476        if($(this).val().length !== 0) {
1477            $(this).parent().find('.password-strength-wrapper').removeClass('hidden');
1478        }
1479    });
1480}
1481
1482/*Funkcionalnost za jacinku lozinke*/
1483function ci_passwordStrength() {
1484
1485    let newPasswordInputs = $('.gigya-register-form .gigya-password .gigya-input-password, .gigya-reset-password-container .gigya-composite-control-password #gigya-password-newPassword, .gigya-change-password-container .gigya-new-password .gigya-input-password');
1486    newPasswordInputs.keyup(function() {
1487
1488        var characterNb = this.value.length;
1489        var number = $(this).val().match(/\d+/);
1490        var capital = $(this).val().match(/[A-Z]/);
1491        var lower = $(this).val().match(/[a-z]/);
1492        let specialCaracter = $(this).val().match(/[!@#$%^&*()_+~{}'\-;:\\"/.,<>?]/);
1493
1494        //Ispitivanje koji uslovi su ispunjeni
1495        if(characterNb > 7 ){characterNb = 1;} else {characterNb = 0}
1496        if(lower !== null ){lower = 1;} else {lower = 0}
1497        if(specialCaracter !== null ){specialCaracter = 1;} else {specialCaracter = 0}
1498        if(number !== null ){number = 1;} else {number = 0}
1499        if(capital !== null ){capital = 1;} else {capital = 0}
1500        var count = (characterNb+number+capital+lower+specialCaracter);
1501
1502        $('.password-strength-wrapper .strength-wrapper > div').each(function(){
1503            $(this).removeClass('password-label-very-weak');
1504            $(this).removeClass('password-label-weak');
1505            $(this).removeClass('password-label-strong');
1506            $(this).removeClass('password-label-very-strong');
1507        });
1508
1509        $('.password-label-wrapper .label > span').each(function(){
1510            $(this).addClass('hidden');
1511        });
1512
1513        //Ispisivanje labele koja odgovara jacini i prikaz linije
1514        switch(count) {
1515            case 0:
1516            case 1:
1517            case 2:
1518                $('.password-strength-wrapper .strength-wrapper > .password-strength-first').addClass('password-label-very-weak');
1519                $('.password-label-wrapper .label > span.password-label-very-weak').removeClass('hidden');
1520                break;
1521            case 3:
1522                $('.password-strength-wrapper .strength-wrapper > .password-strength-first').addClass('password-label-very-weak');
1523                $('.password-strength-wrapper .strength-wrapper > .password-strength-second').addClass('password-label-weak');
1524                $('.password-label-wrapper .label > span.password-label-weak').removeClass('hidden');
1525                break;
1526            case 4:
1527                $('.password-strength-wrapper .strength-wrapper > .password-strength-first').addClass('password-label-very-weak');
1528                $('.password-strength-wrapper .strength-wrapper > .password-strength-second').addClass('password-label-weak');
1529                $('.password-strength-wrapper .strength-wrapper > .password-strength-third').addClass('password-label-strong');
1530                $('.password-label-wrapper .label > span.password-label-strong').removeClass('hidden');
1531                break;
1532            case 5:
1533                $('.password-strength-wrapper .strength-wrapper > .password-strength-first').addClass('password-label-very-weak');
1534                $('.password-strength-wrapper .strength-wrapper > .password-strength-second').addClass('password-label-weak');
1535                $('.password-strength-wrapper .strength-wrapper > .password-strength-third').addClass('password-label-strong');
1536                $('.password-strength-wrapper .strength-wrapper > .password-strength-fourth').addClass('password-label-very-strong');
1537                $('.password-label-wrapper .label > span.password-label-very-strong').removeClass('hidden');
1538                break;
1539        }
1540    });
1541
1542    newPasswordInputs.focusout(function () {
1543        $('.password-strength-wrapper').addClass('hidden');
1544    })
1545
1546    //Klik van input polja, zatvara popup za jacinu lozinke
1547    $(document).click(function(e)
1548    {
1549        let container = $('.gigya-register-form .gigya-password .gigya-input-password, .gigya-reset-password-container .gigya-composite-control-password #gigya-password-newPassword, .gigya-change-password-container .gigya-new-password .gigya-input-password');
1550        // if the target of the click isn't the container nor a descendant of the container
1551        if (!container.is(e.target) && container.has(e.target).length === 0)
1552        {
1553            $('.password-strength-wrapper').addClass('hidden');
1554        }
1555    });
1556
1557}
1558
1559/*Ucitavanje slika preko naziva klasa*/
1560function ci_loadAllImages(classPrefix, pathImage,name_sufix ,imgExtension) {
1561
1562    let clsPrefix = "logo";
1563    let path = "http://dev.sportvision.rs/files/images/customer_identity/";
1564    let ext = "png";
1565    let sufix = '';
1566
1567
1568    if(classPrefix) {
1569        clsPrefix = classPrefix;
1570    }
1571
1572    if(pathImage) {
1573        path = pathImage;
1574    }
1575
1576    if(imgExtension) {
1577        ext = imgExtension;
1578    }
1579
1580    if(name_sufix) {
1581        sufix = name_sufix;
1582    }
1583
1584    let elementsWithBrands = document.querySelectorAll(`.gigya-screen [class*= ${clsPrefix}-]`);
1585
1586    elementsWithBrands.forEach(function (element) {
1587        let classes = element.classList;
1588
1589        //Prolazak kroz sve klase elementa
1590        classes.forEach(function (cls) {
1591
1592            if (cls.startsWith(`${clsPrefix}-`)) {
1593
1594                //Uzimanje naziva slike iz naziva klase
1595                const imageName = cls.split(`${clsPrefix}-`);
1596                const img = new Image();
1597                img.src = `${path}${imageName[1]}${sufix}.${ext}`;
1598
1599                //Dodavanje slike (ukoliko vec ne postoji) na odgovarajuce mesto
1600                img.onload = function () {
1601                    if(clsPrefix === "icon") {
1602                        if (element.hasChildNodes() && element.getElementsByTagName('img').length === 0) {
1603                            element.children[1].append(img);
1604                        } else if (element.getElementsByTagName('img').length === 0) {
1605                            element.append(img);
1606                        }
1607                    } else if (element.getElementsByTagName('img').length === 0) {
1608                        element.innerHTML = ''
1609                        element.append(img);
1610                    }
1611
1612                    if ($(window).width() < 576 && cls==="image-apply-for-sportandbonus") {
1613                        img.src = `${path}${imageName[1]}-mobile${sufix}.${ext}`;
1614                    }
1615
1616                };
1617                //Ukoliko ne nadje sliku, sakriva element
1618                img.onerror = function () {
1619                    if(element.classList[0] !== 'icon-view'){
1620                        element.classList.add('hidden');
1621                    }
1622                };
1623            }
1624        });
1625    });
1626
1627    /* dodavanje klase za i wrapper */
1628    $('.js-profiling-consent-icon').parents('.ui-sortablew').addClass('nb-class-profilisanje');
1629
1630}
1631
1632/*Inicijalizacija kalendara*/
1633function nbDatePicker(element,options){
1634    element.AnyPicker(options);
1635}
1636
1637function getSiteLang() {
1638    let lang = nb_lang;
1639    return lang;
1640}
1641
1642function getLangForPicker(isMobile) {
1643    let lang = getSiteLang();
1644    let dateLocale = {};
1645    let dateLocaleMobile = 'en';
1646
1647    switch(lang) {
1648        case "cz":
1649            dateLocale = localeDatePicker.cz;
1650            dateLocaleMobile = "cz";
1651            break;
1652        case 'sk':
1653            dateLocale = localeDatePicker.sk;
1654            dateLocaleMobile = "sk";
1655            break;
1656        default:
1657            dateLocale = localeDatePicker.en;
1658    }
1659
1660    if(isMobile) {
1661        return dateLocaleMobile;
1662    } else {
1663        return dateLocale;
1664    }
1665
1666
1667}
1668
1669function ci_initAllDateTimePickers() {
1670    let dateTimePickers = document.querySelectorAll('.gigya-date-of-birth .gigya-input-text');
1671    let dateTimePickersMobile = $('.gigya-date-of-birth .gigya-input-text');
1672
1673    //Restrikcije da korisnik ne moze da bude mladji od 16god
1674    const minDateRestrictions = new Date();
1675    minDateRestrictions.setFullYear(minDateRestrictions.getFullYear() - 16);
1676    minDateRestrictions.setDate(minDateRestrictions.getDate() - 1);
1677
1678    let currentDate = new Date();
1679    let minDay = currentDate.getDate().toString();
1680    let minMonth = '0' + (currentDate.getMonth() + 1).toString();
1681    let minYear = (currentDate.getFullYear() - 16);
1682
1683    let format2= new Intl.DateTimeFormat("en-GB").format(minDateRestrictions);
1684
1685    let dateLocaleMobile = getLangForPicker(true);
1686
1687    if(window.innerWidth < 576) {
1688        dateTimePickersMobile.each(function () {
1689            nbDatePicker($(this),{mode: "datetime",dateTimeFormat: 'dd/MM/yyyy',theme:"iOS",maxValue:format2,maxRows: 180, lang: dateLocaleMobile});
1690            $(this).attr("readonly", "true");
1691        })
1692    } else {
1693        dateTimePickers.forEach((datePicker) => {
1694
1695            IMask(datePicker,
1696                {
1697                    mask: Date,
1698                    lazy: false,
1699                    autofix: false,
1700                    pattern: 'd/`m/`Y',
1701                    blocks: {
1702                        d: {mask: IMask.MaskedRange, placeholderChar: 'd', from: 1, to: 31, maxLength: 2},
1703                        m: {mask: IMask.MaskedRange, placeholderChar: 'm', from: 1, to: 12, maxLength: 2},
1704                        Y: {mask: IMask.MaskedRange, placeholderChar: 'y', from: 1900, to: minYear, maxLength: 4}
1705                    },
1706
1707
1708                    format: function (date) {
1709                        var day = date.getDate();
1710                        var month = date.getMonth() + 1;
1711                        var year = date.getFullYear();
1712
1713                        if (day < 10) day = "0" + day;
1714                        if (month < 10) month = "0" + month;
1715
1716                        return [day, month, year].join('/');
1717                    },
1718
1719                    parse: function (str) {
1720                        var yearMonthDay = str.split('/');
1721                        return new Date(yearMonthDay[2], yearMonthDay[1] - 1, yearMonthDay[0]);
1722                    },
1723                    min: new Date(1900, 0, 1),
1724                    max: minDateRestrictions,
1725                });
1726        });
1727    }
1728}
1729
1730/*Inicijalizacija godine godjenja na SS Moja porodica*/
1731function ci_initYearPickerMyFamily() {
1732
1733    let yearPickers = document.querySelectorAll('.gigya-my-family-container .js-birthYear .gigya-input-text');
1734
1735    let dateLocale = getLangForPicker(false);
1736    dateLocale.format = 'yyyy';
1737
1738    yearPickers.forEach((datePicker) => {
1739
1740        if(!datePicker.classList.contains('initialized')) {
1741            new tempusDominus.TempusDominus(datePicker,
1742                {
1743                    display: {
1744                        icons: {
1745                            type: 'icons',
1746                            time: 'fas fa-clock',
1747                            date: 'fas fa-calendar',
1748                            up: 'arrow arrow-up',
1749                            down: 'arrow arrow-down',
1750                            previous: 'arrow arrow-prev',
1751                            next: 'arrow arrow-next',
1752                            today: 'fas fa-calendar-check',
1753                            clear: 'fas fa-trash',
1754                            close: 'fas fa-times'
1755                        },
1756                        sideBySide: false,
1757                        calendarWeeks: false,
1758                        viewMode: 'calendar',
1759                        toolbarPlacement: 'bottom',
1760                        keepOpen: false,
1761                        buttons: {
1762                            today: false,
1763                            clear: false,
1764                            close: false
1765                        },
1766                        components: {
1767                            calendar: true,
1768                            date: false,
1769                            month: false,
1770                            year: true,
1771                            decades: true,
1772                            clock: false
1773                        },
1774                        inline: false,
1775                        theme: 'light'
1776                    },
1777                    localization: dateLocale,
1778                    restrictions: {
1779                        minDate: undefined,
1780                        maxDate: new Date(),
1781                        disabledDates: [],
1782                        enabledDates: [],
1783                        daysOfWeekDisabled: [],
1784                        disabledTimeIntervals: [],
1785                        disabledHours: [],
1786                        enabledHours: []
1787                    }
1788                })
1789        }
1790
1791        datePicker.classList.add('initialized');
1792    })
1793
1794    $('.gigya-my-family-container .gigya-array-add-btn').click (function () {
1795        ci_initYearPickerMyFamily();
1796        ci_myFamilyBirthYear();
1797    })
1798}
1799
1800/*Inicijalizacija datuma na stranici moje kupovine*/
1801function ci_initMyPurchasesDatePicker() {
1802    let dateTimePickers = document.querySelectorAll('.profile-loyalty-purchases .date-input-wrapper input');
1803
1804    let dateLocale = getLangForPicker();
1805    dateLocale.format = 'dd.MM.yyyy';
1806
1807    dateTimePickers.forEach((date) => {
1808
1809        if(!date.classList.contains('initialized')) {
1810            new tempusDominus.TempusDominus(date,
1811                {
1812                    display: {
1813                        icons: {
1814                            type: 'icons',
1815                            time: 'fas fa-clock',
1816                            date: 'fas fa-calendar',
1817                            up: 'arrow arrow-up',
1818                            down: 'arrow arrow-down',
1819                            previous: 'arrow arrow-prev',
1820                            next: 'arrow arrow-next',
1821                            today: 'fas fa-calendar-check',
1822                            clear: 'fas fa-trash',
1823                            close: 'fas fa-times'
1824                        },
1825                        sideBySide: false,
1826                        calendarWeeks: false,
1827                        viewMode: 'calendar',
1828                        toolbarPlacement: 'bottom',
1829                        keepOpen: false,
1830                        buttons: {
1831                            today: false,
1832                            clear: false,
1833                            close: false
1834                        },
1835                        components: {
1836                            calendar: true,
1837                            date: true,
1838                            month: true,
1839                            year: true,
1840                            decades: true,
1841                            clock: false
1842                        },
1843                        inline: false,
1844                        theme: 'light'
1845                    },
1846                    localization: dateLocale,
1847                    restrictions: {
1848                        minDate: undefined,
1849                        maxDate: undefined,
1850                        disabledDates: [],
1851                        enabledDates: [],
1852                        daysOfWeekDisabled: [],
1853                        disabledTimeIntervals: [],
1854                        disabledHours: [],
1855                        enabledHours: []
1856                    },
1857
1858                    useCurrent: false,
1859                });
1860        };
1861        date.classList.add('initialized');
1862    })
1863
1864}
1865
1866function ci_closeDatetimePicker() {
1867
1868    let dateInput = $('.profile-loyalty-purchases .date-input-wrapper input')
1869    let br = 0;
1870    dateInput.each(function (index, element) {
1871
1872        $(this).click(function () {
1873
1874            if(!$(this).is('[class*="datepicker"]')) {
1875                $(this).addClass('datepicker-'+ br +'')
1876            }
1877
1878            let cls = parseInt($(this).attr("class").split(' ')[3].split('-')[1]);
1879
1880            let datepickers = $('.tempus-dominus-widget');
1881
1882            datepickers.each(function () {
1883
1884                datepickers.addClass('hidden');
1885                datepickers.removeClass('visible-date');
1886
1887                datepickers.eq(cls).removeClass('hidden');
1888                datepickers.eq(cls).addClass('visible-date');
1889
1890            })
1891
1892            br++;
1893        })
1894
1895    })
1896
1897    $('body.uc-ci_profile_loyalty_purchases').click(function(e) {
1898        let dateInput = $('.profile-loyalty-purchases .date-input-wrapper .date-to, .tempus-dominus-widget .calendar-header,  .tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months,   .profile-loyalty-purchases .date-input-wrapper .date-from')
1899        if (!dateInput.is(e.target) && dateInput.has(e.target).length === 0)
1900        {
1901            $('.tempus-dominus-widget').addClass('hidden');
1902            $('.tempus-dominus-widget').removeClass('visible-date');
1903        }
1904    });
1905
1906}
1907
1908/*Funkcionalnost Oznaci sve na SS Saglasnost*/
1909function ci_checkAllCheckboxes() {
1910    $(".gigya-registration-completion-container .consent-check-all .gigya-input-checkbox").click(function () {
1911        //Ukoliko je "Oznaci sve" cekiran, cekiraju se svi ostali koji nisu oznaceni
1912        if($(this).prop('checked')){
1913            $('.gigya-registration-completion-container .gigya-input-checkbox').not(this).each(function(){
1914                let $this = $(this);
1915                if (!$this.prop('checked')) {
1916                    $this.parent().find('label.gigya-label').trigger('click');
1917                }
1918            });
1919
1920        }else{
1921            //Ukoliko "Oznaci sve" nije cekiran, odcekiraj sve ostale koji su cekirani
1922            $('.gigya-registration-completion-container .gigya-input-c
1922heckbox').not(this).each(function(){
1923                let $this = $(this);
1924                if ($this.prop('checked')) {
1925                    $this.parent().find('label.gigya-label').trigger('click');
1926                }
1927            });
1928        }
1929
1930    });
1931
1932    //klik na ostale checkboxove
1933    $('.gigya-registration-completion-container .gigya-composite-control-checkbox:not(.consent-check-all)  input:checkbox').click(function(){
1934        $('.gigya-registration-completion-container .consent-check-all .gigya-input-checkbox').prop('checked', false);
1935    })
1936
1937}
1938
1939/*Zabrana paste opcije na input polje koje je type="password"*/
1940function ci_disablePasteOnPasswordInput() {
1941    let inputPassword = document.querySelectorAll('.gigya-input-password');
1942    inputPassword.forEach((input) => {
1943        input.addEventListener('paste', (e) => {
1944            e.preventDefault();
1945
1946            ci_createAlert('#ci-alert-password-copying', '#alert-password-copying');
1947
1948        });
1949    })
1950}
1951
1952/* Uklanjanje poslednjeg clana porodice */
1953
1954function removeFamilyMember(){
1955
1956    if(!$('.gigya-screen .gigya-array-manager').length){
1957        return false;
1958    }
1959    if(!$('#ci-profile-family_content .reset-family-member-lnk.js-reset-family-members').length){
1960        return false;
1961    }
1962
1963    /* dugme remove */
1964    let removeBTNLast = '.gigya-screen .gigya-array-manager.disable-delete:visible > .gigya-array-template > .buttons-wrapper button.gigya-array-remove-btn';
1965    let removeBTN = '.gigya-screen .gigya-array-manager:visible > .gigya-array-template > .buttons-wrapper button.gigya-array-remove-btn';
1966    let $removeBTN = $(removeBTN);
1967    let $btnADD = $('.gigya-array-add-btn');
1968    $btnADD.add($(removeBTN)).on('click', function(){
1969        $(removeBTN).each(function(){
1970            if($(this).hasClass('nb--noted')){
1971                //za svaki slucaj*/
1972            }else{
1973                $(this).addClass('nb--noted');
1974            }
1975        })
1976
1977        if($(removeBTN).length === 1){
1978            if($('.gigya-screen .gigya-array-manager').hasClass('disable-delete')){
1979                removeLastMember();
1980            }
1981        }
1982    })
1983    //za slucaj ako je na load stranice samo jedan clan
1984    if($('.gigya-screen .gigya-array-manager').hasClass('disable-delete')){
1985        removeLastMember()
1986    }
1987    function removeLastMember(){
1988        if($(removeBTN+'> a').length){
1989            return false
1990        }
1991
1992        $('#ci-profile-family_content .reset-family-member-lnk.js-reset-family-members').clone().appendTo(removeBTN)
1993        $('.reset-family-member-lnk.js-reset-family-members').on('click',function(e){
1994            e.stopPropagation();
1995            e.preventDefault();
1996            $('input[name="data.family.member[0].birthYear"]').val('');
1997            $('select[name="data.family.member[0].gender"]').val('');
1998        })
1999    }
2000    /*    $('.gigya-screen-content .gigya-screen.gigya-my-family-container .gigya-array-template .buttons-wrapper .gigya-array-remove-btn').on('click',function(){
2001            if($('.gigya-screen .gigya-array-manager').hasClass('disable-delete')){
2002                $('#ci-profile-family_content .reset-family-member-lnk.js-reset-family-members:visible').clone().appendTo(removeBTN)
2003                $('.reset-family-member-lnk.js-reset-family-members').on('click',function(e){
2004                    e.stopPropagation();
2005                    e.preventDefault();
2006                    $('input[name="data.family.member[0].birthYear"]').val('');
2007                })
2008            }
2009        })*/
2010}
2011
2012/*Funkcioanlnost za prikazivanje/sakrivanje lozinke*/
2013function ci_showPassword() {
2014    let iconShowPassword = document.querySelectorAll(".gigya-composite-control-password .icon-view");
2015
2016
2017    iconShowPassword.forEach((icon) => {
2018
2019        icon.onclick = function() {
2020
2021            let input = icon.closest('.gigya-composite-control-password').querySelector('.gigya-input-password');
2022
2023            icon.classList.toggle('active');
2024
2025            //Menjanje atributa type
2026            if(input.getAttribute("type") === "password") {
2027                input.setAttribute("type","text");
2028            }else {
2029                input.setAttribute("type","password");
2030            }
2031        }
2032    });
2033
2034}
2035
2036/*Iskljucivanje autocomplete-a na poljima forme*/
2037function ci_turnOffAutocomplete() {
2038    $("input, select, textarea").attr("autocomplete", "off");
2039
2040    $('.gigya-login-form input').attr("autocomplete", "new-password");
2041}
2042
2043/*Kreiranje input polja za unos verifikacionog koda*/
2044function ci_createInputFields(inputNum, containerClass,on_modal) {
2045
2046    let isModal = false;
2047    if(on_modal){
2048        isModal = true
2049    }
2050    let modal = '.ci-wrapper ';
2051    if (isModal){
2052        modal = '#ci_modal ';
2053    }
2054
2055
2056    var numberOfInputs = 6;
2057
2058    let containerClassDefault ='.gigya-verify-sportandbonus-application-container';
2059
2060    if(containerClass) {
2061        containerClassDefault = containerClass;
2062    }
2063
2064    if(document.querySelector(modal+containerClassDefault) === null) {
2065        return;
2066    }
2067
2068    if (inputNum) {
2069        numberOfInputs = inputNum;
2070    }
2071
2072    let firstInput = document.querySelector(modal+containerClassDefault+' .gigya-composite-control-textbox .gigya-input-text');
2073
2074    let placeForInputs = document.querySelector(modal+containerClassDefault+' .gigya-composite-control-textbox');
2075
2076    if(firstInput.length === 0) {
2077        return;
2078    }
2079
2080    //Pravljenje input polja
2081    if(document.querySelector(modal+containerClassDefault+' .gigya-composite-control-textbox .small-input') === null) {
2082
2083        for (let i = 0; i < numberOfInputs; i++) {
2084            let inputField = document.createElement("input");
2085
2086            inputField.setAttribute("type", "text");
2087            inputField.setAttribute("class", "small-input");
2088            inputField.setAttribute("id", `inputField${i}`);
2089            inputField.setAttribute("value", "");
2090            inputField.setAttribute("maxlength", "1");
2091            inputField.setAttribute("number", `${i.toString()}`);
2092
2093            if (document.querySelectorAll(modal+containerClassDefault+' .gigya-composite-control-textbox .small-input').length < numberOfInputs) {
2094                placeForInputs.append(inputField);
2095            }
2096
2097        }
2098    }
2099
2100    let inputs = $('.small-input');
2101
2102    var array= [];
2103    let num;
2104    let data;
2105
2106
2107    //Uzimanje vrednosti unetih u input polja i upisivanje u glavno input polje
2108    inputs.each(function() {
2109
2110        $(this).change(function() {
2111
2112            num = $(this).val();
2113            data = $(this).attr("number");
2114
2115            array[parseInt(data)] = num;
2116
2117            firstInput.setAttribute("value", array.toString().replaceAll(',', ''));
2118        })
2119
2120    })
2121
2122    //Kada se input polje popuni predji na sledece
2123    inputs.keyup(function () {
2124        if (this.value.length === this.maxLength) {
2125            $(this).next(".small-input").focus();
2126        }
2127    });
2128
2129    //Brisanje vrednosti iz input polja
2130    $(':input').keydown(function(e) {
2131        if ((e.which === 8 || e.which === 46) && $(this).val() ==='') {
2132            $(this).prev('input').focus();
2133        }
2134    });
2135
2136    //Kopiranje u input polja
2137    document.addEventListener("paste", function(e) {
2138
2139        if (e.target.classList.contains('small-input')) {
2140            var data = e.clipboardData.getData('Text');
2141            // split clipboard text into single characters
2142            data = data.split('').slice(0, numberOfInputs);
2143            array = data;
2144
2145            [].forEach.call(document.querySelectorAll(".small-input"), (node, index) => {
2146                // And set input value to the relative character
2147                node.value = data[index];
2148            });
2149        }
2150        firstInput.setAttribute("value", array.toString().replaceAll(',', ''));
2151    });
2152
2153    //Klik na dugme "Posalji link ponovo" brise unete vrednosti u input polja
2154    document.querySelector(modal+containerClassDefault+' .gigya-composite-control-link a').onclick = function () {
2155        document.querySelectorAll('.small-input').forEach(function(input) {
2156            input.value = "";
2157            input.setAttribute("value", "")
2158        })
2159
2160        array=[];
2161        document.querySelector(modal+containerClassDefault+' .gigya-composite-control-textbox .gigya-input-text').setAttribute("value",  "");
2162        //document.querySelector(modal+containerClassDefault+' .gigya-composite-control-textbox .gigya-input-text').value="";
2163    }
2164
2165    document.querySelector(modal+containerClassDefault+' .gigya-composite-control-submit .gigya-input-submit').onclick = function () {
2166        document.querySelectorAll('.small-input').forEach(function(input) {
2167            input.value = "";
2168            input.setAttribute("value", "")
2169        })
2170    }
2171}
2172
2173function ci_getIndex(element){
2174    if(element.data('ss-index')){
2175        return element.data('ss-index');
2176    }else{
2177        return false;
2178    }
2179}
2180
2181function ci_getTask(element){
2182    if(element.data('ss-task')){
2183        return element.data('ss-task');
2184    }else{
2185        return false;
2186    }
2187}
2188
2189function ci_getUserNavForm(element){
2190    if(element.data('ss-form')){
2191        return element.data('ss-form');
2192    }else{
2193        return '';
2194    }
2195}
2196
2197function ci_getIsExternalLink(element){
2198    if(element.data('ss-external')){
2199        if(element.data('ss-external') === 'yes'){
2200            return true;
2201        }
2202        return false;
2203    }else{
2204        return false;
2205    }
2206}
2207
2208function ci_disableLink(element){
2209    element.css('pointer-events','none');
2210}
2211
2212function ci_enableLink(element){
2213    element.css('pointer-events','none');
2214}
2215
2216function ci_isLogut(element){
2217    if(ci_getTask(element) === _logut){
2218        return true;
2219    }
2220    return false;
2221}
2222
2223function ci_isLogin(element){
2224    if(ci_getTask(element) === _login){
2225        return true;
2226    }
2227    return false;
2228}
2229
2230function ci_logoutCallback(response) {
2231
2232    if (response.errorCode === 0) {
2233        localStorage.removeItem("ci_jwtToken");
2234        nbshopJS.logoutUser();
2235
2236        ci_logoutAjax();
2237
2238        // location.reload();
2239        console.log("Logout info");
2240    } else {
2241        // ako se dogodi greška, ispiši je u konzolu
2242        console.log("Logout error: " + response.errorMessage);
2243        ci_addLog('ci_logoutCallback', 'response', JSON.stringify(response));
2244    }
2245
2246}
2247
2248function ci_onloadPage(redirectUrl,id){
2249    if(redirectUrl != ''){
2250        window.location.href = redirectUrl;
2251    }
2252
2253    return false;
2254}
2255
2256function ci_userNavAjax(element,e){
2257    nb_dump('Pokrenut zahtev','green');
2258    e.preventDefault();
2259    if(!ci_getIndex(element) || !ci_getTask(element)){
2260        alert('Problem! ');
2261    }
2262    //modal na koji ce se ucitati SS iz ajaxa
2263    $ci_modal = $('#customer_identity_layout_modal');
2264
2265    //ako je vec uctana trazena forma, ne ide na ajax nego samo otvori modal
2266    if($ci_modal.find('#gigya-'+ci_getUserNavForm(element)+'-form').length){
2267        $ci_modal.modal('show');
2268        return false;
2269    }
2270    // ci_disableLink(element);
2271
2272
2273
2274    //ajax zahtev
2275    $.ajax({
2276        type: "POST",
2277        url: ci_getIndex(element), //definisano u linku
2278        data: {
2279            task: ci_getTask(element), //definisano u linku
2280            ajax:'yes',
2281            external: ci_getIsExternalLink(element)//definisano u linku - da li ce ici na drugi sajt ili otvara modal
2282        },
2283        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
2284        dataType: 'json',
2285        beforeSend: function() {
2286            nb_dump('Salje se zahtev');
2287        },
2288        success: function(ret) {
2289            nb_dump('Vracen zahtev');
2290            //ako nije ucitana gigya ucitava header_script iz ajaxa
2291            if((typeof gigya == "undefined")) {
2292                $('body').append(ret.html);
2293                checkGigya1 = setInterval(function () {
2294                    if((typeof gigya !== "undefined")){
2295                        ci_gigyaLiseners()
2296                        clearInterval(checkGigya1);
2297                    }
2298                }, 100);
2299            }
2300
2301            if(ci_isLogut(element)){
2302                checkGigya = setInterval(function () {
2303                    if((typeof gigya !== "undefined")){
2304                        gigya.accounts.logout({callback: ci_logoutCallback});
2305                        // location.reload();
2306                        clearInterval(checkGigya);
2307                    }
2308                }, 100);
2309
2310                return false;
2311            }
2312            if(ci_isLogin(element) && ci_getIsExternalLink(element) === 'no'){
2313                location.reload();
2314            }
2315
2316            //ako je u linku definisano 'yes' ide na drugi sajt
2317            if(ci_getIsExternalLink(element)){
2318
2319                redirectUrl = nb_active_page_url;
2320
2321                if(e.which || (!e.hasOwnProperty('which') && e.hasOwnProperty('type') && e.type == 'show')) {
2322                    localStorage.setItem('ci_initOfLogin', nb_active_page_url);
2323                } else {
2324
2325                    ci_initOfLogin = localStorage.getItem('ci_initOfLogin')
2326
2327                    if(typeof ci_initOfLogin !== "undefined" && ci_initOfLogin != null){
2328                        // alert('ci ini inside');
2329                        redirectUrl = ci_initOfLogin;
2330                    }
2331                }
2332
2333
2334
2335                // alert(redirectUrl);
2336                var dataSSOLogin = {
2337                    authFlow: 'popup',
2338                    redirectURL: redirectUrl,
2339                    useChildContext: true,
2340                    context: {
2341                        ssPrefix: ret.ssPrefix,
2342                        ssRegUrl: ci_getIndex(element)
2343                    }
2344                }
2345
2346                gigya.sso.login(dataSSOLogin);
2347
2348                // window.location.href = ret.link;
2349                return false;
2350            }
2351
2352            //podaci o SS iz ajaxa
2353            ssName = ret.ssName;
2354            ssId = ret.ssId;
2355            id =  'ci_modal';
2356
2357            //inicijalizacija funkcije kada se ucita skripta
2358            checkGigya = setInterval(function () {
2359                if((typeof gigya !== "undefined")){
2360                    //ci_showScreenSetWithStartScreen(ssName,ssId,id)
2361                    clearInterval(checkGigya);
2362                    element.css('pointer-events','all');
2363                }
2364            }, 100);
2365            // ci_enableLink(element)
2366        },
2367        error: function(ret) {
2368            alert('GRESKA!!!')
2369        }
2370    });
2371}
2372
2373function ci_openSSForEmailInModal(prefix) {
2374
2375    if($('.gigya-update-profile-container .gigya-composite-control-link').has('.gigya-email-edit').length !== 0) {
2376        $('.gigya-update-profile-container .gigya-composite-control-link').has('.gigya-email-edit').each(function() {
2377            $(this).click(function (e) {
2378                e.preventDefault();
2379                e.stopImmediatePropagation();
2380                ciShowScreenSet.gigyaChangeEmailScreen(prefix+'-ProfileUpdate','gigya-change-email-screen','ci_modal');
2381            })
2382        })
2383    }
2384}
2385
2386function loadPurchasesData(page, loadStores){
2387    $("#purchases-table .loader-wrapper").removeClass("hidden");
2388
2389    var dateFrom    = $('#search_lp_date_from').val();
2390    var dateTo      = $('#search_lp_date_to').val();
2391    var storeCode   = $('#place_lp').val();
2392    var productCode = $('#product_code_lp').val();
2393
2394    $.ajax({
2395        type: "POST",
2396        url: nb_active_page_url,
2397        data: {
2398            search_lp_date_from: dateFrom,
2399            search_lp_date_to: dateTo,
2400            place_lp: storeCode,
2401            product_code_lp: productCode,
2402            ajax: 'yes',
2403            page: page,
2404            task: "ci_profile"
2405        },
2406        dataType: 'json',
2407        success: function (ret) {
2408            if(ret.flag){
2409                $('#purchases-table').html(ret.html);
2410
2411                if(ret.storesSelectHtml != '' && loadStores){
2412                    $('#place_lp').html(ret.storesSelectHtml);
2413                }
2414            }
2415            $("#purchases-table .loader-wrapper").addClass("hidden");
2416        }
2417    });
2418}
2419
2420
2421function updateAppyForSportAndBonusFlowStatus(){
2422    nb_dump('updateAppyForSportAndBonusFlowStatus Start');
2423
2424    if(typeof event === 'undefined'){
2425        nb_dump('ERROR updateAppyForSportAndBonusFlowStatus','red');
2426        return false;
2427    }
2428
2429    if (event.currentScreen  === 'gigya-apply-for-loyalty-card-screen'){
2430        nb_dump('true')
2431        var currentDate = new Date().toJSON().slice(0, 10);
2432
2433        var flowApplyForSportAndBonusCount = gigya.accounts.getAccountInfo({"include":"data.flows.applyForSportAndBonus.Count"});
2434        nb_dump(flowApplyForSportAndBonusCount)
2435        var params = {
2436            data: {
2437                flows: {
2438                    applyForSportAndBonus : {
2439                        Date: currentDate,
2440                        Count: (flowApplyForSportAndBonusCount == null ? 1 : flowApplyForSportAndBonusCount+1)
2441                    }
2442                }
2443            }
2444        };
2445        nb_dump('okida se gigya')
2446        gigya.accounts.setAccountInfo(params);
2447    }
2448    nb_dump('updateAppyForSportAndBonusFlowStatus End');
2449}
2450
2451function ci_disableLoginUserPopupAndRedirect(){
2452    $('#login_modal').on('show.bs.modal', function (e) {
2453        $('.header .login-btn').trigger('click',e);
2454        return e.preventDefault() // stops modal from being shown
2455    })
2456
2457    $('#register_modal').on('show.bs.modal', function (e) {
2458        $('.header .register-btn').trigger('click',e);
2459        $('#register_modal').addClass('hidden')
2460        return e.preventDefault() // stops modal from being shown
2461    })
2462}
2463
2464let isValidCity = false;
2465let isValidAddress = false;
2466
2467function ci_resetFieldOnRegionChange() {
2468    $('.js-address-region .ci-region-profile').change(function () {
2469        let regionValue = $(this).find(":selected").text();
2470        let regionID = $(this).find(":selected").val();
2471        $(this).parent('.js-address-region').find('input.gigya-input-text').val(regionValue);
2472        $(this).parent('.js-address-region').find('input.gigya-input-text').click();
2473        $(this).closest('.gigya-profile-form').find('#nbAddress').val('');
2474        $(this).closest('.gigya-profile-form').find('.js-address-street input[name="data.address.street"]').val('');
2475        $(this).closest('.gigya-profile-form').find('#nbCity').val('');
2476        $(this).closest('.gigya-profile-form').find('.js-address-city input[name="data.address.cityAndMunicipality"]').val('');
2477        $(this).closest('.gigya-profile-form').find('.js-address-street
2477-number input[name="data.address.streetNumber"]').val('');
2478        $(this).closest('.gigya-profile-form').find('.js-postal-code input[name="data.address.postalCode"]').val('');
2479
2480        $('#nbCity').typeahead('destroy');
2481        ci_userCityProfile(regionID);
2482    })
2483}
2484
2485function ci_resetFieldOnCountryChange() {
2486    let postcodeInput = $('.js-postal-code input[name="data.address.postalCode"]');
2487    $('.js-address-country .ci-country-profile').change(function () {
2488        let countryValue = $(this).find(":selected").text();
2489        let countryID = $(this).find(":selected").val();
2490        postcodeInput.removeAttr("readonly");
2491        $(this).parent('.js-address-country').find('input.gigya-input-text').val(countryValue);
2492        $(this).parent('.js-address-country').find('input.gigya-input-text').click();
2493        $(this).closest('.gigya-profile-form').find('#nbAddress').val('');
2494        $(this).closest('.gigya-profile-form').find('.js-address-street input[name="data.address.street"]').val('');
2495        $(this).closest('.gigya-profile-form').find('#nbCity').val('');
2496        $(this).closest('.gigya-profile-form').find('.js-address-city input[name="data.address.cityAndMunicipality"]').val('');
2497        $(this).closest('.gigya-profile-form').find('.js-address-street-number input[name="data.address.streetNumber"]').val('');
2498        $(this).closest('.gigya-profile-form').find('.js-postal-code input[name="data.address.postalCode"]').val('');
2499
2500        if($('#nbCity').length > 0) {
2501            $('#nbCity').typeahead('destroy');
2502        }
2503        if(countryValue == 'Slovenia' || countryValue == 'Slovenija') {
2504            ci_userCityProfile('');
2505            postcodeInput.attr("readonly", "true");
2506        }
2507    })
2508}
2509
2510function ci_resetFieldOnCityChange() {
2511    $('.js-address-city #nbCity').change(function () {
2512        let country =  $('.js-address-country .ci-country-profile').find(":selected").text();
2513        let cityId = $(this).closest('.js-address-city').find("#ci_selected_city").val();
2514        $(this).closest('.gigya-profile-form').find('#nbAddress').val('');
2515        $(this).closest('.gigya-profile-form').find('.js-address-street input[name="data.address.street"]').val('');
2516        $(this).closest('.gigya-profile-form').find('.js-address-street-number input[name="data.address.streetNumber"]').val('');
2517        if($(this).closest('.gigya-profile-form').find('.js-address-entrance').length !== 0) {
2518            $(this).closest('.gigya-profile-form').find('.js-address-entrance input[name="data.address.entrance"]').val('');
2519        }
2520        if($(this).closest('.gigya-profile-form').find('.js-address-block').length !== 0) {
2521            $(this).closest('.gigya-profile-form').find('.js-address-block input[name="data.address.block"]').val('');
2522        }
2523        if(ci_typeaheadStrictType != "postCodeAutoFillByCity") {
2524            $(this).closest('.gigya-profile-form').find('.js-postal-code input[name="data.address.postalCode"]').val('');
2525        }
2526
2527        if($('#nbAddress').length > 0) {
2528            $('#nbAddress').typeahead('destroy');
2529        }
2530
2531        if(country == 'Slovenia' || country == '' || country == 'Slovenija') {
2532            ci_userStreetProfile(cityId);
2533        }
2534
2535    })
2536}
2537
2538function ci_resetFieldOnAddressChange() {
2539    $('.js-address-street #nbAddress').change(function () {
2540        $(this).closest('.gigya-profile-form').find('.js-address-street-number input[name="data.address.streetNumber"]').val('');
2541        if(ci_typeaheadStrictType != "postCodeAutoFillByCity") {
2542            $(this).closest('.gigya-profile-form').find('.js-postal-code input[name="data.address.postalCode"]').val('');
2543        }
2544    })
2545}
2546
2547//si country
2548function ci_userCountryProfile() {
2549
2550    if(!ci_countryFieldOnPersonalData) {
2551        return false;
2552    }
2553
2554    let countryField = $('.js-address-country:visible');
2555    let countryFieldLabel = countryField.find('> label');
2556    let countryInputField = countryField.find('input.gigya-input-text');
2557    let countryInputFieldVal = countryInputField.val();
2558    let cityId = $('.js-address-city').find("#ci_selected_city").val();
2559    let postcodeInput = $('.js-postal-code input[name="data.address.postalCode"]');
2560
2561    if(countryField.length === 0) {
2562        return false;
2563    }
2564
2565    if(countryInputFieldVal == 'Slovenia' || countryInputFieldVal == 'Slovenija') {
2566        ci_userCityProfile('');
2567        ci_userStreetProfile(cityId);
2568        postcodeInput.attr("readonly", "true");
2569    }
2570
2571    countryInputField.css("display", "none");
2572    let selectField = '<select id="ci_country_profile" class="gigya-input-text ci-country-profile"></select>';
2573
2574    $(selectField).insertAfter(countryFieldLabel);
2575
2576    $.ajax({
2577        type: "POST",
2578        url: nb_site_url,
2579        data: {
2580            nbAjax: '1',
2581            ajax: 'yes',
2582            task: 'search_countriesgeo'
2583        },
2584        dataType: 'json',
2585        success: function (ret) {
2586            if (ret.flag) {
2587
2588                if(ret.list != 'undefined' && !$.isEmptyObject(ret.list)){
2589
2590                    var options = '<option value=""></option>';
2591
2592                    let selectedOption = '';
2593
2594                    for(var i in ret.list) {
2595                        if(countryInputFieldVal != '' && countryInputFieldVal == ret.list[i].name) {
2596                            selectedOption = 'selected';
2597                        }
2598                        options += '<option '+selectedOption+' value="'+ ret.list[i].id +'">' + ret.list[i].name + '</option>';
2599
2600                        selectedOption = '';
2601                    }
2602                }
2603
2604                $('.js-address-country .ci-country-profile').html(options);
2605            }
2606        }
2607
2608    });
2609
2610    ci_resetFieldOnCountryChange();
2611
2612}
2613
2614//ro instance with region
2615function ci_userRegionProfile() {
2616
2617    if(!ci_regionFieldOnPersonalData) {
2618        return false;
2619    }
2620
2621    let regionField = $('.js-address-region:visible');
2622    let regionFieldLabel = regionField.find('> label');
2623    let regionInputField = regionField.find('input.gigya-input-text');
2624    let regionInputFieldVal = regionInputField.val();
2625    let cityId = $('.js-address-city').find("#ci_selected_city").val();
2626    let postcodeInput = $('.js-postal-code input[name="data.address.postalCode"]');
2627    postcodeInput.attr("readonly", "true");
2628
2629    if(regionField.length === 0) {
2630        return false;
2631    }
2632
2633    ci_userCityProfile(regionInputFieldVal);
2634    ci_userStreetProfile(cityId);
2635    ci_userStreetNumberProfile();
2636
2637    regionInputField.css("display", "none");
2638    let selectField = '<select id="ci_region_profile" class="gigya-input-text ci-region-profile"></select>';
2639
2640    $(selectField).insertAfter(regionFieldLabel);
2641
2642    $.ajax({
2643        type: "POST",
2644        url: nb_site_url,
2645        data: {
2646            nbAjax: '1',
2647            ajax: 'yes',
2648            task: 'search_regions'
2649        },
2650        dataType: 'json',
2651        success: function (ret) {
2652            if (ret.flag) {
2653
2654                if(ret.list != 'undefined' && !$.isEmptyObject(ret.list)){
2655
2656                    var options = '<option value=""></option>';
2657
2658                    let selectedOption = '';
2659
2660                    for(var i in ret.list) {
2661                        if(regionInputFieldVal != '' && regionInputFieldVal == ret.list[i].name) {
2662                            selectedOption = 'selected';
2663                        }
2664                        options += '<option '+selectedOption+' value="'+ ret.list[i].id +'">' + ret.list[i].name + '</option>';
2665
2666                        selectedOption = '';
2667                    }
2668                }
2669
2670                $('.js-address-region .ci-region-profile').html(options);
2671            }
2672        }
2673
2674    });
2675
2676    ci_resetFieldOnRegionChange();
2677
2678}
2679
2680function ci_userCityProfile(regionId){
2681
2682    if(smartformId !== '') {
2683        return false;
2684    }
2685
2686    let selectedRegionID = '';
2687
2688    if(regionId != '') {
2689        selectedRegionID = regionId;
2690    }
2691
2692    // let link = nb_site_url+'?nbAjax=1&ajax=yes&task=search_cities&search=%QUERY';
2693    let link = nb_site_url_with_country_lang+'?nbAjax=1&ajax=yes&task=search_cities&search=%QUERY';
2694
2695    if(selectedRegionID != '') {
2696        // link = nb_site_url+'?nbAjax=1&ajax=yes&task=search_cities&search=%QUERY&regionId='+selectedRegionID;
2697        link = nb_site_url_with_country_lang+'?nbAjax=1&ajax=yes&task=search_cities&search=%QUERY&regionId='+selectedRegionID;
2698    }
2699
2700    let cityField = $('.profile .js-address-city input[name="data.address.cityAndMunicipality"]');
2701
2702    if(cityField.parent().find('#nbCity').length == 0) {
2703        cityField.parent().append('<input id="nbCity" type="text" class="gigya-input-text">');
2704        cityField.parent().append('<input id="ci_selected_city" type="hidden" class="gigya-input-text" value="">');
2705    }
2706
2707    cityField.addClass('hidden');
2708
2709    let cityPostcodeField = $('input[name="data.address.postalCode"]:visible');
2710
2711    if(cityField.length){
2712        var ci_selectCity = new Bloodhound({
2713            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
2714            queryTokenizer: Bloodhound.tokenizers.whitespace,
2715            limit: 50,
2716            remote: {
2717                url: link,
2718                filter: function (cities){
2719                    return $.map(cities.list, function (elem) {
2720                        return elem;
2721                    });
2722                }
2723            }
2724        });
2725
2726        //definisanje novog inputa
2727        let cityField_new = $('#nbCity');
2728        cityField_new.val(cityField.val()) // dodela vrednosti iz gygia inputa
2729        cityField_new.attr('placeholder',cityField.attr('placeholder'));
2730
2731        cityField_new.on('keyup', function(e){
2732            if($('.js-address-city .twitter-typeahead').length == 0) {
2733                isValidCity = true;
2734            } else  {
2735                isValidCity = false;
2736            }
2737
2738              cityField.val(cityField_new.val())
2739        });
2740
2741        cityField_new.on('focusout', function(e){
2742            if(isValidCity === false) {
2743                $(this).closest('.gigya-profile-form').find('.js-address-city input[name="data.address.cityAndMunicipality"]').val('');
2744                setTimeout(function () {
2745                    $('#nbCity').val('');
2746                }, 300);
2747                if(ci_typeaheadStrictType == "postCodeAutoFillByCity") {
2748                    cityPostcodeField.val('')
2749                }
2750            }
2751        });
2752
2753        cityField_new.typeahead(null, {
2754            name: 'grad',
2755            display: 'name',
2756            limit: 50,
2757            highlight: true,
2758            source: ci_selectCity.ttAdapter()
2759        }).on('typeahead:selected', function (e, ret){
2760            $('#ci_selected_city').val(ret.cityId);
2761            cityField.val(ret.name);
2762            isValidCity = true;
2763            if(ci_typeaheadStrictType == "postCodeAutoFillByCity") {
2764                cityPostcodeField.val(ret.postCode)
2765            }
2766        });
2767
2768        ci_selectCity.initialize();
2769    }
2770
2771    ci_resetFieldOnCityChange();
2772}
2773
2774function ci_userStreetNumberProfile() {
2775    let steetNumber = $('.profile .js-address-street-number input[name="data.address.streetNumber"]');
2776
2777    steetNumber.keyup(function (){
2778        var streetNameValue = $('#nbAddress').val();
2779
2780        if($(this).val() != '') {
2781            $.ajax({
2782                type: "POST",
2783                url: nb_active_page_url,
2784                data: {
2785                    nbAjax: '1',
2786                    ajax: 'yes',
2787                    task: 'search_street_nb',
2788                    streetname: streetNameValue,
2789                    cityid: $('#ci_selected_city').val(),
2790                    streetnumber: $(this).val()
2791                },
2792                dataType: 'json',
2793                success: function (ret) {
2794                    if (ret.flag) {
2795                        $('.profile .js-postal-code .gigya-input-text').val(ret.list[0].postcode);
2796                    } else {
2797                        $('.profile .js-postal-code .gigya-input-text').val('');
2798                    }
2799                }
2800            });
2801        } else {
2802            $('.profile .js-postal-code .gigya-input-text').val('');
2803        }
2804    });
2805}
2806
2807function ci_validateAddressProfile() {
2808    $('#nbCity, input[name="data.address.postalCode').change(function () {
2809        let city = $('#nbCity').val();
2810        let postcode = $('input[name="data.address.postalCode"]:visible').val();
2811
2812        city = encodeURIComponent(city);
2813        postcode = encodeURIComponent(postcode);
2814
2815
2816        $.ajax({
2817            type: "POST",
2818            url: nb_active_page_url,
2819            data:'nbAjax=1&task=validateAddressExistence&&city='+city+'&postcode='+postcode,
2820            contentType: "application/x-www-form-urlencoded;charset=UTF-8",
2821            dataType: 'json',
2822            success: function (ret) {
2823                if(!ret.flag) {
2824                    $('#nbCity').val("");
2825                    $('input[name="data.address.postalCode"]:visible').val("");
2826                    ci_createAlert('#ci-alert-invalid-address', '#alert-invalid-address')
2827                }
2828            }
2829
2830        })
2831    })
2832}
2833
2834function ci_userStreetProfile(cityId){
2835
2836    if(smartformId !== '' || !ci_streetFieldAutocomplete) {
2837        return false;
2838    }
2839
2840    let selectedCityID = '';
2841
2842    if(cityId != '') {
2843        selectedCityID = cityId;
2844    }
2845
2846    // let link = nb_site_url+'?nbAjax=1&ajax=yes&task=search_streets&search=%QUERY';
2847    let link = nb_site_url_with_country_lang+'?nbAjax=1&ajax=yes&task=search_streets&search=%QUERY';
2848
2849    if(selectedCityID != '') {
2850        // link = nb_site_url+'?nbAjax=1&ajax=yes&task=search_streets&search=%QUERY&cityid='+selectedCityID;
2851        link = nb_site_url_with_country_lang+'?nbAjax=1&ajax=yes&task=search_streets&search=%QUERY&cityid='+selectedCityID;
2852    }
2853
2854    let addressField = $('.profile .js-address-street input[name="data.address.street"]');
2855
2856    if(addressField.parent().find('#nbAddress').length == 0) {
2857        addressField.parent().append('<input id="nbAddress" type="text" class="gigya-input-text">');
2858    }
2859
2860    addressField.addClass('hidden');
2861
2862    if(addressField.length){
2863
2864        var ci_selectAddress = new Bloodhound({
2865            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
2866            queryTokenizer: Bloodhound.tokenizers.whitespace,
2867            limit: 30,
2868            remote: {
2869                url: link,
2870                filter: function (address){
2871                    return $.map(address.list, function (elem) {
2872                        return elem;
2873                    });
2874                }
2875            }
2876        });
2877
2878        //definisanje novog inputa
2879        let addressField_new = $('#nbAddress');
2880        addressField_new.val(addressField.val()) // dodela vrednosti iz gygia inputa
2881        addressField_new.attr('placeholder',addressField.attr('placeholder'));
2882
2883        addressField_new.on('keyup', function(e){
2884            if($('.js-address-street .twitter-typeahead').length == 0) {
2885                isValidAddress = true;
2886            } else {
2887                isValidAddress = false;
2888            }
2889
2890            addressField.val(addressField_new.val())
2891        });
2892
2893        addressField_new.on('focusout', function(e){
2894            if(isValidAddress === false) {
2895                $(this).closest('.gigya-profile-form').find('.js-address-street input[name="data.address.street"]').val('');
2896                setTimeout(function () {
2897                    $('#nbAddress').val('');
2898                }, 300);
2899            }
2900        });
2901
2902        addressField_new.typeahead(null, {
2903            name: 'ulica',
2904            display: 'name',
2905            highlight: true,
2906            source: ci_selectAddress.ttAdapter()
2907        }).on('typeahead:selected', function (e, ret){
2908            addressField.val(ret.name);
2909            isValidAddress = true;
2910        });
2911
2912        ci_selectAddress.initialize();
2913
2914    }
2915
2916    ci_resetFieldOnAddressChange();
2917}
2918
2919function ci_forgotPasswordClose(){
2920    let closeModalIcon = $('#ci_modal .close-icon');
2921    $('.js-forgot-password-ok-btn').on('click', function () {
2922        // setTimeout('window.close();',500);
2923        closeModalIcon.click();
2924    })
2925}
2926
2927function ci_NBLog(object){
2928    console.log(object);
2929
2930}
2931
2932function showHideLoyaltyPurchaseFilters(){
2933    let $items_wrapper = $('.form-filters-wrapper-items-wrapper');
2934    let $headline = $('.headline-form-filters');
2935    if(!$items_wrapper.length || !$headline.length){
2936        return false;
2937    }
2938    $headline.on('click',function(){
2939        $items_wrapper.toggleClass('active');
2940    })
2941
2942}
2943
2944function ci_smartFormInit() {
2945
2946    if($('.gigya-update-profile-screen').length !== 0 && smartformId !== '') {
2947        let street = $('.gigya-update-profile-screen .js-address-street');
2948        let streetNumber = $('.gigya-update-profile-screen .js-address-street-number');
2949        let city = $('.gigya-update-profile-screen .js-address-city');
2950        let postCode = $('.gigya-update-profile-screen  .js-postal-code');
2951
2952        street.find("input").addClass('smartform-address-street smartform-instance-ci');
2953        streetNumber.find("input").addClass('smartform-address-number smartform-instance-ci');
2954        city.find("input").addClass('smartform-address-city smartform-instance-ci');
2955        postCode.find("input").addClass('smartform-address-zip smartform-instance-ci');
2956
2957        if(typeof city !== "undefined" && typeof street != "undefined" && typeof streetNumber != "undefined" && typeof postCode !== "undefined") {
2958            postCode.find("input").removeAttr("readonly");
2959            city.find("input").attr("readonly", true);
2960            city.find("input").css("background-color", "#F7F7F7");
2961            city.find("input").css("pointer-events", "none");
2962        }
2963
2964        var inputChanged = false;
2965        var smartFormArrayOfHits = [];
2966        var smartFormClickedElement = false;
2967
2968        smartform.beforeInit = function () {
2969            if(typeof smartformId !== 'undefined' && smartformId !==''){
2970                smartform.setClientId(smartformId);
2971            }
2972        }
2973
2974        function afterRebind() {
2975            smartform.getInstance('smartform-instance-ci');
2976        }
2977
2978        smartform.rebindAllForms(afterRebind);
2979
2980        function validationCallback(result) {
2981            let smartFormAddress = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-address-street .gigya-input-text');
2982            let smartFormAddressNumber = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-address-street-number .gigya-input-text');
2983
2984            smartFormArrayOfHits.push(result.result.type);
2985
2986
2987            if (smartFormArrayOfHits.length === 2 && smartFormArrayOfHits[1] === smartform.AddressValidationResultType.HIT) {
2988                smartFormArrayOfHits = [];
2989            }
2990
2991            if (smartFormArrayOfHits.length === 2 && smartFormArrayOfHits[1] !== smartform.AddressValidationResultType.HIT) {
2992                clearSmartFormField();
2993                smartFormArrayOfHits = [];
2994            }
2995
2996            if (smartFormArrayOfHits.length === 1 && smartFormAddress.val() !== '' && !$(inputChanged).is($(smartFormAddressNumber)) &&
2997                smartFormArrayOfHits[0] !== smartform.AddressValidationResultType.HIT) {
2998                clearSmartFormField();
2999                smartFormArrayOfHits = [];
3000            }
3001
3002            if (smartFormArrayOfHits.length === 1 && smartFormAddress.val() !== '' && $(inputChanged).is($(smartFormAddressNumber)) &&
3003                smartFormArrayOfHits[0] === smartform.AddressValidationResultType.INSUFFICIENT_DATA) {
3004                clearSmartFormField();
3005                smartFormArrayOfHits = [];
3006            }
3007        }
3008
3009        function clearSmartFormField() {
3010            let smartFormAddress = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-address-street .gigya-input-text');
3011            let smartFormAddressNumber = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-address-street-number .gigya-input-text');
3012            let smartFormCity = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-address-city .gigya-input-text');
3013            let smartFormPostalCode = $(inputChanged).closest('.gigya-update-profile-screen').find('.js-postal-code .gigya-input-text');
3014
3015            if($(smartFormAddress).attr("class").indexOf("smartform") >= 0 && smartFormAddressNumber.val() !== '' && $(inputChanged).is($(smartFormAddress))) {
3016                $(smartFormAddressNumber).val('');
3017                $(smartFormCity).val('');
3018                $(smartFormPostalCode).val('');
3019                return;
3020            }
3021            if($(smartFormAddress).attr("class").indexOf("smartform") >= 0 && smartFormAddress.val() !== '' && !$(inputChanged).is($(smartFormAddress))) {
3022                $(inputChanged).val('');
3023                $(smartFormCity).val('');
3024                $(smartFormPostalCode).val('');
3025                return;
3026            }
3027            if($(smartFormAddress).attr("class").indexOf("smartform") >= 0 && smartFormAddressNumber.val() !== '') {
3028                $(inputChanged).val('');
3029            }
3030        }
3031
3032        smartform.afterInit = function () {
3033            var inv_id_country = $("html").attr('lang').toUpperCase();
3034            var instances = smartform.getInstanceIds();
3035
3036            $(document).on("change", function (e) {
3037                if($(e.target).hasClass("gigya-input-text") && $(e.target).attr("class").indexOf("smartform") >= 0) {
3038                    inputChanged = $(e.target);
3039                } else inputChanged = false
3040            })
3041
3042            $(document).on("click", function (e) {
3043                smartFormClickedElement = $(e.target);
3044            })
3045
3046            for(let instance of instances) {
3047                smartform.getInstance(instance).addressControl.setCountry(inv_id_country);
3048                smartform.getInstance(instance).addressControl.addValidationCallback(validationCallback);
3049            }
3050
3051        }
3052
3053        setTimeout(function () {
3054            smartform.afterInit();
3055        }, 200)
3056    }
3057}
3058
3059function changeH1ElementsInSS(){
3060    function changeThis(elementObj,tag){
3061
3062        changedClass = 'nb-changed';
3063        if(!tag){
3064            tag = 'div';
3065        }
3066        if(elementObj.hasClass(changedClass)){
3067            //ako ima ne radi nista za sada
3068        }else{
3069            elementObj.replaceWith(function() {
3070                return "<"+tag+" id='"+$(this).attr('id')+"' class='"+$(this).attr('class')+" "+changedClass+"' style='"+$(this).attr('style')+"'>" + this.innerHTML + "</"+tag+">";
3071            });
3072        }
3073    }
3074
3075    changeThis($('#newsletter-ci_content_caption'));
3076    changeThis($('#ci_modal_content_caption'),'h2');
3077
3078}
3079
3080function loadCiOrdersData(page){
3081    $(".profile-orders .loader-wrapper").removeClass("hidden");
3082    $.ajax({
3083        type: "POST",
3084        url: nb_active_page_url,
3085        data:{
3086            ajax: 'yes',
3087            page: page,
3088            task: "ci_profile"
3089        },
3090        dataType: 'json',
3091        success: function (ret) {
3092            if(ret.flag){
3093                $('#order-table').html(ret.html);
3094                nbProduct.handleBuyProductOnListing('.orderdetails-modal');
3095                $("html, body").animate({scrollTop: 0}, 500);
3096            }
3097
3098            $(".profile-orders .loader-wrapper").addClass("hidden");
3099        }
3100
3101    });
3102}
3103
3104function ci_addLog(typeAction, type, communicationData){
3105
3106    let url = ci_addLog_url;
3107
3108    let data = {
3109        "typeAction": typeAction,
3110        "type": type,
3111        "communicationData": communicationData,
3112    };
3113
3114    $.ajax({
3115        type: 'POST',
3116        url: url,
3117        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
3118        data: data,
3119        dataType: 'json',
3120        success: function(response) {
3121
3122        }
3123    });
3124}
3125
3126function loadSSInWrapper() {
3127    let ssName,
3128        ssId,
3129        id,
3130        $wrapper = $('.ci-wrapper');
3131        $wrapperNo = $('.ci-no-wrapper');
3132        $profileSidebar = $('.ci-profile-sidebar');
3133
3134    if ($wrapper.length) {
3135        $wrapper.each(function () {
3136            ssName = $(this).data('ss-name');
3137            ssId = $(this).data('ss-id');
3138            ssCiVrfy = $(this).data('ss-civrfy');
3139
3140            redirectUrl = $(this).data('ss-redirect-url');
3141            id = $(this).attr('id');
3142
3143            ci_showSS(ssName, ssId, id, redirectUrl, ssCiVrfy);
3144
3145        });
3146
3147    }
3148
3149    if ($wrapperNo.length) {
3150        redirectUrl = $wrapperNo.data('no-ss-redirect-link');
3151        id = $wrapperNo.attr('id');
3152        ci_onloadPage(redirectUrl, id)
3153    }
3154}
3155
3156
3157function resetApiOnCloseLoginModal(){
3158    $('#customer_identity_layout_modal.'+ci_register_ssName).on('hidden.bs.modal', function() {
3159        gigya.apiKey = ci_themeApi;
3160    });
3161}
3162
3163function ci_loginLinkInRegistration() {
3164    let loginBtn = $('.gigya-registration-container .js-login-lnk');
3165
3166    loginBtn.click(function () {
3167        ci_login();
3168    })
3169}
3170
3171
3172window.onGigyaServiceReady = function () {
3173
3174}

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.