var oEmailField;

function checkEmail(idx, sMsg)
{	
	oEmailField = idx;
    var sVal = allTrim(idx.value);
	idx.value = sVal;
    var sOldVal = sVal ;
    
    // first check for a @ and .

	var bOK = basicEmailCheck(sVal);
   
    if ( ! bOK ) {
			return false;
    }
    else
    {
			// make sure the login form doesn't pick this up
			if ( idx.form.name != "frmNewEntry" ){
				return true;
			}
    }
    
	sVal = emailHygeine(sVal);
	
	// if it was changed, run the popup
	if (sVal.toLowerCase() != sOldVal.toLowerCase()) {
	
		var sURL;
		sURL = "/errors/invalidemail.html?rec=" + escape(sVal);
		sURL = sURL + "&ent=" + sOldVal ;
		
		var w = "510";
		var h = "320";
		var expdateLong = new Date();
		window.open(sURL,'newwindow'+expdateLong.getTime(), 'width=' + w + ',height=' + h + ',status=no,menubar=no,scrollable=no,resizable=yes,scrollbars=no,screenX=0,screenY=0,top=0,left=0');

		return false;
	}
	else {    
		idx.value = sVal.toLowerCase();
		return true;
	}
}

function basicEmailCheck(sVal) {
	

	var oReg = strRegEx_Email;  

	var bOK = oReg.test(sVal);
    var sErr = "Please enter a valid email address\n(e.g. username@domain.com).";
   
    if ( ! bOK ) {
			alert( sErr );
			return false;
    }    
	return true;	
}

function callbackRec(sVal) {
	oEmailField.value = sVal;

	var bOK = basicEmailCheck(sVal)
	if ( ! bOK ) {
		return false;
	}

	oEmailField.form.submit();
}

function callbackEnt(sVal) {
	oEmailField.value = sVal;
	var bOK = basicEmailCheck(sVal)
	if ( ! bOK ) {
		return false;
	}
	oEmailField.form.submit();
}

function callbackNew(sVal) {
	oEmailField.value = sVal;
	
	if ( checkEmail(oEmailField,"Email") ) {
		oEmailField.form.submit();
	}
}

//misspelled override ;)
function emailHygiene(sVal){return emailHygeine(sVal); }

function emailHygeine(sVal) {
// replace bad characters and known bad patterns with valid stuff
sVal = sVal.replace(/\\/g, ".");
sVal = sVal.replace( /\//g, ".");
sVal = sVal.replace( /,/g, ".");
sVal = sVal.replace(/\.\.+/g, ".");
sVal = sVal.replace( /@@+/g, "@");
sVal = sVal.replace( /--+/g, "-");
sVal = sVal.replace(/''+/g, "'");
sVal = sVal.replace(/^[@|\.|\-]+/, "");
sVal = sVal.replace(/[@|\.|\-]+$/, "");
sVal = sVal.replace(/`/g, "");
sVal = sVal.replace(/[^0-9a-z@\.&\*\+\-_<+>]/gi,"");
sVal = sVal.replace(/(\.@)|(@\.)/gi,"@");
sVal = sVal.replace(/@aol$/i,"@aol.com");
sVal = sVal.replace(/@msn$/i,"@msn.com");
sVal = sVal.replace(/@juno$/i,"@juno.com");
sVal = sVal.replace(/@home$/i,"@home.com");
sVal = sVal.replace(/@yahoo$/i,"@yahoo.com");
sVal = sVal.replace(/@prodigy$/i,"@prodigy.com");
sVal = sVal.replace(/@hotmail$/i,"@hotmail.com");
sVal = sVal.replace(/@email\.msn$/i,"@email.msn.com");
// correct possible misspellings of top-level domains
sVal = sVal.replace(/\.cm$/i,".com");
sVal = sVal.replace(/\.co$/i,".com");
sVal = sVal.replace(/\.ml$/i,".mil");
sVal = sVal.replace(/\.ne$/i,".net");
sVal = sVal.replace(/\.om$/i,".com");
// correct other possible misspellings of .com
sVal = sVal.replace(/\.ocm$/i,".com");
sVal = sVal.replace(/\.cmo$/i,".com");
sVal = sVal.replace(/\.co[0-9a-ln-z]$/i,".com");
sVal = sVal.replace(/\.c[0-9a-np-z]m$/i,".com");
sVal = sVal.replace(/\.[0-9a-bd-z]om$/i,".com");
sVal = sVal.replace(/\.co[0-9a-z][0-9a-z]$/i,".com");
sVal = sVal.replace(/\.[0-9a-z]com$/i,".com");
sVal = sVal.replace(/\.co[0-9a-z]m$/i,".com");
sVal = sVal.replace(/\.c[0-9a-z]om$/i,".com");
// special catch for .com.com
sVal = sVal.replace(/\.com\.com$/i,".com");
// correct other possible domain misspellings
sVal = sVal.replace(/@[a-z0-9]aol\./i,"@aol.");
sVal = sVal.replace(/@aol[a-z0-9]\./i,"@aol.");
sVal = sVal.replace(/@[a-z0-9]ol\./i,"@aol.");
sVal = sVal.replace(/@a[a-z0-9]l\./i,"@aol.");
sVal = sVal.replace(/@ao[a-z0-9]\./i,"@aol.");
sVal = sVal.replace(/@[a-z0-9]msn\./i,"@msn.");
sVal = sVal.replace(/@msn[a-z0-9]\./i,"@msn.");
sVal = sVal.replace(/@[a-z0-9]sn\./i,"@msn.");
sVal = sVal.replace(/@m[a-z0-9]n\./i,"@msn.");
sVal = sVal.replace(/@ms[a-z0-9]\./i,"@msn.");
sVal = sVal.replace(/@[a-z0-9]juno\./i,"@juno.");
sVal = sVal.replace(/@juno[a-z0-9]\./i,"@juno.");
sVal = sVal.replace(/@[a-z0-9]uno\./i,"@juno.");
sVal = sVal.replace(/@j[a-z0-9]uno\./i,"@juno.");
sVal = sVal.replace(/@ju[a-z0-9]o\./i,"@juno.");
sVal = sVal.replace(/@jun[a-z0-9]\./i,"@juno.");
sVal = sVal.replace(/@[a-z0-9]home\./i,"@home.");
sVal = sVal.replace(/@home[a-z0-9]\./i,"@home.");
sVal = sVal.replace(/@[a-z0-9]ome\./i,"@home.");
sVal = sVal.replace(/@h[a-z0-9]me\./i,"@home.");
sVal = sVal.replace(/@ho[a-z0-9]e\./i,"@home.");
sVal = sVal.replace(/@hom[a-z0-9]\./i,"@home.");
sVal = sVal.replace(/@[a-z0-9]yahoo\./i,"@yahoo.");
sVal = sVal.replace(/@yahoo[a-z0-9]\./i,"@yahoo.");
sVal = sVal.replace(/@[a-z0-9]ahoo\./i,"@yahoo.");
sVal = sVal.replace(/@y[a-z0-9]hoo\./i,"@yahoo.");
sVal = sVal.replace(/@ya[a-z0-9]oo\./i,"@yahoo.");
sVal = sVal.replace(/@yah[a-z0-9]o\./i,"@yahoo.");
sVal = sVal.replace(/@yaho[a-z0-9]\./i,"@yahoo.");
sVal = sVal.replace(/@[a-z0-9]prodigy\./i,"@prodigy.");
sVal = sVal.replace(/@prodigy[a-z0-9]\./i,"@prodigy.");
sVal = sVal.replace(/@[a-z0-9]rodigy\./i,"@prodigy.");
sVal = sVal.replace(/@p[a-z0-9]odigy\./i,"@prodigy.");
sVal = sVal.replace(/@pr[a-z0-9]digy\./i,"@prodigy.");
sVal = sVal.replace(/@pro[a-z0-9]igy\./i,"@prodigy.");
sVal = sVal.replace(/@prod[a-z0-9]gy\./i,"@prodigy.");
sVal = sVal.replace(/@prodi[a-z0-9]y\./i,"@prodigy.");
sVal = sVal.replace(/@prodig[a-z0-9]\./i,"@prodigy.");
sVal = sVal.replace(/@[a-z0-9]hotmail\./i,"@hotmail.");
sVal = sVal.replace(/@hotmail[a-z0-9]\./i,"@hotmail.");
sVal = sVal.replace(/@[a-z0-9]otmail\./i,"@hotmail.");
sVal = sVal.replace(/@h[a-z0-9]tmail\./i,"@hotmail.");
sVal = sVal.replace(/@ho[a-z0-9]mail\./i,"@hotmail.");
sVal = sVal.replace(/@hot[a-z0-9]ail\./i,"@hotmail.");
sVal = sVal.replace(/@hotm[a-z0-9]il\./i,"@hotmail.");
sVal = sVal.replace(/@hotma[a-z0-9]l\./i,"@hotmail.");
sVal = sVal.replace(/@hotmai[a-z0-9]\./i,"@hotmail.");
sVal = sVal.replace(/@[a-z0-9]email\.msn\./i,"@email.msn.");
sVal = sVal.replace(/@email\.msn[a-z0-9]\./i,"@email.msn.");
sVal = sVal.replace(/@emailm\.sn\./i,"@email.msn.");
sVal = sVal.replace(/@emai\.lmsn\./i,"@email.msn.");
sVal = sVal.replace(/@[a-z0-9]email\.msn$/i,"@email.msn.com");
sVal = sVal.replace(/@email\.msn[a-z0-9]$/i,"@email.msn.com");
sVal = sVal.replace(/@emailm\.sn$/i,"@email.msn.com");
sVal = sVal.replace(/@emai\.lmsn$/i,"@email.msn.com");
sVal = sVal.replace(/@email\.msn$/i,"@email.msn.com");
sVal = sVal.replace(/@[a-z0-9]mail\.msn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@e[a-z0-9]ail\.msn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@em[a-z0-9]il\.msn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@ema[a-z0-9]l\.msn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@emai[a-z0-9]\.msn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@email\.[a-z0-9]sn\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@email\.m[a-z0-9]n\.com$/i,"@email.msn.com");
sVal = sVal.replace(/@email\.ms[a-z0-9]\.com$/i,"@email.msn.com");
// catch missing . for some domains
sVal = sVal.replace(/@aolcom/i,"@aol.com");
sVal = sVal.replace(/@msncom/i,"@msn.com");
sVal = sVal.replace(/@junocom/i,"@juno.com");
sVal = sVal.replace(/@homecom/i,"@home.com");
sVal = sVal.replace(/@yahoocom/i,"@yahoo.com");
sVal = sVal.replace(/@prodigycom/i,"@prodigy.com");
sVal = sVal.replace(/@prodigynet/i,"@prodigy.net");
sVal = sVal.replace(/@hotmailcom/i,"@hotmail.com");
sVal = sVal.replace(/@email\.msncom/i,"@email.msn.com");
sVal = sVal.replace(/@emailmsncom/i,"@email.msn.com");
sVal = sVal.replace(/@emailmsn\.com/i,"@email.msn.com");
return sVal;
}