﻿var MenuControl = Class.create();



MenuControl.getOffset = function(elm) 
{
	var _x = 0; 
    var _y = 0; 
    while( elm && !isNaN( elm.offsetLeft ) && !isNaN( elm.offsetTop ) ) { 
        _x += elm.offsetLeft - elm.scrollLeft; 
        _y += elm.offsetTop - elm.scrollTop; 
        elm = elm.offsetParent; 
    } 
    return { top: _y, left: _x }; 
}


MenuControl.onMenuMouseOver = function () {


    var _target = this.readAttribute('rel');

    if (_target != null) {
        MenuControl.prototype.selectedMenu = _target;

        var l = MenuControl.getOffset(this).left;
        var t = MenuControl.getOffset(this).top;

        MenuControl.prototype.getData(_target)

        if (MenuControl.prototype.links != null) {
            if (MenuControl.prototype.links.length > 0) {
                $("MENU_CONTENT_INNER").setStyle({ position: 'absolute', left: l + 'px', top: t + 40 + 'px', display: 'block' });
            }
        }
    }


}

MenuControl.onMenuMouseOut = function() 
{
    var _target = this.readAttribute('rel');
    
    if(_target != null)
    {
        $("MENU_CONTENT_INNER").setStyle({display:'none'  });
    }
}

MenuControl.onContentMouseOut = function()
{
    var _target = this.readAttribute('rel');

    if(_target == MenuControl.prototype.selectedMenu)
    {
        this.setStyle({display:'none'  }); 
    }
}

MenuControl.onContentMouseOver = function() 
{
    var _target = this.readAttribute('rel');
    
    if(_target == MenuControl.prototype.selectedMenu)
    {
        this.setStyle({display:'block'  }); 
    }
}

MenuControl.prototype = {

    initialize: function () {

        var errorMessage = "";

        MenuControl.prototype.selectedMenu = "";
        MenuControl.prototype.xmlRequest = null;
        MenuControl.prototype.xmlData = null;
        MenuControl.prototype.xmlUrl = "/menu.ashx";
        MenuControl.prototype.links = null;


        try {


            MenuControl.prototype.loadData();
            MenuControl.prototype.bindButtons();

        }
        catch (e) {
            MenuControl.prototype.handleException(errorMessage, e);
        }
    },
    loadData: function (request) {

        var errorMessage = "";

        try {
            function DataLoaded(request) {
                MenuControl.prototype.xmlRequest = removeTextNode(request.responseXML.documentElement);
                MenuControl.prototype.xmlData = MenuControl.prototype.xmlRequest.getElementsByTagName("Links");
            }

            function DataError() {
            }

            var myAjax = new Ajax.Request(MenuControl.prototype.xmlUrl, {
                method: 'get',
                asynchronous: false,
                onSuccess: DataLoaded,
                onFailure: DataError
            });

        }
        catch (e) {
            MenuControl.prototype.handleException(errorMessage, e);
        }
    },
    getData: function (dataType) {

        var errorMessage = "SiteTextControl.prototype.getData:";
        var ul = new Element("ul");
        var section = dataType;

        try {

            $("MENU_CONTENT_INNER").update("");

            if (MenuControl.prototype.xmlData != null) {
                nodeCount = MenuControl.prototype.xmlData.length;
            }
            else {
                nodeCount = 0;
            }

        

            if (nodeCount > 0) {
                for (var i = 0; i < nodeCount; i++) {

                    if (MenuControl.prototype.xmlData[i].getAttribute("SectionId") == section) 
                    {
                        MenuControl.prototype.links = MenuControl.prototype.xmlData[i].childNodes;
                    }
                }


                for (var j = 0; j < MenuControl.prototype.links.length; j++) 
                {
                    var title = MenuControl.prototype.links[j].getAttribute("Title");
                    var url1 = MenuControl.prototype.links[j].getAttribute("Url");
                    var page = MenuControl.prototype.links[j].getAttribute("Page");

                    if (title.toLowerCase() != "main") {

                        var li = new Element("li").update("<a href='" + page + "'>" + title + "</a>");
                        ul.insert(li);
                    }
                }

                $("MENU_CONTENT_INNER").setAttribute('rel', section);
                $("MENU_CONTENT_INNER").insert(ul);

            }
        }
        catch (e) {
            MenuControl.prototype.handleException(errorMessage, e);
        }
    },
    bindButtons: function () {
        var menuElements = "#MAIN_MENU a";
        var contElements = "#MENU_CONTENT div";

        $$(menuElements).each(function (elm) {
            elm.observe('mouseover', MenuControl.onMenuMouseOver);
            elm.observe('mouseout', MenuControl.onMenuMouseOut);
        });

        $$(contElements).each(function (elm) {
            elm.observe('mouseover', MenuControl.onContentMouseOver);
            elm.observe('mouseout', MenuControl.onContentMouseOut);
        });
    },
    handleException: function (ue, e) {
        alert(ue + "\n\n" + "-- " + e + " --");
    }
}
