Newer
Older
framework / app / Views / errors / html / debug.js
@MGatner MGatner on 7 Sep 2021 2 KB Release v4.1.4
// Tabs

var tabLinks    = new Array();
var contentDivs = new Array();

function init()
{
	// Grab the tab links and content divs from the page
	var tabListItems = document.getElementById('tabs').childNodes;
	console.log(tabListItems);
	for (var i = 0; i < tabListItems.length; i ++)
	{
		if (tabListItems[i].nodeName == "LI")
		{
			var tabLink     = getFirstChildWithTagName(tabListItems[i], 'A');
			var id          = getHash(tabLink.getAttribute('href'));
			tabLinks[id]    = tabLink;
			contentDivs[id] = document.getElementById(id);
		}
	}

	// Assign onclick events to the tab links, and
	// highlight the first tab
	var i = 0;

	for (var id in tabLinks)
	{
		tabLinks[id].onclick = showTab;
		tabLinks[id].onfocus = function () {
			this.blur()
		};
		if (i == 0)
		{
			tabLinks[id].className = 'active';
		}
		i ++;
	}

	// Hide all content divs except the first
	var i = 0;

	for (var id in contentDivs)
	{
		if (i != 0)
		{
			console.log(contentDivs[id]);
			contentDivs[id].className = 'content hide';
		}
		i ++;
	}
}

function showTab()
{
	var selectedId = getHash(this.getAttribute('href'));

	// Highlight the selected tab, and dim all others.
	// Also show the selected content div, and hide all others.
	for (var id in contentDivs)
	{
		if (id == selectedId)
		{
			tabLinks[id].className    = 'active';
			contentDivs[id].className = 'content';
		}
		else
		{
			tabLinks[id].className    = '';
			contentDivs[id].className = 'content hide';
		}
	}

	// Stop the browser following the link
	return false;
}

function getFirstChildWithTagName(element, tagName)
{
	for (var i = 0; i < element.childNodes.length; i ++)
	{
		if (element.childNodes[i].nodeName == tagName)
		{
			return element.childNodes[i];
		}
	}
}

function getHash(url)
{
	var hashPos = url.lastIndexOf('#');
	return url.substring(hashPos + 1);
}

function toggle(elem)
{
	elem = document.getElementById(elem);

	if (elem.style && elem.style['display'])
	{
		// Only works with the "style" attr
		var disp = elem.style['display'];
	}
	else if (elem.currentStyle)
	{
		// For MSIE, naturally
		var disp = elem.currentStyle['display'];
	}
	else if (window.getComputedStyle)
	{
		// For most other browsers
		var disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display');
	}

	// Toggle the state of the "display" style
	elem.style.display = disp == 'block' ? 'none' : 'block';

	return false;
}