var CmyTab = Class.create({
	tid : null,
	/*
	 * @param	p	- parent Object 
	 */
	findDSRC : function(p){
		var action = '';
		if(p.tagName.toLowerCase() == 'table'){
			if(p && p.summary){
				action = p.summary;
			}
		}else if(p.tagName.toLowerCase() == 'div'){
			p.childElements().each(function(ds){
				if(ds.className.indexOf('dataSource') > -1){
					//brutalne ale co zrobic ;]
					action = ds.innerHTML;
				}
			});
		}else{
			alert('Nie rozpoznawalny typ obiektu');
		}
		return action;
	},
	clear : function(tid,with_pager){
		if($(tid) && $(tid).tagName.toLowerCase() == 'table'){
			d('clearing TABLE data: ' +tid);
			$(tid).childElements().each(function(tra){
				if(tra.tagName == 'TBODY'){
					tra.childElements().each(function(arg){
						if(arg.id.indexOf('pager') > -1 && with_pager){
							arg.remove();
						}
						if(arg.id.indexOf('pager') < 0 && arg.childElements()[0].tagName == 'TD'){
							arg.remove();
						}
					
					});
				}
			});
			$(tid).childElements().each(function(arg){
				if(arg.tagName == 'TR'){
					if(arg.id.indexOf('pager') > -1 && with_pager){
						arg.remove();
					}
					if(arg.id.indexOf('pager') < 0 && arg.childElements()[0].tagName == 'TD'){
						arg.remove();
					}
				}
			});
		}else if($(tid) && $(tid).tagName.toLowerCase()=='div'){
			d('clearing TABLE_DIV data:'.tid);
			$(tid).childElements().each(function(tra){
				if(tra.className.indexOf('mTableBody')>-1){
					tra.childElements().each(function(c){c.remove();});
				}
			});
		}else{
			alert('Nie moge odszukac obiektu ' + tid);
		} 
	},
	insert : function(tid,ndata){
		d('Inserting TABLE data [' + ndata.length + ' rows]');
		if($(tid).tagName.toLowerCase() == 'table'){
			var tab = $(tid).tBodies[0];
			ndata.each(function(o){
				var o = o;
				if(!Object.isUndefined(o.TR)){
					var tr = new Element('tr',o.TR.params);
				}else{
					var tr = new Element('tr',{});
				}
				if(o.className != null){
					//d('Ustawiam className dla wiersza ' + o.className);
					tr.addClassName(o.className);
				}
				o.tds.each(function(ele){
					//col
					if(!Object.isUndefined(ele.params)){
						var td = new Element('td',ele.params);
					}else{
						var td = new Element('td');
					}			
					td.update(ele.t);
					tr.insert(td);
				});
				tab.insert(tr);	 
			});
		}else if($(tid).tagName.toLowerCase() == 'div'){
			$(tid).childElements().each(function(block){
				if(block.className.indexOf('mTableBody') > -1){
					ndata.each(function(o){
						var row = new Element('div',{className: 'mTableRow'});
						var rowInside = new Element('div',{className: 'mTableRowInside'});
						rowInside.innerHTML = o.innerHTML;
						row.appendChild(rowInside);
						block.appendChild(row);
					});
				}
			});
		}
	},
	search : function(field_id){
		var f = $(field_id);
		d('filter_id: ' + f.id + ' value: ' +f.value);
		var parent = findParentByCSS(f,'dynamicTable');
		var action = myTab.findDSRC(parent); 
			
		if(!action){alert('Brak lokalizacji DataSRC');return false;}
		action = action.replace('index.php','json.php');
		var transport = new Object();
		transport._json = 'updateTable';
		transport._subact = 'filter';
		transport._filter_name = f.name;
		transport._filter_value = f.value;
		transport._layout = 'json';
		d('link to update ' + action);
		e.a(action,parent,transport);
		return false;
	},
	resetFilter : function(tid){
		var parent = findParentByCSS(tid,'dynamicTable');
		var action = myTab.findDSRC(parent); 
		if(!action){alert('Brak lokalizacji DataSRC');return false;}
		action = action.replace('index.php','json.php');
		var transport = new Object();
		transport._json = 'updateTable';
		transport._subact = 'resetfilter';
		$$('input.resetFilter').each(function(e){
			e.value = '';
		});
		$$('select.resetFilter').each(function(e){
			if(e.children[0] && e.children[0].value){
				e.value = e.children[0].value;
			}
		});
		e.a(action,parent,transport);
		
		return false;
	}
});
var myTab = new CmyTab();
function updateTableData(tid){
	tid = $(tid);
	if(!tid || !tid.summary){
		d('Brakuje adresu zrodla danych');
		return null;
	}
	if(tid.summary.indexOf('_json/updateTable')<0){
		tid.summary = tid.summary.replace(/\/$/, '')  + '/_json/updateTable';
	}
	e.a(tid.summary);
}
function table_clear_filter(tid){
	var tid = $(tid);
	if(!tid){return false;}
	
	e.a()
}
var table_search_locked = false;
