
// 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-callbackfr-callbackfr":{"fieldClass":"field-row","fields":{"lF-callbackfr-name":{"required":true,"notequals":"Name"},"lF-callbackfr-telephone":{"required":true,"notequals":"Telephone"},"lF-callbackfr-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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-contact-us-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-contact-usfr-contact-usfr":{"fields":{"lF-contact-usfr-name":{"required":true,"message":"S'il vous pla&icirc;t fournir votre nom complet"},"lF-contact-usfr-telephone":{"required":true,"message":"S'il vous pla&icirc;t fournir votre num&eacute;ro de t&eacute;l&eacute;phone"},"lF-contact-usfr-email":{"required":true,"regex":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"Une adresse email valide est n&eacute;cessaire"},"lF-contact-usfr-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"message":"Votre message est consid&eacute;r&eacute; comme ind&eacute;sirable. Veuillez vous assurer qu'il ne contient pas de codes sp&eacute;ciaux et r&eacute;essayer."}}},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-fineart-enquiry-description":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"message":"Your message appears to be spam. Please ensure it contains no special codes and try again."},"lF-fineart-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"message":"Your message appears to be spam. Please ensure it contains no special codes and try again."}}},"lF-fineartfr-enquiry-fineartfr-enquiry":{"fields":{"lF-fineartfr-enquiry-name":{"required":true,"message":"S'il vous pla&icirc;t fournir votre nom complet"},"lF-fineartfr-enquiry-telephone":{"required":true,"message":"S'il vous pla&icirc;t fournir votre num&eacute;ro de t&eacute;l&eacute;phone"},"lF-fineartfr-enquiry-email":{"required":true,"regex":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"Une adresse email valide est n&eacute;cessaire"},"lF-fineartfr-enquiry-description":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"message":"Your message appears to be spam. Please ensure it contains no special codes and try again."},"lF-fineartfr-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-uk-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-international-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-book-a-survey-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-storage-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-business-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"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":{"pattern":"^([\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+\\.)*[\\w\\!\\#$\\%\\&\\'\\*\\+\\-\\\/\\=\\?\\^\\`{\\|\\}\\~]+@((((([a-z0-9]{1}[a-z0-9\\-]{0,62}[a-z0-9]{1})|[a-z])\\.)+[a-z]{2,6})|(\\d{1,3}\\.){3}\\d{1,3}(\\:\\d{1,5})?)$","flags":"i"},"message":"A valid email address is required"},"lF-south-london-enquiry-message":{"regex":{"pattern":"^((?!\\[url)(.|\\n))*$"},"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,flags)
{
	var regexObject = new RegExp(regex,flags);
	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.pattern,param.flags) === 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);
		}
	}

});
