/*
*	Tabbed-content control
*	Viknesk, 2008-11-09
*/

var JSTab = {
	_hiddenClass: 'hidden',
	_selectedClass: 'expanded',
	_tabsControlEl: 'h3',
	_tabsContentEl: '.tab-content',
	_tabsControlClass: 'tabs-toggle',
	group: [],
	init: function (tabsDiv, tabsControlDiv, initPanel)
	{
		initPanel = (initPanel || 1) - 1;
		this._tabsControlDiv = tabsControlDiv;
		this._tabsDiv = tabsDiv;
		tabContents = $(tabsDiv + ' ' + this._tabsContentEl);
		tabControls = $(tabsDiv + ' ' + this._tabsControlEl);
		
		if (tabContents.length == 0 || tabControls.length == 0) return;
		
		// Create the controls for tab selection, in a table
		$('<table></table>')
			.addClass (this._tabsControlClass)
			.append ( $('<tr></tr>').addClass ('layout-'+tabContents.length+'-tabs') )	// add class to row to distinguish various tab layouts
			.appendTo(tabsControlDiv);
		tabsControlTR = $(tabsControlDiv + ' table tr');
		tabControls.each ( function(index) {
			tabsControlTD = $('<td></td>').appendTo(tabsControlTR);
			var selfDiv = $(this).parent();
			JSTab.group.push
			(
				$('<a href="#"> </a>')
					.append($(this).clone())
					.bind('click', function() {
						JSTab.selectTab($(this).parent(), selfDiv)
						return false;
					})
					.appendTo(tabsControlTD)
			);
			$(this).hide();
		});
		tabsControlTR.children('td').eq(initPanel).addClass(this._selectedClass);
		
		// Hide tab content, except initial
		tabContents.each ( function (index) {
			if (index != initPanel) { $(this).addClass(JSTab._hiddenClass); }
		});
	},
	selectTab: function (curTabControl, curTabContent)
	{
		$(this._tabsControlDiv + ' td').each ( function (index) {
			$(this).removeClass (JSTab._selectedClass);
		});
		curTabControl.addClass (this._selectedClass);
		
		$(this._tabsDiv + ' ' + this._tabsContentEl).each ( function (index) {
			$(this).addClass (JSTab._hiddenClass);
		});
		curTabContent.removeClass (this._hiddenClass);
		
	}
}