window.addEvent('domready', function(){
	if(searchForm = $('searchFilter')){
		
		var domSelector		= searchForm.getElement('input[id=domselector]').value;
		var searchField		= searchForm.getElement('input[type=text]');
	
		// Perform search
		searchField.addEvent('keyup', function(){
			
			filterBandsTimeout = filterBands.delay(100, window, [domSelector, searchField.value]);
		});
		
		// Cancel search delay
		searchField.addEvent('keydown', function(){
			$clear(filterBandsTimeout);
		})
		
	}
});

var filterBandsTimeout = null;
var filterBands = function(domSelector, searchQuery){
	
	var listItems 				= $$(domSelector);
	var currentParent			= null;
	var parentLists				= {};
	
	listItems.each(function(listItem){
		
		// Determine parent
		if(currentParent != listItem.getParent().getParent()){
			currentParent 	= listItem.getParent().getParent();
			parentLists[currentParent.uid] = currentParent;
		}
		
		// Match searchquery
		if(searchQuery == ''){
			listItem.removeClass('hidden');
		}else{
			if(childNode = listItem.getElement('a')){
				if(childNode.get('html').toLowerCase().contains(searchQuery.toLowerCase()) || childNode.get('title').toLowerCase().contains(searchQuery.toLowerCase())){
					listItem.removeClass('hidden');
				}else{
					listItem.addClass('hidden');
				}
			}
		}	
	});
	
	// Hide blocks with no visible children
	for(uid in parentLists){
		var totalChildren = parentLists[uid].getElement('ul').getChildren().length;
		var hiddenChildren = parentLists[uid].getElements('li.hidden').length;
		if(totalChildren == hiddenChildren){
			parentLists[uid].addClass('hidden');
		}else{
			parentLists[uid].removeClass('hidden');
		}
	}
	
}
