var isLoaded = false;
var lastSearchStr = '';

function search(searchStr) {
	lastSearchStr = searchStr;
	//alert(searchStr);
	var startTime = new Date().getTime();
	var count = 0;
	var searchParts = searchStr.toLowerCase().split(' ');
	var elems = document.getElementsByTagName('div');
	for (var i = 0; i < elems.length; i++) {
		var elem = elems[i];
		if (elem.className == 'g') {
			var songMetaData = getSubNodeValues(elem).toLowerCase();
			//alert('Song: ' + elem.id + '\n' + songMetaData);
			var matches = trim(searchStr) == '';
			if (!matches) {
				for (var j = 0; j < searchParts.length; j++) {
					var searchPart = trim(searchParts[j]);
					if (searchPart.length > 0 && songMetaData.indexOf(searchPart) != -1) {
						matches = true;
						break;
					}
				}
			}
			showElement(elem, matches);
			if (matches) count++;
		}
	}
	
	var finnishsectionElem = document.getElementById('finnishsection');
	if (finnishsectionElem != null) {
		showElement(finnishsectionElem, searchStr == '5ose');
	}
	if (isLoaded) {
		gs.q.value = searchStr;
		gs2.q.value = searchStr;
	}
	document.getElementById('qstrs').innerHTML = searchStr;
	document.getElementById('count').innerHTML = count;
	document.getElementById('aboutCount').innerHTML = Math.ceil(count / 10) * 10;
	document.getElementById('timeElapsed').innerHTML = (new Date().getTime() - startTime) / 1000;
	//document.getElementById('toppi').focus();
}

function getSubNodeValues(node) {
	var content = '';
	if (node != null && node.childNodes != null) {
		for (var j = 0; j < node.childNodes.length; j++) {
			if (node.childNodes[j].nodeValue != null
				&& node.childNodes[j].nodeValue.length > 0) {
				content += (node.childNodes[j].nodeValue + ' ');
			}
			content += getSubNodeValues(node.childNodes[j]);
		}
	}
	return content;
}

function showElement(elem, show) {
	elem.style.display = show ? 'block' : 'none';
}

function trim(s)
{
    var l=0; var r=s.length -1;
    while(l < s.length && s[l] == ' ')
    {     l++; }
    while(r > l && s[r] == ' ')
    {     r-=1;     }
    return s.substring(l, r+1);
} 

function getUrlVars() {
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++) {
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = unescape(hash[1]).replace('+', ' ');
	}
	//alert('z:' + vars);
	return vars;
}

function initSearchPage() {
	var vars = getUrlVars();
	if (vars['q'] != null) {
		gs.q.value = vars['q'];
	}
	search(gs.q.value);
}

function atLoaded() {
	isLoaded = true;
	gs.q.removeAttribute('readOnly');
	gs2.q.removeAttribute('readOnly');
	gs.q.value = lastSearchStr;
	gs2.q.value = lastSearchStr;
}

initSearchPage();