if (typeof(MochiKit) == "undefined") {
    MochiKit = { __export__: true, __compat__: true };
    dojo.require("MochiKit.MochiKit");
}
dojo.provide('lgmv.suchen');

if (typeof(lgmv) == "undefined") {
    lgmv = {};
}
if (typeof(lgmv.suchen) == "undefined") {
    lgmv.suchen = {};
}

lgmv.suchen.NAME = 'lgmv.suchen';
lgmv.suchen.EXPORT = [ 'filtern' ];

MochiKit.Base.update(lgmv.suchen, 
{
    __new__: function()
    {
        this.EXPORT_TAGS = {
            ":common": this.EXPORT,
            ":all": this.EXPORT
        };
        var b = MochiKit.Base;
        b.nameFunctions(this);
        b.bindMethods(this);
    },
    
    _trash: null,
    
    filtern: function(container, klasse)
    {
        var b = MochiKit.Base;
        var d = MochiKit.DOM;
        var i = MochiKit.Iter;
        
        if (!b.isUndefinedOrNull(this._trash)) {
            i.forEach(container, 
                b.bind(function(ct)
                {
                    ct = d.$(ct);
                    d.appendChildNodes(ct, this._trash[ct.id]);
                }, this));
        }
        
        this._trash = {};
        i.forEach(container, 
            b.bind(function(klasse, ct)
            {
                ct = d.$(ct);
                ct.options.selectedIndex = 0;
                
                i.forEach(d.getElementsByTagAndClassName('optgroup', null, ct), 
                    b.bind(function(klasse, ct, elem)
                    {
                        if (!d.hasElementClass(elem, klasse)) {
                            this._trash[ct.id] = d.removeElement(elem);
                        }
                    }, this, klasse, ct));
            }, this, klasse));
    }
});

lgmv.suchen.__new__();
MochiKit.Base._exportSymbols(this, lgmv.suchen);

