// ==UserScript==
// @name         FISO Forum Hide Topics
// @include      *fiso.co.uk/forum/search.php*
// @description  Hides a forum's topics from search results
// @exclude
// ==/UserScript==

(function() {
	// Get stored hidden forums from cookie
	var forums = [];
	var cookieName = "phpForumHide";
	for (var i = 0; i < document.cookie.split('; ').length; i++) {
		var oneCookie = document.cookie.split('; ')[i].split('=');
		if (oneCookie[0] == cookieName) {
			forums = oneCookie[1].split(', ');
			break;
		}
	}

	// Find all the forumnames in the page
	var results = document.evaluate("//a[@class='topictitle']", document, null, XPathResult.ANY_TYPE, null);
	var resultNodes = [];
	var aResult;
	while (aResult = results.iterateNext())
		resultNodes.push(aResult);

	// Loop through every forum post on the page
	for (var i in resultNodes) {
		var containingRow = resultNodes[i].parentNode.parentNode;
		// Format whitespace
		var ln = resultNodes[i].parentNode.lastChild;
		while (ln.nodeType != 1) ln = ln.previousSibling;
		if (ln.firstChild.nodeValue != "in ") {
			continue;
		}
		ln = ln.lastChild;
		while (ln.nodeType != 1) ln = ln.previousSibling;
		var fhref = ln.getAttribute('href');
		var fhtml = fhref.indexOf('.html');
		var fequal = fhref.lastIndexOf('f',fhtml)+1;
		var forum = fhref.substring(fequal,fhtml);

		// Flag whether the forum is in our hide list
		var notFound = true;
		for (var j = 0; j < forums.length; j++) {
			if (forums[j] == forum) {
				notFound = false;
			}
		}

		// If this forum isn't in our hide list, skip to the next forum
		if (notFound)
			continue;
			
		containingRow.style.display = 'none';

	}

})();