/*
Written by Jonathan Snook, http://www.snook.ca/jonathan
Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

/*
taken from http://weblogs.asp.net/asmith/archive/2003/10/06/30744.aspx
*/
function XBrowserAddHandler(target,eventName,handlerName) { 
    if ( target.addEventListener ) { 
        target.addEventListener(eventName, function(e){target[handlerName](e);}, false);
    } else if ( target.attachEvent ) { 
        target.attachEvent("on" + eventName, function(e){target[handlerName](e);});
    } else { 
        var originalHandler = target["on" + eventName]; 
        if ( originalHandler ) { 
            target["on" + eventName] = function(e){originalHandler(e);target[handlerName](e);}; 
        } else { 
            target["on" + eventName] = target[handlerName]; 
        } 
    } 
}

/**
This function attaches our events to the links
*/
function attachEvents()
{
    var elements = getElementsByClassName(document, "*", "parent"); 
    for(var i=0; i<elements.length; i++) {
        var el=elements[i];
        el.closeMenu = closeMenu;
        el.openMenu  = openMenu;
        el.getElementsByTagName("ul")[0].style.visibility = "hidden";
        XBrowserAddHandler(el, "mouseout", "closeMenu");
        XBrowserAddHandler(el, "mouseover", "openMenu");
    }
    
    // Include stylesheet
    /*
     * This version wont work in IE, so lets use the stupid one.
    var stylesheet = document.createElement("style");
    stylesheet.setAttribute("type", "text/css");
    document.getElementsByTagName("head")[0].appendChild(stylesheet);
    stylesheet.innerHTML = '#navi li ul { visibility: hidden }';
    */
    //document.getElementsByTagName("head")[0].innerHTML += '<style type="text/css" media="all">#navi li ul { visibility: hidden }</style>';
    
}

/**
 * recursive function to get absolute position (like css-attribute "left")
 */
function getPosLeft(el)
{
    // Check, if we have a parent element
    if (el.offsetParent) {
        return (el.offsetLeft + getPosLeft(el.offsetParent));
    } else { 
        return (el.offsetLeft);
    }
}

/**
 * This function only opens the menu
 */
function openMenu(eve)
{
    var child = this.getElementsByTagName("ul")[0];
    child.style.visibility="visible";
}


function closeMenu(eve)
{
    var child = this.getElementsByTagName("ul")[0];
    child.style.visibility="hidden";
}


/*
function swpMenu(eve) 
{
    var child = eve.srcElement.parentNode.getElementsByTagName("ul")[0];
    
    // hide all the other nodes
    var nodes =  getElementsByClassName(document, "*", "menu");
    for(var i=0; i<nodes.length; i++) {
        nodes[i].style.visibility="hidden";
    }

    child.style.visibility="visible";
}
*/
