
// Bugfix ie6 block element spacing.
var MSIE_VERSION = 0;
if(navigator.appVersion.indexOf("MSIE") != -1) {
   temp = navigator.appVersion.split("MSIE");
   MSIE_VERSION = parseFloat(temp[1]);
}
      
function Menu(id)
{
    this.MenuLink = document.getElementById("TopMenuItem_" + id);
    this.MenuElement = document.getElementById("SubMenu_" + id);
    this.menuTimeout = null;
    this.init();
}


Object.extend(Menu.prototype,
{
    init: function()
	{
	    addEvent(this.MenuLink, 'mouseover', this.onMouseover.bind(this, 0));
	    addEvent(this.MenuElement, 'mouseover', this.onMouseover.bind(this, 0));
	    addEvent(this.MenuLink, 'mouseout', this.onMouseout.bind(this, 0));
	    addEvent(this.MenuElement, 'mouseout', this.onMouseout.bind(this, 0));
	    addEvent(this.MenuLink, 'click', this.HideMenu.bind(this, 0));
	    addEvent(this.MenuElement, 'click', this.HideMenu.bind(this, 0));
	    
	    //loop trough all the elements to check for submenu's
	    var UL_index;
	    for (var m = 0; m <= this.MenuElement.childNodes.length; m++) {
	        try {
	            if (this.MenuElement.childNodes[m].tagName == "UL") {
	                UL_index = m;
	            }
	        }
	        catch (ex) {}
	    }
	    
	    //alert( this.MenuElement.childNodes[1].childNodes.length);
	    for (var i = 0; i <= this.MenuElement.childNodes[UL_index].childNodes.length; i++) {
            var MenuSubLinkLI = this.MenuElement.childNodes[UL_index].childNodes[i];
            if (MenuSubLinkLI) {
                if (MenuSubLinkLI.tagName == 'LI') {
                    try {
                        var SubMenuLink = MenuSubLinkLI.getElementsByTagName("A")[0]
                        var SubMenuElement = MenuSubLinkLI.getElementsByTagName("DIV")[0]
                        if (SubMenuElement) {
                            new SubMenu(SubMenuLink, SubMenuElement);
                        }   
                    }
                    catch (ex) {
                        alert(ex)
                    }
                }
            }
        }
	},
	onMouseover: function(i, e)
	{
	    this.MenuLink.className = "Selected";
	    clearTimeout(this.menuTimeout);
	    this.DisplayMenu(i);
	},
	onMouseout: function(i, e)
	{
	    this.menuTimeout = setTimeout(this.HideMenu.bind(this, i), 150);
	},
	DisplayMenu: function(i, e)
	{
	    clearTimeout(this.menuTimeout);
	    
	    
	    this.MenuElement.style.top = (findObjectPosition(this.MenuLink)[1] + 28) + "px";
	    this.MenuElement.style.left = (findObjectPosition(this.MenuLink)[0] - 5) + "px";
	    this.MenuElement.style.display = 'block';
	},
	HideMenu: function(i, e)
	{
	    this.MenuLink.className = "";
	    this.MenuElement.style.display = 'none';
	}
});

function SubMenu(SubMenuLink, SubMenuElement)
{
    this.MenuLink = SubMenuLink;
    this.MenuElement = SubMenuElement;
    this.menuTimeout = null;
    this.init();
}


Object.extend(SubMenu.prototype,
{
    init: function()
	{
	    addEvent(this.MenuLink, 'mouseover', this.onMouseover.bind(this, 0));
	    addEvent(this.MenuElement, 'mouseover', this.onMouseover.bind(this, 0));
	    addEvent(this.MenuLink, 'mouseout', this.onMouseout.bind(this, 0));
	    addEvent(this.MenuElement, 'mouseout', this.onMouseout.bind(this, 0));
	    addEvent(this.MenuLink, 'click', this.HideMenu.bind(this, 0));
	    addEvent(this.MenuElement, 'click', this.HideMenu.bind(this, 0));
	},
	onMouseover: function(i, e)
	{
	    this.MenuLink.className = "Selected";	    
	    clearTimeout(this.menuTimeout);
	    this.DisplayMenu(i);
	},
	onMouseout: function(i, e)
	{
	    this.menuTimeout = setTimeout(this.HideMenu.bind(this, i), 50);
	},
	DisplayMenu: function(i, e)
	{
	    clearTimeout(this.menuTimeout);
	    //this.MenuElement.style.top = (findObjectPosition(this.MenuLink)[1]) + "px";
	    //this.MenuElement.style.left = "200px";
	    
       // Bugfix ie6 block element spacing.
       if (MSIE_VERSION > 0 && MSIE_VERSION < 7) 
	       this.MenuLink.style.marginBottom = "-18px";
	    	    
	    this.MenuElement.style.display = 'block';
	},
	HideMenu: function(i, e)
	{
	    // Bugfix ie6 block element spacing.
	    if(MSIE_VERSION > 0 && MSIE_VERSION < 7 && this.MenuLink.style.marginBottom != null)
	       this.MenuLink.style.marginBottom = "0px";
	      
	    this.MenuLink.className = "";
	    this.MenuElement.style.display = 'none';
	}
});
