{"version":3,"sources":["strength.js"],"names":["$","options","errors","minChar","errorMessages","password_to_short","same_as_username","scores","verdicts","showVerdicts","raisePower","usernameField","onLoad","undefined","onKeyUp","viewports","progress","verdict","ruleScores","wordNotEmail","wordLength","wordSimilarToUsername","wordLowercase","wordUppercase","wordOneNumber","wordThreeNumbers","wordOneSpecialChar","wordTwoSpecialChar","wordUpperLowerCombo","wordLetterNumberCombo","wordLetterNumberCharCombo","rules","validationRules","word","score","match","wordlen","length","lenScore","Math","pow","push","username","val","toLowerCase","setProgressBar","$el","$verdict","data","progressbar","find","parent","insertAfter","Required","removeClass","addClass","text","calculateScore","totalScore","each","rule","active","result","progressWidget","methods","init","settings","self","this","allOptions","extend","idx","el","on","event","call","isFunction","append","css","destroy","remove","removeData","forceUpdate","outputErrorList","addRule","name","method","changeScore","ruleActive","fn","pwstrength","apply","Array","prototype","slice","arguments","error","jQuery"],"mappings":"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","file":"strength.js","sourcesContent":["(function ($) {\r\n \"use strict\";\r\n\r\n var options = {\r\n errors: [],\r\n // Options\r\n minChar: 6,\r\n errorMessages: {\r\n password_to_short: \"The Password is too short\",\r\n same_as_username: \"Your password cannot be the same as your username\"\r\n },\r\n scores: [17, 26, 40, 50],\r\n verdicts: [\"Very Weak\", \"Weak\", \"Medium\", \"Strong\", \"Very Strong\"],\r\n showVerdicts: true,\r\n raisePower: 1.4,\r\n usernameField: \"#username\",\r\n onLoad: undefined,\r\n onKeyUp: undefined,\r\n viewports: {\r\n progress: undefined,\r\n verdict: undefined,\r\n errors: undefined\r\n },\r\n // Rules stuff\r\n ruleScores: {\r\n wordNotEmail: -100,\r\n wordLength: -100,\r\n wordSimilarToUsername: -100,\r\n wordLowercase: 1,\r\n wordUppercase: 3,\r\n wordOneNumber: 3,\r\n wordThreeNumbers: 5,\r\n wordOneSpecialChar: 3,\r\n wordTwoSpecialChar: 5,\r\n wordUpperLowerCombo: 2,\r\n wordLetterNumberCombo: 2,\r\n wordLetterNumberCharCombo: 2\r\n },\r\n rules: {\r\n wordNotEmail: true,\r\n wordLength: true,\r\n wordSimilarToUsername: true,\r\n wordLowercase: true,\r\n wordUppercase: true,\r\n wordOneNumber: true,\r\n wordThreeNumbers: true,\r\n wordOneSpecialChar: true,\r\n wordTwoSpecialChar: true,\r\n wordUpperLowerCombo: true,\r\n wordLetterNumberCombo: true,\r\n wordLetterNumberCharCombo: true\r\n },\r\n validationRules: {\r\n wordNotEmail: function (options, word, score) {\r\n return word.match(/^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$/i) && score;\r\n },\r\n wordLength: function (options, word, score) {\r\n var wordlen = word.length,\r\n lenScore = Math.pow(wordlen, options.raisePower);\r\n if (wordlen < options.minChar) {\r\n lenScore = (lenScore + score);\r\n options.errors.push(options.errorMessages.password_to_short);\r\n }\r\n return lenScore;\r\n },\r\n wordSimilarToUsername: function (options, word, score) {\r\n var username = $(options.usernameField).val();\r\n if (username && word.toLowerCase().match(username.toLowerCase())) {\r\n options.errors.push(options.errorMessages.same_as_username);\r\n return score;\r\n }\r\n return true;\r\n },\r\n wordLowercase: function (options, word, score) {\r\n return word.match(/[a-z]/) && score;\r\n },\r\n wordUppercase: function (options, word, score) {\r\n return word.match(/[A-Z]/) && score;\r\n },\r\n wordOneNumber: function (options, word, score) {\r\n return word.match(/\\d+/) && score;\r\n },\r\n wordThreeNumbers: function (options, word, score) {\r\n return word.match(/(.*[0-9].*[0-9].*[0-9])/) && score;\r\n },\r\n wordOneSpecialChar: function (options, word, score) {\r\n return word.match(/.[!,@,#,$,%,\\^,&,*,?,_,~]/) && score;\r\n },\r\n wordTwoSpecialChar: function (options, word, score) {\r\n return word.match(/(.*[!,@,#,$,%,\\^,&,*,?,_,~].*[!,@,#,$,%,\\^,&,*,?,_,~])/) && score;\r\n },\r\n wordUpperLowerCombo: function (options, word, score) {\r\n return word.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && score;\r\n },\r\n wordLetterNumberCombo: function (options, word, score) {\r\n return word.match(/([a-zA-Z])/) && word.match(/([0-9])/) && score;\r\n },\r\n wordLetterNumberCharCombo: function (options, word, score) {\r\n return word.match(/([a-zA-Z0-9].*[!,@,#,$,%,\\^,&,*,?,_,~])|([!,@,#,$,%,\\^,&,*,?,_,~].*[a-zA-Z0-9])/) && score;\r\n }\r\n }\r\n },\r\n\r\n setProgressBar = function ($el, score) {\r\n var options = $el.data(\"pwstrength\"),\r\n progressbar = options.progressbar,\r\n $verdict;\r\n\r\n if (options.showVerdicts) {\r\n if (options.viewports.verdict) {\r\n $verdict = $(options.viewports.verdict).find(\".password-verdict\");\r\n } else {\r\n $verdict = $el.parent().find(\".password-verdict\");\r\n if ($verdict.length === 0) {\r\n $verdict = $('');\r\n $verdict.insertAfter($el);\r\n }\r\n }\r\n }\r\n \r\n var Required = $el.data(\"val-required\");\r\n if (score < options.scores[0]) { \r\n if (Required !== undefined) { \r\n //$el.removeClass(\"mclError3\").addClass(\"mclError3\");\r\n }\r\n $el.removeClass(\"PassStrong\").removeClass(\"PassMedium\").removeClass(\"PassNormal\").addClass(\"PassWeak\");\r\n if (Required === undefined && $el.val() == \"\") {\r\n $el.removeClass(\"PassWeak\");\r\n }\r\n if (options.showVerdicts) {\r\n $verdict.text(options.verdicts[0]);\r\n }\r\n } else if (score >= options.scores[0] && score < options.scores[1]) {\r\n if (Required !== undefined) {\r\n //$el.removeClass(\"mclError3\").addClass(\"mclError3\");\r\n }\r\n $el.removeClass(\"PassWeak\").removeClass(\"PassStrong\").removeClass(\"PassMedium\").addClass(\"PassNormal\");\r\n if (options.showVerdicts) {\r\n $verdict.text(options.verdicts[1]);\r\n }\r\n } else if (score >= options.scores[1] && score < options.scores[2]) {\r\n if (Required !== undefined) {\r\n //$el.removeClass(\"mclError3\");\r\n }\r\n $el.removeClass(\"PassNormal\").removeClass(\"PassStrong\").removeClass(\"PassMedium\").addClass(\"PassMedium\");\r\n if (options.showVerdicts) {\r\n $verdict.text(options.verdicts[2]);\r\n }\r\n } else if (score >= options.scores[2] && score < options.scores[3]) {\r\n $el.removeClass(\"PassMedium\").removeClass(\"PassStrong\").addClass(\"PassStrong\");\r\n if (options.showVerdicts) {\r\n $verdict.text(options.verdicts[3]);\r\n }\r\n } else if (score >= options.scores[3]) {\r\n $el.removeClass(\"PassMedium\").addClass(\"PassStrong\");\r\n if (options.showVerdicts) {\r\n $verdict.text(options.verdicts[4]);\r\n }\r\n }\r\n },\r\n\r\n calculateScore = function ($el) {\r\n var self = this,\r\n word = $el.val(),\r\n totalScore = 0,\r\n options = $el.data(\"pwstrength\");\r\n\r\n $.each(options.rules, function (rule, active) {\r\n if (active === true) {\r\n var score = options.ruleScores[rule],\r\n result = options.validationRules[rule](options, word, score);\r\n if (result) {\r\n totalScore += result;\r\n }\r\n }\r\n });\r\n setProgressBar($el, totalScore);\r\n return totalScore;\r\n },\r\n\r\n progressWidget = function () {\r\n return '';\r\n //return '