
		function emailValidate(sEmail) {
			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=sEmail.match(emailPat);
			var sID = (emailValidate.arguments[1]) ? emailValidate.arguments[1] : 'msgGeneral';
			
			if (sEmail == '') {
				displayMsg('Please enter your email.', sID);
				return false;
			}
				
			if (matchArray==null) {
				displayMsg('Please enter a valid email.', sID);
				return false;
			}

			var user=matchArray[1];
			var domain=matchArray[2];

			if (user.match(userPat)==null) {
				// user is not valid
				displayMsg('Incorrect email format.', sID);
				return false;
			}
						
			var IPArray=domain.match(ipDomainPat);
						
			if (IPArray!=null) {
				for (var i=1;i<=4;i++) {
					if (IPArray[i]>255) {	
						displayMsg('Please check your email address.', sID);
						return false;
					}
				}		
			}
			var domainArray=domain.match(domainPat);
			if (domainArray==null) {
				displayMsg('Please check your email address.', sID);
				return false;
			}
						
			var atomPat=new RegExp(atom,"g");
			var domArr=domain.match(atomPat);
			var len=domArr.length;
				
			if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) {
				displayMsg('Please check your email address.', sID);
				return false;
			}
						
			if (len<2) {
				displayMsg('Please check your email address.', sID);
				return false;
			}
			return true;
		}

