//-----------------------------------------------------------------------------
// Parses an email address to make sure that it has the proper format
//-----------------------------------------------------------------------------
function validateEmailAddress(emailStr)
{
    if (emailStr == "") 
    { 
        return "The email address cannot be empty"; 
    }

    var checkTLD = 0; 
    var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/; 
    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 = emailStr.match(emailPat); 

    if (matchArray == null)
    { 
        return "The email address is Invalid"; 
    }
    
    var user = matchArray[1]; 
    var domain = matchArray[2]; 
    for (i = 0; i < user.length; i++)
    { 
        if (user.charCodeAt(i) > 127) 
        { 
            return "The email address's user name contains invalid characters."; 
        }
    }
 
    for (i = 0; i < domain.length; i++)
    { 
        if (domain.charCodeAt(i) > 127)
        { 
            return "The email address's domain name contains invalid characters."; 
        }
    }
 
    if (user.match(userPat) == null)
    { 
        return "The email address's user name is invalid."; 
    }
 
    var IPArray = domain.match(ipDomainPat); 
    if (IPArray != null)
    { 
        for (var i = 1; i <= 4; i++)
        { 
            if (IPArray[i]>255)
            { 
                return "The Destination IP Address is invalid."; 
            }
        }
        return true; 
    } 
    
    var atomPat = new RegExp("^" + atom + "$"); 
    var domArr = domain.split("."); 
    var len = domArr.length; 
    for (i = 0; i < len; i++)
    { 
        if (domArr[i].search(atomPat)==-1)
        { 
            return "The email address's domain name is invalid."; 
        } 
    }

    if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) 
    { 
        return "The email address's domain name extension is invalid"; 
    }
 
    if (len < 2)
    { 
        return "The email address is missing a hostname."; 
    }

    return "";
}

function onSubmit()
{
    var errorString = validateEmailAddress(document.getElementById("emailAddress").value);

    if (errorString.length > 0)
    {
        alert(errorString);
        return false;
    }
    else
    {
        return true;
    }
}