﻿    var strWidth;//            =   "200px"; //default menu width
    var intDelay            =   100;  //menu disappear speed onMouseout (in miliseconds)
    var blnHideOnClick      =   true; //hide menu when user clicks within menu?

    /////No further editting needed

    var ie4 = document.all;
    var ns6 = document.getElementById && !document.all;

    if (ie4||ns6){
        var strOutput = '';
        strOutput = '<div id="dropmenudiv" style="visibility:hidden;width:'+strWidth+';"';
        strOutput += ' onMouseover="clearhidemenu();"';
        strOutput += ' onMouseout="dynamichide(event)">';
        strOutput += '</div>';
        document.write(strOutput);
    }

    function getposOffset(what, offsettype){
        var totaloffset = (offsettype=="left")? what.offsetLeft : what.offsetTop;
        var parentEl = what.offsetParent;
        while (parentEl!=null){
            totaloffset = (offsettype == "left")? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
            parentEl = parentEl.offsetParent;
        }
        return totaloffset;
    }


    function showhide(obj, e, visible, hidden, strWidth){
        if (ie4||ns6){
            dropmenuobj.style.left = dropmenuobj.style.top = "-500px";
        }
        if (strWidth!=""){
            dropmenuobj.widthobj = dropmenuobj.style;
            dropmenuobj.widthobj.width =  strWidth;
        }
        if (e.type == "click" && obj.visibility == hidden || e.type == "mouseover"){
            obj.visibility = visible;
        }else if (e.type == "click"){
            obj.visibility = hidden;
        }
    }

    function iecompattest(){
        return (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
    }

    function clearbrowseredge(obj, whichedge){
        var edgeoffset = 0;
        if (whichedge=="rightedge"){
            var windowedge = ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth - 15;
            dropmenuobj.contentmeasure = dropmenuobj.offsetWidth;
            if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure){
                edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth;
            }
        }else{
            var topedge = ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset;
            var windowedge = ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight - 15 : window.pageYOffset+window.innerHeight - 18;
            dropmenuobj.contentmeasure = dropmenuobj.offsetHeight;
            if (windowedge - dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
                edgeoffset = dropmenuobj.contentmeasure + obj.offsetHeight;
                if ((dropmenuobj.y - topedge) < dropmenuobj.contentmeasure){ //up no good either?
                    edgeoffset = dropmenuobj.y + obj.offsetHeight - topedge;
                }
            }
        }
        return edgeoffset;
    }

    function populatemenu(what){
        $(dropmenuobj).html($("div[id$='" + what + "']").html());
        /*if (ie4||ns6){
            dropmenuobj.innerHTML = what.join("");
        }*/
    }


    function dropdownmenu(obj, e, menucontents, strWidth){
        var correctX;
        var correctY;
        if(navigator.userAgent.indexOf('MSIE') >= 0){
            correctX = 0;
            correctY = 0;
        }else{
            correctX = -1;
            correctY = -1;
        }
        if (window.event){
            event.cancelBubble = true;
        }else if (e.stopPropagation){
            e.stopPropagation();
        }
        clearhidemenu();
        dropmenuobj = document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv;
        populatemenu(menucontents);
        if (ie4||ns6){
            showhide(dropmenuobj.style, e, "visible", "hidden", strWidth);
            dropmenuobj.x = getposOffset(obj, "left");
            dropmenuobj.y = getposOffset(obj, "top");
            dropmenuobj.style.left = dropmenuobj.x - clearbrowseredge(obj, "rightedge") + 149 + correctX + "px";
            dropmenuobj.style.top = dropmenuobj.y - clearbrowseredge(obj, "bottomedge") + correctY + "px";//obj.offsetHeight + "px";
        }
        return clickreturnvalue();
    }

    function clickreturnvalue(){
        if (ie4||ns6){
            return false;
        }else{
            return true;
        }
    }

    function contains_ns6(a, b) {
        while (b.parentNode){
            if ((b = b.parentNode) == a){
                return true;
            }else{
                return false;
            }
        }
    }

    function dynamichide(e){
        if (ie4&&!dropmenuobj.contains(e.toElement)){
            delayhidemenu();
        }else if (ns6&&e.currentTarget != e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget)){
            delayhidemenu();
        }
    }

    function hidemenu(e){
        if (typeof dropmenuobj != "undefined"){
            if (ie4||ns6){
                dropmenuobj.style.visibility = "hidden";
            }
        }
    }

    function delayhidemenu(){
        if (ie4||ns6){
            delayhide = setTimeout("hidemenu()",intDelay);
        }
    }

    function clearhidemenu(){
        if (typeof delayhide != "undefined"){
            clearTimeout(delayhide);
        }
    }

    if (blnHideOnClick == true){
        document.onclick = hidemenu;
    }