/**
 * Form validator class. For each of the form elements that need validation add an entry 
 * in the map and classify what kind of validation needs to take place. Additionally add
 * in the error message that will be displayed if the validation fails.
 */
var Validator = {
	validate: function() {
		var hasPassed = true;
		var currKey;
	
		var map = {};
		map = {
			'first_name': { 
				message: 'Please enter your first name', 
				methods: [Validator.isAlpha], 
				baseValue: 'First Name*' 
			},
			'last_name': { 
				message:'Please enter your last name', 
				methods: [Validator.isAlpha],
				baseValue: 'Last Name*'
			},
			'phone': { 
				message: 'Please enter your telephone number', 
				methods: [Validator.isNotEmpty],
				baseValue: 'Phone*'
			},
			'email': { 
				message: 'Please enter a valid email address', 
				methods: [Validator.isEmail],
				baseValue: 'Email*'
			},
			'age': { 
				message: 'Please enter your age', 
				methods: [Validator.isNumeric],
				baseValue: 'Age*'
			},
			'zip': { 
				message: 'Please enter a valid zip code', 
				methods: [Validator.isNumeric],
				baseValue: 'Zip*'
			},
			'country': { 
				message: 'Please enter your country', 
				methods: [Validator.isAlpha],
				baseValue: 'Country*'
			},
			'findus': { 
				message: 'Please let us know how you heard about Pyramid', 
				methods: [Validator.isNotEmpty],
				baseValue: 'Please Choose'
			}
		};
		
		for (var key in map) {
			var ele = document.getElementById(key);
			currKey = key;
			for (var i = 0; i < map[key].methods.length; i++) {
				if (ele.value == map[key].baseValue || map[key].methods[i](ele.value) == false) {
					hasPassed = false;
					break;
				}
			}
			if (!hasPassed) { break; }
		}
		if (!hasPassed) {
			document.getElementById(currKey).focus();
			alert(map[currKey].message);
		}
		return hasPassed;
	},
	isEmail: function(val) {
		var pattern = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/gi;
		return pattern.test(val);
	},
	isAlpha: function(val) {
		var pattern = /^[a-zA-Z]+$/gi;
		return pattern.test(val);
	},
	isNumeric: function(val) {
		var pattern = /^[0-9]+$/gi;
		return pattern.test(val);
	},
	isAlphaNumeric: function() {
		var pattern = /^[0-9a-zA-Z]+$/gi;
		return pattern.test(val);
	},
	isNotEmpty: function(val) {
		return (val != null && val.length > 0);
	}
};

function checkForReturn(ele, e) {
	var keyCode = (window.event ? window.event.keyCode : e.which);
	if (keyCode == 13) {
		return Validator.validate();
	}
	return true;
}

