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() {
	var sctab = document.getElementById('sctab'),
	    sctabinfo = document.getElementById('sctabinfo');
	if (sctab && sctabinfo) {
		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 () {
					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';
					}
				}
			}
			this.lis[0].getElementsByTagName('a')[0].onclick();
		}
	}
}

