﻿var disappeardelay = 50;   //menu disappear speed onMouseout (in miliseconds)
var showdelay = 250;   //menu show speed onMouseout (in miliseconds)
var contentSize = 800;
var enableanchorlink = 0;  //Enable or disable the anchor link when clicked on? (1=e, 0=d)
var hidemenu_onclick = 0;  //hide menu when user clicks within menu? (1=yes, 0=no)

var ie5 = document.all;
var ns6 = document.getElementById && !document.all;
var tempX = 0;
var tempXPD = 0;
var tempY = 0;
var tempYPD = 0;

function captureMousePosition(e) {
    if (ie5) { //IE
        tempXPD = window.event.x + document.body.scrollLeft;
        tempYPD = window.event.y + document.body.scrollTop;
    }
    else if (document.layers) { //Netscape
        tempXPD = e.pageX;
        tempYPD = e.pageY;
    }
    else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        tempXPD = e.pageX;
        tempYPD = e.pageY;
    }

}

if (document.layers) { // Netscape
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
    document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
    document.onmousemove = captureMousePosition;
}

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, visible, hidden) {

    if (obj !== "undefined") {
        /*
        if (ie5||ns6)    
        {        
        obj.style.left=obj.style.top-500
        } 
        */
        if (obj.style.visibility === hidden) {
            obj.style.visibility = visible;
        }
        else {
            obj.style.visibility = hidden;
        }
    }
}

function iecompattest() {
    return (document.compatMode && document.compatMode !== "BackCompat") ? document.documentElement : document.body;
}

function clearbrowseredge(obj, whichedge) {
    var edgeoffset = 0;
    var windowedge = 0;
    if (whichedge == "rightedge") {
        windowedge = ie5 && !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 = ie5 && !window.opera ? iecompattest().scrollTop : window.pageYOffset;
        windowedge = ie5 && !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 getMouseXY(e) {
    if (ie5) { //IE
        tempX = window.event.x + document.body.scrollLeft - 35;
        tempY = window.event.y + document.body.scrollTop;
    }
    else if (document.layers) { //Netscape
        tempX = e.pageX;
        tempY = e.pageY;
    }
    else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        tempX = e.pageX - 35;
        tempY = e.pageY;
    }

}

function clickreturnvalue() {
    if ((ie5 || ns6) && !enableanchorlink) {
        return false;
    }
    else {
        return true;
    }
}

function delayhidemenu() {
    if ((typeof disappeardelay != "undefined") && (typeof dropmenuobj != "undefined") && (typeof IfrRef != "undefined")) {
        delayhide2 = setTimeout("IfrRef.style.display='none'", disappeardelay);
        delayhide = setTimeout("dropmenuobj.style.visibility='hidden'", disappeardelay);
    }
}

function contains_ns6(a, b) {
    while (b.parentNode) {
        if ((b = b.parentNode) == a) {
            return true;
        }
    }
    return false;
}

function dynamichide(e) {
    if (ie5 && !dropmenuobj.contains(e.toElement)) {
        delayhidemenu();
    }
    else if (ns6 && e.currentTarget != e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget)) {
        delayhidemenu();
    }
}

function clearhidemenu() {
    if (typeof delayhide != "undefined") {
        clearTimeout(delayhide);
    }
    if (typeof delayhide2 != "undefined") {
        clearTimeout(delayhide2);
    }

}

function dropdownmenu(obj, e, dropmenuID, rollOverHeigth) {

    if (window.event) { event.cancelBubble = true; }
    else if (e.stopPropagation) { e.stopPropagation(); }


    //Determine if current mouse position falls outside of bounds or not
    if ((((tempYPD - tempY) > rollOverHeigth)) || ((tempYPD - tempY) < (rollOverHeigth * -1))) {
        return false;
    }


    if (ie5) {
        if (((tempXPD < ((document.body.offsetWidth - contentSize) / 2)) && (tempX > ((document.body.offsetWidth - contentSize) / 2))) ||
               (tempXPD > (((document.body.offsetWidth - contentSize) / 2) + contentSize))) {
            return false;
        }
    }
    else if (ns6) {

        if (typeof window.innerWidth.offsetWidth == "undefined") {
            if (((tempXPD < ((document.body.offsetWidth - contentSize) / 2)) && (tempX > ((document.body.offsetWidth - contentSize) / 2))) ||
               (tempXPD > (((document.body.offsetWidth - contentSize) / 2) + contentSize))) {
                return false;
            }
        }
        else {
            if (((tempXPD < ((window.innerWidth - contentSize) / 2)) && (tempX > ((window.innerWidth - contentSize) / 2))) ||
            (tempXPD > (((window.innerWidth.offsetWidth - contentSize) / 2) + contentSize))) {
                return false;
            }
        }
    }

    clearhidemenu();

    //NEW//
    if (typeof IfrRef != "undefined") //hide previous menu
    {
        IfrRef.style.display = "none";
    }

    if (typeof dropmenuobj != "undefined") //hide previous menu
    {
        if (dropmenuobj == document.getElementById(dropmenuID) && dropmenuobj.style.visibility != 'hidden') {
            dropmenuobj.style.visibility = "hidden";
            return;
        }
        dropmenuobj.style.visibility = "hidden";
    }

    if (ie5 || ns6) {

        obj.onmouseout = delayhidemenu;
        dropmenuobj = document.getElementById(dropmenuID);

        if (typeof dropmenuobj != "undefined") {
            //NEW//
            IfrRef = document.getElementById('DivShim');

            if (hidemenu_onclick) { dropmenuobj.onclick = function() { dropmenuobj.style.visibility = 'hidden'; }; }
            dropmenuobj.onmouseover = clearhidemenu;
            dropmenuobj.onmouseout = ie5 ? function() { dynamichide(event); } : function(event) { dynamichide(event); };
            showhide(dropmenuobj, "visible", "hidden");
            dropmenuobj.x = getposOffset(obj, "left");
            dropmenuobj.y = getposOffset(obj, "top");
            dropmenuobj.style.left = dropmenuobj.x + "px";
            dropmenuobj.style.top = dropmenuobj.y + obj.offsetHeight + "px";

            //NEW//
            if (typeof IfrRef !== "undefined") {
                IfrRef.style.width = dropmenuobj.offsetWidth;
                IfrRef.style.height = dropmenuobj.offsetHeight;
                IfrRef.style.top = dropmenuobj.style.top;
                IfrRef.style.left = dropmenuobj.style.left;
                dropmenuobj.style.zIndex = 99;
                IfrRef.style.zIndex = dropmenuobj.style.zIndex - 1;
                IfrRef.style.display = "block";

                if (IfrRef.style.height == "0px") {
                    //HACK! HACK! HACK!
                    //IfrRef.style.height = dropmenuobj.y - 10;
                    if (dropmenuobj.y < 100)
                    { IfrRef.style.height = dropmenuobj.y - 10; }
                    else
                    { IfrRef.style.height = dropmenuobj.y - 100; }
                    IfrRef.style.width = "150px";
                }
            }
        }
    }
    return clickreturnvalue();
}

function showWithDelay(obj, e, dropmenuID, rollOverHeigth) {
    clearTimeout(this.timeout);
    getMouseXY(e);
    this.timeout = setTimeout(function() { dropdownmenu(obj, e, dropmenuID, rollOverHeigth); }, showdelay);
}







