﻿// Validators should return an object which contains
// valid bool and error message if not valid            

// Check a field is not empty
var isNotEmptyValidator = function(field) {
	var isValid = false;
	if(field.is('[type=radio]'))
		isValid = (field.is(':checked'));
	else if(field.is('select'))
		isValid = (field[0].selectedIndex != 0);
	else
		isValid = (field.attr('value') != '');
	return { valid: isValid, message: 'You must fill in this field' };
};

// Check a field is a valid DD/MM/YYYY date
var isDateValidator = function(field) {
	if(field.attr('value') == '') return { valid: true, message: '' };
	var dateRegex = /\d{2}\/\d{2}\/\d{4}/gi;
	return { valid: (field.attr('value').match(dateRegex)), message: 'Must be a valid date in DD/MM/YYYY format' };
};

// Check if a field contains a valid email address
var isEmailValidator = function(field) {
	if(field.attr('value') == '') return { valid: true, message: '' };
	var emailRegex = /[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/gi;
	return { valid: (field.attr('value').match(emailRegex)), message: 'Must be a valid email address' };
};

// Check a field contains a valid number
var isNumericValidator = function(field) {
    var val = field.attr('value');
	return { valid: (parseFloat(val)), message: '&nbsp;Must only contain numbers' + ((val.indexOf('£') > -1) ? ", no pound signs" : "") };
};
