﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("MXA.Website.Kaldenbroeck");

MXA.Website.Kaldenbroeck.MenuControl = function (element) {

    MXA.Website.Kaldenbroeck.MenuControl.initializeBase(this, [element]);
    this.addCssClass('Menu');
    var menuStrip = document.createElement('div');
    menuStrip.className = 'mnuStrip';
    element.appendChild(menuStrip);
    this._menuItemContainer = document.createElement('div');
    this._menuItemContainer.className = 'mnuItemContainer';
    element.appendChild(this._menuItemContainer);
    this._items = {};
    var _this = this;
    $addHandler(this._menuItemContainer, 'click', Function.createDelegate(_this, _this._onMenuClick));
}

MXA.Website.Kaldenbroeck.MenuControl.prototype =
{

    initialize: function () {
        MXA.Website.Kaldenbroeck.MenuControl.callBaseMethod(this, 'initialize');
        if (document.datasource != null) {
            if (document.datasource.events != null) {
                this._addItem(document.datasource.statictext.events, 'Events', document.datasource.events.event);
                this._addDevider();
            }
            //this._addItem('Inloggen', 'Login');
            //this._addDevider();
            this._addItem(document.datasource.statictext.contact, 'Contact', document.datasource.organisation);
        }
        Cufon.replace(this._menuItemContainer.childNodes);
    },

    dispose: function () {
        MXA.Website.Kaldenbroeck.MenuControl.callBaseMethod(this, 'dispose');
    },

    updateSelectionState: function (selectedPath) {

        $(this._menuItemContainer.childNodes).removeClass('active');
        if (this._items[selectedPath] != null) {
            $(this._items[selectedPath]).addClass('active');
        }
        Cufon.replace(this._menuItemContainer.childNodes);

    },

    _onMenuClick: function (evt) {
        var e = evt.target;

        while (e != null && e.commandArgument == null) {
            e = e.parentNode;
        }

        if (e != null) {
            var args = new Sys.EventArgs();
            args.commandArgument = e.commandArgument;
            args.datasource = e._datasource;
            this.raiseEvent('itemClick', args);
        }
    },


    raiseEvent: function (eventName, eventArgs) {

        var handler = this.get_events().getHandler(eventName);
        if (handler) {
            handler(this, eventArgs);
        }

    },

    add_itemClick: function (handler) {
        this.get_events().addHandler('itemClick', handler);
    },

    remove_itemClick: function (handler) {
        this.get_events().removeHandler('itemClick', handler);
    },

    _addDevider: function () {
        var element = document.createElement('div');
        element.className = 'mnuDevider';
        this._menuItemContainer.appendChild(element);
    },

    _addItem: function (name, commandArgument, datasource) {
        if (datasource != null) {
            var element = document.createElement('div');
            element.className = 'mnuItem ' + name;
            element.innerHTML = name;
            element.commandArgument = commandArgument;
            element._datasource = datasource;
            this._menuItemContainer.appendChild(element);
            this._items[commandArgument] = element;
        }

    }
}



MXA.Website.Kaldenbroeck.MenuControl.registerClass('MXA.Website.Kaldenbroeck.MenuControl', Sys.UI.Control);
