var gAccordion;
var gFilterTimeout;

function init() {
	var stretchers= document.getElementsByClassName('stretcher');
	var toggles = document.getElementsByClassName('display');
	gAccordion= new fx.Accordion(toggles, stretchers, {opacity: true, duration: 400});
}

function filter() {
	var stretchers= document.getElementsByClassName('stretcher');
	var toggles = document.getElementsByClassName('display');
	var headers = document.getElementsByClassName('header');

	var query = document.getElementById('query').value;
	query = query.split(/\s+/);

	gAccordion.hideAll();

	for (var x = 0; x < toggles.length; ++x) {
	var hide = false;

	for (var y = 0; y < query.length; ++y) {
		if (toggles[x].innerHTML.toLowerCase().indexOf(query[y].toLowerCase()) == -1
			&& stretchers[x].innerHTML.toLowerCase().indexOf(query[y].toLowerCase()) == -1) {
		hide = true;
		break;
		}
	}

	if (hide && query.length) {
		toggles[x].style.display = 'none';
		stretchers[x].style.display = 'none';
	} else {
		toggles[x].style.display = 'block';
		stretchers[x].style.display = 'block';
	}
	}

	for (var x = 0; x < headers.length; ++x) {
	var display= 'none';
	var currentSibling = headers[x].nextSibling;

	while (currentSibling) {
		if (currentSibling.className && currentSibling.className == 'header') {
		break;
		}

		if (currentSibling.className && currentSibling.className == 'display' && currentSibling.style.display == 'block') {
		display = 'block';
		break;
		}

		currentSibling = currentSibling.nextSibling;
	}

	headers[x].style.display = display;
	}

	var noAnswers = 'block';
	for (var x = 0; x < headers.length; ++x) {
	if (headers[x].style.display == 'block') {
		noAnswers = 'none';
		break;
	}
	}

	document.getElementById('noAnswers').style.display = noAnswers;
}

function filterTimer() {
	if (gFilterTimeout) {
	clearTimeout(gFilterTimeout);
	gFilterTimeout = null;
	}

	gFilterTimeout = setTimeout(filter, 500);
}