﻿/// <summary>
///	Once user has failed email validation 1 time then we re-eval every key press
/// </summary>
function ValidateEmailParts(oSrc, args) {
    var controlName = oSrc.id.substring(0, oSrc.id.lastIndexOf('_'));
    var emailCtlValue = document.getElementById(controlName).value;
    var emailparts = emailCtlValue.split("@");
    if (emailparts.length > 1) {

        if ((emailparts[0].length > 64) || (emailparts[1].length > 255)) {
            args.IsValid = false;
            return false;
        }
    }
}

function MultiEmailValidation(oSrc, args) {
    var controlName = oSrc.id.substring(0, oSrc.id.lastIndexOf('_'));
    var multiEmailCtl = document.getElementById(controlName + '_multiLineEmailTextBox');
    var emailListString = multiEmailCtl.value;
    var validator = document.getElementById(controlName + '_MultiEmailValidator');

    //separate email addresses based on delimitors
    var emailTempString = emailListString.replace(/&nbsp;/g, " ");
    //parse into array from delimitors
    var emailList = emailTempString.split(new RegExp("[ ;,\n]{1}", "g"));

    for (var i = 0; i < emailList.length; i++) {
        //determine if we have invalid email address
        if ((emailList[i].length > 0) &&
	         (IsValidEmail(emailList[i]) == false)) {

            validator.errormessage = invalidEmailMessage + "\r\n " + emailList[i];
            args.IsValid = false;
            return false;
        }
    }
}

/// <summary>
///	Validates a single email address based on the validation expression
/// </summary>
function IsValidEmail(emailAddress) {
    var exp = new RegExp("[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}");
    var m = emailAddress.match(exp);

    // does email address match our validation
    if (m == null) {
        return false;
    }
    else {
        return true;
    }
}
