Ext.onReady(function(){ var spot = new Ext.ux.Spotlight({ easing: 'easeOut', duration: .3 }); var DemoPanel = Ext.extend(Ext.Panel, { title: 'Demo Panel', frame: true, width: 200, height: 150, html: 'Some panel content goes here!', bodyStyle: 'padding:10px 15px;', toggle: function(on){ this.buttons[0].setDisabled(!on); } }); var p1, p2, p3; var updateSpot = function(id){ if(typeof id == 'string'){ spot.show(id); }else if (!id && spot.active){ spot.hide(); } p1.toggle(id==p1.id); p2.toggle(id==p2.id); p3.toggle(id==p3.id); }; new Ext.Panel({ renderTo: Ext.getBody(), layout: 'table', id: 'demo-ct', border: false, layoutConfig: { columns: 3 }, items: [p1 = new DemoPanel({ id: 'panel1', buttons: [{ text: 'Next Panel', handler: updateSpot.createDelegate(this, ['panel2']) }] }), p2 = new DemoPanel({ id: 'panel2', buttons: [{ text: 'Next Panel', handler: updateSpot.createDelegate(this, ['panel3']) }] }), p3 = new DemoPanel({ id: 'panel3', buttons: [{ text: 'Done', handler: updateSpot.createDelegate(this, [false]) }] })] }); new Ext.Button({ text: 'Start', renderTo: 'start-ct', handler: updateSpot.createDelegate(this, ['panel1']) }); updateSpot(false); });