﻿var CSV = (function()
{
	var csv = {};
	var validationFields = [];
	var validationFieldsSet = false;
	var messageDisplayType = 10;
	var messageDisplayTypeSet = false;

	csv.isValid = function()
	{
		var isValid = true;

		isValid = validateFields();

		if (!isValid)
		{
			top.location = (
				'#error');

			if ((typeof (ConfirmationMessaging) != 'undefined') &&
				(typeof (ConfirmationMessaging.hideConfirmationMessages) == 'function'))
			{
				ConfirmationMessaging.hideConfirmationMessages();
			}

			if ((typeof (ErrorMessaging) != 'undefined') &&
				(typeof (ErrorMessaging.showErrorMessages) == 'function'))
			{
				ErrorMessaging.showErrorMessages(
					messageDisplayType);
			}
		}

		return isValid;
	};

	csv.setValidationFields = function(
		validationFieldsLocal)
	{
		if (!validationFieldsSet)
		{
			validationFields = validationFieldsLocal;

			validationFieldsSet = true;
		}
	};

	csv.setMessageDisplayTypeValue = function(
		messageDisplayTypeLocal)
	{
		if (!messageDisplayTypeSet)
		{
			messageDisplayType = messageDisplayTypeLocal;

			messageDisplayTypeSet = true;
		}
	};

	function validateFields()
	{
		var isValid = true;

		if ((typeof (validationFields) != 'undefined') &&
			(validationFields != null) &&
			(typeof (validationFields.length) != 'undefined') &&
			(validationFields.length > 0))
		{
			if ((typeof (ErrorMessaging) != 'undefined') &&
				(typeof (ErrorMessaging.clearErrorMessages) == 'function'))
			{
				ErrorMessaging.clearErrorMessages();
			}

			for (var index = 0; index < validationFields.length; index++)
			{
				var isFieldValid = true;

				if ((typeof (validationFields[index].ClientID) != 'undefined') &&
					(validationFields[index].ClientID) &&
					(typeof (validationFields[index].ErrorMessage) != 'undefined') &&
					(validationFields[index].ErrorMessage) &&
					(typeof (validationFields[index].ValidationTypes) != 'undefined') &&
					(typeof (validationFields[index].ValidationTypes.length) != 'undefined') &&
					(validationFields[index].ValidationTypes.length > 0))
				{
					var validationField = validationFields[index];

					var validationControl = document.getElementById(
						validationField.ClientID);

					if ((typeof (validationControl) != 'undefined') &&
						(validationControl != null) &&
						(typeof (validationControl.value) != 'undefined'))
					{
						for (var typesIndex = 0; typesIndex < validationField.ValidationTypes.length; typesIndex++)
						{
							switch (validationField.ValidationTypes[typesIndex])
							{
								// Required   
								case 2:
								{
									if (validationControl.value == '')
									{
										isFieldValid = false;
									}

									break;
								}

									// Regex
								case 4:
								{
									if (typeof (validationField.RegexPattern) != 'undefined')
									{
										if ((validationControl.value != '') &&
										(!validationControl.value.match(validationField.RegexPattern)))
										{
											isFieldValid = false;
										}
									}

									break;
								}

								case 8:
								{
									break;
								}
							}
						}

						if (!isFieldValid)
						{
							if ((typeof (ErrorMessaging) != 'undefined') &&
								(typeof (ErrorMessaging.addErrorMessage) == 'function'))
							{
								ErrorMessaging.addErrorMessage(
									validationField.ErrorMessage,
									messageDisplayType);
							}

							isValid = false;
						}
					}
				}
			}
		}

		return isValid;
	}

	return csv;
})();