// $Id$
// $Revision$
// 
// author: Pat Smith <pat@isotoma.com>

var TheKeyAdmin = {};


TheKeyAdmin.HotTopicList = function (id) {
    var self = this;
    bindMethods(this);
    self.__init__(id);
};

update(TheKeyAdmin.HotTopicList.prototype, {
    '__init__': function (id) {
        var self = this;
        self.id = id;
        var rows = getElementsByTagAndClassName('tr', null, self.id);
        forEach(rows, function (r) {
            connect(r, 'onmouseover', self, 'highlight');
            connect(r, 'onmouseout', self, 'unhighlight');
        });
    },
    'highlight': function (ev) {
        var self = this;
        ev.stop();
        row = ev.src();
        var cl = getNodeAttribute(row, 'class');
        if (cl == null) return;
        var rows = getElementsByTagAndClassName('tr', cl, self.id);
        forEach(rows, function(r) {
            setStyle(r, {'background-color': '#44ee44'});
        });
    },
    'unhighlight': function (ev) {
        var self = this;
        ev.stop();
        row = ev.src();
        var cl = getNodeAttribute(row, 'class');
        if (cl == null) return;
        var rows = getElementsByTagAndClassName('tr', cl, self.id);
        forEach(rows, function(r) {
            setStyle(r, {'background-color': 'white'});
        });
    }
    
});


TheKeyAdmin.Registry = function () {
    var self = this;
    bindMethods(this);
    this.__init__();
}

update(TheKeyAdmin.Registry.prototype, {
    '__init__': function () {
        var self = this;
        self.registry = {};
        self.ids = [];
    },
    
    'registerClass': function (id, klass) {
        var self = this;
        if (id in self.ids) return;
        self.registry[id] = klass;
        self.ids.push(id);	
    },
    
    'unregisterClass': function (id) {
        var self = this;
        delete self.registry[id];
        var delvalue = null;
        for (var i=0; i<self.ids.length; i++) {
            if (self.ids[i] == id) {
                delvalue = i;
                break;
            }
        }
        if (delvalue != null) {
            self.ids.splice(delvalue, 1);
        }
    },
    
    'factory': function () {
        var self = this;
        var store = {};
        forEach(self.ids, function (id) {
            if (getElement(id)) {
                store[id] = new self.registry[id](id);
            }
        });
        return store;
    }
});


TheKeyAdmin.registry = new TheKeyAdmin.Registry();
var r = TheKeyAdmin.registry.registerClass;
r('hottopics-list', TheKeyAdmin.HotTopicList);

registerPloneFunction(TheKeyAdmin.registry.factory);

