window.onload = function() {
	var table = document.getElementById("150");
	if(table != null) {
		tableHandler.parseFilters(table);
		tableHandler.setupFilters();
	}
}

var tableHandler = new Object();

tableHandler.parseFilters = function(table) {
	this.table = table;
	var th_arr = table.rows[0].cells;
	this.filters = new Array();
	
	for(var i = 0; i < th_arr.length; i++) {
		if(th_arr[i].className == "1") {	
			var filter_arr = new Array();
			filter_arr.push(th_arr[i].innerText);
			tableHandler.getFilterVaules(filter_arr, table, i);
			this.filters.push(filter_arr);
		}
	}
}

tableHandler.getFilterVaules = function(filter_arr, table, index) {
	var filter_values = new Array();
	for(var i = 1; i < table.rows.length; i++) {		
		tableHandler.noDuplicate(filter_values, table.rows[i].cells[index].innerText, i)
	}
	filter_arr.push(filter_values);
}

tableHandler.noDuplicate = function(array, value, index) {
	var found = false;
	for(var i = 0; i < array.length; i++) {
		if(array[i][0] == value) {
			array[i].push(index);
			found = true;
		}
	}
	
	if(!found) {
		var values = new Array();
		values.push(value);
		values.push(index);
		array.push(values);
	}
}


tableHandler.setupFilters = function() {
	for(var i = 0; i < this.filters.length; i++) {		
		var label = document.createElement("label");
		label.innerText = this.filters[i][0];
		document.getElementById("primaryContent").appendChild(label);	
		
		var select_obj = document.createElement("select");
		select_obj.id = "sel_" + i;
		select_obj.onchange = tableHandler.filterTable;
		var option1 = document.createElement("option");
		option1.text = "Visa alla";
		option1.value = -1;
		select_obj.add(option1);
		for(var j = 0; j < this.filters[i][1].length; j++) {
			var option = document.createElement("option");
			option.text = this.filters[i][1][j][0];
			option.value = j;
			select_obj.add(option);					
		}
		document.getElementById("primaryContent").appendChild(select_obj);	
	}
}

tableHandler.filterTable = function() {
	for(var i = 1; i < tableHandler.table.rows.length; i++) {
		tableHandler.table.rows[i].style.display = "";
	}	
	for(var i = 0; i < tableHandler.filters.length; i++) {
		var oSelect = document.getElementById("sel_" + i);	
		var j = oSelect.options[oSelect.selectedIndex].value;
		if(j >= 0) {
			var inversedArray = tableHandler.getInversedFilter(tableHandler.filters[i][1][j]);
			
			for(var k = 1; k < inversedArray.length; k++) {
				//alert(tableHandler.table);
				tableHandler.table.rows[inversedArray[k]].style.display = "none";
			}
		}
	}
}

tableHandler.getInversedFilter = function(array) {
	var ret = Array();
	for(var i = 0; i < this.table.rows.length; i++) {
		if(!tableHandler.existsInArray(array, i)) ret.push(i);
	}
	
	return ret;
}

tableHandler.existsInArray = function(array, value) {
	for(var i = 1; i < array.length; i++) {
		if(array[i] == value) return true;
	}
	return false;
}