// Validate.js

///////////////////////////////////////////////////////////////////////
//
//	Routines that validate an email address before passing it to the 
//	server. This does not check for misspellings or incorrect addresses
//	but, merely validates the syntax of "username@host.tld" or "username@host.tld.cc" 
//
//  Last updated 10/17/2000 - kendall@obs-us.com
//
///////////////////////////////////////////////////////////////////////

// Here are the messages to display. Note you cannot use the (') single quote
// character in contractions like " don't " otherwise you'll produce and error
// if you do choose to use quotes you must escape them like this - " don\'t " 

// blank field
var msg1 = "Email field is empty. If you don't give us your email address we will not be able to send you updates."

// invalid characters I
var msg2 = "This is not a valid email address - please check for invalid characters like: <>+=,;:/\?¿ ."

// invalid characters II
var msg3 = "This is not a valid email address - please check for invalid characters like: !'\"#$%&* ."

//invalid characters III
var msg4 = "This is not a valid email address - please check for invalid characters like: (){|}«» ."

// invalid characters IV
var msg5 = "This is not a valid email address - please check for invalid characters like: ä,ö,ü,Ä,Ö,Ü,ß"

// invalid characters V
var msg6 = "This is not a valid email address - please check for invalid characters like: âáàåÅæÆçÇéèêëÉíìîïóòôúùûñÑ"

// invalid characters VI
var msg7 = "This is not a valid email address - please check for invalid characters like: ¢ªº¬½¼¡¦¶µ±÷°•·²£¥ƒ"

// missing the @ sign
var msg8 = "This is not a valid email address - the '@' is missing."

// the @ sign is at the beginning of address
var msg9 = "This is not a valid email address - '@' must not be at the very beginning or end of the email address."

// more than one @ sign
var msg10= "This is not a valid email address - more than one '@' sign."

// missing period after @ sign
var msg11 = "This is not a valid email address - missing '.' in string after '@' sign."

// period at the very beginning or very end of address
var msg12 = "This is not a valid email address - '.' must not be at the very beginning or end of the email address string after '@' sign."

// more than one period
var msg13 = "This is not a valid email address - there are two periods (..) after the '@' sign."

// top level domain does not have enough, or has too many characters
var msg14 = "This is not a valid email address - your first level domain should be something like: .com, .net, .org or, any country code like: .uk, .fr, .de, .se ! Please try again."




// Do not edit beneath this line
// -----------------------------------------------------------------------------------------------------------------

// Validate Email addresses
function isEmailValid(frm)  {

	var strTemp = "";
	strEmail = "" + frm.EMAIL.value.toLowerCase();
	// remove spaces
	for ( i=0; i<strEmail.length; i++ )  {
	chr = strEmail.substring(i,i+1);
	if ( chr != " " )
	strTemp = strTemp + chr;
	}
	// set corrected string
	strEmail = strTemp;
	// reset strTemp
	strTemp = "";
	// begin validation routines:
	if ( strEmail == "" )  {
	alert(msg1); return false;	
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}	
	if (  strEmail.indexOf("<") >= 0  ||  strEmail.indexOf(">") >= 0  ||  strEmail.indexOf("+") >= 0  ||  strEmail.indexOf("=") >= 0  ||  strEmail.indexOf(",") >= 0  ||  strEmail.indexOf(";") >= 0  ||  strEmail.indexOf(":") >= 0  ||  strEmail.indexOf("/") >= 0  ||  strEmail.indexOf("\\") >= 0  ||  strEmail.indexOf("?") >= 0  ||  strEmail.indexOf("¿") >= 0  )  {
	alert(msg2); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if (  strEmail.indexOf("!") >= 0  ||  strEmail.indexOf("'") >= 0  ||  strEmail.indexOf("\"") >= 0  ||  strEmail.indexOf("#") >= 0  ||  strEmail.indexOf("$") >= 0  ||  strEmail.indexOf("%") >= 0  ||  strEmail.indexOf("&") >= 0  ||  strEmail.indexOf("*") >= 0  )  {
	alert(msg3); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if (  strEmail.indexOf("(") >= 0  ||  strEmail.indexOf(")") >= 0  ||  strEmail.indexOf("{") >= 0  ||  strEmail.indexOf("|") >= 0  ||  strEmail.indexOf("}") >= 0  ||  strEmail.indexOf("«") >= 0  ||  strEmail.indexOf("»") >= 0  )  {
	alert(msg4); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if (  strEmail.indexOf("ä") >= 0  ||  strEmail.indexOf("ö") >= 0  ||  strEmail.indexOf("ü") >= 0  ||  strEmail.indexOf("Ä") >= 0  ||  strEmail.indexOf("Ö") >= 0  ||  strEmail.indexOf("Ü") >= 0  ||  strEmail.indexOf("ß") >= 0  )  {
	alert(msg5);
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if (  strEmail.indexOf("á") >= 0  ||  strEmail.indexOf("à") >= 0  ||  strEmail.indexOf("â") >= 0  ||  strEmail.indexOf("å") >= 0  ||  strEmail.indexOf("Å") >= 0  ||  strEmail.indexOf("æ") >= 0  ||  strEmail.indexOf("Æ") >= 0  ||  strEmail.indexOf("ç") >= 0  ||  strEmail.indexOf("Ç") >= 0  ||  strEmail.indexOf("é") >= 0  ||  strEmail.indexOf("è") >= 0  ||  strEmail.indexOf("ê") >= 0  ||  strEmail.indexOf("ë") >= 0  ||  strEmail.indexOf("É") >= 0  ||  strEmail.indexOf("í") >= 0  ||  strEmail.indexOf("ì") >= 0  ||  strEmail.indexOf("î") >= 0  ||  strEmail.indexOf("ï") >= 0  ||  strEmail.indexOf("ó") >= 0  ||  strEmail.indexOf("ò") >= 0  ||  strEmail.indexOf("ô") >= 0  ||  strEmail.indexOf("ú") >= 0  ||  strEmail.indexOf("ù") >= 0  ||  strEmail.indexOf("û") >= 0  ||  strEmail.indexOf("ñ") >= 0  ||  strEmail.indexOf("Ñ") >= 0  )  {
	alert(msg6); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if (  strEmail.indexOf("¢") >= 0  ||  strEmail.indexOf("ª") >= 0  ||  strEmail.indexOf("º") >= 0  ||  strEmail.indexOf("¬") >= 0  ||  strEmail.indexOf("½") >= 0  ||  strEmail.indexOf("¼") >= 0  ||  strEmail.indexOf("¡") >= 0  ||  strEmail.indexOf("¦") >= 0  ||  strEmail.indexOf("¶") >= 0  ||  strEmail.indexOf("µ") >= 0  ||  strEmail.indexOf("±") >= 0  ||  strEmail.indexOf("÷") >= 0  ||  strEmail.indexOf("°") >= 0  ||  strEmail.indexOf("•") >= 0  ||  strEmail.indexOf("·") >= 0  ||  strEmail.indexOf("²") >= 0  ||  strEmail.indexOf("£") >= 0  ||  strEmail.indexOf("¥") >= 0  ||  strEmail.indexOf("ƒ") >= 0  )  {
	alert(msg7); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}	
	nPosAT = strEmail.indexOf("@");
	if ( nPosAT == -1 )  {
	alert(msg8); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if ( nPosAT == 0  ||  nPosAT == strEmail.length - 1 )  {
	alert(msg9); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	strLeftFromAT  = strEmail.substring(0,nPosAT);
	strRightFromAT = strEmail.substring(nPosAT+1);
	if ( strRightFromAT.indexOf("@") >= 0 )  {
	alert(msg10); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	nPosDOT = strRightFromAT.indexOf(".");
	if ( nPosDOT == -1 )  {
	alert(msg11); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if ( nPosDOT == 0  ||  nPosDOT == strRightFromAT.length - 1 )  {
	alert(msg12); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	if ( strRightFromAT.indexOf("..") >= 0 )  {
	alert(msg13); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	strLeftFromDOT  = strRightFromAT.substring(0,nPosDOT);
	strRightFromDOT = strRightFromAT.substring(nPosDOT+1);
	while ( strRightFromDOT.indexOf(".") >= 0 )  {
	nPosDOT = strRightFromDOT.indexOf(".");
	strRightFromDOT = strRightFromDOT.substring(nPosDOT+1);
	}
	if ( strRightFromDOT.length < 2  ||  strRightFromDOT.length > 4 )  {
	alert(msg14); return false;
	if ( NS4 || IE4 ) { frm.email.focus() }
	return false;
	}
	
	return true; // submit the form

}