PageSourceSearch

https://iafcm.org/wp-content/plugins/memberpress/js/zxcvbn-async.js?ver=7.0.6

js iafcm.org collected 2026-10-02 06:19:26 UTC 4,065 bytes, 87 lines download raw bytes

1//Load the larger zxcvbn.js file asynchronously
2(function(){var a;a=function(){var a,b;b=document.createElement("script");b.src=MeprZXCVBN.script_url;b.type="text/javascript";b.async=!0;a=document.getElementsByTagName("script")[0];return a.parentNode.insertBefore(b,a)};null!=window.attachEvent?window.attachEvent("onload",a):window.addEventListener("load",a,!1)}).call(this);
3
4function mepr_score_it($el) {
5  //console.log(zxcvbn($el.val()).score);
6  var score = zxcvbn($el.val()).score;
7
8  // The meter lives in the same form as the password field. The cart checkout has no
9  // <form> wrapper, so fall back to its step container there — forms are unaffected.
10  var $scope = $el.closest('form');
11  if (!$scope.length) {
12    $scope = $el.closest('.mepr-checkout-step');
13  }
14
15  if($el.val().length == 0) {
16    $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-nopass');
17    $scope.find('.mp-password-strength-display').html(MeprZXCVBN.indicator + '<br/><small>' + MeprZXCVBN.required + '</small>');
18    $scope.find('.mp-pass-strength').val('0');
19  } else {
20    switch(score) {
21      case 0:
22        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-weakpass');
23        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.very_weak + '<br/><small>' + MeprZXCVBN.required + '</small>');
24        $scope.find('.mp-pass-strength').val('0');
25        break;
26      case 1:
27        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-weakpass');
28        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.weak + '<br/><small>' + MeprZXCVBN.required + '</small>');
29        $scope.find('.mp-pass-strength').val('1');
30        break;
31      case 2:
32        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-mediumpass');
33        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.medium + '<br/><small>' + MeprZXCVBN.required + '</small>');
34        $scope.find('.mp-pass-strength').val('2');
35        break;
36      case 3:
37        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-strongpass');
38        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.strong + '<br/><small>' + MeprZXCVBN.required + '</small>');
39        $scope.find('.mp-pass-strength').val('3');
40        break;
41      case 4:
42        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-strongpass');
43        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.very_strong + '<br/><small>' + MeprZXCVBN.required + '</small>');
44        $scope.find('.mp-pass-strength').val('4');
45        break;
46      default:
47        $scope.find('.mp-password-strength-display').attr('class', 'mp-password-strength-display mp-nopass');
48        $scope.find('.mp-password-strength-display').html(MeprZXCVBN.indicator + '<br/><small>' + MeprZXCVBN.required + '</small>');
49        $scope.find('.mp-pass-strength').val('0');
50        break;
51    }
52  }
53}
54
55jQuery(function($) {
56  //Signup forms
57  function mepr_check() {
58    if(typeof zxcvbn !== 'undefined') {
59      if($('.mepr-password').length && $('.mepr-password').val().length > 0) {
60        mepr_score_it($('.mepr-password'));
61      }
62    } else {
63      setTimeout(mepr_check, 100);
64    }
65  }
66  mepr_check();
67
68  var selectors = '.mepr-password, .mepr-new-password, .mepr-forgot-password';
69
70  document.body.addEventListener('keyup', function (e) {
71    if(e.target && e.target.matches && e.target.matches(selectors)) {
72      mepr_score_it($(e.target));
73    }
74  });
75
76  document.body.addEventListener('paste', function (e) {
77    if(e.target && e.target.matches && e.target.matches(selectors) && (e.clipboardData || window.clipboardData)) {
78      e.preventDefault();
79      e.target.value = (e.clipboardData || window.clipboardData).getData('text');
80      mepr_score_it($(e.target));
81    }
82  });
83
84  $(document).on('change', selectors, function(e) {
85    mepr_score_it($(e.target));
86  });
87});

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.