(function($) {
	
	$.fn.newsletter = function() {
		
		return this.each(function() {
			
			var $this = $(this);
			var $form = $this.find('form');
			
			var validating = false;
			var validate = function() {
				
				var email = '';
				
				var valid = true;
				
				$form.find('.required-true').each(function() {
					
					var $i = $(this);

					var val = '';
					if (this.tagName.toLowerCase()=='select') {
						val = $i.children(':selected').text();
					}
					else {
						val = $i.val();
					}
					
					var error = false;
					
					if ($i.hasClass('email')) {
						email = val;
						error = error || !/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email);
					}
					else if ($i.hasClass('email-confirm')) {
						error = error || (val != email);
					}
					
					error = error || ($.trim(val) == '');
					
					if (error) {
						valid = false;
						$i.parents('li').addClass('error');
					}
					else {
						$i.parents('li').removeClass('error');
					}
				});
				
				$form.find('.required-radio-true').each(function() {
					var $i = $(this);
					if ($i.find(':checked').length==0) {
						valid = false;
						$i.addClass('error');
					}
					else {
						$i.removeClass('error');
					}
				});
				
				return  valid;
				
				
			}
			
			$form.submit(function() {


				if (validate()) {
					return true;
				}
				else {
					if (!validating) {
						$form.find('input,select').change(function() {
							validate();
						});
					}
				}
				return false;
			});
			
		});
		
	}
	
})(jQuery)