﻿var __AspNetMenuEx = {
    hoverClass: "AspNet-Menu-Hover",
    topmostClass: "AspNet-Menu",
    
    hover: function(element) {
        AdapterUtils.addClass(element, __AspNetMenuEx.hoverClass);

        if (AdapterUtils.isPreIE7)
        {
            var child = element.firstChild;
            while (child)
            {
                if (child.tagName == "UL")
                {
                    var grandchild = child.firstChild;
                    while (grandchild)
                    {
                        if (grandchild.tagName == "LI")
                        {
                            if ((typeof(grandchild.iFrameFormElementMask) != "undefined") && (grandchild.iFrameFormElementMask != null))
                            {
                                grandchild.iFrameFormElementMask.style.display = "block";
                                
                                var w = grandchild.offsetWidth;
                                if ((grandchild.offsetWidth == 0) && (typeof(element.iFrameFormElementMask) != "undefined") && (element.iFrameFormElementMask != null) && (element.iFrameFormElementMask.style.width.length > 0))
                                {
                                    w = element.iFrameFormElementMask.style.width;
                                }
                                grandchild.iFrameFormElementMask.style.width = w;
                                
                                var h = grandchild.offsetHeight + 5 /* fudge to cover margins between menu items */;
                                if ((grandchild.offsetHeight == 0) && (typeof(element.iFrameFormElementMask) != "undefined") && (element.iFrameFormElementMask != null) && (element.iFrameFormElementMask.style.height.length > 0))
                                {
                                    h = element.iFrameFormElementMask.style.height;
                                }
                                grandchild.iFrameFormElementMask.style.height = h;
                            }
                        }
                        
                        grandchild = grandchild.nextSibling;
                    }
                }

                child = child.nextSibling;
            }
        }
    },
    
    unhover: function(element) {
        AdapterUtils.removeClass(element, __AspNetMenuEx.hoverClass);

        if (AdapterUtils.isPreIE7)
        {
            var child = element.firstChild;
            while (child)
            {
                if (child.tagName == "UL")
                {
                    var grandchild = child.firstChild;
                    while (grandchild)
                    {
                        if (grandchild.tagName == "LI")
                        {
                            if ((typeof(grandchild.iFrameFormElementMask) != "undefined") && (grandchild.iFrameFormElementMask != null))
                            {
                                grandchild.iFrameFormElementMask.style.display = "none";
                            }
                        }

                        grandchild = grandchild.nextSibling;
                    }
                }

                child = child.nextSibling;
            }
        }
    },
    
    setHover: function(menu) {
        var items = menu.getElementsByTagName("li");
        for (var k=0; k<items.length; k++)
        {        
            items[k].onmouseover = function() { __AspNetMenuEx.hover(this); }
            items[k].onmouseout = function() { __AspNetMenuEx.unhover(this); }
            
            if (AdapterUtils.isPreIE7 && ((typeof(items[k].iFrameFormElementMask) == "undefined") || (items[k].iFrameFormElementMask == null)))
            {
                var iFrameFormElementMask = document.createElement("IFRAME");
                iFrameFormElementMask.scrolling= "no";
                iFrameFormElementMask.src = "javascript:false;";
                iFrameFormElementMask.frameBorder = 0;
                iFrameFormElementMask.style.display = "none";
                iFrameFormElementMask.style.position = "absolute";
                iFrameFormElementMask.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";

                iFrameFormElementMask.style.zIndex = -1;
                items[k].insertBefore(iFrameFormElementMask, items[k].firstChild);
                items[k].iFrameFormElementMask = iFrameFormElementMask;
            }                
        }       
    }
};

Type.registerNamespace("WM.Web");

WM.Web.AspNetMenuEx = function(mainElementID, options) {
    this.mainElement = $get(mainElementID);       
    this.options = Object.extend({
                            callbackServerReferecence: "",
                            postbackServerReference: "",
                            supportsCallbacks: true,                                
                            useCallbacks: false,
                            selectedItemPath: null
                        }, options || { });
    this._waitingCallback = false;
    this._postbackInitiated = false;
    this.selectedItemPath = this.options.selectedItemPath;
    
    __AspNetMenuEx.setHover(this.mainElement);
};

WM.Web.AspNetMenuEx.registerClass("WM.Web.AspNetMenuEx");

// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
