﻿(function($) {

	var CLValidation = {

		validate: function(includeCoverLetter, isEmail) {
			var isValid = true;
			$('#ulError').html('');
			if (!$('#CoverLetterYes').is(':checked') && !$('#CoverLetterNo').is(':checked')) {
				$('ul.validation-summary-errors:last-child').append('<li>' + 'Please choose whether you want a cover letter' + '</li>');
				$('#error').show();
				return false;
			}

			if (includeCoverLetter) {
				isValid = CLValidation.required($('#PreparedFor'), 'Prepared For') && isValid;
				isValid = CLValidation.required($('#PreparedBy'), 'Prepared By') && isValid;
				isValid = CLValidation.required($('#CoverLetterYesComments'), 'Cover Letter Message') && isValid;
				if (isEmail) {
					isValid = CLValidation.required($('#CoverLetterYesEmailTo'), 'Email To') && isValid;
					isValid = CLValidation.emailAddress($('#CoverLetterYesEmailTo'), 'Email To') && isValid;
				}
			} else {
				if (isEmail) {
					isValid = CLValidation.required($('#CoverLetterNoEmailTo'), 'Email To') && isValid;
					isValid = CLValidation.emailAddress($('#CoverLetterNoEmailTo'), 'Email To') && isValid;
				}
			}

			isValid = CLValidation.maxLengthCheck($('#CoverLetterNoComments'), 500, 'Email Comments') && isValid;
			isValid = CLValidation.maxLengthCheck($('#CoverLetterYesComments'), 500, 'Cover Letter Message') && isValid;

			if ($('#ddlServiceCategories').length > 0) {
				if ($('#ddlServiceCategories').val() == "") {
					var errMsg = 'Please select a service';
					$('ul.validation-summary-errors:last-child').append('<li>' + errMsg + '</li>');
					isValid = false;
				}
			}

			if (!isValid) {
				$('#error').show();
			}
			return isValid;
		},

		required: function(field, fieldHeading) {
			if (field.val().length == 0) {
				field.focus();
				field.css('color', '#FF0000');
				var errMsg = fieldHeading + ' ' + 'must be entered';
				$('ul.validation-summary-errors:last-child').append('<li>' + errMsg + '</li>');
				return false;
			}
			return true;
		},

		maxLengthCheck: function(field, maxLength, fieldHeading) {
			if (field.val().length > maxLength) {
				field.focus();
				field.css('color', '#FF0000');
				var errMsg = fieldHeading + ' ' + 'must not exceed ' + maxLength + ' characters';
				$('ul.validation-summary-errors:last-child').append('<li>' + errMsg + '</li>');
				return false;
			}
			return true;
		},

		emailAddress: function(field, fieldHeading) {
			if (!CLValidation.isValidEmailAddress(field.val())) {
				field.focus();
				field.css('color', '#FF0000');
				var errMsg = fieldHeading + ' ' + 'must be valid email address';
				$('ul.validation-summary-errors:last-child').append('<li>' + errMsg + '</li>');
				return false;
			}
			return true;
		},

		isValidEmailAddress: function isValidEmailAddress(emailAddress) {
			var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
			return pattern.test(emailAddress);
		},

		clear: function() {
			$('ul.validation-summary-errors').html('');
			$('#error').hide();
		},

		init: function() {

			// cover letter no:
			//		email to required and email address

			// cover letter yes:
			//		prepared for & prepared by & cover letter msg req'd
			//		email to required and email address
		}


	};

	$(function() {
		window.CLValidation = CLValidation;
	});
})(jQuery);