window.onload = function() {
	// Set arguments for filter
	var filterChecks = {
		gaming : document.getElementById("gaming"),
		dining : document.getElementById("dining"),
		entertainments : document.getElementById("entertainments")
	}
	var filterElements = {
		div : "event"
	}
	// Instantiate the filter
	filter(filterChecks, filterElements);
}

function filter(aFilterChecks, aFilterElements) {
	// Put all checked boxes as check (Firefox)
	for (var element in aFilterChecks) {
		aFilterChecks[element].checked = true;
	}
	// setting up the filter to be used.
	for( var element in aFilterElements ) {
		var filterElements = document.getElementsByTagName(element);
		var filterElementClass = aFilterElements[element];
	}
	var elements = [];
	for( var i = 0; i < filterElements.length; i++ ) {
		if(filterElements[i].className.match(filterElementClass) && filterElements[i].className.match("filter")) {
			// The filter has to be at the end
			var filter = filterElements[i].className.indexOf("filter");
			filter = filterElements[i].className.substr(filter);
			filter = filter.replace("filter[", "");
			filter = filter.replace("]", "");
			filter = filter.split("_");
			filterElements[i].filter = filter;
			elements.push(filterElements[i]);
		}
	}
	
	// Setup the click events & show hide stuff	
	for (var element in aFilterChecks) {
		aFilterChecks[element].onclick = function() {
			$("#regEvents, #specialEvents").fadeOut("fast", function() {
				var checkedElements = [];
				for (var element in aFilterChecks) {
					if( aFilterChecks[element].checked ) {
						checkedElements.push(element);
					}
				}
				
				for( var i = 0; i < elements.length; i++ ) {
					var viewElement = false;
					for( var j = 0; j < checkedElements.length; j++ ) {
						if( elements[i].filter.inArray(checkedElements[j]) ) { 
							viewElement = true;
							break;
						}
					}
					if( viewElement ) { elements[i].style.display = "block" }
						else { elements[i].style.display = "none" }
				}
				$(this).fadeIn("slow");
			});
		}
	}
}

/*------------------------------*/
/* Requered functions */
Array.prototype.inArray = function(aValue) {
	var i;
		for(i = 0; i < this.length; i++) {
			if(this[i] === aValue) {
				return true;
			}
		}
	return false;
};