String.prototype.trim = function () {
	return this.replace(/^\s+|\s+$/g, '');
};
String.prototype.ltrim = function () {
	return this.replace(/^\s+/, '');
};
String.prototype.rtrim = function () {
	return this.replace(/\s+$/, '');
};
String.prototype.isEmail = function () {
	return /^[-!#\$%\*\+\/\?\|\^&{}`~\w]+(\.[-!#\$%\*\+\/\?\|\^&{}`~\w]+)*@[-\w]+(\.[-\w]+)+$/.test(this);
};

window.onload = function () {
	var volunteerForm = document.getElementById('volunteer');

	volunteerForm.onsubmit = function () {
		var success = true;
		var message = '';

		var firstName = document.getElementById('first-name');
		var lastName = document.getElementById('last-name');
		var phoneNumber = document.getElementById('phone-number');
		var email = document.getElementById('email');

		firstName.value = firstName.value.trim();
		lastName.value = lastName.value.trim();
		phoneNumber.value = phoneNumber.value.trim();
		email.value = email.value.trim();

		if (!firstName.value) {
			success = false;
			message += 'First name required.\n';
		}

		if (!success) {
			document.getElementById('first-name-label').style.color = '#F00';
			firstName.focus();
		} else {
			document.getElementById('first-name-label').style.color = '#000';

			if (!lastName.value) {
				success = false;
				message += 'Last name required.\n';
			}

			if (!success) {
				document.getElementById('last-name-label').style.color = '#F00';
				lastName.focus();
			} else {
				document.getElementById('last-name-label').style.color = '#000';

				if (!phoneNumber.value) {
					success = false;
					message += 'Phone number required.\n';
				}

				if (!success) {
					document.getElementById('phone-number-label').style.color = '#F00';
					phoneNumber.focus();
				} else {
					document.getElementById('phone-number-label').style.color = '#000';

					if (!email.value) {
						success = false;
						message += 'E-mail address required.\n';
					} else if (!email.value.isEmail()) {
						success = false;
						message += 'A valid e-mail address is required.\n';
					}

					if (!success) {
						document.getElementById('email-label').style.color = '#F00';

					} else {
						document.getElementById('email-label').style.color = '#000';
					}
				}
			}
		}

		if (!success) {
			alert(message);
		}

		return success;
	};
};