RT#29354: Password Security in Email [customer fields, images, js files]
[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 svcfield = document.getElementById(this.id+'_svcnum');
8     if (svcfield) {
9       svcnum = svcfield.options[svcfield.selectedIndex].value;
10     }
11     if (this.value) {
12       resultfield.innerHTML = '<SPAN STYLE="color: blue;">Validating password...</SPAN>';
13       var action = nologin ? 'validate_password_nologin' : 'validate_password';
14       send_xmlhttp('selfservice.cgi',
15         ['action',action,'fieldid',fieldid,'svcnum',svcnum,'check_password',this.value],
16         function (result) {
17           result = JSON.parse(result);
18           var resultfield = document.getElementById(result.fieldid);
19           if (resultfield) {
20             var errorimg = '<IMG SRC="images/error.png" style="width: 1em; display: inline-block; padding-right: .5em">';
21             var validimg = '<IMG SRC="images/tick.png" style="width: 1em; display: inline-block; padding-right: .5em">';
22             if (result.valid) {
23               resultfield.innerHTML = validimg+'<SPAN STYLE="color: green;">Password valid!</SPAN>';
24             } else if (result.error) {
25               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.error+'</SPAN>';
26             } else {
27               result.syserror = result.syserror || 'Server error';
28               resultfield.innerHTML = errorimg+'<SPAN STYLE="color: red;">'+result.syserror+'</SPAN>';
29             }
30           }
31         }
32       );
33     } else {
34       resultfield.innerHTML = '';
35     }
36   };
37 }
38