var filter_search_o = new Array();
var filter_search_i = 0;
var filter_search_name = null;

function checkboxVal(parent, name) {
	var val = '';
	parent.find('input[name=' + name + ']').each(function() {
		if (jQuery(this).attr('checked') == true) {
			val += jQuery(this).val() + ',';
		}
	});
	return val.substring(0, val.length - 1);
}

function radioVal(parent, name) {
	var val = '';
	parent.find('input[name=' + name + ']').each(function() {
		if (jQuery(this).attr('checked') == true) {
			val = jQuery(this).val();
		}
	});
	return val;
}

function checkEqual(val1, val2) {
	var v = val2.split(',');
	for (var i = 0; i < v.length; i++) {
		if (val1 == v[i]) {
			return true;
		}
	}	
	return false;
}

function cleanName(str) {
	var name = str;
	name = name.replace(/\[/gi, 'zzz');
	name = name.replace(/\]/gi, 'xxx');
	name = name.replace(/-/gi, 'ccc');
	
	return name;
}

filter_search.prototype.self = null;
filter_search.prototype.parent = null;
filter_search.prototype.option = null;
filter_search.prototype.type = null;

filter_search.prototype.hiding = function(data) {
	var name = cleanName(this.self.attr('name'));
	eval('var data = data.' + name);
	
	if (typeof(data) != 'undefined') {
		data = data.split(',');
		if ('select' == this.type) {
			var select = this.self.val();
			var html = '';
			for (var m = 0; m < this.option.length; m++) {
				var has = false;
				for (var n = 0; n < data.length; n++) {
					if (checkEqual(data[n], this.option[m].value)) {
						has = true;
						break;
					}
				}
				var sel = '';
				if (has && this.option[m].value == select) {
					sel = ' selected="selected"';
				}
				var disable = '';
				if (!has && this.option[m].value != "") {
					disable = ' disabled="disabled"';
				}
				html += '<option value="'+this.option[m].value+'"'+sel+disable+'>'+this.option[m].text+'</option>';
			}
			this.self.html(html);
			if (html == '') {
				this.self.attr('disabled', 'disabled');
			}
		} else if ('checkbox' == this.type || 'radio' == this.type) {
			this.parent.find('input[name=' + this.self.attr('name') + ']').each(function() {
				jQuery(this).removeAttr('disabled');
				var check = false;
				for (var m = 0; m < data.length; m++) {
					if (checkEqual(data[m], jQuery(this).val())) {
						check = true;
						break;
					}
				}
				if (check == false) {
					jQuery(this).attr('disabled', 'disabled');
				}
			});
		}
	}
};

function filter_search(self, parent, type) {
	this.self = self;
	this.parent = parent;
	this.type = type;
	
	var option = new Array();
	if ('select' == type) {
		var i = 0;
		self.find('option').each(function () {
			option[i++] = { value: jQuery(this).val(), text: jQuery(this).text() };
		});
	}
	this.option = option;
	
	var ref = this;
	
	this.self.change(function() {
		var data = new Object();
		
		data.name = ref.parent.attr('name');
		data.L = ref.parent.find('input[name=L]').val();
		if (typeof(data.L) == 'undefined') {
			data.L = TAT_LLL;
		}
		
		ref.parent.find('select').each(function() {
			var name = cleanName(jQuery(this).attr('name'));
			eval('data.' + name + '="' + jQuery(this).val() + '"');
		});
		ref.parent.find('input[type=checkbox]').each(function() {
			var n = cleanName(jQuery(this).attr('name'));
			eval('var check = data.' + n);
			if (typeof(check) == 'undefined') {
				eval('data.' + n + '="' + checkboxVal(ref.parent, n) + '"');
			}
		});
		ref.parent.find('input[type=radio]').each(function() {
			var n = cleanName(jQuery(this).attr('name'));
			eval('var check = data.' + n);
			if (typeof(check) == 'undefined') {
				eval('data.' + n + '="' + radioVal(ref.parent, n) + '"');
			}
		});

		filter_search_name = ref.self.attr('name');
		
		jQuery.getJSON('/fileadmin/scripts/filter_search_mod.php', data, function(data) {
			for (var i = 0; i < filter_search_i; i++) {
				var name = cleanName(filter_search_o[i].self.attr('name'));
				if (data.form == filter_search_o[i].parent.attr('name') && typeof(eval('data.' + name)) != 'undefined') {
					filter_search_o[i].hiding(data);
				}
			}
		});
	});
}

jQuery(document).ready(function() {
	//aalert(jQuery.browser.version < 8.0 && $.browser.msie);
	if (jQuery.browser.version < 8.0 && $.browser.msie) 
	{ 	
		
		  $('option[disabled]').attr('style','color:#CCCCCC;');
		  $('select').change(function() {
			
			if(this.options[this.selectedIndex].disabled) {
			  if(this.options.length == 0) {
				this.selectedIndex = -1;
			  } else {
				this.selectedIndex--;
			  }
			  $(this).trigger('change');
			}
		  });
		  $('select').each(function(it) {
			if(this.options[this.selectedIndex].disabled)
			  this.onchange();
		  });
		

	}
	var form = new Array();
	jQuery('form[name$=___]').each(function() {
		form[form.length] = filter_search_i;
		
		var parent = jQuery(this);
		parent.find('select').each(function() {
			filter_search_o[filter_search_i++] = new filter_search(jQuery(this), parent, 'select');
		});
		parent.find('input[type=checkbox]').each(function() {
			var found = false;
			for (var i = 0; i < filter_search_o.length; i++) {
				if (filter_search_o[i].name == jQuery(this).attr['name'] && filter_search_o[i].type == 'checkbox' ) {
					found == true;
					break;
				}
			}
			if (found == false) {
				filter_search_o[filter_search_i++] = new filter_search(jQuery(this), parent, 'checkbox');
			}
		});
		parent.find('input[type=radio]').each(function() {
			var found = false;
			for (var i = 0; i < filter_search_o.length; i++) {
				if (filter_search_o[i].name == jQuery(this).attr['name'] && filter_search_o[i].type == 'radio' ) {
					found == true;
					break;
				}
			}
			if (found == false) {
				filter_search_o[filter_search_i++] = new filter_search(jQuery(this), parent, 'radio');
			}
		});
	});
	for (var i = 0; i < form.length; i++) {
		if (typeof(filter_search_o[form[i]]) != 'undefined') {
			filter_search_o[form[i]].self.change();
		}
	}
});

