/**
 * funkcja w zalezności od wybranej opcji w polu select
 * w kolumnie trzeciej wypełnia odpowiednimi polami input
 * type=text komórkę tabeli fomularza w kolumnie czwartej
 * @param row  numer wiersza tabeli formularza
 * @param type rodzaj pola - jedno pole input: 1, dwa pola input: 2
 * @disabled aktywne: 0, nieaktywne: 1  
 */
function onChangeSelectGetInputText(row,type,disabled) {
	$.get(
			"ajax/getInput.php",
			{"type" : type, "row" : row, "disabled" : disabled},
			function(data) {
				$("#r"+row+"c3").html(data);
			},
			"html"
		);
};
/**
 * Funkacja w zaleśności od wybranej opcji w polu select
 * w kolumnie drugiej wypełnia
 * odpowiednimi opcjami pole select w trzeciej kolumnie
 * formularza generującego zapytanie do katalogu 
 * @param row  numer wiersza tabeli formularza
 * @param type rodzaj kryterium
 * @disabled aktywne: 0, nieaktywne: 1  
 */
function changeSelect(type,row,disabled) {
	$.get(
		"ajax/katalog/getSelectOptions.php",
		{"type" : type, "kryt" : row, "disabled" : disabled},
		function(data) {
			$("#r"+row+"c2").html(data);
		},
		"html"
	);
	switch(type) {
		case '6':
		case '7':
			// czyścimy wsczystko w przedostatniej kolumnie
			$("#r"+row+"c3").empty();
			break;
		default:
			// domyslnie pobieramy jedno pole input type=text
		   	onChangeSelectGetInputText(row,'1',disabled);
	}
};
/**
 * Aktywuje lub dezaktywuje wszystkie pola formularza w wierszu tabeli
 * którego id="#r"+numer
 * @param row  numer wiersza tabeli formularza
 * @param enable aktywacja: true, dezaktywacja: false 
 */
function enableFormsFields(row,enable) {
	if (enable) {
		$("#r"+row+" > td > :input").removeAttr('disabled');
	} else {
		$("#r"+row+" > td > :input").attr('disabled', true);
	}
};
/**
 * wywoluje funkcje enableFormsFields z opdowiednimi parametrami w zależności
 * od wyboru select
 * @param row numer wiersza tabeli formularza
 * @param max maksymalna liczba wierszy w tabeli formularza
 */
function onChangeSelectAndOr(row,max) {
	var userSelection = parseInt($("select#AndOr"+row+" option:selected").val());
	var zmiana = (userSelection != 0);
	if (userSelection==0) {
		// jeżeli zmiana na nieaktywny to dodatkowo blokujemy wszystkie następne
		// i zmieniamy ich value na 0
		for(var i=row;i<=max;i++) {
			enableFormsFields(i,zmiana);
			if (i<max) {
				var k=i+1;
				$("select#AndOr"+k).val('0');
			}
		};
	} else {
		enableFormsFields(row,zmiana);
	};
};
/**
 * wywoluje funkcje changeSelect z opdowiednimi parametrami w zależności
 * od wyboru select
 * @param row  numer wiersza tabeli formularza
 */
function onChangeSelect(row) {
   	var type = $("select#kryt"+row+" option:selected").val();
   	changeSelect(type,row,'0');
};
/**
 * Wartości początkowe
 * pierwszy wiersz aktywny, pozostałe nieaktywne
$(document).ready(function(){
	changeSelect('1','1','0');
	changeSelect('1','2','1');
	changeSelect('1','3','1');
	enableFormsFields('2',false);
	enableFormsFields('3',false);
});
 */
/**
 * Funckcja zmienia pola input type=text z dwóch na jedno (i na odwrót)
 * w zależności od wybranej wartości select. Działa tylko dla kryterium
 * numer inwentarzowy
 * @param row  numer wiersza tabeli formularza
 */
function onChangeSelectNrInwentarzowy(row) {
   	var userSelection = $("select#NrInwenarzowy"+row+" option:selected").val();
	onChangeSelectGetInputText(row,userSelection,'0');
};
/**
 * Funckcja zmienia pola input type=text z dwóch na jedno (i na odwrót)
 * w zależności od wybranej wartości select. Działa tylko kryterium
 * rok wydania
 * @param row  numer wiersza tabeli formularza
 */
function onChangeSelectRokWydania(row) {
   	var userSelection = $("select#RokWydania"+row+" option:selected").val();
	onChangeSelectGetInputText(row,userSelection,'0');
};
/**
 * Sprawdza, czy prawidłowo wypełniono dane w formularzu
 * Przy błędzie wyswietla stosowny komunikat
 * @param frm obiekt DOM formularza
 * @param max maksymalna liczba wierszy w formularzu
 */
function validate(frm,max) {
	var next = true;
	var errortext = "";
	for (var i=1;next;i++) {
		var kryt = parseInt($("select#kryt"+i+" option:selected").val());
		switch (kryt) {
			case 5:
				var RokWydania = parseInt($("select#RokWydania"+i+" option:selected").val());
				switch (RokWydania) {
				case 2:
					var a = ((frm.elements['Ekryta'+i].value!="") && (!isNaN(frm.elements['Ekryta'+i].value)));
					var b = ((frm.elements['Ekrytb'+i].value!="") && (!isNaN(frm.elements['Ekrytb'+i].value)));
					if (!(a && b))
						errortext += "\n wartości dla kryterium "+i+" muszą być liczbami";
					break;
				default:
					var a = ((frm.elements['Ekryt'+i].value!="") && (!isNaN(frm.elements['Ekryt'+i].value)));
					if(!a)
						errortext += "\n wartość dla kryterium "+i+" musi być liczbą";
				}
				break;
			case 7:
			case 6:
				break;
			case 19:
				var NrInwKryt = parseInt($("select#NrInwenarzowy"+i+" option:selected").val());
				switch (NrInwKryt) {
				case 2:
					var a = ((frm.elements['Ekryta'+i].value!="") && (!isNaN(frm.elements['Ekryta'+i].value)));
					var b = ((frm.elements['Ekrytb'+i].value!="") && (!isNaN(frm.elements['Ekrytb'+i].value)));
					if (!(a && b))
						errortext += "\n wartości dla kryterium "+i+" muszą być liczbami";
					break;
				default:
					var a = ((frm.elements['Ekryt'+i].value!="") && (!isNaN(frm.elements['Ekryt'+i].value)));
					if(!a)
						errortext += "\n wartość dla kryterium "+i+" musi być liczbą";
				}
				break;
			default:
				var str = frm.elements['Ekryt'+i].value;
				if (str.length < 3)
					errortext += "\n wartość dla kryterium "+i+" musi mieć minimum 3 znaki"; 
		}
		// czy sprawdzic nastepny?
		var k = i+1;
		if (k>max)
			next = false;
		else
			next = (parseInt($("select#AndOr"+k+" option:selected").val()) != 0);
	};
	if (errortext.length != 0) {
        alert ('Do formularza zostały wprowadzone nieprawidłowe wartości:'+errortext);
        return false;
	} else {
        return true;
	};
};
