/* (c) 2008 perfecthunter.com */
Ext.namespace('Ext.ux');Ext.ux.Wiz=Ext.extend(Ext.Window,{loadMaskConfig:{'default':'Saving...'},height:400,width:540,closable:true,resizable:false,modal:true,cards:null,previousButtonText:'&lt; Previous',nextButtonText:'Next &gt;',cancelButtonText:'Cancel',finishButtonText:'Finish',headerConfig:{},cardPanelConfig:{},previousButton:null,nextButton:null,cancelButton:null,cardPanel:null,currentCard:-1,headPanel:null,cardCount:0,initComponent:function(){this.initButtons();this.initPanels();var title=this.title||this.headerConfig.title;title=title||"";Ext.apply(this,{title:title,layout:'border',cardCount:this.cards.length,buttons:[this.previousButton,this.nextButton,this.cancelButton],items:[this.headPanel,this.cardPanel]});this.addEvents('cancel','finish');Ext.ux.Wiz.superclass.initComponent.call(this);},getWizardData:function(){var formValues={};var cards=this.cards;for(var i=0,len=cards.length;i<len;i++){if(cards[i].form){formValues[cards
[i].id]=cards[i].form.getValues(false);}else{formValues[cards
[i].id]={};}}
return formValues;},switchDialogState:function(enabled,type){this.showLoadMask(!enabled,type);this.previousButton.setDisabled(!enabled);this.nextButton.setDisabled(!enabled);this.cancelButton.setDisabled(true);var ct=this.tools['close'];if(ct){switch(enabled){case true:this.tools['close'].unmask();break;default:this.tools['close'].mask();break;}}
this.closable=enabled;},showLoadMask:function(show,type){if(!type){type='default';}
if(show){if(this.loadMask==null){this.loadMask=new Ext.LoadMask(this.body);}
this.loadMask.msg=this.loadMaskConfig[type];this.loadMask.show();}else{if(this.loadMask){this.loadMask.hide();}}},initEvents:function(){Ext.ux.Wiz.superclass.initEvents.call(this);this.on('beforeclose',this.onBeforeClose,this);var cards=this.cards;for(var i=0,len=cards.length;i<len;i++){cards[i].on('show',this.onCardShow,this);cards[i].on('hide',this.onCardHide,this);cards[i].on('clientvalidation',this.onClientValidation,this);}},initPanels:function(){var cards=this.cards;var cardPanelConfig=this.cardPanelConfig;Ext.apply(this.headerConfig,{steps:cards.length});this.headPanel=new Ext.ux.Wiz.Header(this.headerConfig);Ext.apply(cardPanelConfig,{layout:new Ext.ux.layout.CardLayout(),items:cards});Ext.applyIf(cardPanelConfig,{region:'center',border:false,activeItem:0});this.cardPanel=new Ext.Panel(cardPanelConfig);},initButtons:function(){this.previousButton=new Ext.Button({text:this.previousButtonText,disabled:true,minWidth:75,handler:this.onPreviousClick,scope:this});this.nextButton=new Ext.Button({text:this.nextButtonText,minWidth:75,handler:this.onNextClick,scope:this});this.cancelButton=new Ext.Button({text:this.cancelButtonText,handler:this.onCancelClick,scope:this,minWidth:75});},onBeforeClose:function(panel){return this.closable;},onClientValidation:function(card,isValid){if(!isValid){this.nextButton.setDisabled(true);}else{this.nextButton.setDisabled(false);}},onCardHide:function(card){if(this.cardPanel.layout.activeItem.id===card.id){this.nextButton.setDisabled(true);}},onCardShow:function(card){var parent=card.ownerCt;var items=parent.items;for(var i=0,len=items.length;i<len;i++){if(items.get(i).id==card.id){break;}}
this.currentCard=i;this.headPanel.updateStep(i,card.title);if(i==len-1){this.nextButton.setText(this.finishButtonText);}else{this.nextButton.setText(this.nextButtonText);}
if(card.isValid()){this.nextButton.setDisabled(false);}
if(i==0){this.previousButton.setDisabled(true);}else{this.previousButton.setDisabled(false);}},onCancelClick:function(){if(this.fireEvent('cancel',this)!==false){this.close();}},onFinish:function(){if(this.fireEvent('finish',this,this.getWizardData())!==false){this.close();}},onPreviousClick:function(){if(this.currentCard>0){this.cardPanel.getLayout().setActiveItem(this.currentCard-1);}},onNextClick:function(){if(this.currentCard==this.cardCount-1){this.onFinish();}else{this.cardPanel.getLayout().setActiveItem(this.currentCard+1);}}});