/**
 * Object used to setup a tab panel
 */
var meepTabs = function(tabContainerName, defualtTab) {

	// Get some elements
	var tabContainerEle = $(tabContainerName);
	var tabContainerInnerEles = tabContainerEle.select(".pills, .tabContents");
	var tabs = tabContainerInnerEles[0];
	var tabContents = tabContainerInnerEles[1];

	// Deactivates all tabs
	var deActivateAllTabs = function() {
		tabs.childElements().each(function(tab) {
			var tabName = tab.id.sub("tab_", "");
			tab.removeClassName("active");
			$('tabContent_' + tabName).setStyle("display: none");
		});
	}

	// Activated a given tab
	var activateTab = function(tabName) {
		deActivateAllTabs();
		$('tab_' + tabName).addClassName("active");
		$('tabContent_' + tabName).setStyle("display: block");
	}

	// Bind the tab switch event to a tab
	var bindSwitchEvent = function(tab) {
		tab.observe("click", function(e){

			// Deactivate all tabs
			deActivateAllTabs();

			// Show the current tab
			e.target.parentNode.addClassName("active");
			var tabName = tab.id.sub("tab_", "");
			$('tabContent_' + tabName).setStyle("display: block");
		});
	}

	// Initialize tab object
	var initTabs = function() {

		// Hide all tabs and activate the currently selected one
		tabs.childElements().each(function(tab){

			// Get tab name to reference the content
			var tabName = tab.id.sub("tab_", "");

			// Hide all tabs by default
			$('tabContent_' + tabName).setStyle("display: none;");

			// Set the tab content to active if this tab is the currently active one
			if(tab.hasClassName('active')) {
				$('tabContent_' + tabName).setStyle("display: block");
			}
		});

		// Bind a listener to each tab, highlight the currently selected tab
		tabs.childElements().each(function(tab) {
			bindSwitchEvent(tab);
		});
	}

	// Do the following when we get a new instance
	initTabs();

	if(defualtTab) {
		activateTab(defualtTab);
	}
};
