$(document).ready(function(){
	initValidation();
});

function initValidation(){
	var _errorClass = 'incorrect';
	var _regEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var _regEmails = /^([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})+([, ]+[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})*$/;
	var _regPhone = /^[0-9\-\ \()]+$/;
	var _regNum = /^[0-9]+$/;
	var _regDay = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1-2]{1}[0-9]{1})|([3]{1}[0-1]{1}))$/;
	var _regMon = /^(([0]{1}[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1}))$/;
	var _regYear = /^[19]{2}[0-9]{2}$/;
	
	$('form.form-login').each(function(){
		var _form = $(this);
		var _inputs_wrapper= $(this).find('.inputs-wrapper');
		_inputs_wrapper.css('opacity' , 0);
		_inputs_wrapper.css('visibility' , 'hidden');
		var submit_login = $(this).find('.btn-login');
		_flag2 = 0;
		function checkFields() {
			var _hold = $('.form-login');
			var _error = $('.box-error');
			_error.css('opacity' , '0');
			var _flag = false;
			_form.find('.'+_errorClass).removeClass(_errorClass);

			// fields validation
			_form.find('input.required-email').each(function(){
				if(!_regEmail.test($(this).val())) addError($(this));
			});
			_form.find('input.required-day').each(function(){
				if(!_regDay.test($(this).val())) addError($(this));
			});
			_form.find('input.required-mon').each(function(){
				if(!_regMon.test($(this).val())) addError($(this));
			});
			_form.find('input.required-year').each(function(){
				if(!_regYear.test($(this).val())) addError($(this));
			});
			_form.find('textarea.required-many-emails').each(function(){
				if(!_regEmails.test($(this).val())) addError($(this));
			});
			_form.find('input.required-phone').each(function(){
				if(!_regPhone.test($(this).val())) addError($(this));
			});
			_form.find('input.required-num').each(function(){
				if(!_regNum.test($(this).val())) addError($(this));
			});
			_form.find('input.required, textarea.required').each(function(){
				if(!$(this).val().length || $(this).val() == $(this).attr('alt')) addError($(this));
			});
			_form.find('input.required-chek').each(function(){
				if (!$(this).is(':checked')) {
					$(this).parent('span').addClass('error-chk');
					_flag=true;
				}
			});
			_form.find('div.required-radio').each(function(){
				var _test = false;
				$(this).find('input[type=radio]').each(function(){
					if ($(this).is(':checked')) _test = true;
				});
				if (!_test) {
					_flag=true;
				}
			});

			// error class adding
			function addError(_obj) {
				_error.css('visibility' , 'visible');
				_error.css('opacity' , '0');
				_error.each(function(){
					$(this).animate({
						opacity: 1
					}, {duration: 600, queue: false, complete: function(){
						$(this).css('opacity','auto');
					}});
				});
				_flag=true;
			}
			return _flag;
		}

		// catch form submit event
		_form.submit(function(){
			if(_flag2 == 0){
				_inputs_wrapper.css('visibility' , 'visible')
				_inputs_wrapper.animate({
					opacity: 1
				}, {duration: 600, queue: false, complete: function(){
					_inputs_wrapper.css('opacity' , 1)
				}});
				_flag2=1;
				return false;
			}
			if(checkFields()) {
				return false;
			}
		});
	});
}