﻿/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("MXA.Website.Kaldenbroeck");

MXA.Website.Kaldenbroeck.CategoryControl = function (element) {

    MXA.Website.Kaldenbroeck.CategoryControl.initializeBase(this, [element]);
    this.addCssClass('CategoryControl');
    this._datasource = null;
    this._items = null;
}

MXA.Website.Kaldenbroeck.CategoryControl.prototype =
{

    initialize: function () {
        MXA.Website.Kaldenbroeck.CategoryControl.callBaseMethod(this, 'initialize');
        var _this = this;
        $addHandler(this._element, 'click', Function.createDelegate(_this, _this._onClick));
    },

    dispose: function () {
        MXA.Website.Kaldenbroeck.CategoryControl.callBaseMethod(this, 'dispose');
    },

    clear: function () {
        this._element.innerHTML = '';
    },

    _onClick: function (evt) {
        var e = evt.target;
        while (e != null && e._datasource == null) {
            e = e.parentNode;
        }
        if (e != null) {
            this._activate(e);
            var args = new Sys.EventArgs();
            args.commandArgument = e._datasource;
            if (e._datasource.delegate != null) {
                e._datasource.delegate(this, args);
            } else {
                this.raiseEvent('itemClick', args);
            }
        }

    },

    _activate: function (item) {
        $(this._items).removeClass('active');
        $(item).addClass('active');
        Cufon.replace(this._items);
    },


    add_itemClick: function (handler) {
        this.get_events().addHandler('itemClick', handler);
    },

    remove_itemClick: function (handler) {
        this.get_events().removeHandler('itemClick', handler);
    },

    set_datasource: function (value) {
        this._datasource = value;
    },

    databind: function () {
        if (this._datasource == null || this._datasource.length == 1) {
            $(this._element).hide();
        }
        else {
            $(this._element).show();
            this._items = [];
            for (var i in this._datasource) {
                var item = this._datasource[i];
                var element = document.createElement('div');
                element.className = 'catItem';
                element.innerHTML = item.title;
                element._datasource = item;
                this._element.appendChild(element);

                this._items.push(element);
            }

            Cufon.replace(this._items);
        }
    },

    activateIndex: function (index) {
        if (this._items != null) {
            var element = this._items[index];
            this._activate(element);
        }
    },

    raiseEvent: function (eventName, eventArgs) {

        var handler = this.get_events().getHandler(eventName);
        if (handler) {
            handler(this, eventArgs);
        }

    }
}



MXA.Website.Kaldenbroeck.CategoryControl.registerClass('MXA.Website.Kaldenbroeck.CategoryControl', Sys.UI.Control);
