
// Lexis Click validation script by Daniel Howlett
var validationObject={"lF-callback-callback":{"fieldClass":"field-row","fields":{"lF-callback-name":{"required":true,"notequals":"Name"},"lF-callback-telephone":{"required":true,"notequals":"Telephone"},"lF-callback-time-to-call":{"required":true,"notequals":"Time to call"}}},"lF-contact-us-contact-us":{"fields":{"lF-contact-us-name":{"required":true,"message":"Please supply your full name"},"lF-contact-us-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-contact-us-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-contact-us-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-fineart-enquiry-fineart-enquiry":{"fields":{"lF-fineart-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-fineart-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-fineart-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-fineart-enquiry-description":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."},"lF-fineart-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-uk-enquiry-uk-enquiry":{"fields":{"lF-uk-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-uk-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-uk-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-uk-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-international-enquiry-international-enquiry":{"fields":{"lF-international-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-international-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-international-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-international-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-book-a-survey-book-a-survey":{"fields":{"lF-book-a-survey-name":{"required":true,"message":"Please supply your full name"},"lF-book-a-survey-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-book-a-survey-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-book-a-survey-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-storage-enquiry-storage-enquiry":{"fields":{"lF-storage-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-storage-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-storage-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-storage-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-business-enquiry-business-enquiry":{"fields":{"lF-business-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-business-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-business-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-business-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-business-quote-business-quote":{"fields":{"lF-business-quote-name":{"required":true,"message":"Please supply your full name"},"lF-business-quote-company-name":{"required":true,"message":"Please supply your company name"},"lF-business-quote-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-business-quote-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"}}},"lF-request-guide-request-guide":{"fields":{"lF-request-guide-name":{"required":true,"message":"Please supply your full name"},"lF-request-guide-address":{"required":true,"message":"Please supply a delivery address"},"lF-request-guide-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-request-guide-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"}}},"lF-south-london-enquiry-south-london-enquiry":{"fields":{"lF-south-london-enquiry-name":{"required":true,"message":"Please supply your full name"},"lF-south-london-enquiry-telephone":{"required":true,"message":"Please supply your telephone number"},"lF-south-london-enquiry-email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"},"lF-south-london-enquiry-message":{"regex":"^((?!\\[url).)*$","message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}}};

function validateRequired(fieldid)
{
	if ($('#'+fieldid).val()=="") return false;
	return true;
}

function validateRegex(fieldid,regex)
{
	var regexObject = new RegExp(regex);
	if (regexObject.test($('#'+fieldid).val())) return true;
	return false;
}

function validateEquals(fieldid,equalsid)
{
	if ($('#'+fieldid).val() == $('#'+equalsid).val()) return true;
	return false;
}

function validateNotEquals(fieldid,value)
{
	if ($('#'+fieldid).val() == value) return false;
	return true;
}

$(document).ready(function(){

	if (validationObject!=undefined)
	{

		for (var i in validationObject)
		{
			( function(formid) // introduce new scope
			{
				$('#'+formid).submit( function() {

					var boolReturn = true;

					for (var fieldid in validationObject[formid]['fields'])
					{
						var fieldWrapper;

						if (validationObject[formid]['fieldClass']!=undefined) fieldWrapper = $('#'+fieldid).parents('.'+validationObject[formid]['fieldClass']);
						else fieldWrapper = $('#'+fieldid).parent();

						// debugging help
						if (fieldWrapper.html() == null) alert('The fieldClass has been set wrong in form ('+formid+')');

						fieldWrapper.removeClass('invalid');

						for (var validationRule in validationObject[formid]['fields'][fieldid])
						{
							var param = validationObject[formid]['fields'][fieldid][validationRule];

							switch (validationRule)
							{
								case 'required':
									if ( param===true && validateRequired(fieldid) === false )
									{
										fieldWrapper.addClass('invalid');
										boolReturn=false;
									}
									break;

								case 'regex':
									if ( validateRegex(fieldid,param) === false )
									{
										fieldWrapper.addClass('invalid');
										boolReturn=false;
									}
									break;

								case 'equals':
									if ( validateEquals(fieldid,param) === false )
									{
										fieldWrapper.addClass('invalid');
										boolReturn=false;
									}
									break;

								case 'notequals':
									if ( validateNotEquals(fieldid,param) === false )
									{
										fieldWrapper.addClass('invalid');
										boolReturn=false;
									}
									break;
							}

							if (fieldWrapper.hasClass('invalid')) break;
						}
					}

					if (boolReturn === false)
					{
						$(this).find('.invalid input, .invalid textarea').get(0).focus();
						window.scrollBy(0,-80);
					}

					return boolReturn;
				});
			})(i);
		}
	}

});