1/* 2 [Discuz!] (C)2001-2099 Comsenz Inc. 3 This is NOT a freeware, use is subject to license terms 4 5 $Id: register.js 33433 2013-06-13 07:36:25Z nemohou $ 6 Modified by Valery Votintsev, codersclub.org 7*/ 8 9/*vot*/ var lastusername = '', lastpassword = '', lastemail = '', lastinvitecode = '', stmp = new Array(), modifypwd = false, profileTips = lng['leave_blank_old_pass']; 10 11function errormessage(id, msg) { 12 if($(id)) { 13 try{ 14 showInputTip(); 15 } catch (e) {} 16 msg = !msg ? '' : msg; 17 if($('tip_' + id)) { 18 if(msg == 'succeed') { 19 msg = ''; 20 $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, ''); 21 $('tip_' + id).parentNode.className += ' p_right'; 22 } else if(msg !== '') { 23 $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, ''); 24 } 25 } 26 if($('chk_' + id)) { 27 $('chk_' + id).innerHTML = msg; 28 } 29 $(id).className = $(id).className.replace(/ er/, ''); 30 $(id).className += !msg ? '' : ' er'; 31 } 32} 33 34function addFormEvent(formid, focus){ 35 var si = 0; 36 var formNode = $(formid).getElementsByTagName('input'); 37 for(i = 0;i < formNode.length;i++) { 38 if(formNode[i].name == '') { 39 formNode[i].name = formNode[i].id; 40 stmp[si] = i; 41 si++; 42 } 43 if(formNode[i].type == 'text' || formNode[i].type == 'password'){ 44 formNode[i].onfocus = function(){ 45 showInputTip(!this.id ? this.name : this.id); 46 } 47 } 48 } 49 if(!si) { 50 return; 51 } 52 formNode[stmp[0]].onblur = function () { 53 checkusername(formNode[stmp[0]].id); 54 }; 55 checkPwdComplexity(formNode[stmp[1]], formNode[stmp[2]]); 56 try { 57 if(!ignoreEmail) { 58 addMailEvent(formNode[stmp[3]]); 59 } 60 } catch(e) {} 61 62 try { 63 if(focus) { 64 $('invitecode').focus(); 65 } else { 66 formNode[stmp[0]].focus(); 67 } 68 } catch(e) {} 69} 70 71function checkPwdComplexity(firstObj, secondObj, modify) { 72 modifypwd = modify || false; 73 firstObj.onblur = function () { 74 if(firstObj.value == '') { 75/*vot*/ var pwmsg = !modifypwd ? lng['password_fill'] : profileTips; 76 if(pwlength > 0) { 77/*vot*/ pwmsg += lng['length_min']+pwlength+lng['chars']; 78 } 79 errormessage(firstObj.id, pwmsg); 80 }else{ 81 errormessage(firstObj.id, !modifypwd ? 'succeed' : ''); 82 } 83 checkpassword(firstObj.id, secondObj.id); 84 }; 85 firstObj.onkeyup = function () { 86 if(pwlength == 0 || $(firstObj.id).value.length >= pwlength) { 87/*vot*/ var passlevels = new Array('',lng['pw_weak'],lng['pw_middle'],lng['pw_strong']); 88 var passlevel = checkstrongpw(firstObj.id); 89/*vot*/ errormessage(firstObj.id, '<span class="passlevel passlevel'+passlevel+'">' + lng['password_strength'] + passlevels[passlevel]+'</span>'); 90 } 91 }; 92 secondObj.onblur = function () { 93 if(secondObj.value == '') { 94/*vot*/ errormessage(secondObj.id, !modifypwd ? lng['password_again'] : profileTips); 95 } 96 checkpassword(firstObj.id, secondObj.id); 97 }; 98} 99 100function addMailEvent(mailObj) { 101 102 mailObj.onclick = function (event) { 103 emailMenu(event, mailObj.id); 104 }; 105 mailObj.onkeyup = function (event) { 106 emailMenu(event, mailObj.id); 107 }; 108 mailObj.onkeydown = function (event) { 109 emailMenuOp(4, event, mailObj.id); 110 }; 111 mailObj.onblur = function () { 112 if(mailObj.value == '') { 113/*vot*/ errormessage(mailObj.id, lng['email_fill']); 114 } 115 emailMenuOp(3, null, mailObj.id); 116 }; 117 stmp['email'] = mailObj.id; 118} 119function checkstrongpw(id) { 120 var passlevel = 0; 121 if($(id).value.match(/\d+/g)) { 122 passlevel ++; 123 } 124 if($(id).value.match(/[a-z]+/ig)) { 125 passlevel ++; 126 } 127 if($(id).value.match(/[^a-z0-9]+/ig)) { 128 passlevel ++; 129 } 130 return passlevel; 131} 132function showInputTip(id) { 133 var p_tips = $('registerform').getElementsByTagName('i'); 134 for(i = 0;i < p_tips.length;i++){ 135 if(p_tips[i].className == 'p_tip'){ 136 p_tips[i].style.display = 'none'; 137 } 138 } 139 if($('tip_' + id)) { 140 $('tip_' + id).style.display = 'block'; 141 } 142} 143 144function showbirthday(){ 145 var el = $('birthday'); 146 var birthday = el.value; 147 el.length=0; 148/*vot*/ el.options.add(new Option(lng['day'], '')); 149 for(var i=0;i<28;i++){ 150 el.options.add(new Option(i+1, i+1)); 151 } 152 if($('birthmonth').value!="2"){
153 el.options.add(new Option(29, 29)); 154 el.options.add(new Option(30, 30)); 155 switch($('birthmonth').value){ 156 case "1": 157 case "3": 158 case "5": 159 case "7": 160 case "8": 161 case "10": 162 case "12":{ 163 el.options.add(new Option(31, 31)); 164 } 165 } 166 } else if($('birthyear').value!="") { 167 var nbirthyear=$('birthyear').value; 168 if(nbirthyear%400==0 || (nbirthyear%4==0 && nbirthyear%100!=0)) el.options.add(new Option(29, 29)); 169 } 170 el.value = birthday; 171} 172 173function trim(str) { 174 return str.replace(/^\s*(.*?)[\s\n]*$/g, '$1'); 175} 176 177/*vot*/ var emailMenuST = null, emailMenui = 0; // emaildomains MOVED to lang_js.js 178function emailMenuOp(op, e, id) { 179 if(op == 3 && BROWSER.ie && BROWSER.ie < 7) { 180 checkemail(id); 181 } 182 if(!$('emailmore_menu')) { 183 return; 184 } 185 if(op == 1) { 186 $('emailmore_menu').style.display = 'none'; 187 } else if(op == 2) { 188 showMenu({'ctrlid':'emailmore','pos': '13!'}); 189 } else if(op == 3) { 190 emailMenuST = setTimeout(function () { 191 emailMenuOp(1, id); 192 checkemail(id); 193 }, 500); 194 } else if(op == 4) { 195 e = e ? e : window.event; 196 var obj = $(id); 197 if(e.keyCode == 13) { 198 var v = obj.value.indexOf('@') != -1 ? obj.value.substring(0, obj.value.indexOf('@')) : obj.value; 199 obj.value = v + '@' + emaildomains[emailMenui]; 200 doane(e); 201 } 202 } else if(op == 5) { 203 var as = $('emailmore_menu').getElementsByTagName('a'); 204 for(i = 0;i < as.length;i++){ 205 as[i].className = ''; 206 } 207 } 208} 209 210function emailMenu(e, id) { 211 if(BROWSER.ie && BROWSER.ie < 7) { 212 return; 213 } 214 e = e ? e : window.event; 215 var obj = $(id); 216 if(obj.value.indexOf('@') != -1) { 217 $('emailmore_menu').style.display = 'none'; 218 return; 219 } 220 var value = e.keyCode; 221 var v = obj.value; 222 if(!obj.value.length) { 223 emailMenuOp(1); 224 return; 225 } 226 227 if(value == 40) { 228 emailMenui++; 229 if(emailMenui >= emaildomains.length) { 230 emailMenui = 0; 231 } 232 } else if(value == 38) { 233 emailMenui--; 234 if(emailMenui < 0) { 235 emailMenui = emaildomains.length - 1; 236 } 237 } else if(value == 13) { 238 $('emailmore_menu').style.display = 'none'; 239 return; 240 } 241 if(!$('emailmore_menu')) { 242 menu = document.createElement('div'); 243 menu.id = 'emailmore_menu'; 244 menu.style.display = 'none'; 245 menu.className = 'p_pop'; 246 menu.setAttribute('disautofocus', true); 247 $('append_parent').appendChild(menu); 248 } 249 var s = '<ul>'; 250 for(var i = 0; i < emaildomains.length; i++) { 251 s += '<li><a href="javascript:;" onmouseover="emailMenuOp(5)" ' + (emailMenui == i ? 'class="a" ' : '') + 'onclick="$(stmp[\'email\']).value=this.innerHTML;display(\'emailmore_menu\');checkemail(stmp[\'email\']);">' + v + '@' + emaildomains[i] + '</a></li>'; 252 } 253 s += '</ul>'; 254 $('emailmore_menu').innerHTML = s; 255 emailMenuOp(2); 256} 257 258function checksubmit() { 259 var p_chks = $('registerform').getElementsByTagName('kbd'); 260 for(i = 0;i < p_chks.length;i++){ 261 if(p_chks[i].className == 'p_chk'){ 262 p_chks[i].innerHTML = ''; 263 } 264 } 265 ajaxpost('registerform', 'returnmessage4', 'returnmessage4', 'onerror'); 266 return; 267} 268 269function checkusername(id) { 270 errormessage(id); 271 var username = trim($(id).value); 272 if($('tip_' + id).parentNode.className.match(/ p_right/) && (username == '' || username == lastusername)) { 273 return; 274 } else { 275 lastusername = username; 276 } 277 if(username.match(/<|"/ig)) { 278/*vot*/ errormessage(id, lng['username_invalid']); 279 return; 280 } 281//vot var unlen = username.replace(/[^\x00-\xff]/g, "**").length; 282/*vot*/ var unlen = username.length; 283/*vot*/ var utf8len = utf8length(username); 284 285/*vot*/ if(unlen < 2) { 286/*vot*/ errormessage(id, lng['username_short']); 287 return; 288/*vot*/ } else if(unlen > 15) { 289 errormessage(id, lng['username_long']); 290 return; 291/*vot*/ } else if(utf8len > 64) { // Max DB Field Length in bytes 292/*vot*/ errormessage(id, lng['username_long']); 293/*vot*/ return; 294 } 295 var x = new Ajax(); 296 $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, ''); 297 x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=' + (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(username) : username.replace(/%/g, '%25').replace(/#/g, '%23')), function(s) { 298 errormessage(id, s); 299 }); 300} 301 302function checkpassword(id1, id2) { 303 if(!$(id1).value && !$(id2).value) { 304 return; 305 } 306 if(pwlength > 0) { 307 if($(id1).value.length < pwlength) { 308/*vot*/ errormessage(id1, lng['pass_short']+pwlength+lng['chars']); 309 return; 310 } 311 } 312 if(strongpw) { 313 var strongpw_error = false, j = 0; 314 var strongpw_str = new Array(); 315 for(var i in strongpw) { 316 if(strongpw[i] === 1 && !$(id1).value.match(/\d+/g)) { 317 strongpw_error = true; 318/*vot*/ strongpw_str[j] = lng['digital']; 319 j++; 320 } 321 if(strongpw[i] === 2 && !$(id1).value.match(/[a-z]+/g)) { 322 strongpw_error = true; 323/*vot*/ strongpw_str[j] = lng['lowercase']; 324 j++; 325 } 326 if(strongpw[i] === 3 && !$(id1).value.match(/[A-Z]+/g)) { 327 strongpw_error = true; 328/*vot*/ strongpw_str[j] = lng['capitals']; 329 j++; 330 } 331 if(strongpw[i] === 4 && !$(id1).value.match(/[^A-Za-z0-9]+/g)) { 332 strongpw_error = true; 333/*vot*/ strongpw_str[j] = lng['specials']; 334 j++; 335 } 336 } 337 if(strongpw_error) { 338/*vot*/ errormessage(id1, lng['pw_weak_info']+strongpw_str.join(', ')); 339 return; 340 } 341 } 342 errormessage(id2); 343 if($(id1).value != $(id2).value) { 344/*vot*/ errormessage(id2, lng['passwords_not_equal']); 345 } else { 346 errormessage(id2, !modifypwd ? 'succeed' : ''); 347 } 348} 349 350function checkemail(id) { 351 errormessage(id); 352 var email = trim($(id).value); 353 if($(id).parentNode.className.match(/ p_right/) && (email == '' || email == lastemail)) { 354 return; 355 } else { 356 lastemail = email; 357 } 358 if(email.match(/<|"/ig)) { 359/*vot*/ errormessage(id, lng['email_invalid']); 360 return; 361 } 362 var x = new Ajax(); 363 $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, ''); 364 x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkemail&email=' + email, function(s) { 365 errormessage(id, s); 366 }); 367} 368 369function checkinvite() { 370 errormessage('invitecode'); 371 var invitecode = trim($('invitecode').value); 372 if(invitecode == '' || invitecode == lastinvitecode) { 373 return; 374 } else { 375 lastinvitecode = invitecode; 376 } 377 if(invitecode.match(/<|"/ig)) { 378/*vot*/ errormessage('invitecode', lng['invite_code_invalid']); 379 return; 380 } 381 var x = new Ajax(); 382 $('tip_invitecode').parentNode.className = $('tip_invitecode').parentNode.className.replace(/ p_right/, ''); 383 x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkinvitecode&invitecode=' + invitecode, function(s) { 384 errormessage('invitecode', s); 385 }); 386}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.