﻿/// <reference name="MicrosoftAjax.js" />

var successDivOpacity = 100;
var successDivTimer = null;

Type.registerNamespace("HanleyAjaxControls.AjaxMenu");

HanleyAjaxControls.AjaxMenu.AjaxMenu = function(element)
{
    HanleyAjaxControls.AjaxMenu.AjaxMenu.initializeBase(this, [element]);
    
    this._currentMain = undefined;
    this._currentItem = undefined;
    
    this._menuCssClass = null;
    this._menuItemCssClass = null;
    this._menuItemHoverCssClass = null;
    this._menuLinkCssClass = null;
    this._menuLinkHoverCssClass = null;
    
    this._childMenuCssClass = null;
    this._childMenuItemCssClass = null;
    this._childMenuItemHoverCssClass = null;
    this._childMenuLinkCssClass = null;
    this._childMenuLinkHoverCssClass = null;
    
    this._orientation = 0;
    this._adminMode = false;
    this._adminImageUrl = null;
    this._adminMenuId = null;
    
    this._renderedOnce = null;
    this._collapseAllTimer = null;
    this._showAdminDetailsMainTimer = null;
    this._menuItem = null;
    this._connectUrl = null;
    this._fadeFeedbackTimer = null;
}

HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype =
{
    initialize: function()
    {
        HanleyAjaxControls.AjaxMenu.AjaxMenu.callBaseMethod(this, 'initialize');
        
        this.render();
        
    },
    
    dispose: function()
    {
        HanleyAjaxControls.AjaxMenu.AjaxMenu.callBaseMethod(this, 'dispose');
    },
    
    get_connectUrl: function()
    {
        return this._connectUrl;
    },
    
    set_connectUrl: function(value)
    {
        this._connectUrl = value;
    },
    
    get_adminImageUrl: function()
    {
        return this._adminImageUrl;
    },
    
    set_adminImageUrl: function(value)
    {
        this._adminImageUrl = value;
    },
    
    get_adminMode: function()
    {
        return this._adminMode;
    },
    
    set_adminMode: function(value)
    {
        this._adminMode = value;
    },
    
    get_orientation: function()
    {
        return this._orientation;
    },
    
    set_orientation: function(value)
    {
        this._orientation = value;
    },
    
    get_collapseAllTimer: function()
    {
        return this._collapseAllTimer;
    },
    
    set_collapseAllTimer: function(value)
    {
        this._collapseAllTimer = value;
    },
    
    get_menuCssClass: function()
    {
        return this._menuCssClass;
    },
    
    set_menuCssClass: function(value)
    {
        this._menuCssClass = value;
    },
    
    get_menuItemCssClass: function()
    {
        return this._menuItemCssClass;
    },
    
    set_menuItemCssClass: function(value)
    {
        this._menuItemCssClass = value;
    },
    
    get_menuItemHoverCssClass: function()
    {
        return this._menuItemHoverCssClass;
    },
    
    set_menuItemHoverCssClass: function(value)
    {
        this._menuItemHoverCssClass = value;
    },
    
    get_menuLinkCssClass: function()
    {
        return this._menuLinkCssClass;
    },
    
    set_menuLinkCssClass: function(value)
    {
        this._menuLinkCssClass = value;
    },
    
    get_menuLinkHoverCssClass: function()
    {
        return this._menuLinkHoverCssClass;
    },
    
    set_menuLinkHoverCssClass: function(value)
    {
        this._menuLinkHoverCssClass = value;
    },
    
    get_childMenuCssClass: function()
    {
        return this._childMenuCssClass;
    },
    
    set_childMenuCssClass: function(value)
    {
        this._childMenuCssClass = value;
    },
    
    get_childMenuItemCssClass: function()
    {
        return this._childMenuItemCssClass;
    },
    
    set_childMenuItemCssClass: function(value)
    {
        this._childMenuItemCssClass = value;
    },
    
    get_childMenuItemHoverCssClass: function()
    {
        return this._childMenuItemHoverCssClass;
    },
    
    set_childMenuItemHoverCssClass: function(value)
    {
        this._childMenuItemHoverCssClass = value;
    },
    
    get_childMenuLinkCssClass: function()
    {
        return this._childMenuLinkCssClass;
    },
    
    set_childMenuLinkCssClass: function(value)
    {
        this._childMenuLinkCssClass = value;
    },
    
    get_childMenuLinkHoverCssClass: function()
    {
        return this._childMenuLinkHoverCssClass;
    },
    
    set_childMenuLinkHoverCssClass: function(value)
    {
        this._childMenuLinkHoverCssClass = value;
    },
    
    hideChildMenus: function(context) {
    
        var menuDivs = document.getElementsByTagName('div');
        
        for(var i = 0; i < menuDivs.length; i++)
        {
            if(menuDivs[i].id.indexOf('child') > -1)
            {
                menuDivs[i].style.visibility = 'hidden';
                menuDivs[i].style.display = 'none';
            }
        }
    },
    
    renderMainMenu: function(menu, context) {
        context.get_element().innerHTML = '';
        
        if(context._connectUrl == null)
        {
            context._connectUrl = '';
        }
            
        var today = new Date();
        var sb = new Sys.StringBuilder();
        if(context._adminMode)
        {
            sb.append("<div id='divWait' style='filter: Alpha(Opacity=70);padding-top: 35px;text-align=center;visibility:hidden;display:none;position:absolute;left:0px;top:0px;width:200px;height:50px;background-color: #E0E0E0; border: 1px solid black'>");
            sb.append("<img src='../images/indicator.gif' />");
            sb.append("</div>");
            sb.append("<div id='divItemInfo' style='visibility:hidden;display:none;position:absolute;left:0px;top:0px;background-color: #E0E0E0; border: 1px solid black'></div>");
            sb.append("<div id='divItemSiblingInfo' style='visibility:hidden;display:none;position:absolute;left:0px;top:0px;background-color: #E0E0E0; border: 1px solid black'></div>");
            sb.append("<div id='divCopy' style='visibility:hidden;display:none;position:absolute;left:0px;top:0px;background-color: #E0E0E0; border: 1px solid black'>");
            sb.append("<table><tr>");
            sb.append("<td>Target Event ID:</td>");
            sb.append("<td><input type='text' id='txtNewEventId' /><td>");
            sb.append("</tr><tr>");
            sb.append("<td></td><td><input type='button' value='Go!' id='btnGo' /></td>");
            sb.append("</tr></table>");
            sb.append("</div>");
            sb.append("<div id='divSuccess' style='color:blue;padding-top:30px;text-align:center;visibility:hidden;display:none;position:absolute;left:0px;top:0px;width:200px;height:50px;background-color:#E0E0E0; border: 1px solid black'>Changes Successful!</div>");
        }
        
        sb.append("<div class='" + context._menuCssClass + "'>");
        sb.append("<table cellpadding='0' cellspacing='0' style='border: 0'>");
        if(context._orientation == 0)
        {
            sb.append("<tr>");
        }
        
        for(var i = 0; i < menu.MenuItems.length; i++)
        {
            
            if(context._orientation == 1)
            {
                sb.append("<tr>");
            }
            if(menu.MenuItems[i].NavigateUrl)
            {
                if(menu.MenuItems[i].ImageUrl)
                {
                    if( ! context._adminMode )
                    {
                        if(menu.MenuItems[i].Active == 0 || (menu.MenuItems[i].Active == 2 && menu.MenuItems[i].StartDate < today && menu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                            sb.append("hweNodeType='0'>");
                            
                            if(! menu.MenuItems[i].NewWindow)
                            {
                               menu.MenuItems[i].NavigateUrl = (menu.MenuItems[i].NavigateUrl.indexOf('?') > -1 ) ? menu.MenuItems[i].NavigateUrl + "&menu=1" : menu.MenuItems[i].NavigateUrl + "?menu=1"; 
                            }
                            
                            sb.append("<a href='" + menu.MenuItems[i].NavigateUrl + "'>");
                            sb.append("<img style='border: 0; cursor: hand' ");
                            sb.append("src='/connect" + menu.MenuItems[i].ImageUrl + "' ");
                            sb.append("hovSrc='/connect" + menu.MenuItems[i].ImageHoverUrl + "' ");
                            sb.append("orgSrc='/connect" + menu.MenuItems[i].ImageUrl + "'/></a>");           
                            sb.append("</td>");
                        }
                    }
                    else
                    {
                        sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                        sb.append("hweNodeType='0'>");
                        sb.append("<img style='border: 0; cursor: hand' ");
                        sb.append("src='" + context._connectUrl + menu.MenuItems[i].ImageUrl + "' ");
                        sb.append("hovSrc='" + context._connectUrl + menu.MenuItems[i].ImageHoverUrl + "' ");
                        sb.append("orgSrc='" + context._connectUrl + menu.MenuItems[i].ImageUrl + "'/>");           
                        sb.append("</td>");
                    }
                }
                else
                {
                    if( ! context._adminMode )
                    {
                        if(menu.MenuItems[i].Active == 0 || (menu.MenuItems[i].Active == 2 && menu.MenuItems[i].StartDate < today && menu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                            sb.append("hweNodeType='1' ");
                            sb.append("class='" + context._menuItemCssClass + "' ");
                            sb.append("hovClass='" + context._menuItemHoverCssClass + "' ");
                            sb.append("orgClass='" + context._menuItemCssClass + "'>");
                            
                            if(! menu.MenuItems[i].NewWindow)
                            {
                               menu.MenuItems[i].NavigateUrl = (menu.MenuItems[i].NavigateUrl.indexOf('?') > -1 ) ? menu.MenuItems[i].NavigateUrl + "&menu=1" : menu.MenuItems[i].NavigateUrl + "?menu=1"; 
                            }
                            
                            sb.append("<a href='" + menu.MenuItems[i].NavigateUrl + "' ");
                            sb.append("id='hweMenu0." + menu.MenuItems[i].ID + "link' ");
                            sb.append("class='" + context._menuLinkCssClass + "' ");
                            sb.append("hovClass='" + context._menuLinkHoverCssClass + "' ");
                            sb.append("orgClass='" + context._menuLinkCssClass + "' ");
                            sb.append("href='" + menu.MenuItems[i].NavigateUrl + "'>");
                            sb.append(menu.MenuItems[i].LinkText + "</a>");
                            sb.append("</td>");
                        }
                    }
                    else
                    {
                        sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                        sb.append("hweNodeType='1' ");
                        sb.append("class='" + context._menuItemCssClass + "' ");
                        sb.append("hovClass='" + context._menuItemHoverCssClass + "' ");
                        sb.append("orgClass='" + context._menuItemCssClass + "'>");
                        sb.append(menu.MenuItems[i].LinkText );
                        sb.append("</td>");
                    }
                }
            }
            else
            {   
                if(menu.MenuItems[i].ImageUrl)
                {
                    if( ! context._adminMode )
                    {
                         if(menu.MenuItems[i].Active == 0 || (menu.MenuItems[i].Active == 2 && menu.MenuItems[i].StartDate < today && menu.MenuItems[i].EndDate > today))
                         {
                             sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                             sb.append("hweNodeType='2'>");
                             sb.append("<img style='border: 0' ");
                             sb.append("src='/connect" + menu.MenuItems[i].ImageUrl + "' ");
                             sb.append("hovSrc='/connect" + menu.MenuItems[i].ImageHoverUrl + "' ");
                             sb.append("orgSrc='/connect" + menu.MenuItems[i].ImageUrl + "'/></td>");
                         }
                     }
                     else
                     {
                         sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                         sb.append("hweNodeType='2'>");
                         sb.append("<img style='border: 0; cursor: hand' ");
                         sb.append("src='" + context._connectUrl + menu.MenuItems[i].ImageUrl + "' ");
                         sb.append("hovSrc='" + context._connectUrl + menu.MenuItems[i].ImageHoverUrl + "' ");
                         sb.append("orgSrc='" + context._connectUrl + menu.MenuItems[i].ImageUrl + "'/></td>");
                     }
                }
                else
                {
                    if( ! context._adminMode )
                    {
                        if(menu.MenuItems[i].Active == 0 || (menu.MenuItems[i].Active == 2 && menu.MenuItems[i].StartDate < today && menu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                            sb.append("hweNodeType='3' ");
                            sb.append("class='" + context._menuItemCssClass + "' ");
                            sb.append("hovClass='" + context._menuItemHoverCssClass + "' ");
                            sb.append("orgClass='" + context._menuItemCssClass + "'>");
                            sb.append(menu.MenuItems[i].LinkText + "</td>");
                        }
                    }
                    else
                    {
                        sb.append("<td id='hweMenu0." + menu.MenuItems[i].ID + "' ");
                        sb.append("hweNodeType='3' ");
                        sb.append("class='" + context._menuItemCssClass + "' ");
                        sb.append("hovClass='" + context._menuItemHoverCssClass + "' ");
                        sb.append("orgClass='" + context._menuItemCssClass + "'>");
                        sb.append(menu.MenuItems[i].LinkText + "</td>");
                    }
                }
            }
            if(context._orientation == 1)
            {
                sb.append("</tr>");
            }
            if(menu.MenuItems[i].ChildMenu)
            {
                context.renderChildMenu('hweMenu0.' + menu.MenuItems[i].ID, menu.MenuItems[i].ChildMenu, context);
            }

        }
        
        if(context._orientation == 0)
        {
            sb.append("</tr>");
        }
        sb.append("</table>");
        sb.append("</div>");

        context.get_element().innerHTML += sb;  
           
        if(context._adminMode)
        {
            $addHandlers($get('btnGo'), {'click': context.copyMenuGo}, context);
        }
        if(context._renderedOnce)
        {
            context.successfulFeedback();
        }
        context._renderedOnce = true;
    },
    
    successfulFeedback : function() {
        
        var coords = this.getElementCoordinates(this.get_element());
        $get('divSuccess').style.left = coords.x + 20;
        $get('divSuccess').style.top = coords.y + 20;
        $get('divSuccess').style.visibility = 'visible';
        $get('divSuccess').style.display = 'block';
        
        successDivTimer = setInterval('HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.fadeFeedback()', 10);
    },
    
    fadeFeedback : function (prototype) {
       successDivOpacity -= 1;
       
       if(successDivOpacity == 0)
       {
           clearInterval(successDivTimer);
           successDivTimer = null;
           successDivOpacity = 100;
           $get('divSuccess').style.left = 0;
           $get('divSuccess').style.top = 0;
           $get('divSuccess').style.visibility = 'hidden';
           $get('divSuccess').style.display = 'none';
           return;
       }
       $get('divSuccess').style.filter = 'Alpha(Opacity=' + successDivOpacity + ')';
    },
    
    renderChildMenu: function(parentId, childMenu, context) {
        var sb = new Sys.StringBuilder();
        if(context._connectUrl == null)
        {
            context._connectUrl = '';
        }
        
        var today = new Date();
        sb.append("<div id='" + parentId + "child' class='" + context._childMenuCssClass + "' style='visibility:hidden;display:none;position:absolute;left:0px;top:0px'>");
        sb.append("<table width='100%' cellpadding='0' cellspacing='0' style='border: 0;'");
        
        for(var i = 0; i < childMenu.MenuItems.length; i++)
        {
            if(childMenu.MenuItems[i].NavigateUrl)
            {
                if(childMenu.MenuItems[i].ImageUrl)
                {
                    if( ! context._adminMode )
                    {
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<tr>");
                            sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "'");
                            sb.append("hweNodeType='0'>");
                            
                            if(! childMenu.MenuItems[i].NewWindow)
                            {
                               menu.MenuItems[i].NavigateUrl = (menu.MenuItems[i].NavigateUrl.indexOf('?') > -1 ) ? menu.MenuItems[i].NavigateUrl + "&menu=1" : menu.MenuItems[i].NavigateUrl + "?menu=1"; 
                            }
                            
                            sb.append("<a href='" + childMenu.MenuItems[i].NavigateUrl + "'>");
                            sb.append("<img style='border: 0' ");
                            sb.append("src='/connect" + childMenu.MenuItems[i].ImageUrl + "' ");
                            sb.append("hovSrc='/connect" + childMenu.MenuItems[i].ImageHoverUrl + "' ");
                            sb.append("orgSrc='/connect" + childMenu.MenuItems[i].ImageUrl + "'/></a>");   
                            sb.append("</td>");
                            sb.append("</tr>");
                        }
                    }
                    else
                    {
                        sb.append("<tr>");
                        sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "'");
                        sb.append("hweNodeType='0' ");
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("style='cursor: hand; font-weight: bold'>");
                        }
                        else
                        {
                            sb.append("style='cursor: hand'>");
                        }
                        sb.append("<img style='border: 0' ");
                        sb.append("src='" + context._connectUrl  + childMenu.MenuItems[i].ImageUrl + "' ");
                        sb.append("hovSrc='" + context._connectUrl  + childMenu.MenuItems[i].ImageHoverUrl + "' ");
                        sb.append("orgSrc='" + context._connectUrl  + childMenu.MenuItems[i].ImageUrl + "'/>");   
                        sb.append("</td>");
                        sb.append("</tr>");
                    }
                }
                else
                {
                    if( ! context._adminMode )
                    {
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<tr>");
                            sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "' ");
                            sb.append("hweNodeType='1'");
                            sb.append("class='" + context._childMenuItemCssClass + "' ");
                            sb.append("hovClass='" + context._childMenuItemHoverCssClass + "' ");
                            sb.append("orgClass='" + context._childMenuItemCssClass + "'>");
                            
                            if(! childMenu.MenuItems[i].NewWindow)
                            {
                               childMenu.MenuItems[i].NavigateUrl = (childMenu.MenuItems[i].NavigateUrl.indexOf('?') > -1 ) ? childMenu.MenuItems[i].NavigateUrl + "&menu=1" : childMenu.MenuItems[i].NavigateUrl + "?menu=1"; 
                            }
                            
                            sb.append("<a href='" + childMenu.MenuItems[i].NavigateUrl + "' ");
                            sb.append("id='" + parentId + "." + childMenu.MenuItems[i].ID + "link' ");
                            sb.append("class='" + context._childMenuLinkCssClass + "' ");
                            sb.append("hovClass='" + context._childMenuLinkHoverCssClass + "' ");
                            sb.append("orgClass='" + context._childMenuLinkCssClass + "' ");
                            sb.append("href='" + childMenu.MenuItems[i].NavigateUrl + "'>");
                            sb.append(childMenu.MenuItems[i].LinkText + "</a>");
                            sb.append("</td>");
                            sb.append("</tr>");
                        }
                    }
                    else
                    {
                        sb.append("<tr>");
                        sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "' ");
                        sb.append("hweNodeType='1' ");
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("style='cursor: hand; font-weight: bold'");
                        }
                        else
                        {
                            sb.append("style='cursor: hand'");
                        }
                        sb.append("class='" + context._childMenuItemCssClass + "' ");
                        sb.append("hovClass='" + context._childMenuItemHoverCssClass + "' ");
                        sb.append("orgClass='" + context._childMenuItemCssClass + "'>"); 
                        sb.append(childMenu.MenuItems[i].LinkText);
                        sb.append("</td>");
                        sb.append("</tr>");
                    }
                }
            }
            else
            {
                if(childMenu.MenuItems[i].ImageUrl)
                {
                    if( ! context._adminMode )
                    {
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<tr>");
                            sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "'");
                            sb.append("hweNodeType='2'>");
                            sb.append("<img style='border: 0' ");
                            sb.append("src='/connect" + childMenu.MenuItems[i].ImageUrl + "' ");
                            sb.append("hovSrc='/connect" + childMenu.MenuItems[i].ImageHoverUrl + "' ");
                            sb.append("orgSrc='/connect" + childMenu.MenuItems[i].ImageUrl + "'/>");               
                            sb.append("</td>");
                            sb.append("</tr>");
                        }
                    }
                    else
                    {
                        sb.append("<tr>");
                        sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "'");
                        sb.append("hweNodeType='2' >");
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("style='cursor: hand; font-weight: bold'>");
                        }
                        else
                        {
                            sb.append("style='cursor: hand'>");
                        }
                        sb.append("<img style='border: 0' ");
                        sb.append("src='" + context._connectUrl + childMenu.MenuItems[i].ImageUrl + "' ");
                        sb.append("hovSrc='" + context._connectUrl + childMenu.MenuItems[i].ImageHoverUrl + "' ");
                        sb.append("orgSrc='" + context._connectUrl + childMenu.MenuItems[i].ImageUrl + "'/>");  
                        sb.append("</td>");
                        sb.append("</tr>");
                    }
                }
                else
                {
                    if( ! context._adminMode )
                    {
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("<tr>");
                            sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "' ");
                            sb.append("hweNodeType='3'");
                            sb.append("class='" + context._childMenuItemCssClass + "' ");
                            sb.append("hovClass='" + context._childMenuItemHoverCssClass + "' ");
                            sb.append("orgClass='" + context._childMenuItemCssClass + "'>");
                            sb.append(childMenu.MenuItems[i].LinkText + "</td>");
                            sb.append("</tr>");
                        }
                    }
                    else
                    {
                        sb.append("<tr>");
                        sb.append("<td id='" + parentId + "." + childMenu.MenuItems[i].ID + "' ");
                        sb.append("hweNodeType='3' ");
                        if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                        {
                            sb.append("style='cursor: hand; font-weight: bold'");
                        }
                        else
                        {
                            sb.append("style='cursor: hand'");
                        }
                        sb.append("class='" + context._childMenuItemCssClass + "' ");
                        sb.append("hovClass='" + context._childMenuItemHoverCssClass + "' ");
                        sb.append("orgClass='" + context._childMenuItemCssClass + "'>");
                        sb.append(childMenu.MenuItems[i].LinkText + "</td>");
                        sb.append("</tr>");
                    }
                }
            
            }

            
                        
        }
        
        sb.append("</table>");
        sb.append("</div>");
        
        context.get_element().innerHTML += sb;
        
    },
    
    addEventHandlers: function(menu, context)
    {
        if( ! context._adminMode)
        {
            for(var i = 0; i < menu.MenuItems.length; i++)
            {
                if(menu.MenuItems[i].Active == 0 || (menu.MenuItems[i].Active == 2 && menu.MenuItems[i].StartDate < today && menu.MenuItems[i].EndDate > today))
                {
                    var objectArray = new Array();
                    objectArray[0] = $get('hweMenu0.' + menu.MenuItems[i].ID);
                    objectArray[1] = context;
                    
                    $addHandlers($get('hweMenu0.' + menu.MenuItems[i].ID), {'mouseover': context.mouseOverMain}, objectArray);
                    if($get('hweMenu0.' + menu.MenuItems[i].ID + 'link'))
                    {
                        $addHandlers($get('hweMenu0.' + menu.MenuItems[i].ID + 'link'), {'mouseover': context.mouseOverMainLink, 'mouseout': context.mouseOutMainLink}, $get('hweMenu0.' + menu.MenuItems[i].ID + 'link'));
                        
                    }
                    if(menu.MenuItems[i].ChildMenu)
                    {
                        context.addChildEventHandlers('hweMenu0.' + menu.MenuItems[i].ID, menu.MenuItems[i].ChildMenu, context);
                    }
                }
            }
        }
        else
        {
            for(var i = 0; i < menu.MenuItems.length; i++)
            {
                var objectArray = new Array();
                objectArray[0] = $get('hweMenu0.' + menu.MenuItems[i].ID);
                objectArray[1] = context;
                
                $addHandlers($get('hweMenu0.' + menu.MenuItems[i].ID), {'mouseover': context.mouseOverMain, 'click': context.mouseClickMain}, objectArray);
                
                if(menu.MenuItems[i].ChildMenu)
                {
                    context.addChildEventHandlers('hweMenu0.' + menu.MenuItems[i].ID, menu.MenuItems[i].ChildMenu, context);
                }
            }
        }
    },
    
    mouseClickMain: function(eventInfo) {
        var idArray = this[0].id.split('.');
        var id = idArray[idArray.length - 1];
        var coords = new Array();
        coords[0] = eventInfo.clientX + 10;
        coords[1] = eventInfo.clientY + 10;
        this[2] = coords;
        hanleywood.com.imenu.GetMenuItem(id, this[1].getMenuItemSuccess, this[1].menuJsonFailure, this);
    },
    
    getMenuItemSuccess: function(results, context, methodName)
    {
        context[1]._menuItem = results;
        var sb = new Sys.StringBuilder();
        sb.append("<table>");
       
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Image Url:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input id='txtImageUrl' style='width: 300px' type='text' value='" + results.ImageUrl + "' />");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Image Hover Url:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input id='txtImageHoverUrl' style='width: 300px' type='text' value='" + results.ImageHoverUrl + "' />");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Navigate Url:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input id='txtNavigateUrl' style='width: 300px' type='text' value='" + results.NavigateUrl + "' />");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Link Text:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input id='txtLinkText' style='width: 300px' type='text' value='" + results.LinkText + "' />");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>New Window:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<select id='ddlNewWindow' style='width: 304px' />");
            sb.append("<option value='true'>True</option>");
            sb.append("<option value='false'>False</option>");
            sb.append("</select>");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Display Order:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input id='txtDisplayOrder' style='width: 300px' type='text' value='" + results.DisplayOrder + "' />");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<span>Active:</span>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<select id='ddlActive' style='width: 304px'>");
            sb.append("<option value='0'>Active</option>");
            sb.append("<option value='1'>Not Active</option>");
            sb.append("<option value='2'>By Dates</option>");
            sb.append("</select>");
            sb.append("</td>");
            sb.append("</tr>");
            
            sb.append("<tr>");
            sb.append("<td colspan='2'>");
            sb.append("<table width='100%' style='border-top: 1px solid black; margin-top: 10px'>");
            sb.append("<tr>");
            
            sb.append("<td id='saveMenuItem' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Save Item</td>");
            sb.append("<td id='insertSibling' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Insert Sibling</td>");
            sb.append("<td id='deleteMenuItem' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Delete Item</td>");
            sb.append("<td id='closeItemInfo' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Cancel</td>");
            
            
            sb.append("</tr>");
            sb.append("</table>");
            sb.append("</td>");
            sb.append("</tr>");
       
        sb.append("</table>");
        
        $get('divItemInfo').innerHTML = sb;
        $get('divItemInfo').style.visibility = 'visible';
        $get('divItemInfo').style.display = 'block';
        $get('divItemInfo').style.left = context[2][0];
        $get('divItemInfo').style.top = context[2][1];
        
        if(results.NewWindow)
        {
            $get('ddlNewWindow').selectedIndex = 0;
        }
        else
        {
            $get('ddlNewWindow').selectedIndex = 1;
        }
        
        $get('ddlActive').selectedIndex = results.Active;
        
        $addHandlers($get('saveMenuItem'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.saveMenuItem}, context);
        $addHandlers($get('insertSibling'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.showNewSiblingForm}, context);
        $addHandlers($get('deleteMenuItem'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.deleteMenuItem}, context);
        $addHandlers($get('closeItemInfo'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.closeItemInfo}, context);
        
    },
    
    showNewSiblingForm: function() {
        var sb = new Sys.StringBuilder();
        sb.append("<table>");
        
        sb.append("<tr>");
        sb.append("<td></td>");
        sb.append("<td style='color: blue; font-weight: bold; padding: 5px'>");
        sb.append("<span>New Menu Item</span>");
        sb.append("</td>");
        
        sb.append("</tr>");
       
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Image Url:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<input id='txtNewImageUrl' style='width: 300px' type='text'/>");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Image Hover Url:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<input id='txtNewImageHoverUrl' style='width: 300px' type='text' />");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Navigate Url:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<input id='txtNewNavigateUrl' style='width: 300px' type='text' />");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Link Text:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<input id='txtNewLinkText' style='width: 300px' type='text' />");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>New Window:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<select id='ddlNewNewWindow' style='width: 304px' />");
        sb.append("<option value='true'>True</option>");
        sb.append("<option value='false'>False</option>");
        sb.append("</select>");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Display Order:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<input id='txtNewDisplayOrder' style='width: 300px' />");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("<span>Active:</span>");
        sb.append("</td>");
        sb.append("<td>");
        sb.append("<select id='ddlNewActive' style='width: 304px'>");
        sb.append("<option value='0'>Active</option>");
        sb.append("<option value='1'>Not Active</option>");
        sb.append("<option value='2'>By Dates</option>");
        sb.append("</select>");
        sb.append("</td>");
        sb.append("</tr>");
        
        sb.append("<tr>");
        sb.append("<td colspan='2'>");
        sb.append("<table width='100%' style='border-top: 1px solid black; margin-top: 10px'>");
        sb.append("<tr>");
        
        sb.append("<td id='saveSiblingMenuItem' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Save New Item</td>");
        sb.append("<td id='closeSiblingItemForm' style='text-decoration: underline; color: blue; cursor: hand; cursor: pointer'>Cancel</td>");
        
        sb.append("</tr>");
        sb.append("</table>");
        sb.append("</td>");
        sb.append("</tr>");
       
        sb.append("</table>");
        
        $get('divItemSiblingInfo').innerHTML = sb;
        $get('divItemSiblingInfo').style.visibility = 'visible';
        $get('divItemSiblingInfo').style.display = 'block';
        $get('divItemSiblingInfo').style.left = this[2][0] + 10;
        $get('divItemSiblingInfo').style.top = this[2][1] + 10;
        
        $addHandlers($get('saveSiblingMenuItem'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.saveSiblingMenuItem}, this);
        $addHandlers($get('closeSiblingItemForm'), {'click': HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.closeSiblingItemForm}, this);
    },
    
    saveSiblingMenuItem: function() {
    
        if($get('txtNewDisplayOrder').value == '')
        {
            alert('Please enter a display order.');
            return;
        }
        
        if($get('txtNewImageUrl').value == '' && $get('txtNewLinkText').value == '')
        {
            alert('Please enter either Image Url or Link Text.');
            return;
        }
        
        var menuItem = 
        {
            "Active" : $get('ddlNewActive').options[$get('ddlNewActive').selectedIndex].value,
            "DisplayOrder" : $get('txtNewDisplayOrder').value,
            "ImageHoverUrl" : $get('txtNewImageHoverUrl').value,
            "ImageUrl" : $get('txtNewImageUrl').value,
            "LinkText" : $get('txtNewLinkText').value,
            "NavigateUrl" : $get('txtNewNAvigateUrl').value,
            "NewWindow" : $get('ddlNewNewWindow').value,
            "EventId" : this[1]._menuItem.EventId,
            "ParentId" : this[1]._menuItem.ParentId,
            "LoginType" : this[1]._menuItem.LoginType
        }
        
        
        hanleywood.com.imenu.InsertMenuItem(menuItem, this[1].insertMenuItemSuccess, this[1].menuJsonFailure, this);
    },
    
    insertMenuItemSuccess: function(results, context, methodName) {
        context[1].render();
        $get('divItemInfo').style.visibility = 'hidden';
        $get('divItemInfo').style.display = 'none';
        $get('divItemSiblingInfo').style.visibility = 'hidden';
        $get('divItemSiblingInfo').style.display = 'none';
    },
    
    closeSiblingItemForm: function() {
        $get('divItemSiblingInfo').style.visibility = 'hidden';
        $get('divItemSiblingInfo').style.display = 'none';
    },
    
    saveMenuItem: function() {
    
        if($get('txtDisplayOrder').value == '')
        {
            alert('Please enter a display order.');
            return;
        }
        
        if($get('txtImageUrl').value == '' && $get('txtLinkText').value == '')
        {
            alert('Please enter either Image Url or Link Text.');
            return;
        }
                
        this[1]._menuItem.Active = $get('ddlActive').options[$get('ddlActive').selectedIndex].value;
        this[1]._menuItem.DisplayOrder = $get('txtDisplayOrder').value;
        this[1]._menuItem.ImageHoverUrl = $get('txtImageHoverUrl').value;
        this[1]._menuItem.ImageUrl = $get('txtImageUrl').value;
        this[1]._menuItem.LinkText = $get('txtLinkText').value;
        this[1]._menuItem.NavigateUrl = $get('txtNavigateUrl').value;
        
        if($get('ddlNewWindow').selectedIndex == 0)
        {
            this[1]._menuItem.NewWindow = true;
        }
        else
        {
            this[1]._menuItem.NewWindow = false;
        }
        
        
        hanleywood.com.imenu.SaveMenuItem(this[1]._menuItem, this[1].saveMenuItemSuccess, this[1].menuJsonFailure, this);     
   
    },
    
    saveMenuItemSuccess : function(results, context, methodName)
    {
        context[1].render();
        $get('divItemInfo').style.visibility = 'hidden';
        $get('divItemInfo').style.display = 'none';
    },
    
    deleteMenuItem: function() {
        if( confirm('Are you sure?'))
        {
            hanleywood.com.imenu.DeleteMenuItem(this[1]._menuItem.ID, this[1].deleteMenuItemSuccess, this[1].menuJsonFailure, this);
        }
    },
    
    deleteMenuItemSuccess : function(results, context, methodName)
    {
        context[1].render();
        $get('divItemInfo').style.visibility = 'hidden';
        $get('divItemInfo').style.display = 'none';
    },
    
    closeItemInfo: function() {
        $get('divItemInfo').style.visibility = 'hidden';
        $get('divItemInfo').style.display = 'none';
    },
    
    addChildEventHandlers: function(parentId, childMenu, context)
    {
        var today = new Date();
        if(!context._adminMode)
        {
            for(var i = 0; i < childMenu.MenuItems.length; i++)
            {
                if(childMenu.MenuItems[i].Active == 0 || (childMenu.MenuItems[i].Active == 2 && childMenu.MenuItems[i].StartDate < today && childMenu.MenuItems[i].EndDate > today))
                {
                    var elem = $get(parentId + '.' + childMenu.MenuItems[i].ID);
                    var objectArray = new Array();
                    objectArray[0] = elem;
                    objectArray[1] = context;
                    $addHandlers(elem, {'mouseover': context.mouseOverItem, 'mouseout': context.mouseOutItem}, objectArray);
                    
                    if($get(parentId + '.' + childMenu.MenuItems[i].ID + 'link'))
                    {
                        $addHandlers($get(parentId + '.' + childMenu.MenuItems[i].ID + 'link'), {'mouseover': context.mouseOverItemLink, 'mouseout': context.mouseOutItemLink}, $get(parentId + '.' + childMenu.MenuItems[i].ID + 'link'));
                    }
                }
            }
        }
        else
        {
            for(var i = 0; i < childMenu.MenuItems.length; i++)
            {
                var elem = $get(parentId + '.' + childMenu.MenuItems[i].ID);
                var objectArray = new Array();
                objectArray[0] = elem;
                objectArray[1] = context;
                $addHandlers(elem, {'mouseover': context.mouseOverItem, 'click': context.mouseClickMain}, objectArray);
            }
                
        }
    },
    
    mouseOverMain: function(eventElement) {
        
        if(null != this[1]._currentMain)
        {
            var previous = this[1]._currentMain;
            if(previous.id != this[0].id)
            {
                if(!this[1]._adminMode)
                {
                    switch(previous.attributes['hweNodeType'].value)
                    {
                        case '0':
                            previous.childNodes[0].childNodes[0].src = previous.childNodes[0].childNodes[0].attributes['orgSrc'].value;
                            break;
                        case '1': case '3':
                            previous.className = previous.attributes['orgClass'].value;
                            break;
                        case '2':
                            previous.childNodes[0].src = previous.childNodes[0].attributes['orgSrc'].value;
                            break;
                    }
                }
                var previousChildMenu = $get(previous.id + 'child');
                if(previousChildMenu)
                {
                    previousChildMenu.style.visibility = 'hidden';
                    previousChildMenu.style.display = 'none';
                }
            }
            if(null != this[1]._currentItem)
            {
                var previousItem = this[1]._currentItem;
                if(!this[1]._adminMode)
                {
                    switch(previousItem.attributes['hweNodeType'].value)
                    {
                        case '0':
                            previousItem.childNodes[0].childNodes[0].src = previousItem.childNodes[0].childNodes[0].attributes['orgSrc'].value;
                            break;
                        case '1': case '3':
                            previousItem.className = previousItem.attributes['orgClass'].value;
                            break;
                        case '2':
                            previousItem.childNodes[0].src = previousItem.childNodes[0].attributes['orgSrc'].value;
                            break;
                    }
                }
            }
        }
        this[1]._currentMain = this[0];
        if(!this[1]._adminMode)
        {
            switch(this[0].attributes['hweNodeType'].value)
            {
                case '0':
                    this[0].childNodes[0].childNodes[0].src = this[0].childNodes[0].childNodes[0].attributes['hovSrc'].value;
                    break;
                case '1': case '3':
                    this[0].className = this[0].attributes['hovClass'].value;
                    break;
                case '2':
                    this[0].childNodes[0].src = this[0].childNodes[0].attributes['hovSrc'].value;
                    break;
            }
        }
            
        var childMenu = $get(this[0].id + 'child');
        if(childMenu)
        {
            var parentCoordinates = this[1].getElementCoordinates(this[0]);
            childMenu.style.visibility = 'visible';
            childMenu.style.display = 'block';
            
            childMenu.style.left = parentCoordinates.x + 'px';
            childMenu.style.top = parentCoordinates.y + parentCoordinates.height + 'px';
        }
    },
    
    mouseOverMainLink: function() {
        this.className = this.attributes['hovClass'].value;
    },
    
    mouseOutMainLink: function() {
        this.className = this.attributes['orgClass'].value;
    },
    
    mouseOverItem: function() {
        if(this[1]._adminMode)
        {
            clearTimeout(this[1]._showAdminDetailsMainTimer);
        }
        
        clearTimeout(HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype._collapseAllTimer);
        if(HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype._currentItem)
        {
            var previous = HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype._currentItem;
            if(previous.id != this[0].id)
            {
                if( ! this[1]._adminMode)
                {
                    switch(previous.attributes['hweNodeType'].value)
                    {
                        case '0':
                            previous.childNodes[0].childNodes[0].src = previous.childNodes[0].childNodes[0].attributes['orgSrc'].value;
                            break;
                        case '1': case '3':
                            previous.className = previous.attributes['orgClass'].value;
                            break;
                        case '2':
                            previous.childNodes[0].src = previous.childNodes[0].attributes['orgSrc'].value;
                            break;
                    }
                }
            }
        }
        
        HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype._currentItem = this[0];
        if( ! this[1]._adminMode)
        {
            switch(this[0].attributes['hweNodeType'].value)
            {
                case '0':
                    this[0].childNodes[0].childNodes[0].src = this[0].childNodes[0].childNodes[0].attributes['hovSrc'].value;
                    break;
                case '1': case '3':
                    this[0].className = this[0].attributes['hovClass'].value;
                    break;
                case '2':
                    this[0].childNodes[0].src = this[0].childNodes[0].attributes['hovSrc'].value;
                    break;
                    
            }
        }
        
    },
    
    mouseOutItem: function() {
        HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype._collapseAllTimer = setTimeout('HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.hideChildMenus()', 1000);
    },
    
    mouseOverItemLink: function() {
        this.className = this.attributes['hovClass'].value;
    },
    
    mouseOutItemLink: function() {
        this.className = this.attributes['orgClass'].value;
    },
    
    render: function()
    {
        this.get_element().innerHTML = "<div style='height: 40px; width: 1px'>Menu Loading...</div>";
        var eventId = -1;
        var loginType = -1;
        
        if(window.location.search != '')
        {   
            var queryBag = window.location.search.split('&');
            for(var i = 0; i < queryBag.length; i ++)
            {
                if(queryBag[i].split('=')[0] == "EventId" || queryBag[i].split('=')[0] == "?EventId")
                {
                    eventId = queryBag[i].split('=')[1];
                    hanleywood.com.imenu.ConnectUrl(eventId, this.connectUrlSuccess, this.menuJsonFailure, this);     
                }
            }
        }
        
        if($get('hanleyLoginType') != null)
        {
            loginType = $get('hanleyLoginType').options[$get('hanleyLoginType').selectedIndex].value;
            $clearHandlers($get('hanleyLoginType'));
            $addHandlers($get('hanleyLoginType'), {'change': this.loginTypeChanged}, this);
        }
        if(this._adminMode)
        {
            $addHandlers($get('btnCopyMenu'), {'click': this.copyMenu}, this);
        }
        hanleywood.com.imenu.GetHweMenu(eventId, loginType, this.menuJsonSuccess, this.menuJsonFailure, this);   
        
    },
    
    copyMenu: function() {
        var coords = this.getElementCoordinates(this.get_element());
        $get('divCopy').style.left = coords.x + 20;
        $get('divCopy').style.top = coords.y + 20;
        $get('divCopy').style.visibility = 'visible';
        $get('divCopy').style.display = 'block';
        
    },
    
    copyMenuGo: function() {
        $get('divCopy').style.left = 0;
        $get('divCopy').style.top = 0;
        $get('divCopy').style.visibility = 'hidden';
        $get('divCopy').style.display = 'none';
        
        var coords = this.getElementCoordinates(this.get_element());
        $get('divWait').style.left = coords.x + 20;
        $get('divWait').style.top = coords.y + 20;
        $get('divWait').style.visibility = 'visible';
        $get('divWait').style.display = 'block';
        
        var eventId;
        var targetEventId;
        var queryBag = window.location.search.split('&');
        for(var i = 0; i < queryBag.length; i ++)
        {
            if(queryBag[i].split('=')[0] == "EventId" || queryBag[i].split('=')[0] == "?EventId")
            {
                eventId = queryBag[i].split('=')[1];
            }
        }
        targetEventId = $get('txtNewEventId').value;
        hanleywood.com.imenu.CopyMenu(eventId, targetEventId, this.copyMenuSuccess, this.menuJsonFailure, this);
    },
    
    copyMenuSuccess: function() {
        $get('divWait').style.left = 0;
        $get('divWait').style.top = 0;
        $get('divWait').style.visibility = 'hidden';
        $get('divWait').style.display = 'none';
        alert('Menu copied successfully.');
    },
    
    loginTypeChanged : function() {
        this._renderedOnce = false;
        this.render();
    },
    
    connectUrlSuccess: function(results, context, methodName) 
    {
        context._connectUrl = results;
    },
    
    menuJsonFailure: function(results)
    {
        alert('Failure, ' + results.get_message());
    },
    
    menuJsonSuccess: function(results, userContext, methodName)
    {
        HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.renderMainMenu(results, userContext);
        HanleyAjaxControls.AjaxMenu.AjaxMenu.prototype.addEventHandlers(results, userContext);
    },
    
    getElementCoordinates: function(element) {
        
        var result = new Object();
        result.x = 0;
        result.y = 0;
        result.width = 0;
        result.height = 0;
        if (element.offsetParent) {
            result.x = element.offsetLeft;
            result.y = element.offsetTop;
            var parent = element.offsetParent;
            while (parent) {
                result.x += parent.offsetLeft;
                result.y += parent.offsetTop;
                var parentTagName = parent.tagName.toLowerCase();
                if (parentTagName != "table" &&
                    parentTagName != "body" && 
                    parentTagName != "html" && 
                    parentTagName != "div" && 
                    parent.clientTop && 
                    parent.clientLeft) {
                    result.x += parent.clientLeft;
                    result.y += parent.clientTop;
                }
                parent = parent.offsetParent;
            }
        }
        else if (element.left && element.top) {
            result.x = element.left;
            result.y = element.top;
        }
        else {
            if (element.x) {
                result.x = element.x;
            }
            if (element.y) {
                result.y = element.y;
            }
        }
        if (element.offsetWidth && element.offsetHeight) {
            result.width = element.offsetWidth;
            result.height = element.offsetHeight;
        }
        else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
            result.width = element.style.pixelWidth;
            result.height = element.style.pixelHeight;
        }
        return result;
    
    }
}

HanleyAjaxControls.AjaxMenu.AjaxMenu.registerClass("HanleyAjaxControls.AjaxMenu.AjaxMenu", Sys.UI.Control);

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();