var emailAddress = '';
// escape literal '.' characters with a backslash; .* means zero or more of any character (like just plain old * is often used)

var regexes = [/yaho[^o]/i,       //yahoo
	/yaoo/i,
	/\bahoo\b/i,
	/[^y]ahoo/i,
	/ya[^h]oo/i,
	/\byhoo\b/i,
	/\byahoodotcom\b/i,

	/\bhotmai\b/i,                //hotmail
	/\bhotmal\b/i,
	/\bhotmil\b/i,
	/\bhotail\b/i,
	/\bhomail\b/i,
	/\bhtmail\b/i,
	/\botmail\b/i,
	/[^h]otmail/i,
	/h[^o]tmail/i,
	/ho[^t]mail/i,
	/hot[^m]ail/i,
	/hotm[^a]il/i,
	/hotma[^i]l/i,
	/hotmai[^l]/i,
	/\bhotmial\b/i,

	/\bgmal\b/i,                  //gmail
	/\bgmai\b/i,
	/\bgail\b/i,
	/gm[^a]il/i,
	/gma[^i]l/i,
	/gmai[^l]/i,

	/\boal\b/i,                   //aol
	/\baoil\b/i,
	/\baoil\b/i,
	/\bzol\b/i,
	/\bsol\b/i,
	/\bol\b/i,
	/\balo\b/i,
	/\bao\b/i,

	/com[^c]ast/i,                //comcast
	/\bcomast\b/i,

    /^www./i,                     //www.

    /\.comm$/i,                    //.com
	/\.con$/i,
	/\bco\b/i,
	/\bc.om\b/i,
	/\.[^c]om$/i,
	/\.c[^o]m$/i,
	/\.co[^m]$/i,
	/\.com.com$/i,
	/\.com.$/i,

	/\b@mai\b/i,                  //mail.com


	/\ba\.com\b/i,                 //invalid
	/\bb\.com\b/i,
	/\bc\.com\b/i,
	/\bd\.com\b/i,
	/\be\.com\b/i,
	/\bf\.com\b/i,
	/\bg\.com\b/i,
	/\bh\.com\b/i,
	/\bi\.com\b/i,
	/\bj\.com\b/i,
	/\bk\.com\b/i,
	/\bl\.com\b/i,
	/\bm\.com\b/i,
	/\bn\.com\b/i,
	/\bo\.com\b/i,
	/\bp\.com\b/i,
	/\bq\.com\b/i,
	/\br\.com\b/i,
	/\bs\.com\b/i,
	/\bt\.com\b/i,
	/\bu\.com\b/i,
	/\bv\.com\b/i,
	/\bw\.com\b/i,
	/\bx\.com\b/i,
	/\by\.com\b/i,
	/\bz\.com\b/i,
	/\b0\.com\b/i,
	/\b1\.com\b/i,
	/\b2\.com\b/i,
	/\b3\.com\b/i,
	/\b4\.com\b/i,
	/\b5\.com\b/i,
	/\b6\.com\b/i,
	/\b7\.com\b/i,
	/\b8\.com\b/i,
	/\b9\.com\b/i


	];

var errorMsgs = ['Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',
	'Did you mean yahoo.com? Please re-check.',

	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',
	'Did you mean hotmail.com? Please re-check.',

	'Did you mean gmail.com? Please re-check.',
	'Did you mean gmail.com? Please re-check.',
	'Did you mean gmail.com? Please re-check.',
	'Did you mean gmail.com? Please re-check.',
	'Did you mean gmail.com? Please re-check.',
	'Did you mean gmail.com? Please re-check.',

	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',
	'Did you mean aol.com? Please re-check.',

	'Did you mean comcast.net? Please re-check.',
	'Did you mean comcast.net? Please re-check.',

	'Are you sure your email starts with "www."?',

	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',
	'Did you mean to type .com? Please re-check.',

	'Did you mean mail.com? Please re-check.',

	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.',
	'This email address appears to be invalid. Please re-check.'


	];

// assert(regexes.length != errorMsgs.length);

var isTypo = false;
var typoIndex;

function checkEmailForTypos() {

	// get address from text field
	emailAddress = $('emailAddress').value;
	// assumes that the email field has an id of "emailAddress"

	// for each regex, check if the email matches that regex, and if so, do something
	isTypo = false;
	regexes.each(handleEmailTypos);

	if (isTypo) {
		$('emailMisspelled').removeClass('jsHide');
		$('emailMisspelled').innerHTML = errorMsgs[typoIndex];
	} else {
		$('emailMisspelled').addClass('jsHide');
	}

}

function handleEmailTypos(item, index) {

	if (isCommonEmailTypo(item)) {
		isTypo = true;
		typoIndex = index;
		//alert(item);
	}

}

function isCommonEmailTypo(theRegex) {
	return (emailAddress.match(theRegex) != null);
}

window.addEvent('domready', function () {
	$('emailAddress').addEvent('change', checkEmailForTypos);
	// assumes that the email field has an id of "emailAddress"
});
