﻿/*
================================ 
DotControl copyright 2010
================================ 
*/

$(function () {
	$('.btnSubmit').click(function () {
		return validate();
	});
});

var isValid = true;

function validate() {
	isValid = true;
	ValidateFlags();
	ValidateRadio();
	ValidateConditions();
	$('.required').each(function () {
		requiredValidator(this);
	});

	emailValidator($('.isEmail'));

	$('.FormRow.error input, .FormRow.valid input, .FormRow.error textarea, .FormRow.valid textarea').change(function () {
		onTextChange();
	});

	if ($('.NABC_Membership_form .error').length != 0) {
		$('html,  body').animate({
			scrollTop: $('.NABC_Membership_form .error').offset().top - 300
		}, 700);
	}
	$('.FormRow.error input, .FormRow.error textarea').first().focus();
	return isValid;
}

function onTextChange() {
	$('.FormRow.error input, .FormRow.valid input, .FormRow.error textarea, .FormRow.valid textarea').each(function () {
		requiredValidator(this);
	});
	emailValidator($('.FormRow.error .isEmail, .FormRow.valid .isEmail'));
}

function emailValidator(toValidate) {
	if (!validateEmail($(toValidate).val())) {
		$(toValidate).closest('.FormRow').removeClass('valid');
		$(toValidate).closest('.FormRow').addClass('error');
		isValid = false;
	}
}

function validateEmail(elementValue) {
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return emailPattern.test(elementValue);
}

function ValidateFlags() {
	if ($('.Countries').length != 0) {
		var validator = false;
		$('.checkboxes input').each(function () {
			if ($(this).attr('checked')) {
				validator = true;
			}
		});

		if (!validator) {
			$('.Countries .errorMessage').removeClass('hidden').addClass('error');
			$.each($('#items li'), function () {
				$(this).click(function () {
					$('.Countries .errorMessage').addClass('hidden').removeClass('error');
				});
			});
			isValid = false;
		} 
	}
}

function ValidateRadio() {
	if ($('.checkList.radio').length != 0) {
		var validator = false;
		$('.checkList.radio  input').each(function () {
			if ($(this).attr('checked')) {
				validator = true;
			}
		});

		if (!validator) {
			$('.checkList.radio .errorMessage').removeClass('hidden').addClass('error');
			$.each($('.checkList.radio input[type="radio"]'), function () {
				$(this).change(function () {
					$('.checkList.radio .errorMessage').addClass('hidden').removeClass('error');
				});
			});
			isValid = false;
		} 
	}
}


function requiredValidator(toValidate) {
	if ($(toValidate).val().trim().length != 0) {
		$(toValidate).closest('.FormRow').addClass('valid');
		$(toValidate).closest('.FormRow').removeClass('error');
	}
	else {
		$(toValidate).closest('.FormRow').addClass('error');
		$(toValidate).closest('.FormRow').removeClass('valid');
		isValid = false;
	}
}

function ValidateConditions() {
	if ($(".conditions input").attr('checked')) {
		$('.conditions .errorMessage').addClass('hidden');
	}
	else {
		isValid = false;
		$('.conditions .errorMessage').removeClass('hidden');
	}
	$(".conditions input").change(function () {
		$('.conditions .errorMessage').addClass('hidden');
	});
}
