Lib.Utils.EventUtils.addEvent(window, 'load', function() { new NewsReleases() });

NewsReleases = function() {
	var contentElement = document.getElementById('content');
	this._attachTabEvents(contentElement);
}

NewsReleases.prototype._attachTabEvents = function(contentElement) {
	var tabs = cssQuery('.tab', contentElement);
	for (var i = 0; i < tabs.length; i++) {
		Lib.Utils.EventUtils.addEvent(tabs[i], 'click', this._changeTab(tabs[i], contentElement));
		Lib.Utils.EventUtils.addEvent(tabs[i], 'mouseover', this._addHoverClass(tabs[i]));
		Lib.Utils.EventUtils.addEvent(tabs[i], 'mouseout', this._removeHoverClass(tabs[i]));
	}
}

NewsReleases.prototype._changeTab = function(newTab, contentElement) {
	var self = this;
	return function() {
		var currentTab = cssQuery('.currentTab', contentElement)[0];
		Lib.Utils.DocumentUtils.removeClass(currentTab, 'currentTab');
		Lib.Utils.DocumentUtils.addClass(newTab.parentNode, 'currentTab');
		self._showAllNews(contentElement);
		var category = newTab.id.substring(0, newTab.id.indexOf('Tab'));
		self._hideNewsInOtherCategories(category, contentElement);
		self._hideEmptyMonths(contentElement);
	}
}

NewsReleases.prototype._showAllNews = function(contentElement) {
	var monthWrappers = cssQuery('.monthWrapper', contentElement);
	for (var i = 0; i < monthWrappers.length; i++) {
		Lib.Utils.DocumentUtils.removeClass(monthWrappers[i], 'newsHide');
	}
	var news = cssQuery('.newsYear', contentElement);
	for (var i = 0; i < news.length; i++) {
		Lib.Utils.DocumentUtils.removeClass(news[i], 'newsHide');
	}
}

NewsReleases.prototype._hideNewsInOtherCategories = function(category, contentElement) {
	if (category != 'all') {
		var news = cssQuery('.newsYear', contentElement);
		for (var i = 0; i < news.length; i++) {
			if (!Lib.Utils.DocumentUtils.containsClass(news[i], category)) {
				Lib.Utils.DocumentUtils.addClass(news[i], 'newsHide');
			}
		}
	}
}

NewsReleases.prototype._hideEmptyMonths = function(contentElement) {
	var monthWrappers = cssQuery('.monthWrapper', contentElement);
	for (var i = 0; i < monthWrappers.length; i++) {
		var news = cssQuery('.newsYear', monthWrappers[i]);
		var hideMonth = true;
		for (var j = 0; j < news.length; j++) {
			if (!Lib.Utils.DocumentUtils.containsClass(news[j], 'newsHide')) {
				hideMonth = false;
			}
		}
		if (hideMonth) {
			Lib.Utils.DocumentUtils.addClass(monthWrappers[i], 'newsHide');
		}
	}
}

NewsReleases.prototype._addHoverClass = function(tab) {
	return function() {
		Lib.Utils.DocumentUtils.addClass(tab, 'hover');
	}
}

NewsReleases.prototype._removeHoverClass = function(tab) {
	return function() {
		Lib.Utils.DocumentUtils.removeClass(tab, 'hover');
	}
}