IncrementalSearch.prototype.matchFilter = function(event)
{
	if(window.event) event = window.event;
	if (!this.IncrementalSearch) return false;
	
	var search = this.IncrementalSearch;
	var filterValue;
	filterValue = this.value.replace(this.IncrementalSearch.defaultSearch, '').toLowerCase();	
	oldMatchFilter( filterValue );
	oldMatchFilter( filterValue.replaceAll('е','e') ); //ru 2 en
	
	
	function oldMatchFilter (value)
	{
		var filterValue = value;
		filterValue = filterValue.replace (/\s+$/g, "");
		filterValue = filterValue.replace (/^\s+/g, "");
		filterValue = filterValue.replace (/\s+/g, " ");
		
		if (filterValue != '') {
			var words = filterValue.toLowerCase().split (' ');
			var selectedRows = new Array();
			
			for (var c = 0; c != words.length; c++) {
				if (words[c] == '') continue;
	
				var key = words[c].substr (0, KEY_LENGTH);
				if (search.WordIndex[key]) {
					var selected = search.WordIndex[key];
					
					for (var s = 0; s != selected.length; s++)
						selectedRows[selected[s]] = true;
				}
			}
	
			if (filterValue.length <= KEY_LENGTH) {
				for (var r = 0; r != search.RowsList.length; r++)
					if (search.RowsList[r]) search.RowsList[r].style.display = selectedRows[r] ? '' : 'none';
			}
			else
			{
				for (var r = 0; r != search.RowsList.length; r++)
					if (search.RowsList[r]) search.RowsList[r].style.display = selectedRows[r] && search.SearchList[r].indexOf (filterValue) != -1 ? '' : 'none';
			}
		}
		else
		{
			for (var r = 0; r != search.RowsList.length; r++)
				search.RowsList[r].style.display = '';
		}
	}
}

String.prototype.replaceAll = function (from, to) {
	var str = this;
	while (str.indexOf(from) != -1) str = str.replace(from, to);
	return str.toString();
}