var style_sheet;
var css_styles = new Array();
var filters = new Array();
var css_types = new Array();
var cat_count = [12, 4, 32, 9, 8, 32, 32];
var cat_type = [1, 0, 1, 1, 1, 0, 0];

function getCssClass(css_type, index) {
	if(!css_styles[css_type]) {
		css_styles[css_type] = new Array();
		css_styles[css_type][0] = "";
	}

	var css_class_name = ".c" + css_type + "_" + index;
	var res = css_styles[css_type][css_class_name];
	if (!res) {
		var theRules = get_css_file();
		var r;
		if (theRules.cssRules) {
			r = theRules.cssRules;
		} else {
			// IE
			r = theRules.rules;
		}	
		for (var i=0; i<r.length; i++) {
			if (css_class_name == r[i].selectorText) {
				css_styles[css_type][css_class_name] = r[i];
				return r[i];
			}
		}
	}
	return res;
}
function create_css_styles() {
	for (var i=0; i<css_styles_to_create.length; i++) {
		for (var j=0; j<css_styles_to_create[i].length; j++) {
			create_css_style(".c" + i + "_" + css_styles_to_create[i][j]);
		}
	}
}
function create_css_style(css_class_name) {
	var theRules = get_css_file();
	var r;
	if (theRules.cssRules) {
		theRules.insertRule(css_class_name + "{display:block;}", 0);
	} else {
		// IE
		theRules.addRule(css_class_name, "{display:block;}", 0);
	}	
}

function load_css_class(res_array, to_find) {
	var theRules = get_css_file();
	var i;
	//for IE use theRules.rules[] instead of theRules.cssRules[]    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	var r = ((theRules.cssRules) ? theRules.cssRules : theRules.rules);
	for (i=0; i<r.length; i++) {
		res_array[r[i].selectorText] = r[i];
	}
}

function get_css_file() {
	if (style_sheet) {
		return style_sheet;
	}
	if (!document.styleSheets) { 
		return;
	}
	var sts = document.styleSheets;
	var i;
	for (i=0; i<sts.length; i++) {
		if (sts.item(i).href.indexOf("sr_project_plugin_bits.css") >= 0) {
			style_sheet = sts.item(i);
			return style_sheet;
		}						
	}					
}

function changeCat(elem, css_type) {
	filters[css_type] = elem;
	css_types[css_type] = css_type;
	var sel = document.getElementById(elem);
	var index = sel.selectedIndex;
	var cat = sel[index].value;				    
	// alert("changeCat: " + index + " cat=" + cat);";
	var m = ((cat_type[css_type] == 1) ? Math.pow(2, (cat-1)) : 0);
	for (var j=0; j<css_styles_to_create[css_type].length; j++) {
		var n = css_styles_to_create[css_type][j];
		var match = ((cat_type[css_type] == 1) ? ((m & n) == m) : (cat == n));
		var disp = ((index == 0 | match) ? "block" : "none");
		var xxx = getCssClass(css_type, n);
		if (xxx) {
			xxx.style.display = disp;
		}
	}
}

function reset_filter() {
	for (var i in filters) {
		var sel = document.getElementById(filters[i]);
		//alert("reset filter [" + filters[i] + "] called, " + sel);
		if (sel) {
			sel[0].selected = true;
		}
	}
	for (var c in css_types) {
		changeCat(filters[c], c);
	}
}

