
// Global Functions
function getObject(elementId)
{
	if (document.getElementById)
	{
		return document.getElementById(elementId);
	}
	else if (document.all)
	{
		return document.all[elementId];
	}
	else if (document.layers)
	{
		return document.layers[elementId];
	}
}
function getObjectsByTagAndClass(tag, cls)
{
	var array = document.getElementsByTagName(tag);
	var output = new Array();
	var matches = 0;
	for(var i=0;i<array.length;i++)
	{
		var parts = array[i].className.split(' ');	
		for(var j=0;j<parts.length;j++)
		{
			if(parts[j]==cls)
			{
				output[matches++]=array[i];
			}
		}
	}
	return output;
}
// gets object of an element by tag and class and id
function getObjectsOfElementByTagAndClass(object, tag, cls, id)
{
    var output = new Array();
    if(object)
    {
	    var array = object.getElementsByTagName(tag);
	    var matches = 0;
	    if (array != undefined && array != null)
	    { 
	        for(var i=0;i<array.length;i++)
	        {
		        var parts = array[i].className.split(' ');	
		        for(var j=0;j<parts.length;j++)
		        {
			        if(parts[j]==cls)
			        {
				        if(id)
				        {
				            if (array[i].id.indexOf(id) == 0)
				            {
				                output[matches++]=array[i];
				            }   
				        }
				        else
				        {
				            output[matches++]=array[i];
				        }
				    }
		        }
	        }
	    }
	}
	return output;
}
function getTargetFromEvent(e)
{
	if (!e) var e = window.event;
	if (e.target) var tg = e.target;
	else if (e.srcElement) var tg = e.srcElement;
	while (tg.nodeType != 1) // Safari
		tg = tg.parentNode;
	return tg;
}
function getBrowserWidth()
{
	if(window.innerWidth) return window.innerWidth;
	else if(document.body.clientWidth) return document.body.clientWidth;
	else return -1;
}
function getBrowserHeight()
{
    return (window.innerHeight?window.innerHeight:document.documentElement.clientHeight);    
}
function getBodyHeight()
{
	if(document.body.clientHeight) return document.body.clientHeight;
	else return -1;
}
function getObjectHeight(i)
{
	return i.offsetHeight;
}

window.onload = collapseTabs;

var KPF=null;
function KP(o)
{
	var k = GKBH(o);
	if(k==13||k==32)
	{
		eval(KPF);
		return false;
	}
	return k;
}
function GKBH(o)
{
	var k;
	try{k=(window.event != null && window.event.keyCode != null) ? window.event.keyCode : e.which;}catch(e){k=null;};
	return (k==null && o !=null && o.keyCode !=null)? o.keyCode : k;
}



//////////////////////////
// OBJECT LEVEL METHODS //
//////////////////////////

// Vertical tab - written to allow more than one tab section on the same page (via the Array objects)
var currentTabGroup = 0;
var currentTabIndex = 0;
var activeTabIndeces = new Array();
var activeTabTimers = new Array();

function activateTab(tabGroup,index, tabtype)
{
	clearTimeout(activeTabTimers[tabGroup]); // if a hover is pending, then clear it
	currentTabGroup = tabGroup;
	currentTabIndex = index;
	
	if(activeTabIndeces.length <= tabGroup)
	{
		activeTabIndeces[tabGroup] = 0;
	}	
	var activeTabIndex = activeTabIndeces[tabGroup];
	if(index != activeTabIndex)
	{
		activeTabTimers[tabGroup] = setTimeout("activateTabTimer(" + tabtype + ")", 250); // in milliseconds 250
	}
}

function mouseOutTab(tabGroup,index)
{
	clearTimeout(activeTabTimers[tabGroup]);
}

var isMouseOver = false;
function activateTabTimer(tabtype)
{   
    var activeTabIndex = activeTabIndeces[currentTabGroup];
    if(currentTabIndex != activeTabIndex)
    {
	    var h = 'tbh' + currentTabGroup + '_';
	    var c = 'tbc' + currentTabGroup + '_';
		
		var activeTab = getObject(h + activeTabIndex);
	    var activeTabPanel = getObject(c + activeTabIndex);
        
	    var newTab = getObject(h + currentTabIndex);
	    var newTabPanel = getObject(c + currentTabIndex);
		
	    var activeTabDiv = getObjectsByTagAndClass('div','activeTabdiv');
	    if(activeTabDiv.length >0)
		{
	        activeTabDiv[0].className = 'activeTabdiv '+(newTabPanel.getAttribute('layout')!='null'?newTabPanel.getAttribute('layout'):"")+' cf';
		    activeTabDiv[0].innerHTML = newTabPanel.innerHTML;
		    isMouseOver = true;
	    }
	    
		if (tabtype != 0)
		{
			activeTab.className = 'ulTabs tab';
			newTab.className = 'ulTabs tab tabActive';
		}
		else
		{
			activeTab.className = 'tab';
			newTab.className = 'tab tabActive';
		}
		
	    activeTabIndeces[currentTabGroup] = currentTabIndex;
	    
		// Next two lines are to activate webtrends impressions for verticle tabs
	    clearTimeout(impT);
	    impT = setTimeout("swtI("+currentTabIndex+")", 2000); 		/*1000*/
    }
}

var TVIEWHEIGHT = 0;
function collapseTabs()
{
	// Switch tab area to script/collapsed view
	// - remove "dl" from tabContentPanel and all tabPanel
	// - find all 'tabPanel's, set first to 'tabPanel tabActive' and others to 'tabPanel tabHidden'
	// - hide all H3 elements inside tabPanel(s)
	// - hide dlTabs, show ulTabs
	// - hide all .dlTabSpacer
	
	var ih=0;
	var i=0;
	var objects = getObjectsByTagAndClass("h3","dlh");
	for(i=0;i<objects.length;i++)
	{
		objects[i].style.display = 'none';
	}
	
	objects = getObjectsByTagAndClass("div","tbc");
	for(i=0;i<objects.length;i++)
	{
		ih= getObjectHeight(objects[i]);
		if(ih>TVIEWHEIGHT)TVIEWHEIGHT=ih;
	}
	
	var objects;
	objects = getObjectsByTagAndClass("div","dlTabs");
	for(i=0;i<objects.length;i++)
	{
		objects[i].style.display = 'none';
	}
	
	objects = getObjectsByTagAndClass("div","ulTabs");
	for(i=0;i<objects.length;i++)
	{
		objects[i].style.display = 'block';
	}
	
	objects = getObjectsByTagAndClass("h3","dlh");
	for(i=0;i<objects.length;i++)
	{
		objects[i].style.display = 'none';
	}
		
	objects = getObjectsByTagAndClass("div","dlTabSpacer");
	for(i=0;i<objects.length;i++)
	{
		objects[i].style.display = 'none';
	}
	
	objects = getObjectsByTagAndClass("div","tabContentPanel");
	for(i=0;i<objects.length;i++)
	{
		objects[i].className = 'tabContentPanel';
		//objects[i].style.height = TVIEWHEIGHT+"px"; /***commented to get content height to component - changed by TCS.***/		
	}
	
	objects = getObjectsByTagAndClass("div","tabPanel");
	for(i=0;i<objects.length;i++)
	{
		if(i==0)
		{
		    if(!isMouseOver)
			{
			    var activeTabDiv = getObjectsByTagAndClass("div","activeTabdiv");
    	    	if(activeTabDiv.length > 0)
			    {
	               activeTabDiv[0].className = 'activeTabdiv ' + (objects[i].getAttribute('layout')!='null'?objects[i].getAttribute('layout'):"")+' cf';
                   activeTabDiv[0].innerHTML = objects[i].innerHTML;
	            }
	        }		
		}
		objects[i].className = 'tabPanel '+(objects[i].getAttribute('layout')!="null"?objects[i].getAttribute('layout'):"")+' tabHiddenPanel cf';				
	}
}

// Impression Timer
var impT=null;
// Send Webtrends Impression
function swtI(n)
{
	if(impT!=null && n>0 && tlids[n]!=false)
	{
		try{
			dcsMultiTrack("DCS.dcsuri","/tabs/"+(n+1),"WT.ad","","WT.mc_id","","DCSext.wt_linkid",tlids[n],"WT.dl","5","WT.ti","Tab "+(n+1));
			tlids[n]=false;
			impT=null;
		}catch(e){;}
	}
}