/* Fixed by VNChannel @ http://mkportal.vnchannel.net to support: 1/ If webpage exists another login form (like MKPortal Login block) 2/ Support multi-language site 3/ Some fixes in checking passwords and email matches */ var url = "xmlhttp.php?action=CheckUsername&user="; // The server-side script function emailCheck(emailStr) { var checkTLD = 1; var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/; var emailPat = /^(.+)@(.+)$/; var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]"; var validChars = "\[^\\s" + specialChars + "\]"; var quotedUser = "(\"[^\"]*\")"; var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; var atom = validChars + '+'; var word = "(" + atom + "|" + quotedUser + ")"; var userPat = new RegExp("^" + word + "(\\." + word + ")*$"); var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$"); var matchArray = emailStr.match(emailPat); if(matchArray == null) { LoginStatus('email_1','email_1_status',null,'0', email_incorrect); return false; } var user = matchArray[1]; var domain = matchArray[2]; for(i=0; i < user.length; i++) { if(user.charCodeAt(i) > 127) { LoginStatus('email_1','email_1_status',null,'0', email_invalid_char); return false; } } for(i=0; i < domain.length; i++) { if(domain.charCodeAt(i) > 127) { LoginStatus('email_1','email_1_status',null,'0', email_invalid_domain_char); return false; } } if(user.match(userPat) == null) { LoginStatus('email_1','email_1_status',null,'0', username_invalid ); return false; } var IPArray = domain.match(ipDomainPat); if(IPArray != null) { for(var i=1; i <= 4; i++) { if(IPArray[i] > 255) { LoginStatus('email_1','email_1_status',null,'0', des_ip_invalid); return false; } } return true; } var atomPat = new RegExp("^" + atom + "$"); var domArr = domain.split("."); var len = domArr.length; for(i=0; i < len; i++) { if(domArr[i].search(atomPat) == -1) { LoginStatus('email_1', 'email_1_status', null, '0', domain_invalid); return false; } } if(checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat) == -1) { LoginStatus('email_1', 'email_1_status',null, '0', domain_country_invalid) return false; } if(len < 2) { LoginStatus('email_1', 'email_1_status', null, '0', email_missing_hostname); return false; } return true; } function isInt(str) { var i = parseInt(str); if(isNaN(i)) { return false; } i = i . toString(); if(i != str) { return false; } return true; } var isWorking = false; function handleHttpResponse_2() { if(http.readyState == 4) { if(http.responseText.indexOf('invalid') == -1) { // Split the comma delimited response into an array results = http.responseText.split(","); if(results[1] == "Invalid") { document.register.username.value = ''; LoginStatus('username', 'username_status', null, '0', results[0] + is_in_use); isWorking = false; } else { document.register.username.value = results[0]; LoginStatus('username', 'username_status', null, '1', results[0] + is_available); isWorking = false; } } } } function CheckUserName() { if (document.register.username.value=='') return false; var form = document.register; if(form.username.value.length < 3) { LoginStatus('username', 'username_status', null, '0', username_less_3); isWorking = false; } else { if(!isWorking && http) { var UserName = document.register.username.value; /*document.getElementById('username').value = "Checking...";*/ document.register.username.value = 'Checking...'; http.open("GET", url + escape(UserName), true); http.onreadystatechange = handleHttpResponse_2; isWorking = true; http.send(null); } } } function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if(!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } function LoginStatus(ID,ID2,parentID,sText,reason) { var inputboxElem = document.getElementById(ID); var ID2 = ID + "_status"; if(typeof reason == "undefined") { reason = ""; } if(sText == 0) { var sText = "  "; inputboxElem.setAttribute("class", "inputbad"); inputboxElem.setAttribute("className", "inputbad"); } else if(sText == 1) { var sText = "  "; inputboxElem.setAttribute("class", "inputgood"); inputboxElem.setAttribute("className", "inputgood"); } if(document.layers) { var oLayer = (parentID)? eval('document.' + parentID + '.document.' + ID2 + '.document') : document.layers[ID2].document; oLayer.open(); oLayer.write(sText + reason + progressbar); oLayer.close(); } else if(document.all) { document.all[ID2].innerHTML = sText + reason; } else if(parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") { document.getElementById(ID2).innerHTML = sText + reason; } } function varfield(field) { var form = document.register; var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i"); if(field == 1) { if (document.register.password_1.value=='') return false; if(form.password_1.value.length < 6) { LoginStatus('password_1','password_1_status',null,'0', password_less_6); } else { LoginStatus('password_1','password_1_status',null,'1', password_valid); } } else if(field == 2) { if (document.register.password_2.value=='') return false; if (form.password_1.value != form.password_2.value) { LoginStatus('password_2','password_2_status',null,'0', password_not_match); } else { LoginStatus('password_2','password_2_status',null,'1', password_match); } } else if(field == 3) { if (document.register.email.value=='') return false; if(emailCheck(form.email.value) != false) { LoginStatus('email_1','email_1_status',null,'1', email_valid); } } else if(field == 4) { if (document.register.email_2.value=='') return false; if (form.email_1.value != form.email_2.value) { LoginStatus('email_2','email_2_status',null,'0', email_not_match); } else { LoginStatus('email_2','email_2_status',null,'1', email_match); } } } var http = getHTTPObject(); // We create the HTTP Object