1d63b5f611b42c6bd8208aa2365ece7d4c615649
[platform/upstream/libwebsockets.git] / plugins / generic-sessions / assets / lwsgs.js
1 <!-- lwsgs rewrites the below $vars $v $v into the correct values on the fly -->
2
3 var lwsgs_user = "$lwsgs_user";
4 var lwsgs_auth = "$lwsgs_auth";
5 var lwsgs_email = "$lwsgs_email";
6
7 var lwsgs_html = '\
8         <div id="dlogin" style="display:none"> \
9         <form action="lwsgs-login" method="post"> \
10          <input type="hidden" name="admin" value="needadmin/admin-login.html"> \
11          <input type="hidden" name="good" value="index.html"> \
12          <input type="hidden" name="bad" value="failed-login.html"> \
13          <input type="hidden" name="forgot-good" value="sent-forgot-ok.html"> \
14          <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
15          <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
16          <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
17          <table style="vertical-align:top;text-align:right"\
18           <tr>\
19            <td>User Name\
20             <input type="text" size="10" id="username" name="username"></td>\
21            <td>Password\
22             <input type="password" id="password" size="10" name="password"><div id="pw1"></div></td>\
23              </tr><tr>\
24            <td colspan="2" style="text-align:center"><input type="submit" id="login" name="login" value="Login" style="margin: 4px; padding: 2px; font-weight=bold;">\
25       &nbsp;<input type="submit" id="forgot" name="forgot" value="Forgot password" style="margin: 2px; padding: 2px">\
26            &nbsp;<input id="doreg" type="button" value="Sign up" style="margin: 2px; padding: 2px"></td>\
27           </tr>\
28          </table>\
29         </form>\
30        </div>\
31 \
32        <div id="dlogout" style="display:none;text-align:right">\
33         <form action="lwsgs-logout" method="post" style="text-align:right">\
34          <input type="hidden" name="good" value="index.html">\
35          <table style="vertical-align:top;text-align:right">\
36           <tr><td><span id=grav></span></td>\
37            <td style="text-align:center"><table><tr><td style="text-align:center">\
38                 <a href="#" id="clink">\
39                 <span id="curuser"></span></a></td></tr><tr>\
40            <td style="text-align:center"><input type="submit" name="logout" value="Logout" style="margin: 2px; padding: 2px"></td>\
41           </tr></table></td></tr>\
42          </table>\
43         </form></div>\
44 \
45         <div id="dregister" style="display:none">\
46          <form action="lwsgs-login" method="post">\
47           <input type="hidden" name="admin" value="needadmin/admin-login.html">\
48           <input type="hidden" name="good" value="successful-login.html">\
49           <input type="hidden" name="bad" value="failed-login.html">\
50           <input type="hidden" name="reg-good" value="post-register-ok.html">\
51           <input type="hidden" name="reg-bad" value="post-register-fail.html">\
52           <input type="hidden" name="forgot-good" value="sent-forgot-ok.html">\
53           <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
54           <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
55           <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
56           <table style="vertical-align:top;text-align:left">\
57              <tr>\
58               <td colspan=2 align=center>\
59                 <span id="curuser"></span>\
60         <script>\
61                 if (lwsgs_user)\
62                         document.getElementById("curuser").innerHTML = "currently logged in as " + lwsgs_san(lwsgs_user) + "</br>";\
63         </script>\
64                <b>Please enter your details to register</b>:\
65               </td>\
66              </tr>\
67             <tr><td align=right>\
68              User Name:</td>\
69              <td><input type="text" size="10" id="rusername" name="username" &nbsp;<span id=uchk></span></td>\
70             </tr>\
71             <tr>\
72              <td align=right>Password:</td>\
73              <td><input type="password" size="10" id="rpassword" name="password">&nbsp;<span id="rpw1"></span></td>\
74             </tr>\
75             <tr>\
76             </tr>\
77             <tr>\
78              <td align=right><span id="pw2">Password (again):</span></td>\
79              <td><input type="password" size="10" id="password2" name="password2">&nbsp;<span id="match"></span></td>\
80             </tr>\
81             <tr>\
82              <td align=right>Email:</td>\
83              <td><input type="email" size="10" id="email" name="email"\
84                   placeholder="me@example.com" &nbsp;<span id=echk></span></td>\
85             </tr>\
86             <tr>\
87              <td colspan=2 align=center>\
88 <input type="submit" id="register" name="register" value="Register" style="margin: 2px; padding: 2px">\
89 <input type="submit" id="rforgot" name="forgot" value="Forgot Password" style="margin: 2px; padding: 2px;display: none">\
90 <input type="button" id="cancel" name="cancel" value="Cancel" style="margin: 2px; padding: 2px;">\
91              </td>\
92             </tr>\
93          </table>\
94         </form>\
95        </div>\
96        \
97        <div id="dchange" style="display:none">\
98         <form action="lwsgs-change" method="post">\
99          <input type="hidden" id="cusername" name="username">\
100          <input type="hidden" name="admin" value="needadmin/admin-login.html">\
101          <input type="hidden" name="good" value="index.html">\
102          <input type="hidden" name="bad" value="failed-login.html">\
103          <input type="hidden" name="reg-good" value="post-register-ok.html">\
104          <input type="hidden" name="reg-bad" value="post-register-fail.html">\
105          <input type="hidden" name="forgot-good" value="sent-forgot-ok.html">\
106          <input type="hidden" name="forgot-bad" value="sent-forgot-fail.html">\
107          <input type="hidden" name="forgot-post-good" value="post-forgot-ok.html">\
108          <input type="hidden" name="forgot-post-bad" value="post-forgot-fail.html">\
109          <table style="vertical-align:top;text-align:left">\
110              <tr>\
111               <td colspan=2 align=center>\
112                 <span id="ccuruser"></span>\
113         <script nonce="lwscaro">\
114                 if (lwsgs_user)\
115                         document.getElementById("ccuruser").innerHTML =\
116                           "<span class=\"gstitle\">Login settings for " +\
117                           lwsgs_san(lwsgs_user) + "</span></br>";\
118         </script>\
119                <b>Please enter your details to change</b>:\
120               </td>\
121              </tr>\
122             <tr><td align=right id="ccurpw_name">\
123              Current Password:</td>\
124              <td><input type="password" size="10" id="ccurpw" name="curpw"\
125                  >&nbsp;<span id=cuchk></span></td>\
126             </tr>\
127             <tr>\
128              <td align=right>Password:</td>\
129              <td><input type="password" size="10" id="cpassword" name="password"\
130                   &nbsp;<span id="cpw1"></span></td>\
131             </tr>\
132             <tr>\
133              <td align=right><span id="pw2">Password (again)</span></td>\
134              <td><input type="password" size="10" id="cpassword2" name="password2"\
135                  >&nbsp;<span id="cmatch"></span></td>\
136             </tr>\
137         <!-- not supported yet\
138             <tr>\
139              <td align=right id="cemail_name">Email:</td>\
140              <td><input type="email" size="10" id="cemail" name="email"\
141                   placeholder="?" \
142                   &nbsp;<span id=cechk></span></td>\
143             </tr> -->\
144             <tr>\
145              <td colspan=2 align=center>\
146               <input type="submit" id="change" name="change"\
147                value="Change" style="margin: 6px; padding: 6px">\
148               <input type="submit" id="cforgot" name="forgot"\
149                value="Forgot Password" style="margin: 6px; padding: 6px;display: none">\
150               <input type="button" id="cancel2" name="cancel"\
151                value="Cancel" style="margin: 6px; padding: 6px;">\
152              </td>\
153             </tr>\
154             <tr>\
155              <td colspan=2>\
156               <input type="checkbox" id="showdel" name="showdel"\
157                > Show Delete&nbsp;\
158               <input type="submit" id="delete" name="delete" \
159                value="Delete Account" style="margin: 6px; padding: 6px;display: none">\
160              </td>\
161             </tr>\
162          </table>\
163         </form>\
164        </div>\
165        \
166        <div id="dadmin" style="display:none">\
167          Admin settings TBD\
168        </div>\
169 ';
170
171 /*-- this came from
172   -- https://raw.githubusercontent.com/blueimp/JavaScript-MD5/master/js/md5.min.js
173   -- under MIT license */
174 !function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="";for(t=0;t<32*n.length;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;for(t=0;t<8*n.length;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;16>r;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this);
175
176 if (lwsgs_user.substring(0, 1) == "$") {
177         alert("lwsgs.js: lws generic sessions misconfigured and not providing vars");
178 }
179 function lwsgs_san(s)
180 {
181         if (s.search("<") != -1)
182                 return "invalid string";
183         
184         return s;
185 }
186
187 function lwsgs_update()
188 {
189         var en_login = 1, en_forgot = 1;
190         
191         if (document.getElementById('password').value.length &&
192             document.getElementById('password').value.length < 8)
193                 en_login = 0;
194         
195         if (!document.getElementById('username').value ||
196             !document.getElementById('password').value)
197                 en_login = 0;
198         
199         if (!document.getElementById('username').value ||
200              document.getElementById('password').value)
201                 en_forgot = 0;
202         
203         document.getElementById('login').disabled = !en_login;
204         document.getElementById('forgot').disabled = !en_forgot;
205         
206         if (lwsgs_user)
207                 document.getElementById("curuser").innerHTML = lwsgs_san(lwsgs_user);
208
209         if (lwsgs_user === "")
210                 document.getElementById("dlogin").style.display = "inline";
211         else
212                 document.getElementById("dlogout").style.display = "inline";
213  }
214
215 function lwsgs_open_registration()
216 {
217         document.getElementById("dadmin").style.display = "none";
218         document.getElementById("dlogin").style.display = "none";
219         document.getElementById("dlogout").style.display = "none";
220         document.getElementById("dchange").style.display = "none";
221         document.getElementById("dregister").style.display = "inline";
222 }
223
224 function lwsgs_cancel_registration()
225 {
226         document.getElementById("dadmin").style.display = "none";
227         document.getElementById("dregister").style.display = "none";
228         document.getElementById("dchange").style.display = "none";
229
230         if (lwsgs_user === "")
231                 document.getElementById("dlogin").style.display = "inline";
232         else
233                 document.getElementById("dlogout").style.display = "inline";
234 }
235
236 function lwsgs_select_change()
237 {
238         document.getElementById("dlogin").style.display = "none";
239         document.getElementById("dlogout").style.display = "none";
240         document.getElementById("dregister").style.display = "none";
241         if (lwsgs_auth & 2) {
242                 document.getElementById("dadmin").style.display = "inline";
243                 document.getElementById("dchange").style.display = "none";
244         } else {
245                 document.getElementById("dadmin").style.display = "none";
246                 document.getElementById("dchange").style.display = "inline";
247         }
248
249         event.preventDefault()
250 }
251
252 var lwsgs_user_check = '0';
253 var lwsgs_email_check = '0';
254
255 function lwsgs_rupdate()
256 {
257         var en_register = 1, en_forgot = 0;
258
259         if (document.getElementById('rpassword').value ==
260             document.getElementById('password2').value) {
261                 if (document.getElementById('rpassword').value.length)
262                         document.getElementById('match').innerHTML = 
263                                 "<b style=\"color:green\">\u2713</b>";
264                 else
265                         document.getElementById('match').innerHTML = "";
266                 document.getElementById('pw2').style = "";
267         } else {
268                 if (document.getElementById('password2').value ||
269                     document.getElementById('email').value) { // ie, he is filling in "register" path and cares
270                         document.getElementById('match').innerHTML =
271                                 "<span style=\"color: red\">\u2718 <b>Passwords do not match</b></span>";
272                 } else
273                         document.getElementById('match').innerHTML =
274                                 "<span style=\"color: gray\">\u2718 Passwords do not match</span>";
275
276                 en_register = 0;
277         }
278
279         if (document.getElementById('rpassword').value.length &&
280             document.getElementById('rpassword').value.length < 8) {
281                 en_register = 0;
282                 document.getElementById('rpw1').innerHTML = "Need 8 chars";
283         } else
284                 if (document.getElementById('rpassword').value.length)
285                         document.getElementById('rpw1').innerHTML = "<b style=\"color:green\">\u2713</b>";
286                 else
287                         document.getElementById('rpw1').innerHTML = "";
288
289         if (!document.getElementById('rpassword').value ||
290             !document.getElementById('password2').value ||
291             !document.getElementById('rusername').value ||
292             !document.getElementById('email').value ||
293             lwsgs_email_check === '1'||
294             lwsgs_user_check === '1')
295                 en_register = 0;
296
297         document.getElementById('register').disabled = !en_register;
298         document.getElementById('rpassword').disabled = lwsgs_user_check === '1';
299         document.getElementById('password2').disabled = lwsgs_user_check === '1';
300         document.getElementById('email').disabled = lwsgs_user_check === '1';
301
302         if (lwsgs_user_check === '0') {
303                 var uc = document.getElementById('uchk');
304
305                 if (uc) {
306                         if (document.getElementById('rusername').value)
307                                 uc.innerHTML = "<b style=\"color:green\">\u2713</b>";
308                         else
309                                 uc.innerHTML = "";
310                 }
311         } else {
312                 if (document.getElementById('uchk'))
313                         ocument.getElementById('uchk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
314                 en_forgot = 1;
315         }
316
317         if (lwsgs_email_check === '0') {
318                 var ec = document.getElementById('echk');
319
320                 if (ec) {
321                         if (document.getElementById('email').value)
322                                 ec.innerHTML = "<b style=\"color:green\">\u2713</b>";
323                         else
324                                 ec.innerHTML = "";
325                 }
326         } else {
327                 if (document.getElementById('echk'))
328                         document.getElementById('echk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
329                 en_forgot = 1;
330         }
331
332         if (en_forgot)
333                 document.getElementById('rforgot').style.display = "inline";
334         else
335                 document.getElementById('rforgot').style.display = "none";
336
337         if (lwsgs_user_check === '1')
338                 op = '0.5';
339         else
340                 op = '1.0';
341         document.getElementById('rpassword').style.opacity = op;
342         document.getElementById('password2').style.opacity = op;
343         document.getElementById('email').style.opacity = op;
344  }
345
346 function lwsgs_cupdate()
347 {
348         var en_change = 1, en_forgot = 1, pwok = 1;
349         
350         if (lwsgs_auth & 8) {
351                 document.getElementById('ccurpw').style.display = "none";
352                 document.getElementById('ccurpw_name').style.display = "none";
353         } else {
354                 if (!document.getElementById('ccurpw').value ||
355                     document.getElementById('ccurpw').value.length < 8) {
356                         en_change = 0;
357                         pwok = 0;
358                         document.getElementById('cuchk').innerHTML = "<b style=\"color:red\">\u2718</b>";
359                 } else {
360                         en_forgot = 0;
361                         document.getElementById('cuchk').innerHTML = "";
362                 }
363                 document.getElementById('ccurpw').style.display = "inline";
364                 document.getElementById('ccurpw_name').style.display = "inline";
365         }
366
367         if (document.getElementById('cpassword').value ==
368             document.getElementById('cpassword2').value) {
369                 if (document.getElementById('cpassword').value.length)
370                         document.getElementById('cmatch').innerHTML = "<b style=\"color:green\">\u2713</b>";
371                 else
372                         document.getElementById('cmatch').innerHTML = "";
373                 document.getElementById('pw2').style = "";
374         } else {
375                 if (document.getElementById('cpassword2').value //||
376                     //document.getElementById('cemail').value
377                 ) { // ie, he is filling in "register" path and cares
378                         document.getElementById('cmatch').innerHTML =
379                                 "<span style=\"color: red\">\u2718 <b>Passwords do not match</b></span>";
380                 } else
381                         document.getElementById('cmatch').innerHTML = "<span style=\"color: gray\">\u2718 Passwords do not match</span>";
382
383                 en_change = 0;
384         }
385
386         if (document.getElementById('cpassword').value.length &&
387             document.getElementById('cpassword').value.length < 8) {
388                 en_change = 0;
389                 document.getElementById('cpw1').innerHTML = "Need 8 chars";
390         } else {
391                 var cpw = document.getElementById('cpw1');
392
393                 if (cpw) {
394                         if (document.getElementById('cpassword').value.length)
395                                 cpw.innerHTML = "<b style=\"color:green\">\u2713</b>";
396                         else
397                                 cpw.innerHTML = "";
398                 }
399         }
400
401         if (!document.getElementById('cpassword').value ||
402             !document.getElementById('cpassword2').value ||
403             pwok == 0)
404                 en_change = 0;
405         
406         if (document.getElementById('showdel').checked)
407                 document.getElementById('delete').style.display = "inline";
408         else
409                 document.getElementById('delete').style.display = "none";
410
411         document.getElementById('change').disabled = !en_change;
412         document.getElementById('cpassword').disabled = pwok === 0;
413         document.getElementById('cpassword2').disabled = pwok === 0;
414         document.getElementById('showdel').disabled = pwok === 0;
415         document.getElementById('delete').disabled = pwok === 0;
416         //document.getElementById('cemail').disabled = pwok === 0;
417
418         /*
419         if (lwsgs_auth & 8) {
420                 document.getElementById('cemail').style.display = "none";
421                 document.getElementById('cemail_name').style.display = "none";
422         } else {
423                 document.getElementById('cemail').style.display = "inline";
424                 document.getElementById('cemail_name').style.display = "inline";
425                 if (lwsgs_email_check === '0'  &&
426                     document.getElementById('cemail').value != lwsgs_email) {
427                         if (document.getElementById('cemail').value)
428                                 document.getElementById('cechk').innerHTML = "<b style=\"color:green\">\u2713</b>";
429                         else
430                                 document.getElementById('cechk').innerHTML = "";
431                 } else {
432                         document.getElementById('cechk').innerHTML = "<b style=\"color:red\">\u2718 Already registered</b>";
433                         en_forgot = 1;
434                 }
435         } */
436         
437         if (lwsgs_auth & 8)
438                 en_forgot = 0;
439
440         if (en_forgot)
441                 document.getElementById('cforgot').style.display = "inline";
442         else
443                 document.getElementById('cforgot').style.display = "none";
444
445         if (pwok == 0)
446                 op = '0.5';
447         else
448                 op = '1.0';
449         document.getElementById('cpassword').style.opacity = op;
450         document.getElementById('cpassword2').style.opacity = op;
451         // document.getElementById('cemail').style.opacity = op;
452  }
453
454 function lwsgs_check_user()
455 {
456     var xmlHttp = new XMLHttpRequest();
457     xmlHttp.onreadystatechange = function() { 
458         if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
459             lwsgs_user_check = xmlHttp.responseText;
460             lwsgs_rupdate();
461         }
462     }
463     xmlHttp.open("GET", "lwsgs-check?username="+document.getElementById('rusername').value, true);
464     xmlHttp.send(null);
465 }
466
467 function lwsgs_check_email(id)
468 {
469     var xmlHttp = new XMLHttpRequest();
470     xmlHttp.onreadystatechange = function() { 
471         if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
472             lwsgs_email_check = xmlHttp.responseText;
473             lwsgs_rupdate();
474         }
475     }
476     xmlHttp.open("GET", "lwsgs-check?email="+document.getElementById(id).value, true);
477     xmlHttp.send(null);
478 }
479
480 function rupdate_user()
481 {
482         lwsgs_rupdate();
483         lwsgs_check_user();
484 }
485
486 function rupdate_email()
487 {
488         lwsgs_rupdate();
489         lwsgs_check_email('email');
490 }
491
492 function cupdate_email()
493 {
494         lwsgs_cupdate();
495         lwsgs_check_email('cemail');
496 }
497
498
499 function lwsgs_initial()
500 {
501         document.getElementById('lwsgs').innerHTML = lwsgs_html;
502
503         document.getElementById('username').oninput = lwsgs_update;
504         document.getElementById('username').onchange = lwsgs_update;
505         document.getElementById('password').oninput = lwsgs_update;
506         document.getElementById('password').onchange = lwsgs_update;
507         document.getElementById('doreg').onclick = lwsgs_open_registration;
508         document.getElementById('clink').onclick = lwsgs_select_change;
509         document.getElementById('cancel').onclick =lwsgs_cancel_registration;
510         document.getElementById('cancel2').onclick =lwsgs_cancel_registration;
511         document.getElementById('rpassword').oninput = lwsgs_rupdate;
512         document.getElementById('password2').oninput = lwsgs_rupdate;
513         document.getElementById('rusername').oninput = rupdate_user;
514         document.getElementById('email').oninput  = rupdate_email;
515         document.getElementById('ccurpw').oninput = lwsgs_cupdate;
516         document.getElementById('cpassword').oninput = lwsgs_cupdate;
517         document.getElementById('cpassword2').oninput = lwsgs_cupdate;
518 <!--    document.getElementById('cemail').oninput = cupdate_email;-->
519         document.getElementById('showdel').onchange = lwsgs_cupdate;
520
521         if (lwsgs_email)
522                 document.getElementById('grav').innerHTML =
523                         "<img src=\"https://www.gravatar.com/avatar/" + md5(lwsgs_email) +
524                         "?d=identicon\">";
525         //if (lwsgs_email)
526                 //document.getElementById('cemail').placeholder = lwsgs_email;
527         document.getElementById('cusername').value = lwsgs_user;
528         lwsgs_update();
529         lwsgs_cupdate();
530 }