/*
	Based on the accessible menu by Matthew Carrol (http://carroll.org.uk/)
	Original by Patrick Griffiths and Dan Webb (http://www.htmldog.com/articles/suckerfish/dropdowns/)
	Modified by IBM ebIC, Hamburg Germany, 2005
	$Revision: 1.22 $
*/
var navhor = "navhor"; // id of main navigation ul element
var iehover = "iehover"; // class for internet explorer, li:hover substitution class
var ieright = "ieright"; // class for right aligned flyout menu for internet explorer 
var leftpt = "leftpt"; // class for left aligned flyout menu
var rightpt = "rightpt"; // class for right aligned flyout menu
var nosub = "nosub"; // class for hiding submenus

var leftClass = iehover;
var rightClass = leftClass + " "+ieright;

function addClass(navelement,classname) {
	if (!checkClass(navelement, classname)) navelement.className+= " " + classname;
}

function killClass(navelement,classname) {
	navelement.className=navelement.className.replace(new RegExp("[\w\s ]*"+classname+"[\w\s ]*"), "");
}

function addIframe(navelement,posleft,posright) {
	if (navelement.getElementsByTagName("ul").length) {
		var icover = navelement.lastChild;

		if (!(icover) || (icover.tagName != "IFRAME")) {
			navelement.lastChild.insertAdjacentHTML("afterEnd","<iframe src='javascript:false' longdesc='no content' scrolling='no' frameborder='0' style='display:none;'></iframe>");
			icover = navelement.lastChild;
		}
		var icstyle = icover.style;
		icstyle.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
		icstyle.position = "absolute";
		icstyle.top = "24px";
		icstyle.right = posright;
		icstyle.left = posleft;
		var ul = navelement.getElementsByTagName("ul");
		icstyle.width = ul[0].clientWidth;
		icstyle.height = ul[0].clientHeight;
		icstyle.zIndex = "199999";
		icstyle.display = "block";
	}
}

function killIframe(obj) {
	var icover = obj.lastChild;
	if (icover && icover.tagName == "IFRAME") {
		icover.style.display = "none";
	}
}

function checkClass (obj, classname) {
	return obj.className.indexOf(classname,0)!=-1;
}

function checkRight (obj) {
	return checkClass(obj, rightpt);
}

sfHover = function() {
	var navHorElem = document.getElementById(navhor);
	if (!navHorElem) return;
	var sfEls = navHorElem.childNodes;
	for (var i in sfEls) {
		if (ie && !ie50) {
			sfEls[i].onmouseenter=function() {
				addClass(this, checkRight(this) ? rightClass : leftClass);
				addIframe(this, checkRight(this) ? "auto" : "0", checkRight(this) ? "0" : "auto");
			}
			sfEls[i].onmouseleave=function() {
				killClass(this, checkRight(this) ? rightClass : leftClass);
				killIframe(this);
			}
		} else {
			sfEls[i].onmouseover=function() {
				addClass(this, checkRight(this) ? rightClass : leftClass);
			}
			sfEls[i].onmouseout=function() {
				killClass(this, checkRight(this) ? rightClass : leftClass);
			}
		}
	}
}

mcAccessible = function() {
	var navHorElem = document.getElementById(navhor);
	if (!navHorElem) return;
	var mcEls = navHorElem.getElementsByTagName("A");
	for (var i in mcEls) {
		mcEls[i].onfocus=function() {
			this.className+=(this.className.length>0? " ": "") + "iefocus"; //a:focus
			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {
				addClass(this.parentNode.parentNode.parentNode, checkRight(this.parentNode.parentNode.parentNode) ? rightClass : leftClass);
				if (ie && ! ie50) addIframe(this.parentNode.parentNode.parentNode, checkRight(this.parentNode.parentNode.parentNode) ? "auto" : "0", checkRight(this.parentNode.parentNode.parentNode) ? "0" : "auto");
			} else {
				addClass(this.parentNode, checkRight(this.parentNode) ? rightClass : leftClass);
				if (ie && ! ie50) addIframe(this.parentNode, checkRight(this.parentNode) ? "auto" : "0", checkRight(this.parentNode) ? "0" : "auto");
			}
		}
		mcEls[i].onblur=function() {
			this.className=this.className.replace(new RegExp("( ?|^)iefocus\\b"), "");
			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {
				killClass(this.parentNode.parentNode.parentNode, checkRight(this.parentNode.parentNode.parentNode) ? rightClass : leftClass);
				if (ie && ! ie50) killIframe(this.parentNode.parentNode.parentNode);
			} else {
				killClass(this.parentNode, checkRight(this.parentNode) ? rightClass : leftClass);
				if (ie && ! ie50) killIframe(this.parentNode);
			}
		}
	}
}

function initMenu() {
	var op = (window.opera) ? 1 : 0; // Opera
	var ie = (document.all && !op) ? 1 : 0; // MS Internet Explorer
	if (ie) {
		sfHover();
	}
	mcAccessible();
}
