Ext.SwitchButton = Ext.extend(Ext.Component, {
        initComponent
: function(){
               
Ext.SwitchButton.superclass.initComponent.call(this);
               
               
var mc = new Ext.util.MixedCollection();
                mc
.addAll(this.items);
               
this.items = mc;
               
               
this.addEvents('change');
               
               
if(this.handler){
                       
this.on('change', this.handler, this.scope || this);
               
}
       
},
       
        onRender
: function(ct, position){
               
               
var el = document.createElement('table');
                el
.cellSpacing = 0;
                el
.className = 'x-rbtn';
                el
.id = this.id;
               
               
var row = document.createElement('tr');
                el
.appendChild(row);
               
               
var count = this.items.length;
               
var last = count - 1;
               
this.activeItem = this.items.get(this.activeItem);
               
               
for(var i = 0; i < count; i++){
                       
var item = this.items.itemAt(i);
                       
                       
var cell = row.appendChild(document.createElement('td'));
                        cell
.id = this.id + '-rbi-' + i;
                       
                       
var cls = i == 0 ? 'x-rbtn-first' : (i == last ? 'x-rbtn-last' : 'x-rbtn-item');
                        item
.baseCls = cls;
                       
                       
if(this.activeItem == item){
                                cls
+= '-active';
                       
}
                        cell
.className = cls;
                       
                       
var button = document.createElement('button');
                        button
.innerHTML = ' ';
                        button
.className = item.iconCls;
                        button
.qtip = item.tooltip;
                       
                        cell
.appendChild(button);
                       
                        item
.cell = cell;
               
}
               
               
this.el = Ext.get(ct.dom.appendChild(el));
               
               
this.el.on('click', this.onClick, this);
       
},
       
        getActiveItem
: function(){
               
return this.activeItem;
       
},
       
        setActiveItem
: function(item){
               
if(typeof item != 'object' && item !== null){
                        item
= this.items.get(item);
               
}
               
var current = this.getActiveItem();
               
if(item != current){
                       
if(current){
                               
Ext.fly(current.cell).removeClass(current.baseCls + '-active');
                       
}
                       
if(item) {
                               
Ext.fly(item.cell).addClass(item.baseCls + '-active');
                       
}
                       
this.activeItem = item;
                       
this.fireEvent('change', this, item);
               
}
               
return item;
       
},
       
        onClick
: function(e){
               
var target = e.getTarget('td', 2);
               
if(!this.disabled && target){
                       
this.setActiveItem(parseInt(target.id.split('-rbi-')[1], 10));
               
}
       
}
});

Ext.reg('switch', Ext.SwitchButton);