// Tabmenu beta
// written by Andrey Petrov
// while copy-pasting please leave this message ;)

addEvent(window,"load",init);

var swTabTimer;
var sTabMenu = "tabmenu";
var sTabMenuCURRENT = "selected";
var sTabMenuDEFAULT = "current";


function init() {
	var x = cssQuery("." + sTabMenu + ">li>a");
	for (var i=0; i < x.length; i++) {
		addEvent(x[i],"mouseover",showSubNav);
		addEvent(x[i],"focus",showSubNav);
		addEvent(x[i],"mouseout",hideSubNav);
		addEvent(x[i],"blur",hideSubNav);
		var tObj = cssQuery("ul a",x[i].parentNode);
		if (tObj != "") {
			addEvent(tObj[0].parentNode.parentNode,"mouseover",showSubNav1);
			addEvent(tObj[0].parentNode.parentNode,"mouseout",hideSubNav);
			for (var j=0; j < tObj.length; j++) {
				addEvent(tObj[j],"focus",showSubNav2);
				addEvent(tObj[j],"blur",hideSubNav1);
			}
		}
	}
}


function showSubNav(e) {
	// alert ("show 0");
	if ((this.parentNode.id == sTabMenuDEFAULT) && hasClass (this.parentNode, sTabMenuCURRENT))
		return;
	var prev = cssQuery("." + sTabMenuCURRENT)[0];
	if (prev) {
		removeClass(prev, sTabMenuCURRENT); // probably problem with Opera 8.x, 9 TP1 here and not solved. Opera 7.x working fine.
	}
	// document.documentElement.className += ' '; // fixing Opera 8 and 9 regression bug
	addClass(this.parentNode, sTabMenuCURRENT); // probably this needs to be before previous line, but Opera's spatial navigation start doing crazy things :(
	clearTimeout(swTabTimer);
}

function showSubNav1(e) {
	// alert ("show 1");
	clearTimeout(swTabTimer);
	addClass(this.parentNode, sTabMenuCURRENT);
}

function showSubNav2(e) {
	// alert ("show 2");
	clearTimeout(swTabTimer);
	addClass(this.parentNode.parentNode.parentNode, sTabMenuCURRENT);
}

function hideSubNav(e) {
	// alert ("hide 0");
	oThis = this.parentNode;
	if ((oThis.id == sTabMenuDEFAULT) && hasClass (oThis, sTabMenuCURRENT))
		return;
	swTabTimer = setTimeout("removeClass(oThis, sTabMenuCURRENT); showCurrentDef()",500);
}

function hideSubNav1(e) {
	// alert ("hide 1");
	oThis = this.parentNode.parentNode.parentNode;
	if ((oThis.id == sTabMenuDEFAULT) && hasClass (oThis, sTabMenuCURRENT))
		return;
	swTabTimer = setTimeout("removeClass(oThis, sTabMenuCURRENT); showCurrentDef()",500);
}

function showCurrentDef() {
	// alert ("def");
	var prev = cssQuery("." + sTabMenuCURRENT)[0];
	if (!prev) {
		// document.documentElement.className += ' '; // fixing Opera 8 and 9 regression bug
		addClass(document.getElementById(sTabMenuDEFAULT), sTabMenuCURRENT);
	}
}












function addClass(element, className) {
	if (!hasClass(element, className)) {
		if (element.className) element.className += " " + className;
		else element.className = className;
	}
}

function removeClass(element, className) {
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	element.className = element.className.replace(regexp, "$2");
}

function hasClass(element, className) {
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	return regexp.test(element.className);
}


function targetEl(e) {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
	targ = targ.parentNode;
	return targ;
}

function alertt (msg) {
	return;
	var target = document.getElementById("msgbox");
	target.innerHTML = target.innerHTML + "<li>" + msg + "</li>";
}