// Author: Carlos Eduardo da Fonseca <eduardongu@gmail.com>
function validmail(str) 
{
    // Check mail characters validity
    var mail = new RegExp(/^[\w][\w-\.]+@[\w-\.]+(\.[\w-]+)+$/);

    // Tests character repetion and dots/dashes before and after "@"
    var deny = new RegExp(/([\.-]{2,}|[\.-]@|@[\.-])/);

    var mail_match = str.match(mail);
    var deny_match = str.match(deny);

    // Mail must end with a-z (case insensitive) or 0-9 
    var valid_end = str.match(/[a-z0-9]$/i); 

    return (mail_match && mail_match[0] == str
            && valid_end && !deny_match);
}
