var validationStep = 0;
var errorsPre = "Formularz niestety <b>nie został zatwierdzony</b>, ponieważ";
var errorPost = "Prosimy o uzupełnienie braków i ponowną próbę!";

$.validator.setDefaults({
	submitHandler: function(form) { 
	
		// zerowy krok walidacji to krok bez sprawdzania czy user istnieje w bazie
		if ( validationStep == 0 ) {

			$("#username").rules("add",{ 
				remote: "/registration/check-username",
				messages: { remote: "podany login jest już używany" }
			});
			
			// zmiana tekstu na dole
			errorPost = "Prosimy o poprawienie danych i ponowną próbę!";
			
			// inkrementacja kroku walidacji
			validationStep++; 
			
			// ponowne wywołanie walidacji
			$("#registrationForm").submit(); 
			

		} else {
			
			$("#errorContainer").hide();

			// SUBMIT
			form.action = "/registration/register-process";
			form.submit();
			
		}
	}
});


$().ready(function() {
	
	var container = $("#errors");
	
	$("#registrationForm").validate({
		
		rules: {
			username: { 
				required: true, 
				alphanumeric: true,
				minlength: 6
			}, 
			email: { required: true, email: true },
			password: { required: true, minlength: 6 },
			passwordRepeater: { equalTo: "#password" },
			sex: { required: true },
			companySize: { required: true },
			acceptRegulations: { isChecked: "acceptRegulations" },
			acceptConditions: { isChecked: "acceptConditions" }
		},
		
		messages: {
			username: { 
				required: "pole \"login\" nie może być puste",
				minlength: "pole \"login\" musi mieć przynajmniej 6 znaków",
				alphanumeric: "wpisany \"login\" jest niepoprawny"
			},
			email: {
				required: "pole \"e-mail\" nie może być puste",
				email: "podany adres e-mail jest nieprawidłowy (sprawdź czy zawiera „@” i kropki)"
			},
			password: "hasło musi liczyć przynajmniej 6 znaków",
			passwordRepeater: "hasła muszą być identyczne.",
			sex: "musisz wskazać swoją płeć",
			companySize: "musisz wskazać wielkość firmy lub zamiar założenia firmy",
			acceptRegulations: "nie zaznaczyłeś pola o zapoznaniu się i akceptacji treści regulaminu",
			acceptConditions: "musisz wyrazić zgodę na przetwarzanie danych"
		},
		
		errorLabelContainer: $("ul",container),
		wrapper: 'li',
		meta: "validate",
		onkeyup: false,
		onfocusout: false,
		onclick: false,
		focusInvalid: false,
		errorFocusClass: "error2",
		
		
		showErrors: function() {

			var isValid = this.valid();
			var errorContainer = $("#errorContainer");
			if (!isValid) {
								
				$("#errorsPre").html(errorsPre);
		        $("#errorsPost").html(errorPost);
		        
		        if ( ! errorContainer.is(".error") )
		        	errorContainer.addClass("error");
		        
				this.defaultShowErrors();
				
				errorContainer.hide();
				errorContainer.fadeIn("fast");
				
				window.scroll(0,0);
			
			}
			
		}
		
	});
	
});
