$(document).ready(function(){

	var element = "";
	/*
	* vykoná príslušné akcie definované v php ajaxURL a načíta obsah tabuľky
	*/
	getTable = function(dataForm, ajaxURL, errorPod ){
		element = errorPod;
		showWait("Načítam data...", 3);
		$.ajax({
			async: false,
			url: ajaxURL,
			contentType: "application/x-www-form-urlencoded; utf-8",
			scriptCharset: "utf-8",
			type: 'POST',
			cache: false,
			timeout: 5000,
			dataType: 'json',
			data: dataForm,
			error: function(XMLHttpRequest, textStatus, errorThrown){
				var chyba = ""
				switch (textStatus){
					case "parsererror":
						chyba = XMLHttpRequest.responseText
						break;
					default:
						chyba = XMLHttpRequest.responseText;
				}
				showError(element, chyba)
				hideWait();
			},
			success: function(jsonData, textStatus){
					var errorPod = element;
				if (jsonData.status == "OK"){
					// keď bola odstranená chyba tak ju schová
					hideError();
					// keď sa vykonala nejaká akcia, tak skusí zistiť riadok ktorý bude aktívny
					if (jsonData.akcia != "Data"){
						var row = $("table > tbody > tr.hilight");
						var id = $("td.id", row).text();
						if (jsonData.akcia == "New" && jsonData.id != "" && jsonData.id != "0"){ // keď sa vkladal nový riadok a server vrátil ID vloženého záznamu
							id = jsonData.id;		// vyplní ID záznamu
						} else if (jsonData.akcia == "Delete") { // keď sa mazal riadok
							var rIndex = row.prop("rowIndex");		// zistí číslo riadku
							var rowFirst = $("table > tbody > tr:first").prop('rowIndex');
							var rowLast = $("table > tbody > tr:last").prop('rowIndex');
							if (rIndex > rowFirst){		// a riadok nebol prvý v tabuľke
								rIndex = rIndex - 1;	// presunie sa na predchádzajúci riadok
							} else if (rIndex < rowLast){	// keď sa mazal prvý riadok a zároveň nebol jediný v tabuľke
								rIndex = rIndex + 1;	// presunie na nasledujúci riadok
							} else { // mazal sa jediný záznam v mesiaci
								rIndex = ""
								id = "";
							}
							if (rIndex != ""){ // keď sa nemazal jediný záznam
								row = $("tr:eq(" + rIndex + ")", $("table"));
								id = $("td:eq(0)", row).text();		// načíta ID záznamu
							}
						}
					}
//          if (jsonData.html == undefined || jsonData.html == ""){
//            location.reload();
//          } else {
            $("table > tbody").html(jsonData.html);
            // vyberie riadok so zadaným id
            if ( id != "" && jsonData.akcia != "Data"){
  // 						row = $("table > tbody > tr:has(td[class='id'][text='" + id + "'])");
              row = $("table tbody tr td[class='id']:contains(" + id + ")").parent()
            } else {
              row = $("table > tbody > tr:first");
            }
            // musím zavolať funkciu s udalosťami
            tableEvents();
            // keď bolo viditeľné menu, tak ho schovám
            hideEdit();
            // nastavím focus na príslušný riadok
            if (row.length > 0){
              setRowFocus(row);
            }
            hideWait();
//          }
				} else {
					showError(element, jsonData.chyba);
				}
			}
		});

	};

	/*
	* aby sa po zmene tabuľky cez AJAX zachovali udalosti, je ich treba
	* vložiť do funkcie a túto funkciu volať po každej zmene v DOM
	*/
	tableEvents = function(){
		/*
		* po dvojkliku zvýrazní vybraný riadok a zobrazí formulár na zmenu dat riadku
		*/
		$("table > tbody > tr").dblclick(function(event){
			// vypne zobrazenie kontextového menu
			event.stopPropagation();
			event.preventDefault();
			// nastaví fokus na riadok
			setRowFocus($(this));
			// načíta data do editačného formulára
			$("form").data("akcia", "Edit");
			fillEdit(false, $(this));
		});

		/*
		* po kliknutí na riadok skontroluje či nie je vybraný, keď je vybraný tak ho zvýrazní
		*/
		$("table > tbody > tr").click(function(event){
			if (!$(this).hasClass("hilight")){
				// nastaví fokus na riadok
				setRowFocus($(this));
			}
		});
	};




	/*
	* zvýrazní riadok
	*/
	setRowFocus = function(row){
		if (!$("#hlavny").hasClass("modal")){
			$("tr.hilight").removeClass("hilight");
			row.addClass("hilight");
/*			$(".tdHL").removeClass("tdHL");
			$("td:first", row).addClass("tdHL");*/
			setVisible(row);
		}
	}

	/*
	* mal by zamedziť aby event pustenia klávesy prebublával do vyšších úrovní
	* a dokonca i zastaviť prevádzanie štandartných akcií prehliadača...
	*/
	$("table").click(function(event){
		event.stopPropagation();
		if( event.isDefaultPrevented() ){
			event.preventDefault();
		}
	});

	/*
	* chcem aby sa na šipky dolu/hore menil aktívny riadok, takže
	* 1. zakážem aby z formulára stisk klávesi prebublal vyššie
	*/
	$("form").keydown(function(key){
		key.stopPropagation();
	});

	/*
	* 2. zakážem aby z buttonu mimo formulára stisk klávesi prebublal vyššie
	*/
	$("input[type='button']").keydown(function(key){
		key.stopPropagation();
	});

	/*
	* 3. zakážem aby z kotvy stisk klávesi prebublal vyššie
	*/
	$("a").keydown(function(key){
		key.stopPropagation();
	});

	/*
	* chcem aby sa na šipky dolu/hore menil aktívny riadok, takže
	* 1. zakážem aby z formulára stisk klávesi prebublal vyššie
	*/
	$("form").keyup(function(key){
		key.stopPropagation();
	});

	/*
	* 2. zakážem aby z buttonu mimo formulára stisk klávesi prebublal vyššie
	*/
	$("input[type='button']").keyup(function(key){
		key.stopPropagation();
	});

	/*
	* 3. zakážem aby z kotvy stisk klávesi prebublal vyššie
	*/
	$("a").keyup(function(key){
		key.stopPropagation();
	});

	/*
	* chcem aby sa na šipky dolu/hore menil aktívny riadok, takže
	* 1. zakážem aby z formulára stisk klávesi prebublal vyššie
	*/
	$("form").keypress(function(key){
		key.stopPropagation();
	});

	/*
	* 2. zakážem aby z buttonu mimo formulára stisk klávesi prebublal vyššie
	*/
	$("input[type='button']").keypress(function(key){
		key.stopPropagation();
	});

	/*
	* 3. zakážem aby z kotvy stisk klávesi prebublal vyššie
	*/
	$("a").keypress(function(key){
		key.stopPropagation();
	});

	/*
	* 4. na úrovni dokumentu odchytím pohyb šipkami a zmením "aktívny" riadok
	*/
	$(document).keydown(function(key){
		// Opera používa SHIFT + šipky na navigáciu po odkazoch
		if (!key.shiftKey){
			var rIndex = $("table > tbody > tr.hilight").prop("rowIndex");
			var rowFirst = $("table > tbody > tr:first").prop("rowIndex");
			var rowLast = $("table > tbody > tr:last").prop("rowIndex");
			var tabulka = $("table");
			switch (key.keyCode){
				case 38:		// Šipka hore
					if (rIndex > rowFirst){
						key.stopPropagation();
						key.preventDefault();
						var prevRow = rIndex - 1;
						row = $("tr:eq(" + prevRow + ")", tabulka);
						setRowFocus(row);
						return false;
					}
					return true;
					break;
				case 40:		// Šipka dolu
					if (rIndex < rowLast){
						key.stopPropagation();
						key.preventDefault();
						var nextRow = rIndex + 1;
						row = $("tr:eq(" + nextRow + ")", tabulka);
						setRowFocus(row);
						return false;
					}
					return true;
					break;
				default:
					return true;
			}
		}
	});


// konec jQuery
});

