function doValidateMultipleEmails(sEmailAddress, bIsMandatory)
{
	// REMOVE ALL SPACES AND THE FINAL SEMICOLON IF ONE EXISTS
	sEmailAddress = trim(sEmailAddress);
	sEmailAddress = sEmailAddress.replace(/; /g, ";");
	if(Mid(sEmailAddress, sEmailAddress.length-1, 1) == ";")
		sEmailAddress = Mid(sEmailAddress, 0, sEmailAddress.length-1, 1);
			
	var email = sEmailAddress.split(';');
	for (var i = 0; i < email.length; i++)
	{
		if (!doValidateEmailAddress(email[i], bIsMandatory, 0)) return false;
	}
	return true;
}
		
// STANDARD TRIM FUNCTION
function trim(stringToTrim)
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

// THIS IS A STANDARD MID FUNCTION
function Mid(str, start, len)
{
    if (start < 0 || len < 0) return "";

    var iEnd, iLen = String(str).length;
    if (start + len > iLen)
		iEnd = iLen;
    else
		iEnd = start + len;

    return String(str).substring(start,iEnd);
}
		
// VALIDATE EMAIL ADDRESSES
function doValidateEmailAddress(sEmailAddress, bIsMandatory)
{
	if (sEmailAddress == '' && bIsMandatory) return false;
	if (sEmailAddress == '') return true;
			
	var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++) {
	   if (sEmailAddress.indexOf(invalidChars.charAt(i),0) > -1) return false;
	}
	for (i=0; i<sEmailAddress.length; i++) {
	   if (sEmailAddress.charCodeAt(i)>127) return false;
	}

	var atPos = sEmailAddress.indexOf('@',0);
	if (atPos == -1) return false;
	if (atPos == 0) return false;
	if (sEmailAddress.indexOf('@', atPos + 1) > - 1) return false;
	if (sEmailAddress.indexOf('.', atPos) == -1) return false;
	if (sEmailAddress.indexOf('@.',0) != -1) return false;
	if (sEmailAddress.indexOf('.@',0) != -1) return false;
	if (sEmailAddress.indexOf('..',0) != -1) return false;
	var suffix = sEmailAddress.substring(sEmailAddress.lastIndexOf('.')+1);
	if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') return false;
	return true;
}

