$(function(){
	$("div.tab_switchers").not(".switcher_activated").each(function(){
		new SportpostTabs(this);
	}).addClass("switcher_activated");
});

SportpostTabs = function(elem){
	var tabs = this;
	
	tabs.busy = false;
	tabs.switcher = $(elem);
	tabs.ajax = tabs.switcher.hasClass("ajax");
	
	if (tabs.ajax) {
		tabs.blockId = tabs.switcher.attr("block_id");
		tabs.block = $("#" + tabs.blockId);
	} else {
		tabs.parent = tabs.switcher.parent();
		tabs.panels = tabs.parent.find('div.undertabs[tabgroup="' + tabs.switcher.attr("tabgroup") + '"]');
	}

	tabs.links = tabs.switcher.find("div.tab").click(function(){
		tabs.switchToTab($(this));
	}).addClass("clickable");
}

SportpostTabs.prototype.switchToTab = function(link){
	var tabs = this;

	if (!link.hasClass("active") && !tabs.busy){
		if (!tabs.ajax) {
			var activePanel = tabs.panels.filter('[tabname="' + link.attr("tabname") + '"]');
			tabs.panels.not(activePanel).addClass("hidden");
			activePanel.removeClass("hidden");
		} else {
			var prevLink = tabs.links.filter(".active");
			tabs.block.attr("update_url", link.attr("update_url"));

			tabs.busy = true;			
			window.sportpostApplication.updater.load({
				blockId: tabs.blockId,
				error: function(){
					tabs.activateLink(prevLink);
					tabs.busy = false;
				},
				success: function(){
					tabs.busy = false;
				}
			});
		}
		tabs.activateLink(link);
	}
}

SportpostTabs.prototype.activateLink = function(link){
	var tabs = this;

	tabs.links.not(link).removeClass("active");
	link.addClass("active");
}

