/*
Copyright (c) 2010 EqualMedia.

Code in the `dojo`, `dijit` or `dojox` namespace is copyright (c) 2004-2009, the Dojo Foundation. All rights reserved.
Dojo is available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
dojo.provide("eqm.loaders.layers.public_home");if(!dojo._hasResource["eqm.ui.SplitFlapDisplay"]){dojo._hasResource["eqm.ui.SplitFlapDisplay"]=true;dojo.provide("eqm.ui.SplitFlapDisplay");dojo.declare("eqm.ui.SplitFlapDisplay",superc.Widget,{length:20,value:"",defaultChar:" ",alphabet:" ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?‘’:-/%!'0123456789",enabled:true,instant:false,timerInterval:40,badFrameThreshold:100,minGoodBadFrameRatio:6,maxIgnoredBadFrames:8,degradedTimerInterval:120,transitionRate:300,lightDirection:[0,0.5,1],lightAmbientIntensity:0.25,baseClass:"eqmSplitFlapDisplay",postCreate:function(){this.inherited(arguments);this.value=this.value||this.domNode.textContent||this.domNode.innerText||"";this.safeEmpty(this.domNode);this._defaultCharPos=this._charPos(this.defaultChar);this._dfd=null;this._lastFrameTime=null;this._badFrames=0;this._goodFrames=0;this._degraded=false;this.lightDirection=this._normalise(this.lightDirection);var ua=navigator.userAgent;if(/iPad/i.test(ua)||/iPhone OS/i.test(ua)){this.instant=true;}},startup:function(){if(!this._started){this.inherited(arguments);this._cells=new Array(this.length);var _1;for(var i=0;i<this.length;i++){_1={container:dojo.create("span",null,this.domNode)};_1.top=dojo.create("span",{"class":this.baseClass+"Top"},_1.container);_1.topInner=dojo.create("span",null,_1.top);_1.bottom=dojo.create("span",{"class":this.baseClass+"Bottom"},_1.container);_1.bottomInner=dojo.create("span",null,_1.bottom);dojo.forEach([_1.topInner,_1.bottomInner],function(_2){_2.textContent=_2.innerText=this.defaultChar;},this);this._cells[i]={current:this.defaultChar,currentPos:this._defaultCharPos,target:undefined,targetPos:undefined,nodes:_1,colours:{topBg:new dojo.Color(dojo.style(_1.top,"backgroundColor")),topFg:new dojo.Color(dojo.style(_1.top,"color")),bottomBg:new dojo.Color(dojo.style(_1.bottom,"backgroundColor")),bottomFg:new dojo.Color(dojo.style(_1.bottom,"color"))},interpolation:null,animations:[],nextFrameActions:[]};}if(this.enabled&&!this.instant){this._active=true;this._timer=setInterval(dojo.hitch(this,"_tick"),this.timerInterval);}this.set("value",this.value);}},destroy:function(){if(this._timer!==undefined){clearInterval(this._timer);}},show:function(_3){if(this._dfd){this._dfd.cancel();}var _4=this._dfd=new dojo.Deferred;this._show(_3);return _4.promise;},clear:function(){return this.show("");},_show:function(_5){_5=_5+"";var _6=_5.length;if(_6===this.length){this.value=_5;}else{if(_6<this.length){var l=Math.floor((this.length-_6)/2);var r=this.length-_6-l;this.value=dojo.string.rep(this.defaultChar,l)+_5+dojo.string.rep(this.defaultChar,r);}else{this.value=_5.substr(Math.floor((_6-this.length)/2),this.length);}}if(!this.instant){dojo.forEach(this._cells,function(_7,i){this._setCellTarget(_7,this.value[i]);},this);}else{dojo.forEach(this._cells,function(_8,i){_8.nodes.topInner.textContent=_8.nodes.topInner.innerText=this.value[i];_8.nodes.bottomInner.textContent=_8.nodes.bottomInner.innerText=this.value[i];},this);if(this._dfd){this._dfd.resolve(this.value);this._dfd=null;}}},_setValueAttr:function(_9){this._show(_9);},_setCellPos:function(_a,_b){_b=Math.max(0,Math.min(_b,this.alphabet.length));_a.currentPos=_b;var c=this._char(_b);if(c!==_a.current){this._showChar(_a,c);}if(c===_a.target){_a.interpolation=null;}},_setCellTarget:function(_c,c){_c.targetPos=this._charPos(c);_c.target=this._char(_c.targetPos);if(_c.currentPos!==_c.targetPos){var _d=+new Date;var i={start:_c.currentPos,startRate:_c.interpolation?Math.max(-0.1,Math.min(_c.interpolation.fnDeriv(_d),0.1)):0,startTime:_d,end:_c.targetPos,endRate:0,endTime:_d+this._cellInterpolationTime(_c.currentPos,_c.targetPos)};i.fn=this._hermite(i.startTime,i.start,i.startRate,i.endTime,i.end,i.endRate);i.fnDeriv=this._hermiteDeriv(i.startTime,i.start,i.startRate,i.endTime,i.end,i.endRate);_c.interpolation=i;this._active=true;}else{_c.interpolation=null;}},_cellInterpolationTime:function(_e,_f){return Math.pow(Math.abs(_e-_f),0.5)*this.transitionRate;},_flipAnimationTime:function(_10){return Math.min(Math.max(100,250/Math.sqrt(Math.abs(_10||0.001))),500);},_showChar:function(_11,c){var old=_11.current;_11.current=c;var _12=this._charPos(old)<this._charPos(c);if(!this._degraded){var now=+new Date;var _13=dojo.create("span",{"class":this.baseClass+"Flipping"},_11.nodes.container,"first");var a={down:_12,start:_12?Math.PI/2:-Math.PI/2,startRate:0,startTime:now,end:_12?-Math.PI/2:+Math.PI/2,endRate:(_12?-1:1)*0.05,endTime:now+this._flipAnimationTime(_11.interpolation?_11.interpolation.fnDeriv(now):0.001),node1:_12?_11.nodes.topInner:_11.nodes.bottomInner,node2:_12?_11.nodes.bottomInner:_11.nodes.topInner,flipNode:_13,flipNodeInner:dojo.create("span",null,_13),char1:old,char2:c,pastHalf:false};a.fn=this._hermite(a.startTime,a.start,a.startRate,a.endTime,a.end,a.endRate);a.node1.textContent=a.node1.innerText=c;a.node2.textContent=a.node2.innerText=old;_11.animations.push(a);}else{var _14=_12?_11.nodes.topInner:_11.nodes.bottomInner;var _15=_12?_11.nodes.bottomInner:_11.nodes.topInner;_14.textContent=_14.innerText=c;_11.nextFrameActions.push(function(){_15.textContent=_15.innerText=c;});}this._active=true;},_tick:function(){if(this._active){var now=+new Date;if(this._lastFrameTime){var _16=now-this._lastFrameTime;if(_16>this.badFrameThreshold){this._badFrames++;if(!this._degraded&&(this._badFrames>this.maxIgnoredBadFrames)&&((this._goodFrames/this._badFrames)<this.minGoodBadFrameRatio)){this._degrade();}}else{this._goodFrames++;}}this._lastFrameTime=now;dojo.forEach(this._cells,function(_17){dojo.forEach(_17.animations.concat(),function(_18){this._animationTick(_17,_18);},this);dojo.forEach(_17.nextFrameActions,function(_19){_19.call(this);},this);_17.nextFrameActions=[];if(_17.interpolation){this._setCellPos(_17,_17.interpolation.fn(now));if(_17.interpolation&&(now>_17.interpolation.endTime)){_17.interpolation=null;}}},this);this._checkActive();}},_degradedTick:function(){if(this._active){var now=+new Date;if(this._lastFrameTime){var _1a=now-this._lastFrameTime;}this._lastFrameTime=now;dojo.forEach(this._cells,function(_1b){dojo.forEach(_1b.nextFrameActions,function(_1c){_1c.call(this);},this);_1b.nextFrameActions=[];if(_1b.interpolation){this._setCellPos(_1b,_1b.interpolation.fn(now));if(_1b.interpolation&&(now>_1b.interpolation.endTime)){_1b.interpolation=null;}}},this);this._checkActive();}},_checkActive:function(){var _1d=this._active;this._active=dojo.some(this._cells,function(_1e){return _1e.interpolation||(_1e.animations.length>0)||(_1e.nextFrameActions.length>0);});if(_1d&&!this._active){this._lastFrameTime=null;dojo.forEach(this._cells,function(_1f,_20){_1f.nodes.topInner.textContent=_1f.nodes.topInner.innerText=this.value[_20];_1f.nodes.bottomInner.textContent=_1f.nodes.bottomInner.innerText=this.value[_20];},this);if(this._dfd){this._dfd.resolve(this.value);this._dfd=null;}this.onShow(this.value);}},_animationTick:function(_21,_22){var _23=_22.fn(+new Date);var sin=Math.sin(_23),cos=Math.cos(_23);dojo.toggleClass(_22.flipNode,this.baseClass+"Top",_23>=0);dojo.toggleClass(_22.flipNode,this.baseClass+"Bottom",_23<0);if(_22.down?_23>=0:_23<0){_22.flipNodeInner.textContent=_22.flipNodeInner.innerText=_22.char1;}else{_22.flipNodeInner.textContent=_22.flipNodeInner.innerText=_22.char2;if(!_22.pastHalf){_22.pastHalf=true;dojo.place(_22.flipNode,_22.flipNode.parentNode,"last");}}var _24=[0,cos,sin];var _25=Math.abs(this._dotProduct(_24,this.lightDirection));var _26=Math.max(0,Math.min(_25+this.lightAmbientIntensity,1));var _27=_23>=0?_21.colours.topBg:_21.colours.bottomBg;var _28=_23>=0?_21.colours.topFg:_21.colours.bottomFg;var _29=this._scaleColour(_27,_26).toCss(false);var _2a=this._scaleColour(_28,_26).toCss(false);var _2b="scale(1,"+Math.abs(sin)+")";var _2c="scale3d(1,"+Math.abs(sin)+")";dojo.style(_22.flipNode,{transform:_2b,MozTransform:_2b,webkitTransform:_2b,backgroundColor:_29,borderLeftColor:_29,borderRightColor:_29,color:_2a});dojo.style(_22.flipNode,{transform:_2c,MozTransform:_2c,webkitTransform:_2c});if((_22.down?_23<_22.end:_23>_22.end)||((+new Date)>_22.endTime)){_22.node2.textContent=_22.node2.innerText=_22.char2;dojo.destroy(_22.flipNode);var _2d=dojo.indexOf(_21.animations,_22);if(_2d>=0){_21.animations.splice(_2d,1);}}},_degrade:function(){if(!this._degraded){this._degraded=true;clearInterval(this._timer);this._timer=setInterval(dojo.hitch(this,"_degradedTick"),this.degradedTimerInterval);dojo.forEach(this._cells,function(_2e){dojo.forEach(_2e.animations,function(_2f){dojo.destroy(_2f.flipNode);},this);_2e.animations=[];},this);this.onDegrade();}},onShow:function(_30){},onDegrade:function(){},_char:function(pos){return this.alphabet[Math.round(pos)]||this.defaultChar;},_charPos:function(c){var _31=this.alphabet.indexOf(c);return _31>=0?_31:this._defaultCharPos;},_hermite:function(x0,y0,g0,x1,y1,g1){var d=x1-x0;if(d!=0){return function(x){var t=(x-x0)/d,t2=t*t,t3=t2*t;return (2*t3-3*t2+1)*y0+(t3-2*t2+t)*d*g0+(3*t2-2*t3)*y1+(t3-t2)*d*g1;};}else{return function(e){return x0;};}},_hermiteDeriv:function(x0,y0,g0,x1,y1,g1){var d=x1-x0;if(d!=0){return function(x){var t=(x-x0)/d,t2=t*t;return ((6*t2-6*t)*y0+(3*t2-4*t+1)*d*g0+(6*t-6*t2)*y1+(3*t2-2*t)*d*g1)/d;};}else{return function(e){return 0;};}},_dotProduct:function(v1,v2){return v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2];},_normalise:function(v){var _32=Math.sqrt(this._dotProduct(v,v));return [v[0]/_32,v[1]/_32,v[2]/_32];},_scaleColour:function(_33,_34){return new dojo.Color([Math.round(_33.r*_34),Math.round(_33.g*_34),Math.round(_33.b*_34)]);}});}if(!dojo._hasResource["eqm.loaders.layers.public_home"]){dojo._hasResource["eqm.loaders.layers.public_home"]=true;dojo.provide("eqm.loaders.layers.public_home");}
