	function ValidateEmail(Email)
	{
		
		var Pattern = /^(.+)@(.+)$/;
		var SpecialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

     	var ValidChars = "\[^\\s" + SpecialChars + "\]";
		var QuotedUser = "(\"[^\"]*\")";
		var Piece = ValidChars + '+';

		var Word = "(" + Piece + "|" + QuotedUser + ")";
		var UserPattern = new RegExp("^" + Word + "(\\." + Word + ")*$");
		var KnownDomains = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var IPDomain = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var NormalDomain = new RegExp("^" + Piece + "(\\." + Piece + ")*$");
		
		var MatchArray = Email.value.match(Pattern);
		var InvalidChars ="'#";
		var checkStr = Email.value; 
	
		if (MatchArray == null) 
		{
			alert("The e-mail address you entered does not follow the accepted pattern.");
			return true;
        }
		
		var User = MatchArray[1];
		var Domain = MatchArray[2];

		for (i = 0; i < User.length; i++) 
		{
			if (User.charCodeAt(i) > 127) 
			{
				alert("The e-mail address you entered contains invalid characters in the username.");
				return true;
			}
		}

		if (User.match(UserPattern) == null) 
		{
			alert("The e-mail address you entered contains an invalid username.");
			return true;
		}


		
		for (i = 0; i < Domain.length; i++) 
		{
			if (Domain.charCodeAt(i) > 127) 
			{
			alert("The e-mail address you entered contains invalid characters in the domain name.");
				return true;
   			}
		}
		
		var IPArray = Domain.match(IPDomain);
		if (IPArray!=null) 
		{
			for (var i=1; i <= 4; i++) 
			{
				if (IPArray[i] > 255) 
					{
						alert("The e-mail address you entered contains an invalid destination IP address.");
						return true;
   					}
			}
			return false;
		}
 
		var PiecePattern = new RegExp("^" + Piece + "$");
		var DomainArray = Domain.split(".");
		var Len = DomainArray.length;
		for (i=0; i < Len; i++) 
		{
			if (DomainArray[i].search(PiecePattern) == -1) 
			{
				alert("The e-mail address you entered contains an invalid domain name.");
				return true;
		   	}
		}

		if (DomainArray[DomainArray.length - 1].length != 2 && DomainArray[DomainArray.length - 1].search(KnownDomains) == -1) 
		{
			alert("The e-mail address you entered does not end in a well-known domain or two letter country.");
			return true;
		}		
		
		if (Len < 2) 
		{
			alert("The e-mail address you entered is missing a host name.");
			return true;
		}
		
		for (i = 0;  i < checkStr.length;  i++) 
		{ 
        	ch = checkStr.charAt(i); 
            for (j = 0;  j < InvalidChars.length;  j++) 
            	if (ch == InvalidChars.charAt(j)) 
				{
          			alert("The e-mail address you have is an invalide e-mail address.");
					return true; 
               }                       
        } 
		
		return false;
	}