1$(document).ready(function(e){ 2 var i18n = window.cbtcPasswordI18n || { 3 strength: 'SiÅa hasÅa', 4 weak: 'SÅabe', 5 good: 'Dobre', 6 strong: 'Silne', 7 fieldRequired: 'Pole jest wymagane', 8 passwordsMustMatch: 'HasÅa muszÄ byÄ takie same', 9 invalidFormat: 'NieprawidÅowy format' 10 }; 11 12 const $pw = $('#newPassword'); 13 const bars = [$('#bar1'), $('#bar2'), $('#bar3'), $('#bar4')]; 14 const $strengthText = $('#strengthText'); 15 const $submitBtn = $('#btnNewPassword'); 16 17 function resetBars() { 18 bars.forEach($b => $b.removeClass('red yellow green')); 19 $strengthText.removeClass('red-text yellow-text green-text').text(i18n.strength); 20 $submitBtn.prop('disabled', true); 21 } 22 23 function setBars(count) { 24 resetBars(); 25 if ($pw.val().length === 0) { 26 $('.requirements li').removeClass('ok wrong no'); 27 return; 28 } 29 if (count <= 1) { 30 bars[0].addClass('red'); 31 $strengthText.addClass('red-text').text(i18n.weak); 32 $submitBtn.prop('disabled', true); 33 } else if (count === 2) { 34 bars[0].addClass('yellow'); 35 bars[1].addClass('yellow'); 36 $submitBtn.prop('disabled', true); 37 $strengthText.addClass('yellow-text').text(i18n.weak); 38 } else if (count === 3) { 39 bars[0].addClass('green'); 40 bars[1].addClass('green'); 41 bars[2].addClass('green'); 42 $strengthText.addClass('green-text').text(i18n.good); 43 $submitBtn.prop('disabled', false); 44 } else if (count >= 4) { 45 bars.forEach($b => $b.addClass('green')); 46 $strengthText.addClass('green-text').text(i18n.strong); 47 $submitBtn.prop('disabled', false); 48 } 49 } 50 51 function updateRequirements(flags) { 52 $('#req-length').toggleClass('ok', flags.length).toggleClass('wrong', !flags.length); 53 $('#req-number').toggleClass('ok', flags.number).toggleClass('wrong', !flags.number); 54 $('#req-upper').toggleClass('ok', flags.upper).toggleClass('wrong', !flags.upper); 55 } 56 57 function evaluate(pw) { 58 if (!pw) { 59 resetBars();
60 $('.requirements li').removeClass('ok wrong'); 61 return; 62 } 63 const flags = { 64 length: pw.length >= 8, 65 number: /\d/.test(pw), 66 upper: /[A-Z]/.test(pw) 67 }; 68 const metCount = Object.values(flags).filter(Boolean).length; 69 updateRequirements(flags); 70 setBars(metCount); 71 } 72 73 $pw.on('input', function() { 74 evaluate(this.value); 75 }); 76 77 if ($("#passwordForm").length > 0) { 78 $.validator.addMethod("pattern", function(value, element, param) { 79 if (this.optional(element)) { 80 return true; 81 } 82 return param.test(value); 83 }, i18n.invalidFormat); 84 85 $("#passwordForm").validate({ 86 rules: { 87 password_1: { 88 required: true, 89 pattern: /^(?=.*[A-Z])(?=.*\d).{8,}$/ 90 }, 91 password_2: { 92 required: true, 93 equalTo: "#newPassword" 94 } 95 }, 96 messages: { 97 password_1: i18n.fieldRequired, 98 password_2: { 99 required: i18n.fieldRequired, 100 equalTo: i18n.passwordsMustMatch 101 } 102 }, 103 errorPlacement: function (error, e) { 104 e.parents('.form-input').append(error); 105 }, 106 submitHandler: function(form) { 107 form.submit(); 108 } 109 }); 110 } 111});
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.