var tabHoverActive = false;
var timeOutRef = null;
var lastTabIndex = currentTabIndex;

function gdn_Tab(title, url)
{
	this._title = title;
	this._url = url;
	this._subNavItems = new gdn_subNavItems();
}

gdn_Tab.prototype.addSubNav = function(label, url)
{
	this._subNavItems.add(label, url);
}

function gdn_Tabs()
{
	this._numberOfTabs = 0;
	this._selectedTabIndex = 0;
	this._tabs = new Array();
}

gdn_Tabs.prototype.add = function(tabTitle, url)
{
	this._tabs[this._numberOfTabs] = new gdn_Tab(tabTitle, url);
	this._numberOfTabs++;
	
	return this._tabs[this._numberOfTabs - 1];
}

function gdn_subNav(label, url)
{
	this._label = label;
	this._url = url;
}

function gdn_subNavItems()
{
	this._numberOfSubNavItems = 0;
	this._items = new Array();
}

gdn_subNavItems.prototype.add = function(label, url)
{
	this._items[this._numberOfSubNavItems] = new gdn_subNav(label, url);
	this._numberOfSubNavItems++;
}

gdn_Tabs.prototype.draw = function(selectedTabIndex, tabDivID, subNavDivID)
{
	var htmlOutput = '';
	
	for (var i=0 ; i<this._numberOfTabs ; i++)
	{
		var selectedSuffix = '';
		
		if (selectedTabIndex == i)
		{
			selectedSuffix = '_selected';
		}
		
		if (i == 0)
		{
			htmlOutput += '<li class="linkListFirst">';
		}
		else if (i == this._numberOfTabs - 1)
		{
			htmlOutput +=  '<li class="linkListLast">';
		}
		else
		{
			htmlOutput +=  '<li>';
		}
		
		htmlOutput +=  '<a href="' + this._tabs[i]._url + '" onmouseover="gdn_tabOn(' + i + ');" onmouseout="gdn_tabOff(' + i + ');"><span id="tab_l_' + i + '" class="gdn_tab_left' + selectedSuffix + '"><img src="/images/ui/spacer.gif" alt="spacer" /></span><span id="tab_m_' + i + '" class="gdn_tab_main' + selectedSuffix + '">' + this._tabs[i]._title + '</span><span id="tab_r_' + i + '" class="gdn_tab_right' + selectedSuffix + '"><img src="/images/ui/spacer.gif" alt="spacer" /></span></a></li>';
	}
	
	document.getElementById(tabDivID).innerHTML = htmlOutput;
	
	if (currentTabIndex)
	{
		this._tabs[selectedTabIndex]._subNavItems.draw(subNavDivID);
	}
}

gdn_subNavItems.prototype.draw = function(divID)
{
	var htmlOutput = '';
	
	if (this._numberOfSubNavItems == 0)
	{
		htmlOutput += ' ';
	}
	else
	{
		for (var i=0 ; i<this._numberOfSubNavItems ; i++)
		{
			htmlOutput += '<li><a href="' + this._items[i]._url + '">' + this._items[i]._label + '</a></li>';
		}
	}
	
	document.getElementById(divID).innerHTML = htmlOutput;
}

function gdn_drawCurrentTabSubNav()
{
	if (!tabHoverActive)
	{
		if (currentTabIndex)
		{
			gdnTabs._tabs[currentTabIndex]._subNavItems.draw('gdn_tab_subnav');
		}
		else
		{
			document.getElementById('gdn_tab_subnav').innerHTML = '';	
		}
		gdn_drawTabOff(lastTabIndex);
	}
}

function gdn_setSubNavTimeout()
{
	timeOutRef = setTimeout('gdn_drawCurrentTabSubNav()', 500);
}

function gdn_cancelSubNavTimeout()
{
	clearTimeout(timeOutRef);
}

function gdn_subNavOver()
{
	gdn_cancelSubNavTimeout();
	gdn_drawTabOn(lastTabIndex);
}

function gdn_subNavOut()
{
	gdn_setSubNavTimeout();
}

function gdn_drawTabOn(tabIndex)
{
	if (tabIndex != currentTabIndex)
	{
		document.getElementById('tab_l_' + tabIndex).className = 'gdn_tab_left_selected';
		document.getElementById('tab_m_' + tabIndex).className = 'gdn_tab_main_selected_temp';	
		document.getElementById('tab_r_' + tabIndex).className = 'gdn_tab_right_selected';
	}
}

function gdn_drawTabOff(tabIndex)
{
	if (tabIndex != currentTabIndex)
	{
		document.getElementById('tab_l_' + tabIndex).className = 'gdn_tab_left';
		document.getElementById('tab_m_' + tabIndex).className = 'gdn_tab_main';	
		document.getElementById('tab_r_' + tabIndex).className = 'gdn_tab_right';
	}
}

function gdn_tabOn(tabIndex) {
	tabHoverActive = true;
	gdn_cancelSubNavTimeout();
	if (lastTabIndex != currentTabIndex)
	{
		gdn_drawTabOff(lastTabIndex);
	}
	lastTabIndex = tabIndex;
	gdn_drawTabOn(tabIndex);
	
	gdnTabs._tabs[tabIndex]._subNavItems.draw('gdn_tab_subnav');
}

function gdn_tabOff(tabIndex) {
	tabHoverActive = false;
	gdn_setSubNavTimeout();
}

function gdn_readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

// user data object
var gdn_UserData = function(a, b, c, d) {
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
}

// extract cookie data
if (gdn_readCookie('gdn_b'))
{
	var gdn_cookieData = unescape(gdn_readCookie('gdn_b')).split('|');

	// create new user data object with data from cookie
	var gdn_currentUserData = new gdn_UserData(gdn_cookieData[1], gdn_cookieData[2], gdn_cookieData[3], gdn_cookieData[4]);
}

function gdn_displayUsernameWelcome() {
	if (gdn_currentUserData)
	{
		document.getElementById('gdn_hdr_user').innerHTML = 'Hello, <a href="https://www.gdnonline.org/profile/update_profile.php">' + gdn_currentUserData.c + '</a> | <a href="https://www.gdnonline.org/profile/logout.php">Logout</a>';
	}
}
