/**
 * Walidacja formularzy
 */


var RegisterForm = new Object();

RegisterForm.init = function(){
	var self = this;
	self.showUserAttrByType($('#uczestnik_typ').val());
	$('#uczestnik_typ').change(function(){
		self.showUserAttrByType($(this).val());
		RegisterForm.loadSchoolList($(this).val());
	});
}
RegisterForm.isPrzedmiotRequire = function(){
	var userType = $('#uczestnik_typ').val();
	if (userType == 'n') return true;
	return false; 
}
RegisterForm.isEtapRequire = function(){
	var userType = $('#uczestnik_typ').val();
	if (userType == 'n' || userType == 'u' || userType == 'd') return true;
	return false; 
}
RegisterForm.showUserAttrByType = function(userType){
	if (userType == 'n'){
		$('div.nauczyciel').show();
		$('div.etapEdukacyjny').show();
	}else{
		$('div.nauczyciel').hide();
		if (userType != 'u' && userType != 'd'){
			$('div.etapEdukacyjny').hide();
		}else{
			$('div.etapEdukacyjny').show();
		}
	}
	if (userType == 'u'){
		 $('div.adres').hide();
		 $('div.adres input').val('');
	}
	else $('div.adres').show();
}

RegisterForm.loadSchoolList = function(userType){
	$('select#cbd_instytucja_id').children(':not(:first)').remove();
	var gmina = $('select#cbd_gmina_id').val();
	if ( gmina > 0 ) lokalizacja.loadSzkoly(gmina);
}

 $(document).ready(function(){
	RegisterForm.init();
	jQuery.validator.addMethod("regex", function(value, element, params){
		if (value.match(params)) 
			return true;
		else 
			return false;
	}, jQuery.format("Error"));
	
	jQuery.validator.addMethod("checkPrzedmiot", function(value, element){
		if (RegisterForm.isPrzedmiotRequire() && value == "" ) return false;
		return true;
	}, jQuery.format("Error"));
	
	jQuery.validator.addMethod("checkEtap", function(value, element){
		if (RegisterForm.isEtapRequire() && value == "" ) return false;
		return true;
	}, jQuery.format("Error"));
	
	
	var validator = $('form#register_form').validate({
		rules: {
			uczestnik_imie: {
				required: true,
				rangelength: [3, 64]
			},
			uczestnik_nazwisko: {
				required: true,
				rangelength: [3, 64]
			},
			uczestnik_adres: {
				maxlength: 255
			},
			uczestnik_imie: {
				required: true,
				rangelength: [3, 64]
			},
			uczestnik_kod_pocztowy1: {
				
				rangelength: [2, 2],
				digits: true
			},
			uczestnik_kod_pocztowy2: {
				
				rangelength: [3, 3],
				digits: true
				
			},
			uczesnik_miejscowosc: {
				
				rangelength: [3, 64]
			},
			plec: {
				required: true,
				regex: /m|k/
			},
			cbd_wojewodztwo_id: {
				required: true,
				min: 1
			},
			cbd_powiat_id: {
				required: true,
				min: 1
			},
			cbd_gmina_id: {
				required: true,
				min: 1
			},
			cbd_instytucja_id: {
				required: true,
				min: 1
			},
			cbd_etap_edukacyjny_id: {
				checkEtap: true
			},
			cbd_przedmiot_id: {
				checkPrzedmiot: true
			},
			uczestnik_typ: {
				required: true,
				rangelength: [1, 1]
			},
			uczestnik_login: {
				required: true,
				rangelength: [3, 64],
				remote: "getContent.php?plugin=User&content=checkAJAX&field=login"
			},
			uczestnik_haslo: {
				required: function(){
					if ($('#przetwarzanie_danych').length == 0) {
						//myProfile
						if ($('#uczestnik_haslo').val() != '') 
							return true;
						return false;
					}
					return true;
				}
			},
			uczestnik_haslo2: {
				required: function(){
					if ($('#przetwarzanie_danych').length == 0) {
						//myProfile
						if ($('#uczestnik_haslo2').val() != '') 
							return true;
						return false;
					}
					return true;
				},
				equalTo: $('#uczestnik_haslo')
			},
			email: {
				required: true,
				rangelength: [3, 64],
				email: true,
				remote: "getContent.php?plugin=User&content=checkAJAX&field=email"
			},
			przetwarzanie_danych: {
				required: true
			}
		},
		messages: {
			uczestnik_imie: {
				required: "Podaj imię",
				rangelength: "Podaj imię - Wpisz min 3 znaki"
			},
			uczestnik_nazwisko: {
				required: "Podaj nazwisko",
				rangelength: "Podaj nazwisko - Wpisz min 3 znaki"
			},
			uczestnik_adres: {
				rangelength: "Podaj adres - Wpisz min 3 znaki"
			},
			uczestnik_kod_pocztowy1: {
				rangelength: "Podaj poprawny kod pocztowy",
				digits: "Podaj poprawny kod pocztowy"
			},
			uczestnik_kod_pocztowy2: {
				rangelength: "Podaj poprawny kod pocztowy",
				digits: "Podaj poprawny kod pocztowy"
			},
			uczesnik_miejscowosc: {
				rangelength: "Miejscowość - Wpisz min 3 znaki"
			},
			plec: {
				required: "Wybierz płeć",
				regex: "Wybierz płeć"
			},
			cbd_wojewodztwo_id: {
				required: "Wybierz województwo",
				min: "Wybierz województwo"
			},
			cbd_powiat_id: {
				required: "Wybierz powiat",
				min: "Wybierz powiat"
			},
			cbd_gmina_id: {
				required: "Wybierz gminę",
				min: "Wybierz gminę"
			},
			cbd_instytucja_id: {
				required: "Wybierz szkołę",
				min: "Wybierz szkołę"
			},
			cbd_etap_edukacyjny_id: {
				checkEtap: "Wybierz etap edukacyjny"
			},
			cbd_przedmiot_id: {
				checkPrzedmiot: "Wybierz główny przedmiot nauczania"
			},
			uczestnik_typ: {
				required: "Wybierz rodzaj uczestnika",
				min: "Wybierz rodzaj uczestnika"
			},
			uczestnik_login: {
				required: "Podaj login",
				rangelength: "Podaj login - Wpisz min 3 znaki",
				remote: "Użytkownik o takim loginie lub adresie e-mail jest już zarejestrowany w systemie."
			},
			uczestnik_haslo: {
				required: "Wpisz hasło"
			},
			uczestnik_haslo2: {
				required: "Wpisz hasło",
				equalTo: "Podane hasła muszą być identyczne"
			
			},
			email: {
				required: "Podaj adres e-mail",
				rangelength: "E-mail - Wpisz min 3 znaki",
				email: "Podaj poprawny adres e-mail",
				remote: "Użytkownik o takim loginie lub adresie e-mail jest już zarejestrowany w systemie."
			},
			przetwarzanie_danych: {
				required: "Musisz zaznaczyć zgodę na przetwarzanie danych osobowych."
			}
		},
		
		errorPlacement: function(error, element) {
			var przetwarzanieDanych = false;
			if (element.attr('id') != 'przetwarzanie_danych'){
					var errElement = element.parent().next().children("span");
			}else{
				 var errElement = element.next("span");
				 przetwarzanieDanych = true;
			}
			
			if(error.html() != ''){
				if (userMessage.msgs.length == 0 || $('div#userMessage').attr('class') == 'info'){
					
					userMessage.init();
					userMessage.clear();
					userMessage.hide();
					userMessage.appendError("Formularz zawiera błędy. Uzupełnij wszystkie pola zaznaczone na czerwono.");
					self.scrollTo(0, 0);
					userMessage.show();
				}
				if (przetwarzanieDanych == true) $('div.przetwarzanie_danych').addClass('error');
				errElement.attr("title", error.html() );		
				errElement.addClass("img_error");
				errElement.tooltip({
					track: true, 
					delay: 0
				});
			}else{
				errElement.removeClass("img_error");
				if (przetwarzanieDanych == true) $('div.przetwarzanie_danych').removeClass('error');
				if (validator.numberOfInvalids() == 0){
					userMessage.init();
					userMessage.clear();
					userMessage.hide();
				}
			}
		},
		success: "success"
		});

	
	$('select#cbd_wojewodztwo_id').change(function(){
		lokalizacja.loadPowiaty($(this).val());
	});
	$('select#cbd_powiat_id').change(function(){
		lokalizacja.loadGminy($(this).val());
	});
	
	$('select#cbd_gmina_id').change(function(){		
		lokalizacja.loadSzkoly($(this).val());
	});
	
	$('select#cbd_etap_edukacyjny_id').change(function(){		
		loadPrzedmiotList($(this).val());
	});
})
	

	var lokalizacja = new Object();
	lokalizacja.loadAll = function(wojewodztwo_id, powiat_id, gmina_id){
		lokalizacja.loadPowiaty(wojewodztwo_id, powiat_id);
		lokalizacja.loadGminy(powiat_id, gmina_id);
		lokalizacja.loadSzkoly(gmina_id);
		
		
	}
	
	lokalizacja.loadPowiaty = function(wojewodztwo_id, selected_powiat){
		if (wojewodztwo_id != 0){
			//pobieramy liste powiatow
			$("select#cbd_powiat_id").parent().addClass("wait");
			
			$.ajax({
				url: "getContent.php", 
				data: { plugin:'User', content: 'getPowiats', wojewodztwo_id: wojewodztwo_id}, 
				dataType: 'json',
				async: false,
				success: function(powiats) {
					var ret = '';
					for (var i=0; i< powiats.length; i++) {
						powiat = powiats[i];
						ret += '<option value="'+powiat.id+'">'+powiat.nazwa+'<'+'/option>';
					}
					$('select#cbd_powiat_id').children(':not(:first)').remove();
					$('select#cbd_gmina_id').children(':not(:first)').remove();
					$('select#cbd_powiat_id').append(ret);
					$("select#cbd_powiat_id").parent().removeClass("wait");
					
					//$('select#cbd_powiat_id').val(selected_powiat);
				} 
			} );
			}else{
				$('select#cbd_powiat_id').children(':not(:first)').remove();
				$('select#cbd_gmina_id').children(':not(:first)').remove();
			}
	}
	
	lokalizacja.loadGminy = function(powiat_id, selected_gmina){
		if (powiat_id != 0){
			//pobieramy liste powiatow
			$("select#cbd_gmina_id").parent().addClass("wait");
			
			$.ajax({
				url: "getContent.php", 
				data: { plugin:'User', content: 'getGminas', powiat_id: powiat_id}, 
				dataType: 'json',
				async: false,
				success: function(objects){
					var ret = '';
					for (var i = 0; i < objects.length; i++) {
						obj = objects[i];
						ret += '<option value="' + obj.id + '">' + obj.nazwa + '<' + '/option>';
					}
					$('select#cbd_gmina_id').children(':not(:first)').remove();
					$('select#cbd_gmina_id').append(ret);
					$("select#cbd_instytucja_id").parent().removeClass("wait");
				}
			});
			}else{
				$('select#cbd_gmina_id').children(':not(:first)').remove();
				$('select#cbd_instytucja_id').children(':not(:first)').remove();
			}	
	}
	
	
	lokalizacja.loadSzkoly = function(gmina_id){
		if ($('select#cbd_instytucja_id').attr('disabled') == 'disabled') return;
		var userType = $('#uczestnik_typ').val();
		
		if (gmina_id != 0){
			//pobieramy liste szkol
			$("select#cbd_instytucja_id").parent().addClass("wait");
			
			$.ajax({ 
				url: "getContent.php", 
				dataType: 'json',
				async: false,
				data: { plugin:'User', content: 'getSzkolas', gmina_id: gmina_id, user_type: userType}, 
				success: function(objects) {
					var ret = '';
					for (var i=0; i< objects.length; i++) {
						obj = objects[i];
						ret += '<option title="'+obj.nazwa+'" value="'+obj.id+'">'+obj.nazwa+'<'+'/option>';
					}
					$('select#cbd_instytucja_id').children(':not(:first)').remove();
					$('select#cbd_instytucja_id').append(ret);
					$("select#cbd_instytucja_id").parent().removeClass("wait");
				}
			});
			}else{
				$('select#cbd_instytucja_id').children(':not(:first)').remove();
			}
	}
	
	
	function loadPrzedmiotList(etap_id){
		if (etap_id != 0){
			$.ajax({
				url: "getContent.php", 
				data: { plugin:'User', content: 'getPrzedmiotList', etap_id: etap_id}, 
				dataType: 'json',
				async: false,
				success: function(objects){
					var ret = '';
					for (var i = 0; i < objects.length; i++) {
						obj = objects[i];
						ret += '<option value="' + obj.id + '">' + obj.nazwa + '<' + '/option>';
					}
					$('select#cbd_przedmiot_id').children(':not(:first)').remove();
					$('select#cbd_przedmiot_id').append(ret);
					$("select#cbd_przedmiot_id").parent().removeClass("wait");
				}
			});
			}else{
				$('select#cbd_przedmiot_id').children(':not(:first)').remove();
			}	
	}	