var emailRegEx = new RegExp(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/);
function isEmail(email) {
	if (email.match(emailRegEx)) return true;
	return false;
}

function isPhone(phone) {
	if (phone.test(/\d{3}-\d{3}-\d{4}/)) return true;
	return false;
}

function enableEmails() {
	var emails = $ES('.email');
	for (var x=0;x<emails.length;x++) {
		theEmail = emails[x].innerHTML.replace(/(.*) at (.*) dot (.*)/g,'$1@$2.$3');
		emails[x].innerHTML = '<a href="mailto:' + theEmail + '">' + theEmail + '</a>';
	}
}

function checkForm(myForm) {
	var formErrors = [];
	for (var i=0;i<myForm.elements.length;i++) {
		var field = myForm.elements[i];
		switch (field.name) {
			case 'Email':
				if (field.value == '') {
					formErrors.push('"' + field.name + '" is empty.');
				} else {
					if (!isEmail(field.value)){
						formErrors.push('Email is not valid: i.e. name@domain.com');
					}
				}
			break;

			case 'Phone':
				if (field.value == '') {
					formErrors.push('"' + field.name + '" is empty.');
				} else {
					if (!isPhone(field.value)){
						formErrors.push('Phone is not in a valid format: i.e. 000-000-0000. (We do this to reduce form-based Spam)');
					}
				}
			break;

			case '':
			break;

			default:
				if (field.value == '') formErrors.push('"' + field.name.replace(/_/g,' ') + '" is empty.');
		}
	}

	if (formErrors.length == 0) {
		return true;
	} else {
		eMsg = '<h2>Uh Oh...</h2><p>Before we can send this, please fix the following problems:</p><ul>'
		for (var x=0;x<formErrors.length;x++) {
			eMsg += '<li>' + formErrors[x];
		}
		eMsg += '</ul> <div id="formErrorBtn" onclick="hideErrorBox();">Go Back and Edit Form</div>';
		$('formErrors').innerHTML = eMsg;
		errorFx.start({
			'opacity': 1
		});

		return false;
	}
}

function hideErrorBox() {
	errorFx.start({
		'opacity': 0
	});
}

function setupContact() {
	errorFx = new Fx.Styles('formErrors', {duration:400, wait: false});
	if ($('formErrors'))
		$('formErrors').setStyle('opacity',0);
	if ($('contactForm')) {
		$('contactForm').onsubmit = function() {
			return checkForm(this);
		}
	}
	enableEmails();
}
window.addEvent('domready', setupContact);
