// Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
// Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).

function obj(sName)
{
	return document.getElementById(sName);
}

var g_oTabWindow = document.getElementById('tabWindow');
var g_oTabs = document.getElementById('tabs');
var g_sDirection = "";
var oInterval = null;
var g_bEndScroll = false;
var g_iIncrument = null;
var g_iDefualtIncrument = 5;
var g_scrollDisabled = false;
				
function tabControlMouseOver(obj)
{
	if (obj.className != 'tabScrollButtonDisabled')
		obj.className = 'tabScrollButtonOver';
}
function tabControlMouseOut(obj)
{	
	if (obj.className != 'tabScrollButtonDisabled')
		obj.className = 'tabScrollButton';
}

function tabControlDisable()
{	
	obj('tabControlRight').src =  g_sImageRoot + "action_scroll_right_disabled.gif";
	obj('tabControlRightContainer').className = 'tabScrollButtonDisabled';
	obj('tabControlLeft').src =  g_sImageRoot + "action_scroll_left_disabled.gif";
	obj('tabControlLeftContainer').className = 'tabScrollButtonDisabled';				
	g_scrollDisabled = true;
}

function tabControlEnable()
{
	obj('tabControlRight').src =  g_sImageRoot + "action_scroll_right.gif";
	obj('tabControlRightContainer').className = 'tabScrollButton';
	obj('tabControlLeft').src =  g_sImageRoot + "action_scroll_left.gif";
	obj('tabControlLeftContainer').className = 'tabScrollButton';	
	g_scrollDisabled = false;			
}

function tabControlDBLClick(sDirection, evt)
{	
	e = (evt) ? evt : (event) ? event : null ;
	if (g_scrollDisabled)
		return;
		
	window.clearInterval(oInterval);
	oInterval = "";	
	var inc = (e.shiftKey) ? (g_iDefualtIncrument * 2) : g_iDefualtIncrument;
	scrollTab(sDirection, inc, e.ctrlKey);			
}
			
function tabControlPress(sDirection, evt)
{	
	e = (evt) ? evt : (event) ? event : null ;
	if (g_scrollDisabled || e == null)
		return;
	g_sDirection = sDirection;
	g_bEndScroll = e.ctrlKey;
	g_iIncrument = (e.shiftKey) ? (g_iDefualtIncrument * 2) : g_iDefualtIncrument;
	oInterval = window.setInterval("scrollTab(g_sDirection,g_iIncrument,g_bEndScroll);",10);
	return true;			
}

function tabControlRelease()
{
	window.clearInterval(oInterval);
	oInterval = "";
}

function scrollTab(sDirection, iIncrument, bEnd)
{
	var iMaxScroll =  g_oTabs.clientWidth - g_oTabWindow.clientWidth;
	if (iMaxScroll < 0)
		iMaxScroll = 0;
	
	var iScrollIncrument = (iIncrument > 0) ? iIncrument : g_iDefualtIncrument;
	if (bEnd)
		iScrollIncrument = iMaxScroll;
	var iScrollWidth = 0;
	
	if (sDirection == 'right')
	{
		var iAvailableScroll = iMaxScroll - g_oTabWindow.scrollLeft;
		if (iAvailableScroll <= iScrollIncrument)
			iScrollWidth = iAvailableScroll;
		else
			iScrollWidth = iScrollIncrument;
	}
	else
	{
		var iAvailableScroll = g_oTabWindow.scrollLeft;
		if (iAvailableScroll <= iScrollIncrument)
			iScrollWidth = iAvailableScroll;
		else
			iScrollWidth = iScrollIncrument;
			
		iScrollWidth = -(iScrollWidth);					
	}				
	g_oTabWindow.scrollLeft = g_oTabWindow.scrollLeft + iScrollWidth;			
}			

function tabEvalScroll()
{
	var iMaxScroll =  g_oTabs.clientWidth - g_oTabWindow.clientWidth;
	
	if (iMaxScroll > 0)
		tabControlEnable();
	else
		tabControlDisable();
}

function tabControlInitialize()
{
	var oSelectedTab = document.getElementById('selectedTab')
	tabEvalScroll();
	if(oSelectedTab)
	{
		// Scroll to the selected tab
		var iSTWidth = oSelectedTab.offsetWidth;
		var iSTLeft = oSelectedTab.offsetLeft;
		var iTWWidth = g_oTabWindow.offsetWidth;
		var iLeftScrollOffset = (iTWWidth - iSTWidth) / 2;
		var iScroll = iSTLeft - iLeftScrollOffset;
		
		if ((iSTWidth +  iSTLeft) > iTWWidth)
			scrollTab('right', iScroll, false);						
	}					
}

function tabControlResize()
{
	
}