var Validate = {
	'non-empty': function(fieldValue) { 
		if(fieldValue.length > 0) {
			return true;
		}
		return false;	
	},
	'num': function(fieldValue) {
		var re = /^\d+$/;
		if (re.test(fieldValue)) {
			return true;
		}
		return false;
	},
	'email': function(fieldValue) {
		if (fieldValue.indexOf('@') && fieldValue.indexOf('@') != fieldValue.lastIndexOf('@')) {
			return false;
		}
		var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if(fieldValue.length > 0 && re.test(fieldValue)) {
			return true;
		}
		return false;
	},
	/*
	'match': function(fieldValue, match) {
		if (fieldValue !== '' && fieldValue == match) {
			return true;
		}
		return false;
	},
	*/
	'cc': function(fieldValue) {
		if (fieldValue == "AX") {
			if (fieldValue.length == 15) {
				return true;
			}
		} else {
			if (fieldValue.length == 16) {
				return true;
			}
		}
		return false;
	},
	'phone': function(fieldValue) {
		var re = /^[0-9 ()-]+$/;
		if (fieldValue.length > 0 && re.test(fieldValue)) {
			return true;
		}
		return false;
	}
}

var Forms = {
	'contact_form': {
		'first_name': {
			'msg': "This field is required.",
			'rule': 'non-empty'
		},
		'last_name': {
			'msg': "This field is required.",
			'rule': 'non-empty'	
		},
		'email': {
			'msg': "This field is required.",
			'rule': 'email'
		},
		'00N80000002viuD': {
			'msg': "Please select a category.",
			'rule': 'non-empty'
		},
		'00N80000002viuE': {
			'msg': "Please select how you heard about us.",
			'rule': 'non-empty'
		},
		'00N80000002viuu': {
			'msg': "Your message cannot be empty.",
			'rule': 'non-empty'		
		}
	},
	'newsletter_signup_form': {
		'email': {
			'msg': "Invalid email.",
			'rule': 'email'
		}
	}
}

function submitForm(form_id) {
	$('span.error').empty();
	errors = validateForm(form_id);
	if(!$.isEmptyObject(errors)) {
		for(var i in errors) {
			var fieldName = errors[i].field;
			var html = "<span class='error'>" + errors[i].msg + "</span>"
			$('#' + form_id + ' label[for=' + fieldName + ']').after(html);
		}
		return false;
	}
	return true;
}

function validateForm(form_id) {
	fields = $('#' + form_id).serializeArray();
	errors = {};
	if (Forms[form_id] !== undefined) {
		$.each(fields, function(i, field) {
			if (Forms[form_id][field.name] !== undefined) {
				if (!validateField(field, Forms[form_id][field.name]['rule'])) {
					errors[i] = {
						'field': field.name,
						'msg': Forms[form_id][field.name]['msg']
					}
				}
			}
		});	
	}
	return errors;
}

function validateField(field, rule){
	var fieldValue = field.value;
	return Validate[rule](fieldValue);
}

function toggleSignupForm(elem) {
	if (elem.value == '') {
		elem.value = 'email address';
	}
	else {
		elem.value = '';
	}
}

