// 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); // attach events to top A elements
		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",	showSubNav); // attach events to submenu UL elements   // showSubNav1
			addEvent(tObj[0].parentNode.parentNode, "mouseout",		hideSubNav);
			for (var j=0; j < tObj.length; j++) {
				addEvent(tObj[j], "focus",	showSubNav2); // attach events to submenu A elements
				addEvent(tObj[j], "blur",	hideSubNav1);
			}
		}
	}
}


function showSubNav(e) {
	if (this.parentNode.id == sTabMenuDEFAULT && hasClass (this.parentNode, sTabMenuCURRENT))
		return;
	var prev = cssQuery("." + sTabMenuCURRENT)[0];
	if (prev) {
		fixOpera89();
		removeClass(prev, sTabMenuCURRENT); // probably problem with Opera 8.x, 9 TP1 here and not solved. Opera 7.x working fine.
	}
	showSubNav0(e, this.parentNode);
}

// function showSubNav1(e) {
//	opera.postError("show 1");
//	showSubNav0(e, this.parentNode);
// }

function showSubNav2(e) {
	showSubNav0(e, this.parentNode.parentNode.parentNode);
}

function showSubNav0(e,node) {
	clearTimeout(swTabTimer);
	addClass(node, sTabMenuCURRENT);
}



function hideSubNav(e) {
	oThis = this.parentNode;
	hideSubNav0(oThis);
}

function hideSubNav1(e) {
	oThis = this.parentNode.parentNode.parentNode;
	hideSubNav0(oThis);
}

function hideSubNav0(oThis) {
	if (oThis.id == sTabMenuDEFAULT && hasClass (oThis, sTabMenuCURRENT))
		return;
//	opera.postError("hide 0  " + oThis.nodeName +  "   ."+oThis.className + "   #"+oThis.id);
	swTabTimer = setTimeout("removeClass(oThis, sTabMenuCURRENT); showCurrentDef()",500);
}



function showCurrentDef() {
	var prev = cssQuery("." + sTabMenuCURRENT)[0];
	if (!prev) {
		fixOpera89();
		addClass(document.getElementById(sTabMenuDEFAULT), sTabMenuCURRENT);
	}
}

function fixOpera89() {
	document.documentElement.className += " "; // fixing Opera 8 and 9 regression bug - garbage on screen
}












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>";
}