var RegValite =
{
	checkUserName: function( username )
	{
		// trim 
		username = username.replace(/^\s+/, "").replace(/\s+$/, "");

		// check begin
		if ( /^([0-9]|_)/.test(username) )
			return false;

		// validate character
		var re = /\w|_|[\u4E00-\u9FA5]/i;
		var i = 0;
		var len = 0;
		while ( i < username.length )
		{
			if ( !re.test( username[i] ) )
				return false;
			
			if ( username.charCodeAt(i) > 0x00FF )
				len = len + 2;
			else
				len++;
			i++;
		}
		
		// check length
		if ( len < 4 || len > 20 )
			return false;
		
		return true;
	},
	
	checkPassWord: function( password )
	{
		// trim 
		password = password.replace(/^\s+/, "").replace(/\s+$/, "");
		
		// check length
		if ( password.length < 6 || password.length > 20 )
			return false;
		
		// validate character
		var re = /[\u0021-\u007E]/;
		var i = 0;
		while ( i< password.length )
		{
			if ( !re.test(password[i]) )
				return false;
			i++;
		}
		return true;
	},
	
	checkPassWordConfirm: function( password, password2 )
	{
		// trim 
		password = password.replace(/^\s+/, "").replace(/\s+$/, "");
		password2 = password2.replace(/^\s+/, "").replace(/\s+$/, "");
		
		// compare
		return password == password2;
	},
	
	checkEmail: function( email )
	{
		// trim 
		email = email.replace(/^\s+/, "").replace(/\s+$/, "");
		
		// check valid
		var re = /^\w+[\.\w]*@\w+\.[\.\w]*\w+$/i;
		if ( email.match(re) )
			return true;
		
		return false;
	},
	
	checkVerifyCode: function( verify_code )
	{
		// trim 
		verify_code = verify_code.replace(/^\s+/, "").replace(/\s+$/, "");
		
		// every verify code length is 7
		if( verify_code.length < 3 || verify_code.length > 10 )
			return false;
		else
			return true;
	},
	
	checkUsernameOrEmail: function( username_or_email )
	{
		// trim 
		if ( RegValite.checkEmail( username_or_email ) )// is email
		{
			return true;
		}

		if ( RegValite.checkUserName( username_or_email ) ) // is username
		{
			return true;
		}

		return false;
	}
};