validateAndSubmitReg = function(form_selector, ajax) {
	var errors = 0;
	var values = '';
	var radios = {};
	var groups = {};
	$(form_selector).find('input, select, textarea').each(function(){
		if($(this).hasClass('required') && $(this).attr('type')!='radio'){
			if($(this).val()==''){
				$(this).addClass('error');
				errors++;
			}else{
				$(this).removeClass('error');
			}
		}else if($(this).hasClass('required-one') && $(this).attr('type')!='radio'){
			if(!groups[$(this).attr('group')]){
				if($(this).val()==''){
					groups[$(this).attr('group')] = false;
				}else{
					groups[$(this).attr('group')] = true;
				}
			}
		}else if($(this).hasClass('email') && $(this).attr('type')!='radio'){
			var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			if(reg.test($(this).val()) == false){
				$(this).addClass('error');
				errors++;
			}else{
				$(this).removeClass('error');
			}
		}
		if($(this).val() && $(this).attr('name')){
			if($(this).attr('type')=='checkbox'){
				if($(this).is(':checked'))
				values += '&'+$(this).attr('name')+'=1';
				else
				values += '&'+$(this).attr('name')+'=0';
			}else if($(this).attr('type')=='radio' && !radios[$(this).attr('name')]){
				radios[$(this).attr('name')] = true;
				values += '&'+$(this).attr('name')+'='+$(form_selector).find("input[name='"+$(this).attr('name')+"']:checked").val();
			}else if($(this).attr('type')!='radio'){
				values += '&'+$(this).attr('name')+'='+$(this).val();
			}
		}
	});

	for (i in groups) {
		if(!groups[i]){
			$('.required-one[group='+i+']').addClass('error');
			errors++;
		}else{
			$('.required-one[group='+i+']').removeClass('error');
		}
	}
	if(errors>0){
		showMessageBox('<b>Wystąpił problem z zapisem.</b><br /><br />Proszę sprawdzić dane.', 5000);
		return false;
	}else{
		if(ajax){
			$(form_selector).unbind('submit');
			$(form_selector).submit(function() {
				$.ajax({
					url: "/ajax.php",
					type: "POST",
					data: $(this).attr('action')+""+values,
					dataType: "xml",
					beforeSend: function() {
						$(".form-loading").show();
					},
					success: function(xml) {
						var status = $(xml).find("status").text();
						if(status!='ok') {
							var errors = $(xml).find("error");
							errors.each(function(i, val) {
								var field = $(val).find("field").text();
								$(form_selector).find('[name='+field+']').addClass('error');
							});
							showMessageBox('<b>Wystąpił problem z zapisem.</b><br /><br />Proszę sprawdzić dane.', 5000);
						}else{
							$(form_selector+' .error').removeClass('error');
							showMessageBox('<b>Dane zaktualizowane</b>', 5000);
						}
					},
					complete: function() {
						$(".form-loading").hide();
					}
				});
				return false;
			});
		}
		$(form_selector).submit();
	}
};
