97e0ac07f47ba3d83eff66f9975f4fd41088bf34
[roojs1] / docs / symbols / src / Roo_bootstrap_SecurePass.js.html
1 <html><head><title>../roojs1/Roo/bootstrap/SecurePass.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * - LGPL
3  *
4  * Input
5  * 
6  */
7
8 /**
9  * @class Roo.bootstrap.SecurePass
10  * @extends Roo.bootstrap.Input
11  * Bootstrap SecurePass class
12  *
13  * 
14  * @constructor
15  * Create a new SecurePass
16  * @param {Object} config The config object
17  */
18  
19 </span><span class="jsdoc-var">Roo.bootstrap.SecurePass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">) {
20     </span><span class="jsdoc-comment">// these go here, so the translation tool can replace them..
21     </span><span class="jsdoc-var">this.errors </span><span class="jsdoc-syntax">= {
22         </span><span class="jsdoc-var">PwdEmpty</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Please type a password, and then retype it to confirm.&quot;</span><span class="jsdoc-syntax">,
23         </span><span class="jsdoc-var">PwdShort</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password must be at least 6 characters long. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
24         </span><span class="jsdoc-var">PwdLong</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password can't contain more than 16 characters. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
25         </span><span class="jsdoc-var">PwdBadChar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;The password contains characters that aren't allowed. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
26         </span><span class="jsdoc-var">IDInPwd</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password can't include the part of your ID. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
27         </span><span class="jsdoc-var">FNInPwd</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password can't contain your first name. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
28         </span><span class="jsdoc-var">LNInPwd</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password can't contain your last name. Please type a different password.&quot;</span><span class="jsdoc-syntax">,
29         </span><span class="jsdoc-var">TooWeak</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Your password is Too Weak.&quot;
30     </span><span class="jsdoc-syntax">},
31     </span><span class="jsdoc-var">this.meterLabel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;Password strength:&quot;</span><span class="jsdoc-syntax">;
32     </span><span class="jsdoc-var">this.pwdStrengths </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-string">&quot;Too Weak&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Weak&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Medium&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Strong&quot;</span><span class="jsdoc-syntax">];
33     </span><span class="jsdoc-var">Roo.bootstrap.SecurePass.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
34 }
35
36 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap.SecurePass</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.bootstrap.Input</span><span class="jsdoc-syntax">, {
37     </span><span class="jsdoc-comment">/**
38      * @cfg {String/Object} errors A Error spec, or true for a default spec (defaults to
39      * {
40      *  PwdEmpty: &quot;Please type a password, and then retype it to confirm.&quot;,
41      *  PwdShort: &quot;Your password must be at least 6 characters long. Please type a different password.&quot;,
42      *  PwdLong: &quot;Your password can't contain more than 16 characters. Please type a different password.&quot;,
43      *  PwdBadChar: &quot;The password contains characters that aren't allowed. Please type a different password.&quot;,
44      *  IDInPwd: &quot;Your password can't include the part of your ID. Please type a different password.&quot;,
45      *  FNInPwd: &quot;Your password can't contain your first name. Please type a different password.&quot;,
46      *  LNInPwd: &quot;Your password can't contain your last name. Please type a different password.&quot;
47      * })
48      */
49     // private
50     </span><span class="jsdoc-var">meterWidth</span><span class="jsdoc-syntax">: 300,
51     </span><span class="jsdoc-var">errors</span><span class="jsdoc-syntax">: {},
52     </span><span class="jsdoc-var">imageRoot</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'/'</span><span class="jsdoc-syntax">,
53     </span><span class="jsdoc-comment">/**
54      * @cfg {String/Object} Label for the strength meter (defaults to
55      * 'Password strength:')
56      */
57     // private
58     </span><span class="jsdoc-var">meterLabel</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
59     </span><span class="jsdoc-comment">/**
60      * @cfg {String/Object} pwdStrengths A pwdStrengths spec, or true for a default spec (defaults to
61      * ['Weak', 'Medium', 'Strong'])
62      */
63     // private
64     </span><span class="jsdoc-var">pwdStrengths</span><span class="jsdoc-syntax">: [],    
65     </span><span class="jsdoc-comment">// private
66     </span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">: 0,
67     </span><span class="jsdoc-comment">// private
68     </span><span class="jsdoc-var">_lastPwd</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
69     </span><span class="jsdoc-comment">// private
70     </span><span class="jsdoc-var">kCapitalLetter</span><span class="jsdoc-syntax">: 0,
71     </span><span class="jsdoc-var">kSmallLetter</span><span class="jsdoc-syntax">: 1,
72     </span><span class="jsdoc-var">kDigit</span><span class="jsdoc-syntax">: 2,
73     </span><span class="jsdoc-var">kPunctuation</span><span class="jsdoc-syntax">: 3,
74     
75     </span><span class="jsdoc-var">insecure</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
76     </span><span class="jsdoc-comment">// private
77     </span><span class="jsdoc-var">initEvents</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
78         </span><span class="jsdoc-var">Roo.bootstrap.SecurePass.superclass.initEvents.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
79
80         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el.is</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'input[type=password]'</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">) {
81             </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'keydown'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.SafariOnKeyDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
82         }
83
84         </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'keyup'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.checkStrength</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">buffer</span><span class="jsdoc-syntax">: 50});
85     },
86     </span><span class="jsdoc-comment">// private
87     </span><span class="jsdoc-var">onRender</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">) {
88         </span><span class="jsdoc-var">Roo.bootstrap.SecurePass.superclass.onRender.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">);
89         </span><span class="jsdoc-var">this.wrap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.wrap</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'x-form-field-wrap'</span><span class="jsdoc-syntax">});
90         </span><span class="jsdoc-var">this.trigger </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.wrap.createChild</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'StrengthMeter ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.triggerClass</span><span class="jsdoc-syntax">});
91
92         </span><span class="jsdoc-var">this.trigger.createChild</span><span class="jsdoc-syntax">({
93             </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
94             </span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">: {
95                 </span><span class="jsdoc-string">'margin-bottom'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'10px'</span><span class="jsdoc-syntax">,
96                 </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.meterWidth </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'
97             </span><span class="jsdoc-syntax">},
98             </span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">: {
99                 </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
100                 </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'password-meter-grey'</span><span class="jsdoc-syntax">,
101                 </span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">: {
102                     </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.meterWidth </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">,
103                     </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'10px'                    
104                 </span><span class="jsdoc-syntax">},
105                 </span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">: {
106                     </span><span class="jsdoc-comment">//id: 'PwdMeter',
107                     </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
108                     </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'password-meter'</span><span class="jsdoc-syntax">,
109                     </span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">: {
110                         </span><span class="jsdoc-comment">//width: 0,
111                         </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'10px'                        
112                     </span><span class="jsdoc-syntax">}
113                 }
114             }
115         });
116         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.hideTrigger</span><span class="jsdoc-syntax">) {
117             </span><span class="jsdoc-var">this.trigger.setDisplayed</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
118         }
119         </span><span class="jsdoc-var">this.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.width </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.height </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
120     },
121     </span><span class="jsdoc-comment">// private
122     </span><span class="jsdoc-var">onDestroy</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
123         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.trigger</span><span class="jsdoc-syntax">) {
124             </span><span class="jsdoc-var">this.trigger.removeAllListeners</span><span class="jsdoc-syntax">();
125             </span><span class="jsdoc-var">this.trigger.remove</span><span class="jsdoc-syntax">();
126         }
127         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.wrap</span><span class="jsdoc-syntax">) {
128             </span><span class="jsdoc-var">this.wrap.remove</span><span class="jsdoc-syntax">();
129         }
130         </span><span class="jsdoc-var">Roo.bootstrap.TriggerField.superclass.onDestroy.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
131     },
132     </span><span class="jsdoc-comment">// private
133     </span><span class="jsdoc-var">checkStrength</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
134         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pwd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.getValue</span><span class="jsdoc-syntax">();
135         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this._lastPwd</span><span class="jsdoc-syntax">) {
136             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
137         }
138
139         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">;
140         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideStrongPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">)) {
141             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 3;
142         } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideMediumPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">)) {
143             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 2;
144         } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideWeakPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">)) {
145             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 1;
146         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
147             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 0;
148         }
149         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.trigger.child</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div/div/div'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">;
150         </span><span class="jsdoc-var">console.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'strength1: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">);
151         
152         </span><span class="jsdoc-var">pm.style.width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.meterWidth </span><span class="jsdoc-syntax">/ 3) * </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">;
153         </span><span class="jsdoc-comment">//if(this.pwdStrengths != null &amp;&amp; strength &gt; 0) {
154         </span><span class="jsdoc-var">pm.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.meterLabel </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&amp;nbsp;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.pwdStrengths</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">];
155         </span><span class="jsdoc-comment">//} else {
156         //      pm.innerHTML = '';
157         //}
158         
159         </span><span class="jsdoc-var">this._lastPwd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">;
160     },
161     </span><span class="jsdoc-var">reset</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
162         </span><span class="jsdoc-var">Roo.bootstrap.SecurePass.superclass.reset.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
163         </span><span class="jsdoc-var">this._lastPwd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
164         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.trigger.child</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div/div/div'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">;
165         </span><span class="jsdoc-var">pm.style.width </span><span class="jsdoc-syntax">= 0;
166         </span><span class="jsdoc-var">pm.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
167     },
168     </span><span class="jsdoc-comment">// private
169     </span><span class="jsdoc-var">validateValue</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">) {
170         
171         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.bootstrap.SecurePass.superclass.validateValue.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)) {
172             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
173         }
174         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">== 0) {
175             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.allowBlank</span><span class="jsdoc-syntax">) {
176                 </span><span class="jsdoc-var">this.clearInvalid</span><span class="jsdoc-syntax">();
177                 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
178             }
179
180             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errors.PwdEmpty</span><span class="jsdoc-syntax">);
181             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
182         }
183         
184         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.insecure</span><span class="jsdoc-syntax">){
185             </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
186         }
187         
188         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[\x21-\x7e]*'</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)) {
189             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errors.PwdBadChar</span><span class="jsdoc-syntax">);
190             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
191         }
192         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">&lt; 6) {
193             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errors.PwdShort</span><span class="jsdoc-syntax">);
194             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
195         }
196         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">&gt; 16) {
197             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errors.PwdLong</span><span class="jsdoc-syntax">);
198             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
199         }
200         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">;
201         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideStrongPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)) {
202             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 3;
203         } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideMediumPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)) {
204             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 2;
205         } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ClientSideWeakPassword</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)) {
206             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 1;
207         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
208             </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">= 0;
209         }
210         
211         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">&lt; 2) {
212             </span><span class="jsdoc-var">this.markInvalid</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.errors.TooWeak</span><span class="jsdoc-syntax">);
213             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
214         }
215         </span><span class="jsdoc-var">console.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'strength2: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">);
216         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.trigger.child</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div/div/div'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">;
217                  
218         </span><span class="jsdoc-var">pm.style.width </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.meterWidth </span><span class="jsdoc-syntax">/ 3) * </span><span class="jsdoc-var">strength </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px'</span><span class="jsdoc-syntax">;
219                       
220         </span><span class="jsdoc-var">pm.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.meterLabel </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&amp;nbsp;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.pwdStrengths</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">strength</span><span class="jsdoc-syntax">];
221         
222         </span><span class="jsdoc-comment">/*
223          for (var index = 0; index &lt; this.fieldsFilter.length; ++index) {
224          filter = document.getElementById(this.fieldsFilter[index][0]).value;
225          if (filter != '')
226          {
227          re = new RegExp(filter);
228          if (re.test(value)) {
229          this.markInvalid(eval('this.errors.'+ this.fieldsFilter[index][1]));
230          return false;
231          }
232          }
233          }
234          */
235         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
236     },
237     </span><span class="jsdoc-comment">// private
238     </span><span class="jsdoc-var">CharacterSetChecks</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">) {
239         </span><span class="jsdoc-var">this.type </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">;
240         </span><span class="jsdoc-var">this.fResult </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
241     },
242     </span><span class="jsdoc-comment">// private
243     </span><span class="jsdoc-var">isctype</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">character</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">) {
244         </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">//why needed break after return in js ? very odd bug
245             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">this.kCapitalLetter</span><span class="jsdoc-syntax">:
246                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-string">'A' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-string">'Z'</span><span class="jsdoc-syntax">) {
247                     </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
248                 }
249                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
250             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">this.kSmallLetter</span><span class="jsdoc-syntax">:
251                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-string">'a' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-string">'z'</span><span class="jsdoc-syntax">) {
252                     </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
253                 }
254                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
255             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">this.kDigit</span><span class="jsdoc-syntax">:
256                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-string">'0' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">character </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-string">'9'</span><span class="jsdoc-syntax">) {
257                     </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
258                 }
259                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
260             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-var">this.kPunctuation</span><span class="jsdoc-syntax">:
261                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'!@#$%^&amp;*()_+-=\'&quot;;:[{]}|.&gt;,&lt;/?`~'</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">character</span><span class="jsdoc-syntax">) &gt;= 0) {
262                     </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
263                 }
264                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
265             </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:
266                 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
267         }
268
269     },
270     </span><span class="jsdoc-comment">// private
271     </span><span class="jsdoc-var">IsLongEnough</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">) {
272         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!(</span><span class="jsdoc-var">pwd </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">isNaN</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">pwd.length </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">size</span><span class="jsdoc-syntax">);
273     },
274     </span><span class="jsdoc-comment">// private
275     </span><span class="jsdoc-var">SpansEnoughCharacterSets</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">word</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nb</span><span class="jsdoc-syntax">) {
276         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">word</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nb</span><span class="jsdoc-syntax">))
277         {
278             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
279         }
280
281         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">characterSetChecks </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">(
282                 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">this.CharacterSetChecks</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.kCapitalLetter</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">this.CharacterSetChecks</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.kSmallLetter</span><span class="jsdoc-syntax">),
283                 </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">this.CharacterSetChecks</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.kDigit</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">this.CharacterSetChecks</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.kPunctuation</span><span class="jsdoc-syntax">));
284         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">word.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">) {
285             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nCharSet </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">nCharSet </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">characterSetChecks.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">) {
286                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">characterSetChecks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.fResult </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.isctype</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">word.charAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">characterSetChecks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.type</span><span class="jsdoc-syntax">)) {
287                     </span><span class="jsdoc-var">characterSetChecks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.fResult </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
288                     </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
289                 }
290             }
291         }
292
293         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nCharSets </span><span class="jsdoc-syntax">= 0;
294         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nCharSet </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">nCharSet </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">characterSetChecks.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">) {
295             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">characterSetChecks</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">nCharSet</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.fResult</span><span class="jsdoc-syntax">) {
296                 ++</span><span class="jsdoc-var">nCharSets</span><span class="jsdoc-syntax">;
297             }
298         }
299
300         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nCharSets </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">nb</span><span class="jsdoc-syntax">) {
301             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
302         }
303         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
304     },
305     </span><span class="jsdoc-comment">// private
306     </span><span class="jsdoc-var">ClientSideStrongPassword</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">) {
307         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 8) &amp;&amp; </span><span class="jsdoc-var">this.SpansEnoughCharacterSets</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 3);
308     },
309     </span><span class="jsdoc-comment">// private
310     </span><span class="jsdoc-var">ClientSideMediumPassword</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">) {
311         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 7) &amp;&amp; </span><span class="jsdoc-var">this.SpansEnoughCharacterSets</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 2);
312     },
313     </span><span class="jsdoc-comment">// private
314     </span><span class="jsdoc-var">ClientSideWeakPassword</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">) {
315         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 6) || !</span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 0);
316     }
317           
318 })</span></code></body></html>