var errorsPre = "Błąd! W Pani/Pana danych stwierdziliśmy błędy:";
var errorPost = "Prosimy spróbować ponownie.<br />W przypadku powtarzającego się problemu prosimy  o kontakt pod adres e-mail: giif@wortalszkoleniowy.pl";
var nameCases = [" instytucji obowiązanej"," jednostki współpracującej",""];
var suffixOn = false;

$().ready(function(){
	// przeniesienie kontenera błędów do layoutu
	if( $("#errorContainer").length > 0 ) {
		$("#errorRow").html( $("#errorContainer") );
		$("#errorRow").show();
	}
	
	$("input[name='institutionCategory']").click(function(){
		suffixOn = false;
		$("#peselSuffixInfo").hide();
	});
});

function reloadValidation() {
	
	if($.browser.msie && parseInt ( $.browser.version, 10 ) < 7){
	    $("#gbWhite01").css("display","none");                     
	}

	var institutionType = parseInt($("input[name='institutionCategory']:checked").val(),10) - 1;
	var commonNameEnding = nameCases[ institutionType ]; 

	if (institutionType > 0) {
		$("#text1").css("display","none");
		$("#text2").css("display","none");
		$("#text3").css("display","none");
		$("#text4").css("display","none");
	} else {
		$("#text1").css("display","");
		$("#text2").css("display","");
		$("#text3").css("display","");
		$("#text4").css("display","");
	}

	var container = $("#errors");
	var validationStep = 0;
	
	$("#registrationFormStep2").validate({

		rules: {
			inTypes: { required: true },
			inFullName: { required: true },
			inNip: { required: true, nip: true, nip_length: true, nip_test: true },
			inRegon: {required: true, nip: true, regon_length: true, regon_test: true },
			inDistrict: { required: true, selected: 1 },
			inCity: { required: true },
			inPostCode: { required: true, postcode: true },
			inStreet: { required: true },
			firstname: { required: true },
			lastname: { required: true },
			inPosition: { required: true },
			inEmail: { required: true, email: true },
			inPesel: { required: true, digits: true, rangelength: [11,11], pesel_test: true, pesel_adult: true },
			isResponsible: { required: true },
			acceptConditions: { isChecked: "acceptConditions" },
			inPeselSuffix: { required: true, digits: true, gt: 0 }
		},
		
		messages: {
			inTypes: "musisz wskazać rodzaj "+ commonNameEnding,
			inFullName: "pole \"pełna nazwa"+ commonNameEnding +"\" nie może być puste",
			inNip: {
				required: "pole \"numer NIP"+ commonNameEnding +"\" nie może być puste",
				nip: "pole \"numer NIP"+ commonNameEnding +"\" może zawierać tylko cyfry",
				nip_length: "numer NIP musi się składać z 10 cyfr",
				nip_test: "podany numer NIP jest nieprawidłowy"
				},
			inRegon: {
				required: "pole \"numer REGON"+ commonNameEnding +"\" nie może być puste",
				nip: "pole \"numer REGON"+ commonNameEnding +"\" może zawierać tylko cyfry",
				regon_length: "numer REGON musi składać się z 9 (lub 14) cyfr",
				regon_test: "podany numer REGON jest nieprawidłowy"
				},
			inDistrict: "pole \"województwo\" nie może być puste",
			inCity: "pole \"miejscowość\" nie może być puste",
			inPostCode: {
				required: "pole \"kod pocztowy\" nie może być puste",
				postcode: "pole \"kod pocztowy\" musi być w formacie xx-xxx"
				},
			inStreet: "pole \"ulica, nr domu/lokalu\" nie może być puste",
			firstname: "pole \"imię\" nie może być puste",
			lastname: "pole \"nazwisko\" nie może być puste",
			inPosition: "pole \"zajmowane stanowisko\" nie może być puste",
			inEmail: {
				required: "pole \"adres e-mailowy\" nie może być puste",
				email: "podany adres e-mail jest nieprawidłowy (sprawdź czy zawiera „@” i kropki)"
			},
			inPesel: { 
				required: "pole \"PESEL\" nie może być puste",
				digits: "pole \"PESEL\" może zawierać tylko cyfry",
				rangelength: "PESEL powinien się składać z 11 cyfr",
				pesel_test: "podany PESEL jest nieprawidłowy",
				pesel_adult: "musisz być pełnoletni"
			},
			isResponsible: "pole \"czy jest Pan/Pani osobą odpowiedzialną za dopełnienie obowiązków określonych w ustawie\" nie może być puste",
			acceptConditions: "musisz wyrazić zgodę na przetwarzanie danych",
			inPeselSuffix: { 
				required: "sufiks pola \"PESEL\" nie może być pusty",
				digits: "sufiks pola \"PESEL\" może zawierać tylko cyfry",
				gt: "sufiks pola \"PESEL\" może składać się tylko z cyfr i być większy od zera"
			}
		},
		
		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);
				
				setWhiteBgPosition();
			
			}
			
		},
		submitHandler: function(form) { 
	
			$("#errorContainer").hide();
			var currentPesel = $("#inPesel").val();
			if ( $("#inPeselSuffix").length > 0 )
				currentPesel +=  $("#inPeselSuffix").val();
			$("#inPeselLoading").fadeIn();
			$.getJSON(
					"https://" + window.location.hostname + "/registration/check-username?jsonpcallback=?",
					{
						'inPesel': currentPesel
					},
					function( isOk ){
						$("#inPeselLoading").fadeOut();
						if ( isOk == false ) { // wrong!
							// czyszczenie podświetlenia errorów
							$("#registrationFormStep2").find("input.error2").each(function(){
								$(this).removeClass("error2");
							});
							
							if ( suffixOn == false ) {
								$("span",$("#peselSuffixInfo")).html(currentPesel+"&nbsp;");
								$("#peselSuffixInfo").show();
								$("#inPesel").after(' <input type="text" id="inPeselSuffix" name="inPeselSuffix" maxlength="2" style="width: 2em;" class="aparptf error2" onchange="if(this.value>0 && this.value<10 && this.value.length == 1){this.value = \'0\'+this.value;}" />');
								$("#inPesel").change(function(){
									$("#peselSuffixInfo").hide();
									$("#inPeselSuffix").remove();
									suffixOn = false;
									setWhiteBgPosition();
								});
								
								suffixOn = true;
							} else {
								$("#inPeselSuffix").addClass("error2");
							}
							window.scroll(0,0);
						} else { // is OK !
							if ( $("#inPeselSuffix").val() == "" ) {
								$("#inPeselSuffix").remove();
								suffixOn = false;
							}
							$("#peselSuffixInfo").hide();
							$("#errorContainer").hide();
							
							$("#inNip").val( IsNumeric( $("#inNip").val() ) );
							$("#inRegon").val( IsNumeric( $("#inRegon").val() ) );
							if ( $("#inPeselSuffix").length > 0 )
								$("#inPesel").val( $("#inPesel").val() + $("#inPeselSuffix").val() );
							
							// SUBMIT
							$("#registrationFormStep2 #image").attr("disabled","true");
							form.action = "https://" + window.location.hostname + "/registration/register-process";
							form.submit();
						}
						setWhiteBgPosition();
						
					}
					
				);
		}
		
	});
	
	// postcode
	
	$("#inPostCode").keyup(function(){
		autocompletePostCode(this);
	});
}

//autouzupełnianie kodu pocztowego
var autocompletePostCode = function(numObj) {
	nfv = numObj.value;
	sign = nfv.substring(nfv.length - 1, nfv.length);
	if (isNaN(sign)) {
		numObj.value = nfv.substring(0, nfv.length - 1);
		numObj.focus();
	} else {
		if (nfv.length == 2) {
			numObj.value = nfv + '-';
			numObj.focus();
		}
		if (nfv.length >= 3 && nfv.length <= 5) {
			if (nfv.indexOf('-') == -1) {
				numObj.value = nfv.substring(0, 2) + '-'
						+ nfv.substring(2, nfv.length);
				numObj.focus();
			}
		}
		if (nfv.length >= 6) {
			if (nfv.indexOf('-') == -1) {
				numObj.value = nfv.substring(0, 2) + '-' + nfv.substring(2, 5);
				numObj.focus();
			} else {
				numObj.value = nfv.substring(0, 6);
				numObj.focus();
			}

		}
	}
}
