function Selector()
{
    this.selector_name = null;

    // признак того, что по селектору кликнули
    this.click_on_selector = false;
    this.mode = 'frontend';
}

Selector.prototype = 
{
    handle: function(selector_name)
    {
        var that = this;
        this.selector_name = selector_name;
        this.click_on_selector = false;

        // switch handler
        $(selector_name + '_switch').addEvent('click', function()
        {
            that.show();
            that.click_on_selector = true;
        });

        // list handler
        $(selector_name + '_list').addEvent('click', function()
        {
            that.click_on_selector = true;
        });
        
        // list elements handler
        $$('#' + selector_name + '_list strong, #' + selector_name + '_list a').addEvent('click', function()
        {
            that.hide();
        });
    
        // document handler
        document.addEvent('click', function()
        {
            if (that.click_on_selector == false)
            {
                that.hide();
            }
            that.click_on_selector = false;
        });
    },

    show: function()
    {
        switch (this.mode)
        {
            case 'frontend':
                $(this.selector_name + '_switch').addClass('disabled');
            break;
        }
        $(this.selector_name + '_list').addClass('open');
    },

    hide: function()
    {
        
        switch (this.mode)
        {
            case 'frontend':
                $(this.selector_name + '_switch').removeClass('disabled');
            break;
        }

        $(this.selector_name + '_list').removeClass('open');
    }
}

var selectors = {};
