function F_valid_email(e){
var r=new Object(),
c=String(e).toLowerCase(),
i;
for(e="",i=0;i<c.length;i++)
if(c.charAt(i)!=" ")e+=c.charAt(i);
r.valid=true;
r.msg="";
r.formatted="";
for(i=0;i<e.length;i++){
c=e.charAt(i);
if(c!="-" && c!="@" && c!="." && c!="_" && (c<"0" || c>"9") && (c<"a" || c>"z")){
r.valid=false;
r.msg="cannot contain the special character '"+c+"'";
i=999}
}
if(r.valid && F_instances_of("@",e)!=1){
r.valid=false;
r.msg="must contain an '@' character"}
if(r.valid && (e.indexOf("@")==0 || e.indexOf("@")==e.length-1)){
r.valid=false;
r.msg="cannot have '@' at beginning or end"}
if(r.valid && F_instances_of(".",e)<1){
r.valid=false;
r.msg="must have at least one dot or full stop character"}
if(r.valid && e.indexOf("..")>-1){
r.valid=false;
r.msg="cannot have two adjacent dots or full stops"}
if(r.valid&&(e.indexOf(".")==0 || e.lastIndexOf(".")==(e.length-1))){
r.valid=false;
r.msg="cannot have a dot or full stop at the beginning or end"}
if(r.valid && (e.indexOf("@.")>-1 || e.indexOf(".@")>-1)){
r.valid=false;
r.msg="cannot have an '@' character adjacent to a dot or full stop"}
if(r.valid&&(e.indexOf(".", e.indexOf("@")+2)==-1)){
r.valid=false;
r.msg="there must be at least one dot or full stop after '@' character"}
if(r.valid)r.formatted=e;
else r.msg="Invalid e-mail address - "+r.msg;
return(r)}
