﻿/*
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;
// **INSERT** PB, prevent ie6 choking on undeclared varibles;
var ie = null;
var op = null;
var ie50 = null;
// **END INSERT** ;
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() {
    op = (window.opera) ? 1 : 0; // Opera
    ie = (document.all && !op) ? 1 : 0; // MS Internet Explorer
    if (ie) {
        sfHover();
    }
    mcAccessible();
}