window.addEventListener("load",function(){
	var table	= document.getElementById("filtered-table");
	var filterData = [
		{width:10,type:false},
		{width:150,type:"text",placeholder:"Panel name"},
		{width:150,type:"text",placeholder:"Panel link"},
		{width:80,type:"select",options:[" ","AUTO","SHORT"]},
		{width:370,type:"text",placeholder:"Test name"},
		{width:130,type:"text",placeholder:"Deadline"},
		{width:200,type:false},
		{width:90,type:false},
		{width:90,type:false},
		{width:80,type:"select",options:[" ","Active","Archived"]},
		{width:50,type:false}
	];
	table.tHead.insertBefore(filters(table,filterData),table.tHead.children[0]);
});
var filters = function(table,fdata){
	var filts  = new Array();
	var filter = function(data,col){
		var rows = table.tBodies[0].children;
		zaSvaki(rows,function(row){
			var visible = true;
			for(var i = 0; i < filts.length; i++){
				if(filts[i] != "")
					if(!containsString(row.children[i].innerHTML,filts[i]))
						visible = false;
			};
			row.style.display = visible ? "table-row" : "none";
		},false);
	};
	var filterRow = document.createElement("tr");
		filterRow.id = "filterRow";
	zaSvaki(fdata,function(item,index){
			filts[index] = "";
		var td = document.createElement("td");
			td.width = item.width;
		switch(item.type){
			case false:
				td.innerHTML = "<strong>&nbsp;</strong>";
			break;
			case "text":
				var input	= document.createElement("input");
					input.addEventListener("input",function(){
						filts[index] = this.value;
						filter(this.value,index);
					});
					input.type			= item.type;
					input.placeholder	= item.placeholder;
					input.className		= "filter-item";
				td.appendChild(input);
			break;
			case "select":
				var dropdown = document.createElement("select");
					dropdown.addEventListener("change",function(){
						filts[index] = this.options[this.selectedIndex].text;
						filter(this.options[this.selectedIndex].text,index);
					});
				zaSvaki(item.options,function(opt){
					var optItem = document.createElement("option");
						optItem.text = opt;
					dropdown.appendChild(optItem);
				},false);
				td.appendChild(dropdown);
			break;
		};
		filterRow.appendChild(td);
	},false);
	
	return filterRow;
};

var zaSvaki = function(niz,operacija,after){
	if(!(niz instanceof Array) && !(niz instanceof HTMLCollection)) return false;
	var i = 0; var i_max = niz.length;
	while(i < i_max && niz[i]){operacija(niz[i],i,i_max); i++;};
	if(after instanceof Function)after();
	return true;
};
var containsString = function(orgString,partString){
	orgString = orgString.toLowerCase();
	partString = partString.toLowerCase();
	if (orgString.indexOf(partString) > -1)
		return true;
	return false;
};