YUI.add('val_email', function(Y) {

	Y.val_email=function(ea) {
		var chars_emaill="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_!#$%&'*+/=?^`'{|}~@";
		var chars_emailr="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-";
		ea=ea.split("@");
		var str='';
  		if(ea.length<2){return false;} // must contain at least 1 '@'
		// check everything after the last '@'
		str=ea[ea.length-1];	
		if(str.length<1){return false;} // at least 3 chars long
		for(i=0;i<str.length;i++){if(chars_emailr.indexOf(str.charAt(i))==-1){return false;}} // only contains valid chars
		if(str.indexOf('.')==-1){return false;}// has at least one '.'
		if(str.charAt(0)=='.'){return false;}// first char is not a '.'
		if(str.charAt(str.length-1)=='.'){return false;}// last char is not a '.'	
		// check everything before the last @
		str='';// reset str
		for(i=0;i<ea.length-1;i++){str+=ea[i];}// get everything before the last '@'	
		if(str.length<1){return false;} // at least 1 char long
  		for(i=0;i<str.length;i++){if(chars_emaill.indexOf(str.charAt(i))==-1){return false;}} // only contains valid chars
		if(str.charAt(0)=='.'){return false;}// first char is not a '.'
		if(str.charAt(str.length-1)=='.'){return false;}// last char is not a '.'
		return true;
	}

});
