function getElementsByClassName(options) {
	// { className, startNode, tagName, onlyFindFirst }
	var options = options.className ? options : {className: options};
	var startNode = options.startNode || document;
	var els = startNode.getElementsByTagName(options.tagName || '*');
	options.className = typeof options.className === 'string' ? options.className : options.className.join('(\\s|$)|(\\s|^)');
	var re = new RegExp('(\\s|^)(' + options.className + ')(\\s|$)');
	if (options.onlyFindFirst === true) {
		for (var i = 0, j = els.length; i < j; i++)
			if (re.test(els[i].className))
				return els[i];
		return false;
	} else {
		var found = [];
		for (var i = 0, j = els.length; i < j; i++)
			if (re.test(els[i].className))
				found.push(els[i]);
		return found;
	}
}

function scTDinit(tabContainerId, infoContainerId) {
	var sctab = document.getElementById(tabContainerId || 'sctab'),
	    sctabinfo = document.getElementById(infoContainerId || 'sctabinfo');

	if (sctab && sctabinfo) {
		var lis = this.lis = getElementsByClassName({ startNode: sctab, className: 'tabheader' });
		this.divs = getElementsByClassName({ startNode: sctabinfo, className: 'infobox' });
		if (this.lis.length > 0 && this.divs.length === this.lis.length) {
			for (var i = 0, li; li = this.lis[i]; i++) {
				var link = li.getElementsByTagName('a')[0];
				link.tabbedDetailsObject = this;
				link.title = link.innerText || link.textContent;
				link.onclick = function (e) {
					var tdObj = this.tabbedDetailsObject;
					for (var i = 0, j = tdObj.lis.length; i < j; i++) {
						var li = tdObj.lis[i],
						    div = tdObj.divs[i],
						    current = (this === li.getElementsByTagName('a')[0]);
						li.className = current ? 'tabhover' : 'tabheader';
						div.style.display = current ? 'block' : 'none';
					}
					return false;
				}
			}
			this.lis[0].getElementsByTagName('a')[0].onclick();

			if (!window.shTab) window.shTab = function(name) {
				var re = new RegExp(name, 'i');
				for (var i = 0, li; li = lis[i]; i++) {
					var link = li.getElementsByTagName('a')[0];
					if (re.test(link.title)) {
						link.onclick();
						break;
					}
				}
			};
		}
	}
}
