
// Lexis Click validation script by Daniel Howlett
var validationObject={"enquiry-form":{"fields":{"name":{"required":true,"message":"Please supply your full name"},"email":{"required":true,"regex":"(\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,6})","message":"A valid email address is required"}}}};

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();

						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').get(0).focus();
						window.scrollBy(0,-80);
					}

					return boolReturn;
				});
			})(i);
		}
	}

});
