function check_email_address(email){
	var email_pattern = /^(.+)@(.+)$/;
	var special_characters = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var valid_characters = "\[^\\s" + special_characters + "\]";
	var quoted_user = "(\"[^\"]*\")";
	var ip_domain_pattern = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=valid_characters + '+';
	var word="(" + atom + "|" + quoted_user + ")";
	var user_pattern = new RegExp("^" + word + "(\\." + word + ")*$");
	var domain_pattern = new RegExp("^" + atom + "(\\." + atom +")*$");
	var match_array = email.match(email_pattern);

	if(match_array == null){
		return false;
	}

	var user = match_array[1];
	var domain = match_array[2];

	if(user.match(user_pattern) == null){
		return false;
	}

	var ip_array = domain.match(ip_domain_pattern);

	if(ip_array != null){
		for (var i=1; i<=4; i++){
			if(ip_array[i] > 255){
				return false;
			}
		}
		return true;
	}

	var domain_array = domain.match(domain_pattern)

	if(domain_array == null){
		return false;
	}

	var atom_pattern = new RegExp(atom,"g");
	var domain_array = domain.match(atom_pattern);
	var len = domain_array.length;

	if(domain_array[domain_array.length-1].length < 2 || domain_array[domain_array.length-1].length > 4){
		return false;
	}

	if(len < 2){
		return false;
	}

	return true;
}