
function TabSet(uniqueId, bindingName) {
	this._uniqueId = uniqueId;
	this._bindingName = bindingName;
	if (!this.element()) {
		console.log("No tabbed box found with id "+uniqueId);
	}
	this.element().controller = this;
}

TabSet.prototype = {
	
	initialize: function() {
		// ?? do we need this?
		ComponentRegistry.registerComponenWithName(this.bindingName());
	},

	// ---- instance methods ----	
	
	element: function() {
		return jQuery('#'+this._uniqueId);
	},
	
	tabList: function() {
		return jQuery('#'+this._uniqueId+"-tabList");
	},

	// user API
	registerTab: function(contentDivId, tabName, onClickFunction, shouldRunFunctionOnceOnly) {
		if (! jQuery('#'+contentDivId)) {
			console.log("No content div found with id "+contentDivId);
		}

		var tab = jQuery("<li></li>");
		tab.attr('id',contentDivId+'-tab').attr('style', 'cursor:pointer;cursor:hand');
		var a = jQuery("<a></a>");
		a.text(tabName);
		a.appendTo(tab);
		if (onClickFunction) {
			a.once('click', onClickFunction);
		}
		var contentDiv = jQuery('#'+contentDivId);
		tab[0].contentDiv = contentDiv[0];
		this.tabList().append(tab);
		var controller = this;
		tab.click(function() { controller._switchVisibleTabTo(tab[0]) });
	},

	showTab: function(contentDivId) {	
		var tab = jQuery('#'+contentDivId+"-tab");
		this._switchVisibleTabTo(tab[0]);
	},

	_switchVisibleTabTo: function(newTab) {
		this.tabList().children('li').removeClass('current').each(function() {
			jQuery(this.contentDiv).hide()
		})
		jQuery(newTab).addClass('current');
		jQuery(newTab.contentDiv).show();
	}

};

