hybridstart
Version:
A hybrid application development framework
85 lines • 2 kB
JavaScript
define(function(require, exports, module) {
'use strict';
var a = window.$ || require('jquery');
a.fn.passwordStrength = function(b) {
b = a.extend({}, a.fn.passwordStrength.defaults, b);
this.each(function() {
var d = a(this),
e = 0,
c = false,
f = a(this).parents("form").find(".passwordStrength");
d.bind("keyup blur", function() {
e = a.fn.passwordStrength.ratepasswd(d.val(), b);
e >= 0 && c == false && (c = true);
f.find("span").removeClass("bgStrength");
if (e < 35 && e >= 0) {
f.find("span:first").addClass("bgStrength")
} else {
if (e < 60 && e >= 35) {
f.find("span:lt(2)").addClass("bgStrength")
} else {
if (e >= 60) {
f.find("span:lt(3)").addClass("bgStrength")
}
}
}
if (c && (d.val().length < b.minLen || d.val().length > b.maxLen)) {
b.showmsg(d, d.attr("errormsg"), 3)
} else {
if (c) {
b.showmsg(d, "", 2)
}
}
b.trigger(d, !(e >= 0))
})
})
};
a.fn.passwordStrength.ratepasswd = function(c, d) {
var b = c.length,
e;
if (b >= d.minLen && b <= d.maxLen) {
e = a.fn.passwordStrength.checkStrong(c)
} else {
e = -1
}
return e / 4 * 100
};
a.fn.passwordStrength.checkStrong = function(d) {
var e = 0,
b = d.length;
for (var c = 0; c < b; c++) {
e |= a.fn.passwordStrength.charMode(d.charCodeAt(c))
}
return a.fn.passwordStrength.bitTotal(e)
};
a.fn.passwordStrength.charMode = function(b) {
if (b >= 48 && b <= 57) {
return 1
} else {
if (b >= 65 && b <= 90) {
return 2
} else {
if (b >= 97 && b <= 122) {
return 4
} else {
return 8
}
}
}
};
a.fn.passwordStrength.bitTotal = function(b) {
var d = 0;
for (var c = 0; c < 4; c++) {
if (b & 1) {
d++
}
b >>>= 1
}
return d
};
a.fn.passwordStrength.defaults = {
minLen: 0,
maxLen: 30,
trigger: a.noop
}
})