/**
 * Sets up tabbedList components including default effect, custom effect or one of several pre-rolled effects
 * @param {Function, String} in_effect String or Function literal for in effect
 * @param {Function, String} out_effect Function literal for out effect
 */
function initTabbedLists(effect) {
	switch(effect) {
		//default effect is fade
		default:
		case 'fade':
			effect = function(active_content, clicked_content) {
				active_content.fadeOut("fast", function() {
					active_content.removeClass("active_content");
					clicked_content.fadeIn("fast") ;
					clicked_content.addClass("active_content"); 
				});	
			}
			break;
		case 'slide':
			effect = function(active_content, clicked_content) {
				active_content.slideUp("fast", function() {
					active_content.removeClass("active_content");
					clicked_content.slideDown("fast");
					clicked_content.addClass("active_content");
				});
			}
			break;		
		case 'size':
			effect = function(active_content, clicked_content) {
				active_content.hide("fast", function() {
					active_content.removeClass("active_content");
					clicked_content.show("fast");
					clicked_content.addClass("active_content");
				});
			}
			break;
		
	}
	
	//reveal previously-hidden tabsets
	$(".tabset").show();

	$(".tabbedList .tab a").click(function(){
		//obtain ref to currently clicked tab
		var clicked_tab = $(this);
		var clicked_index = 0;

		//obtain current tabbedList instance (allows multiple tabbedLists on a page
		var tabbedList = $(this).parents(".tabbedList");
		var these_tabs = tabbedList.find(".tab a");
		
		//obtain clicked tab's index, active tab's index
		these_tabs.each(function(index, elem) {
			if($(elem).get(0) == clicked_tab.get(0))
				clicked_index = index;
		});
			
		//remove current "active_tab" class and reassign to newly-active content via tab index
		these_tabs.removeClass("active_tab");
		clicked_tab.addClass("active_tab");
		
		//obtain list of tab_content items
		var these_contents = tabbedList.find(".tab_content");
		
		//run effects on proper-indexed active and newly-active content blocks
		var active_content = tabbedList.find(".active_content");
		var clicked_content = $(these_contents[clicked_index]);

		effect(active_content, clicked_content);

		return false;
	});
}
