function t(i, j) {
	var e = document.getElementById(i);
	var f = document.getElementById(j);
	var t = e.className;
	if (t.match('invisible')) { t = t.replace(/invisible/gi, 'visible'); }
	else { t = t.replace(/visible/gi, 'invisible'); }
	e.className = t;
	f.className = t;
}

function ShowTab (name)
{
	var e = document.getElementById(name);
	var f = document.getElementById(name + "Tab");
	e.style.display = '';
	f.className = 'selectedTab';
	
}

function HideTab (name)
{
	var e = document.getElementById(name);
	var f = document.getElementById(name + "Tab");
	e.style.display = 'none';
	f.className = 'deselectedTab';
}