1/* NB SHOP Demo JS script 2 * By NB SHOP & NB SOFT 3 * www.nbsoft.rs www.nbshop.rs 4 * NB SOFT Licensed. 5 */ 6function NbGdpr(){ 7 8 var GdprPage = function(){ 9 10 var gpdr_form_validate = function(){ 11 var form = $('.gdpr_checklist_form, .gdpr_form.gdpr-style, .gdpr_form_newsletter'); 12 if(!form.length) return; 13 var validate = form.validate().data('nb.validate'); 14 }; 15 16 $('.gdpr_checklist_form').each(function(){ 17 18 var formRequestForToken = $(this).serialize(); 19 20 var validate = $(this).validate({ 21 formData: { nbAjax: 1, ajax: 'yes', nbTask: 'gdpr', task: 'requestfortoken' } 22 }).data('nb.validate'); 23 24 validate.$element.bind('nb.validate.remoteSuccess', function(e){ 25 validate.$element.find('.form-control, .btn, .form-group label, .form-group').addClass('hidden'); 26 }); 27 }); 28 29 $('.gdpr_form').each(function(){ 30 31 var gdprForm = $(this).serialize(); 32 33 var validate = $(this).validate({ 34 formData: { nbAjax: 1, ajax: 'yes', nbTask: 'gdpr', task: 'save' } 35 }).data('nb.validate'); 36 37 validate.$element.bind('nb.validate.remoteSuccess', function(e){ 38 validate.$element.find('.form-control, .btn, .form-group label, .form-group, .title').addClass('hidden'); 39 }); 40 }); 41 42 $('.gdpr_form_newsletter').each(function(){ 43 44 var gdprFormNewsletter = $(this).serialize(); 45 46 var validate = $(this).validate({ 47 formData: { nbAjax: 1, ajax: 'yes', nbTask: 'gdpr_newsletter', task: 'save' } 48 }).data('nb.validate'); 49 50 validate.$element.bind('nb.validate.remoteSuccess', function(e){ 51 validate.$element.find('.form-control, .btn, .form-group label, .form-group, .title').addClass('hidden'); 52 }); 53 }); 54 55 var $form = $('gdpr_form, .gdpr_form_newsletter'); 56 var $form_checkbox = $('.gdpr_form input:checkbox, .gdpr_form_newsletter input:checkbox'); 57 $form.find('input').hide(); 58 $form.find('label[for^="gdpr_aditionaldata"]').hide(); 59 $form.find('label[for^="gdpr_aditionaldata"]').filter('label[for *=_check]').show(); 60 $form.find('input[type=radio]').parent().hide(); 61 $form.find('.additional-data').hide(); 62 63 function showHideInput(name_check){ //show it when the checkbox is clicked 64 65 var name = name_check.replace('_check',''); 66 var $checkbox = $('input[name="'+name_check+'"]'); 67 var $confirm_name = 'gdpr_confirm_user'; 68 69 70 var $input = $('input[name^="'+name+'"]'); 71 var $label = $('label[for^="'+name+'"]'); 72 var elementclass = '.list-items-wrapper .additional-data'; 73 var eltype = 'input[type=radio]'; 74 if ($checkbox.prop('checked')) { 75 if($input.attr('name')=='gdpr_confirm_user'){ 76 $input.prop('required',true); 77 } 78 $input.prop('required',true).fadeIn(); 79 $label.fadeIn(); 80 $input.filter(eltype).parent().fadeIn(); 81 $input.filter(eltype).parents(elementclass).fadeIn(); 82 $input.parent().children().filter('.validation-errors-list').show(); 83 } 84 else { 85 $input.prop('required',false).hide(); 86 $input.parent().children().filter('.validation-errors-list').hide(); 87 if($input.attr('name') == $confirm_name){ 88 $input.prop('required',true); 89 $input.parent().children().filter('.validation-errors-list').show(); 90 } 91 $label.hide(); 92 $input.filter(eltype).parent().hide(); 93 $input.filter(eltype).parents(elementclass).hide(); 94 $label.filter('label[for="'+name_check+'"]').show(); 95 } 96 97 } 98 99 $form_checkbox.each(function(){ 100 var input_name = $(this).attr('name'); 101 showHideInput(input_name); 102 }); 103 104 $form_checkbox.click(function(){ 105 var input_name = $(this).attr('name'); 106 showHideInput(input_name); 107 }); 108 109 gpdr_form_validate(); 110 111 function additionCheckbox($addData, $all){ 112 $all.change(function(){ 113 if($(this).prop('checked')){ 114 $(this).prop('checked', true).parent().addClass('checked'); 115 }else{ 116 $(this).prop('checked', false).parent().removeClass('checked'); 117 } 118 119 }); 120 } 121 122 //Checkbox conditions for registrations 123 var additonaldatacheck = 'input[name="reg_sendUserAdditionalData"]', 124 additonaldataSMScheck = 'input[name="reg_sendSMS"]'; 125 additonaldataEmailcheck = 'input[name="reg_sendNewsletter"]', 126 additonaldataPhoneCall = 'input[name="reg_callMeOnPhone"]', 127 $additonaldatacheck = $(additonaldatacheck), 128 $additonaldataSMScheck = $(additonaldataSMScheck), 129 $additonaldataEmailcheck = $(additonaldataEmailcheck), 130 $additonaldataPhoneCall = $(additonaldataPhoneCall), 131 $adddataAll = $additonaldataSMScheck.add(additonaldataEmailcheck), 132 $all = $additonaldatacheck.add(additonaldataEmailcheck).add(additonaldataSMScheck).add($additonaldataPhoneCall); 133 134 additionCheckbox($adddataAll, $all); 135 136 //uncheck if additaional SMS and EMAIL are not checked 137 $adddataAll.change(function(){ 138 if(!$additonaldataSMScheck.prop('checked') && !$additonaldataEmailcheck.prop('checked')){
139 $additonaldatacheck.prop('checked',false).parent().removeClass('checked'); 140 $additonaldataPhoneCall.prop('checked',false).parent().removeClass('checked'); 141 $('#reg_email_checkgroup, #reg_phone_checkgroup').closest('.form-group-checklabel').css({'pointerEvents':'none','opacity':'.5'}); 142 } 143 144 }); 145 146 // Reg page 147 var additonaldatacheckPage = 'input[name="reg_page_sendUserAdditionalData"]', 148 additonaldataSMScheckPage = 'input[name="reg_page_sendSMS"]'; 149 additonaldataEmailcheckPage = 'input[name="reg_page_sendNewsletter"]', 150 additonaldataPhoneCallPage = 'input[name="reg_page_callMeOnPhone"]', 151 $additonaldatacheckPage = $(additonaldatacheckPage), 152 $additonaldataSMScheckPage = $(additonaldataSMScheckPage), 153 $additonaldataEmailcheckPage = $(additonaldataEmailcheckPage), 154 $additonaldataPhoneCallPage = $(additonaldataPhoneCallPage), 155 $adddataAllPage = $additonaldataSMScheckPage.add(additonaldataEmailcheckPage), 156 $allPage = $additonaldatacheckPage.add(additonaldataEmailcheckPage).add(additonaldataSMScheckPage).add($additonaldataPhoneCallPage); 157 158 additionCheckbox($adddataAllPage, $allPage); 159 160 //uncheck if additaional SMS and EMAIL are not checked 161 $adddataAllPage.change(function(){ 162 if(!$additonaldataSMScheckPage.prop('checked') && !$additonaldataEmailcheckPage.prop('checked')){ 163 $additonaldatacheckPage.prop('checked',false).parent().removeClass('checked'); 164 $additonaldataPhoneCallPage.prop('checked',false).parent().removeClass('checked'); 165 $('#reg_page_email_checkgroup, #reg_page_phone_checkgroup').closest('.form-group-checklabel').css({'pointerEvents':'none','opacity':'.5'}); 166 } 167 168 }); 169 // --- 170 171 //ako je cekiran dodatni podaci da cekira email i SMS 172 $disableGDPRCheckFlag = true; 173 if(typeof $disableGDPRCheck !== 'undefined' && $disableGDPRCheck){ 174 $disableGDPRCheckFlag = false; 175 } 176 if($disableGDPRCheckFlag){ 177 $additonaldatacheck.change(function(){ 178 if($additonaldatacheck.prop('checked')){ 179 $additonaldataSMScheck.prop('checked', true).parent().addClass('checked'); 180 $additonaldataEmailcheck.prop('checked', true).parent().addClass('checked'); 181 } 182 183 }); 184 } 185 186 }; 187 188 function confirmGDPR(){ 189 createCookie('site_cookie_info', 2, 365) 190 $('.cokie-info-wrapper .items-wrapper .item input').each(function () { 191 var cookieName = $(this).attr('name'); 192 if($(this).is(':checked') && $(this).val() == '1' && cookieName.includes('site_')){ 193 createCookie(cookieName, 1, 365); 194 195 if(cookieName === 'site_marketing_info'){ 196 createCookie('confirm_gdpr', 1, 365); 197 location.reload(); 198 } 199 } 200 }); 201 //location.reload(); 202 } 203 204 function acceptAllCookies() { 205 $('.cokie-info-wrapper .checkbox-options-wrapper .item input').each(function () { 206 if(!$(this).is(':checked')){ 207 $(this).trigger('click'); 208 } 209 }) 210 confirmGDPR(); 211 } 212 213 function declineCookieGDPR(btn){ 214 if(!btn){ 215 createCookie('confirm_gdpr', 0, 1); 216 //eraseCookie('site_cookie_info'); 217 createCookie('site_cookie_info', 2, 1); 218 location.reload(); 219 return false; 220 } 221 question = ''; 222 if(btn.data('question') !== ''){ 223 question = btn.data('question'); 224 } 225 if(question){ 226 bootbox.confirm(question, function(result){ 227 if(result){ 228 //deleteAllCookies(); 229 createCookie('confirm_gdpr', 0, 1); 230 if(_nb_fakeDecline){ 231 createCookie('confirm_gdpr', 1, 1); 232 } 233 //eraseCookie('site_cookie_info'); 234 createCookie('site_cookie_info', 2, 1); 235 location.reload(); 236 } 237 238 }) 239 }else{ 240 $('.cookie-info-slider').hide( "slow" ); 241 createCookie('confirm_gdpr', 0, 1); 242 //eraseCookie('site_cookie_info'); 243 createCookie('site_cookie_info', 2, 1); 244 } 245 246 } 247 248 function openCookieDescription(){ 249 $('.cookie-read-more-wrapper').toggleClass('active'); 250 } 251 252 function deleteAllCookies() { 253 var allCookies = document.cookie.split(';'); 254 255 // The "expire" attribute of every cookie is 256 // Set to "Thu, 01 Jan 1970 00:00:00 GMT" 257 for (var i = 0; i < allCookies.length; i++) 258 document.cookie = allCookies[i] + "=;expires=" 259 + new Date(0).toUTCString(); 260 } 261 function checkAllCookies() { 262 $('.cokie-info-wrapper .check-cookies-wrapper .item input, .cookie-info-slider-items .item input').each(function () { 263 if(!$(this).is(':checked')){ 264 $(this).trigger('click'); 265 } 266 }) 267 268 $('.cookie-agree, .cookie-agree-gdpr').trigger('click') 269 } 270 271 return { 272 init: function(){ 273 GdprPage(); 274 }, 275 GdprPage: GdprPage, 276 confirmGDPR: confirmGDPR, 277 acceptAllCookies: acceptAllCookies, 278 openCookieDescription: openCookieDescription, 279 declineCookieGDPR: declineCookieGDPR, 280 checkAllCookies:checkAllCookies 281 }; 282 283}; 284
285window.nbGdpr = new NbGdpr(); 286 287$(document).ready(function(){ 288 nbGdpr.init(); 289});
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.