
/**
 * Obiekt TblRowObj przechowuje dane o przetwarzanym wierszu tabeli 
 */
TblRowObj = new Object; 
TblRowObj.id = ''; 
TblRowObj.tblId = ''; 
TblRowObj.colspan = 1;
TblRowObj.opened = 0; 


/**
 * Wypełnia otwarte okno informacjami otrzymanymi z serwera
 * jeśli okienko jest otwarte, zamyka je
 */ 
TblRowObj.fill = function(httpRequest){
	addRemRow(TblRowObj.tblId, TblRowObj.id, httpRequest.responseText, TblRowObj.colspan);
}

/**
 * Wypełnia otwarte już okienko informacjami otrzymanymi z serwera
 * nie zamyka okna
 */
TblRowObj.fillAgain = function(httpRequest){
	fillRow(TblRowObj.tblId, TblRowObj.id, httpRequest.responseText); 
}

/**
 * Zamkyka okno po wykonaniu zapytania 
 */ 
TblRowObj.close = function(){
	closeRow(TblRowObj.tblId, TblRowObj.id); 
}

/**
 * Wyznacza pozycje wiersza w tabeli 
 */ 
function getRowTableOrder(idTr){
//	alert(idTr); 
	var i = 0; 
	row = document.getElementById(idTr);
	for(i = 0; i < row.parentNode.rows.length; i++){
		if(row.parentNode.rows[i].id == idTr){
			return i; 
		}
	}
}
	
/**
 * Dodaje lub usuwa wiersz, sprawdza czy inny wiersz nie został otwarty
 * @param string idTable id tabeli 
 * @param string idTr id wiersza 
 * @param string text 
 * @param integer colspan Ilosc kolumn tabeli (jakie nalezy polaczyc aby wstawic zawartosc)
 */ 
function addRemRow(idTable, idTr, text, colspan){
	var addId = 'addRow' + idTr + idTable ;
	/* Sprawdzenie czy wiersz jest juz wyswietlony */ 
	if(document.getElementById(addId) != undefined){
		/* Jesli tak - usuwamy */ 
		var order = getRowTableOrder(addId); 
		var tbl = document.getElementById(idTable); 
		tbl.deleteRow(order);
		TblRowObj.opened = 0; 
		return ; 
	} else if(TblRowObj.opened == 1){
		alert('Zamknij inne okna by wykonać to zadanie'); 
		return; 
	}
	var order = getRowTableOrder(idTr);
	var tbl = document.getElementById(idTable); 
	var row = tbl.insertRow(order + 1); 
	row.id = addId; 
	var cell = row.insertCell(-1); 
	cell.colSpan = colspan; 
	cell.innerHTML = text; 
	TblRowObj.opened = 1; 
}

/**
 * Wypełnia pierwszą kolumnę w wierszu danymi 
 * @param string idTable id tabeli 
 * @param string idTr id wiersza 
 * @param string text
 */ 
function fillRow(idTable, idTr, text){
	var order = getRowTableOrder(idTr); 
	var tbl = document.getElementById(idTable); 
	tbl.rows[order + 1].cells[0].innerHTML = text; 
}

/**
 * Usuwa wiersz z tabeli 
 * @param string idTable id tabeli 
 * @param string idTr id wiersza
 */ 
function closeRow(idTable, idTr){
	var addId = 'addRow' + idTr + idTable ;
	if(document.getElementById(addId) != undefined){
        /* Jesli tak - usuwamy */
        var order = getRowTableOrder(addId);
        var tbl = document.getElementById(idTable);
        tbl.deleteRow(order);
        TblRowObj.opened = 0;
        return ;
    } 
}

/**
 * Wywołuja zapytanie ajaxowe, dodaje wiersz pod podanym 
 * id wiersza i wpisuje tam zawartość odpowiedzi 
 * @param string url ścieżka 
 * @param string tblId id tabeli 
 * @param string trId id wiersza 
 * @param int cols liczba kolumn tabeli 
 * @param array arr dodatkowe arguemnty przesyłane w poscie 
 */ 
function addRowContent(url, tblId, trId, cols, args){
	TblRowObj.id = trId; 
	TblRowObj.tblId = tblId; 
	TblRowObj.colspan = cols; 
	makeRequestArray(url, args, TblRowObj.fill); 
}


