| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.layout.RotatorContainer"]){ |
| dojo._hasResource["dojox.layout.RotatorContainer"]=true; |
| dojo.provide("dojox.layout.RotatorContainer"); |
| dojo.require("dojo.fx"); |
| dojo.require("dijit.layout.StackContainer"); |
| dojo.require("dijit.layout.StackController"); |
| dojo.require("dijit._Widget"); |
| dojo.require("dijit._Templated"); |
| dojo.require("dijit._Contained"); |
| dojo.declare("dojox.layout.RotatorContainer",[dijit.layout.StackContainer,dijit._Templated],{templateString:"<div class=\"dojoxRotatorContainer\"><div dojoAttachPoint=\"tabNode\"></div><div class=\"dojoxRotatorPager\" dojoAttachPoint=\"pagerNode\"></div><div class=\"dojoxRotatorContent\" dojoAttachPoint=\"containerNode\"></div></div>",showTabs:true,transitionDelay:5000,transition:"fade",transitionDuration:1000,autoStart:true,suspendOnHover:false,pauseOnManualChange:null,reverse:false,pagerId:"",cycles:-1,pagerClass:"dojox.layout.RotatorPager",postCreate:function(){ |
| this.inherited(arguments); |
| dojo.style(this.domNode,"position","relative"); |
| if(this.cycles-0==this.cycles&&this.cycles!=-1){ |
| this.cycles++; |
| }else{ |
| this.cycles=-1; |
| } |
| if(this.pauseOnManualChange===null){ |
| this.pauseOnManualChange=!this.suspendOnHover; |
| } |
| var id=this.id||"rotator"+(new Date()).getTime(),sc=new dijit.layout.StackController({containerId:id},this.tabNode); |
| this.tabNode=sc.domNode; |
| this._stackController=sc; |
| dojo.style(this.tabNode,"display",this.showTabs?"":"none"); |
| this.connect(sc,"onButtonClick","_manualChange"); |
| this._subscriptions=[dojo.subscribe(this.id+"-cycle",this,"_cycle"),dojo.subscribe(this.id+"-state",this,"_state")]; |
| var d=Math.round(this.transitionDelay*0.75); |
| if(d<this.transitionDuration){ |
| this.transitionDuration=d; |
| } |
| if(this.suspendOnHover){ |
| this.connect(this.domNode,"onmouseover","_onMouseOver"); |
| this.connect(this.domNode,"onmouseout","_onMouseOut"); |
| } |
| },startup:function(){ |
| if(this._started){ |
| return; |
| } |
| var c=this.getChildren(); |
| for(var i=0,_1=c.length;i<_1;i++){ |
| if(c[i].declaredClass==this.pagerClass){ |
| this.pagerNode.appendChild(c[i].domNode); |
| break; |
| } |
| } |
| this.inherited(arguments); |
| if(this.autoStart){ |
| setTimeout(dojo.hitch(this,"_play"),10); |
| }else{ |
| this._updatePager(); |
| } |
| },destroy:function(){ |
| dojo.forEach(this._subscriptions,dojo.unsubscribe); |
| this.inherited(arguments); |
| },_setShowTabsAttr:function(_2){ |
| this.showTabs=_2; |
| dojo.style(this.tabNode,"display",_2?"":"none"); |
| },_updatePager:function(){ |
| var c=this.getChildren(); |
| dojo.publish(this.id+"-update",[this._playing,dojo.indexOf(c,this.selectedChildWidget)+1,c.length]); |
| },_onMouseOver:function(){ |
| this._resetTimer(); |
| this._over=true; |
| },_onMouseOut:function(){ |
| this._over=false; |
| if(this._playing){ |
| clearTimeout(this._timer); |
| this._timer=setTimeout(dojo.hitch(this,"_play",true),200); |
| } |
| },_resetTimer:function(){ |
| clearTimeout(this._timer); |
| this._timer=null; |
| },_cycle:function(_3){ |
| if(_3 instanceof Boolean||typeof _3=="boolean"){ |
| this._manualChange(); |
| } |
| var c=this.getChildren(),_4=c.length,i=dojo.indexOf(c,this.selectedChildWidget)+(_3===false||(_3!==true&&this.reverse)?-1:1); |
| this.selectChild(c[(i<_4?(i<0?_4-1:i):0)]); |
| this._updatePager(); |
| },_manualChange:function(){ |
| if(this.pauseOnManualChange){ |
| this._playing=false; |
| } |
| this.cycles=-1; |
| },_play:function(_5){ |
| this._playing=true; |
| this._resetTimer(); |
| if(_5!==true&&this.cycles>0){ |
| this.cycles--; |
| } |
| if(this.cycles==0){ |
| this._pause(); |
| }else{ |
| if((!this.suspendOnHover||!this._over)&&this.transitionDelay){ |
| this._timer=setTimeout(dojo.hitch(this,"_cycle"),this.selectedChildWidget.domNode.getAttribute("transitionDelay")||this.transitionDelay); |
| } |
| } |
| this._updatePager(); |
| },_pause:function(){ |
| this._playing=false; |
| this._resetTimer(); |
| },_state:function(_6){ |
| if(_6){ |
| this.cycles=-1; |
| this._play(); |
| }else{ |
| this._pause(); |
| } |
| },_transition:function(_7,_8){ |
| this._resetTimer(); |
| if(_8&&this.transitionDuration){ |
| switch(this.transition){ |
| case "fade": |
| this._fade(_7,_8); |
| return; |
| } |
| } |
| this._transitionEnd(); |
| this.inherited(arguments); |
| },_transitionEnd:function(){ |
| if(this._playing){ |
| this._play(); |
| }else{ |
| this._updatePager(); |
| } |
| },_fade:function(_9,_a){ |
| this._styleNode(_a.domNode,1,1); |
| this._styleNode(_9.domNode,0,2); |
| this._showChild(_9); |
| if(this.doLayout&&_9.resize){ |
| _9.resize(this._containerContentBox||this._contentBox); |
| } |
| var _b={duration:this.transitionDuration},_c=dojo.fx.combine([dojo["fadeOut"](dojo.mixin({node:_a.domNode},_b)),dojo["fadeIn"](dojo.mixin({node:_9.domNode},_b))]); |
| this.connect(_c,"onEnd",dojo.hitch(this,function(){ |
| this._hideChild(_a); |
| this._transitionEnd(); |
| })); |
| _c.play(); |
| },_styleNode:function(_d,_e,_f){ |
| dojo.style(_d,"opacity",_e); |
| dojo.style(_d,"zIndex",_f); |
| dojo.style(_d,"position","absolute"); |
| }}); |
| dojo.declare("dojox.layout.RotatorPager",[dijit._Widget,dijit._Templated,dijit._Contained],{widgetsInTemplate:true,rotatorId:"",postMixInProperties:function(){ |
| this.templateString="<div>"+this.srcNodeRef.innerHTML+"</div>"; |
| },postCreate:function(){ |
| var p=dijit.byId(this.rotatorId)||this.getParent(); |
| if(p&&p.declaredClass=="dojox.layout.RotatorContainer"){ |
| if(this.previous){ |
| dojo.connect(this.previous,"onClick",function(){ |
| dojo.publish(p.id+"-cycle",[false]); |
| }); |
| } |
| if(this.next){ |
| dojo.connect(this.next,"onClick",function(){ |
| dojo.publish(p.id+"-cycle",[true]); |
| }); |
| } |
| if(this.playPause){ |
| dojo.connect(this.playPause,"onClick",function(){ |
| this.attr("label",this.checked?"Pause":"Play"); |
| dojo.publish(p.id+"-state",[this.checked]); |
| }); |
| } |
| this._subscriptions=[dojo.subscribe(p.id+"-state",this,"_state"),dojo.subscribe(p.id+"-update",this,"_update")]; |
| } |
| },destroy:function(){ |
| dojo.forEach(this._subscriptions,dojo.unsubscribe); |
| this.inherited(arguments); |
| },_state:function(_10){ |
| if(this.playPause&&this.playPause.checked!=_10){ |
| this.playPause.attr("label",_10?"Pause":"Play"); |
| this.playPause.attr("checked",_10); |
| } |
| },_update:function(_11,_12,_13){ |
| this._state(_11); |
| if(this.current&&_12){ |
| this.current.innerHTML=_12; |
| } |
| if(this.total&&_13){ |
| this.total.innerHTML=_13; |
| } |
| }}); |
| } |