function isDigit( ch ) { if ( (ch >= '0') && (ch <= '9') ) return true; else return false; } function isAlpha( ch ) { if ( ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ) return true; else return false; } function isAlnum( ch ) { if ( isAlpha( ch ) || isDigit( ch ) ) return true; else return false; } function notIn( str1, str2 ) { var i = 0; var j = str2.length; for( ; i '~') || !notIn( mustBeQuoted, username.charAt(0) ) ) return false; for( i=1; i '~') || !notIn ( mustBeQuoted, username.charAt(i) ) ) && ( username.charAt(i-1) != '\\' ) ) return false; } } else { if ( username.charAt( j-1 ) != '"' ) return false; for( i=1; i '9' ) ) return false; return true; } function checkIpnr( ipnr ) { var iL=0; var iC=0; var i=0; var sNr = ""; for( ; i< ipnr.length; i++ ) { if ( ipnr.charAt(i) == '.' ) { if ( !iL || (iL> 3) || parseInt( sNr,10 ) > 255 ) return false; iC++; iL = 0; sNr = ""; continue; } if ( isDigit ( ipnr.charAt(i) ) ) { iL++; sNr = sNr + ipnr.charAt(i); continue; } return false; } if ( parseInt( sNr,10 ) > 255 ) return false; if ( ( (iC==3) && (iL>=1) && (iL<=3) ) || ( (iC==4) && (!iL) ) ) return true; else return false; } function checkFqdn( fqdn ) { var iL=0; var iC=0; var i=fqdn.length-1; if ( (fqdn.charAt(0) == '.') || (fqdn.charAt(0) == '-') ) return false; if ( fqdn.charAt(i) == '.' ) i=i-1; for( ; i>=0; i-- ) { if ( fqdn.charAt(i) == '.' ) { if ( iL < 2 && iC < 2 ) return false; if ( fqdn.charAt(i-1) == '-' ) return false; iC++; iL = 0; continue; } if ( isAlnum ( fqdn.charAt(i) ) ) { iL++; continue; } if ( fqdn.charAt(i) == '-' ) { if ( !iL ) return false; iL++; continue; } return false; } if ( !iC || ( iL == 1 && iC < 2 ) || ( !iL && iC==1 ) ) return false; return true; } function checkHostname( hostname ) { if ( hostname.charAt(0) == '[' ) { if ( hostname.charAt(hostname.length-1) != ']' ) return false; var ipnr = hostname.substring( 1, hostname.length -1 ); return checkIpnr( ipnr ); } if ( hostname.charAt(0) == '#' ) { var nr = hostname.substring( 1, hostname.length ); return checkNr( nr ); } return checkFqdn( hostname ); } function checkEmailAdr( address ) { var status = true; var username = ""; var hostname = ""; if ( address.length < 8 ) return false; var seperate = address.lastIndexOf("@"); if ( seperate == -1 ) return false; username = address.substring(0, seperate ); if ( ! checkUsername( username, "<>()[],;:@\" " ) ) return false; hostname = address.substring(seperate+1, address.length ); if ( ! checkHostname( hostname ) ) return false; return true; } function checkEmail( email, allowFullname ) { var existFullname = false; var status = true; var fullname = ""; var adress = ""; if ( email.length < 8 ) return false; var emailBegin = email.indexOf("<"); var emailEnd = email.lastIndexOf(">"); if ( (emailBegin == -1) && (emailEnd == -1) ) return checkEmailAdr( email ); if ( ( (emailBegin == -1) && (emailEnd != -1) ) || ( (emailBegin != -1) && (emailEnd == -1) ) ) return false; adress = email.substring( emailBegin+1, emailEnd ); if ( ! checkEmailAdr( adress ) ) return false; if ( email.length == adress.length + 2 ) return true; else if ( ! allowFullname ) return false; if ( emailEnd == email.length - 1 ) { if ( emailBegin == 0 ) return true; if ( email.charAt( emailBegin -1 ) != ' ' ) return false; fullname = email.substring( 0, emailBegin-1 ); return checkUsername ( fullname, "<>()[],;:@\"" ); } return false ; } //-->