	
	// 09.10.2008 - JSBASE tabs widget v0.1.0 by Sebastian P. Wolbring

	JSBASE.widget.tabs = function () {
		
		//TODO: implement Ajax content loading
	
		var DEFAULT_TAB_CLASS = "jsbaseTabSwitch";
		var ACTIVE_TAB_CLASS = "tabActive";
		
		var DEFAULT_CONTENT_CLASS = "jsbaseTabContent";
		var ACTIVE_CONTENT_CLASS = "contentActive";
	
		var tabLinks = new Array();
		var noSwitchElms = $$('.jsbaseTabSwitch').length;
		
		return {
			init : function () {
				JSBASE.widget.tabs.prepareTabs();
			},
			
			prepareTabs : function () {
				var i;
				for (i=0; i < noSwitchElms; i++) {
					
					tabLinks[i] = $$('#jsbaseTabSwitch' + i + ' a')[0];
					JSBASE.DOM.addEvent(tabLinks[i], "click", JSBASE.widget.tabs.switchTab, false);
				}
			},
			
			switchTab : function (e) {
				JSBASE.DOM.prevDefault(e);
				var targ = JSBASE.DOM.getTarget(e);
				var tab = targ.parentNode;
				var clickedTabId = JSBASE.widget.tabs.getIdOfClicked(tab); 
				JSBASE.widget.tabs.manipulateClasses(clickedTabId);
			},
			
			getIdOfClicked : function (node) {
				// TODO: implement JSBASE.STRING manipulation methods and then use them for the following 
				var stringLength = node.readAttribute("id").length;
				var clickedNodeId = node.readAttribute("id").slice(stringLength - 1,stringLength); //returns the last letter of a string
				return clickedNodeId;
			},
			
			getCurrent : function () {
				if(JSBASE.PHP.activeTabId === 'undefined') {
					JSBASE.PHP.activeTabId = 0;
				}
				return JSBASE.PHP.activeTabId;
			},
			
			manipulateTabs : function (formerActiveTab, futureActiveTab) {
				formerActiveTab.writeAttribute("class", DEFAULT_TAB_CLASS);
				futureActiveTab.writeAttribute("class", DEFAULT_TAB_CLASS + " " + ACTIVE_TAB_CLASS);
			},
			
			manipulateContent : function (formerActiveContent, futureActiveContent) {
				formerActiveContent.writeAttribute("class", DEFAULT_CONTENT_CLASS);
				futureActiveContent.writeAttribute("class", DEFAULT_CONTENT_CLASS + " " + ACTIVE_CONTENT_CLASS);
			},
			
			manipulateClasses : function (clickedTabId) {
				// get former active tab (which has status active before click)
				var formerActiveId = JSBASE.widget.tabs.getCurrent()
				var formerActiveTab = $(DEFAULT_TAB_CLASS + formerActiveId);
				var formerActiveContent = $(DEFAULT_CONTENT_CLASS + formerActiveId);
				// get future active tab (which has status active after click)
				var futureActiveId = clickedTabId;
				var futureActiveTab = $(DEFAULT_TAB_CLASS + futureActiveId);
				var futureActiveContent = $(DEFAULT_CONTENT_CLASS + futureActiveId);
				// manipulate activeTabId
				JSBASE.PHP.activeTabId = clickedTabId;
				if(formerActiveId != futureActiveId) {
					// manipulate classes
					JSBASE.widget.tabs.manipulateTabs(formerActiveTab, futureActiveTab);
					JSBASE.widget.tabs.manipulateContent(formerActiveContent, futureActiveContent);
				}
			}
		}
	}();