RT#42235: Strict password requirments are not disabled for signup portal [respects...
[freeside.git] / fs_selfservice / FS-SelfService / cgi / add_password_validation.js
1 function add_password_validation (fieldid,nologin) {
2   var inputfield = document.getElementById(fieldid);
3   inputfield.onchange = function () {
4     var fieldid = this.id+'_result';
5     var resultfield = document.getElementById(fieldid);
6     var svcnum = '';
7     var agentnum = '';
8     var svcfield = document.getElementById(this.id+'_svcnum');
9     if (svcfield) {
10       svcnum = svcfield.options[svcfield.selectedIndex].value;
11     } else {
12       var agentfield = document.getElementsByName('agentnum');
13       if (agentfield[0]) {
14         agentnum = agentfield[0].value;
15       }
16     }
17     if (this.value) {
18       resultfield.innerHTML = '<SPAN STYLE="color: blue;">Validating password...</SPAN>';
19       var action = nologin ? 'validate_password_nologin' : 'validate_password';
20       send_xmlhttp('selfservice.cgi',
21         ['action',action,'fieldid',fieldid,'svcnum',svcnum,'check_password',this.value,'agentnum',agentnum],
22         function (result) {
23           result = JSON.parse(result);
24           var resultfield = document.getElementById(result.fieldid);
25           if (resultfield) {
26             var errorimg = '<IMG SRC="images/error.png" style="width: 1em; display: inline-block; padding-right: .5em">';
27             var validimg = '<IMG SRC="images/tick.png" style="width: 1em; display: inline-block; padding-right: .5em">';
28             if (result.valid) {
29               resultfield.innerHTML = validimg+'<SPAN STYLE="color: green;">Password valid!</SPAN>';
30             } else if (result.error) {
31               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.error+'</SPAN>';
32             } else {
33               result.syserror = result.syserror || 'Server error';
34               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.syserror+'</SPAN>';
35             }
36           }
37         }
38       );
39     } else {
40       resultfield.innerHTML = '';
41     }
42   };
43 }
44